diff --git a/.travis.yml b/.travis.yml index e1e3e6fd726..9d86d85229f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,8 +2,8 @@ language: c env: - BYOND_MAJOR="503" - BYOND_MINOR="1224" + BYOND_MAJOR="507" + BYOND_MINOR="1282" before_install: - sudo apt-get update -qq diff --git a/baystation12.dme b/baystation12.dme index 97c9f24ce3c..1d6a6b13a96 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -16,6 +16,7 @@ #include "code\setup.dm" #include "code\stylesheet.dm" #include "code\world.dm" +#include "code\__HELPERS\atom_pool.dm" #include "code\__HELPERS\files.dm" #include "code\__HELPERS\game.dm" #include "code\__HELPERS\global_lists.dm" @@ -49,6 +50,7 @@ #include "code\_onclick\hud\other_mobs.dm" #include "code\_onclick\hud\robot.dm" #include "code\_onclick\hud\screen_objects.dm" +#include "code\_onclick\hud\spell_screen_objects.dm" #include "code\ATMOSPHERICS\_atmos_setup.dm" #include "code\ATMOSPHERICS\_atmospherics_helpers.dm" #include "code\ATMOSPHERICS\atmospherics.dm" @@ -102,6 +104,7 @@ #include "code\controllers\Processes\disease.dm" #include "code\controllers\Processes\emergencyShuttle.dm" #include "code\controllers\Processes\event.dm" +#include "code\controllers\Processes\garbage.dm" #include "code\controllers\Processes\inactivity.dm" #include "code\controllers\Processes\lighting.dm" #include "code\controllers\Processes\machinery.dm" @@ -114,6 +117,7 @@ #include "code\controllers\Processes\sun.dm" #include "code\controllers\Processes\supply.dm" #include "code\controllers\Processes\ticker.dm" +#include "code\controllers\Processes\turf.dm" #include "code\controllers\Processes\vote.dm" #include "code\controllers\ProcessScheduler\core\_define.dm" #include "code\controllers\ProcessScheduler\core\_stubs.dm" @@ -265,9 +269,17 @@ #include "code\game\gamemodes\cult\cult.dm" #include "code\game\gamemodes\cult\cult_items.dm" #include "code\game\gamemodes\cult\cult_structures.dm" +#include "code\game\gamemodes\cult\hell_universe.dm" #include "code\game\gamemodes\cult\ritual.dm" #include "code\game\gamemodes\cult\runes.dm" #include "code\game\gamemodes\cult\talisman.dm" +#include "code\game\gamemodes\cult\cultify\mob.dm" +#include "code\game\gamemodes\cult\cultify\obj.dm" +#include "code\game\gamemodes\cult\cultify\turf.dm" +#include "code\game\gamemodes\endgame\endgame.dm" +#include "code\game\gamemodes\endgame\supermatter_cascade\blob.dm" +#include "code\game\gamemodes\endgame\supermatter_cascade\portal.dm" +#include "code\game\gamemodes\endgame\supermatter_cascade\universe.dm" #include "code\game\gamemodes\events\black_hole.dm" #include "code\game\gamemodes\events\clang.dm" #include "code\game\gamemodes\events\dust.dm" @@ -314,6 +326,7 @@ #include "code\game\machinery\bees_items.dm" #include "code\game\machinery\biogenerator.dm" #include "code\game\machinery\bioprinter.dm" +#include "code\game\machinery\bluespacerelay.dm" #include "code\game\machinery\buttons.dm" #include "code\game\machinery\cell_charger.dm" #include "code\game\machinery\cloning.dm" @@ -636,6 +649,7 @@ #include "code\game\objects\items\weapons\circuitboards\computer\telecomms.dm" #include "code\game\objects\items\weapons\circuitboards\machinery\biogenerator.dm" #include "code\game\objects\items\weapons\circuitboards\machinery\cloning.dm" +#include "code\game\objects\items\weapons\circuitboards\machinery\commsantenna.dm" #include "code\game\objects\items\weapons\circuitboards\machinery\mining_drill.dm" #include "code\game\objects\items\weapons\circuitboards\machinery\pacman.dm" #include "code\game\objects\items\weapons\circuitboards\machinery\power.dm" @@ -724,6 +738,7 @@ #include "code\game\objects\structures\crates_lockers\closets\job_closets.dm" #include "code\game\objects\structures\crates_lockers\closets\l3closet.dm" #include "code\game\objects\structures\crates_lockers\closets\malfunction.dm" +#include "code\game\objects\structures\crates_lockers\closets\statue.dm" #include "code\game\objects\structures\crates_lockers\closets\syndicate.dm" #include "code\game\objects\structures\crates_lockers\closets\utility_closets.dm" #include "code\game\objects\structures\crates_lockers\closets\walllocker.dm" @@ -746,6 +761,7 @@ #include "code\game\objects\structures\stool_bed_chair_nest\wheelchair.dm" #include "code\game\turfs\simulated.dm" #include "code\game\turfs\turf.dm" +#include "code\game\turfs\turf_flick_animations.dm" #include "code\game\turfs\unsimulated.dm" #include "code\game\turfs\simulated\floor.dm" #include "code\game\turfs\simulated\floor_types.dm" @@ -1046,13 +1062,24 @@ #include "code\modules\mob\typing_indicator.dm" #include "code\modules\mob\update_icons.dm" #include "code\modules\mob\dead\death.dm" +#include "code\modules\mob\dead\observer\login.dm" #include "code\modules\mob\dead\observer\logout.dm" #include "code\modules\mob\dead\observer\observer.dm" #include "code\modules\mob\dead\observer\say.dm" #include "code\modules\mob\freelook\chunk.dm" #include "code\modules\mob\freelook\eye.dm" +#include "code\modules\mob\freelook\life.dm" +#include "code\modules\mob\freelook\read_me.dm" #include "code\modules\mob\freelook\update_triggers.dm" #include "code\modules\mob\freelook\visualnet.dm" +#include "code\modules\mob\freelook\ai\cameranet.dm" +#include "code\modules\mob\freelook\ai\chunk.dm" +#include "code\modules\mob\freelook\ai\eye.dm" +#include "code\modules\mob\freelook\ai\update_triggers.dm" +#include "code\modules\mob\freelook\mask\chunk.dm" +#include "code\modules\mob\freelook\mask\cultnet.dm" +#include "code\modules\mob\freelook\mask\eye.dm" +#include "code\modules\mob\freelook\mask\update_triggers.dm" #include "code\modules\mob\language\generic.dm" #include "code\modules\mob\language\language.dm" #include "code\modules\mob\language\monkey.dm" @@ -1060,6 +1087,7 @@ #include "code\modules\mob\language\station.dm" #include "code\modules\mob\language\synthetic.dm" #include "code\modules\mob\living\damage_procs.dm" +#include "code\modules\mob\living\default_language.dm" #include "code\modules\mob\living\living.dm" #include "code\modules\mob\living\living_defense.dm" #include "code\modules\mob\living\living_defines.dm" @@ -1176,11 +1204,6 @@ #include "code\modules\mob\living\silicon\ai\logout.dm" #include "code\modules\mob\living\silicon\ai\say.dm" #include "code\modules\mob\living\silicon\ai\subsystems.dm" -#include "code\modules\mob\living\silicon\ai\freelook\cameranet.dm" -#include "code\modules\mob\living\silicon\ai\freelook\chunk.dm" -#include "code\modules\mob\living\silicon\ai\freelook\eye.dm" -#include "code\modules\mob\living\silicon\ai\freelook\read_me.dm" -#include "code\modules\mob\living\silicon\ai\freelook\update_triggers.dm" #include "code\modules\mob\living\silicon\decoy\death.dm" #include "code\modules\mob\living\silicon\decoy\decoy.dm" #include "code\modules\mob\living\silicon\decoy\life.dm" @@ -1237,6 +1260,7 @@ #include "code\modules\mob\living\simple_animal\friendly\spiderbot.dm" #include "code\modules\mob\living\simple_animal\friendly\tomato.dm" #include "code\modules\mob\living\simple_animal\hostile\alien.dm" +#include "code\modules\mob\living\simple_animal\hostile\bat.dm" #include "code\modules\mob\living\simple_animal\hostile\bear.dm" #include "code\modules\mob\living\simple_animal\hostile\carp.dm" #include "code\modules\mob\living\simple_animal\hostile\creature.dm" @@ -1263,10 +1287,15 @@ #include "code\modules\nano\JSON Reader.dm" #include "code\modules\nano\JSON Writer.dm" #include "code\modules\nano\nanoexternal.dm" -#include "code\modules\nano\nanointeraction.dm" #include "code\modules\nano\nanomanager.dm" #include "code\modules\nano\nanomapgen.dm" #include "code\modules\nano\nanoui.dm" +#include "code\modules\nano\interaction\admin.dm" +#include "code\modules\nano\interaction\base.dm" +#include "code\modules\nano\interaction\contained.dm" +#include "code\modules\nano\interaction\default.dm" +#include "code\modules\nano\interaction\inventory.dm" +#include "code\modules\nano\interaction\zlevel.dm" #include "code\modules\nano\modules\alarm_monitor.dm" #include "code\modules\nano\modules\crew_monitor.dm" #include "code\modules\nano\modules\human_appearance.dm" @@ -1349,12 +1378,14 @@ #include "code\modules\power\rust\virtual_particle_catcher.dm" #include "code\modules\power\sensors\powernet_sensor.dm" #include "code\modules\power\sensors\sensor_monitoring.dm" +#include "code\modules\power\singularity\act.dm" #include "code\modules\power\singularity\collector.dm" #include "code\modules\power\singularity\containment_field.dm" #include "code\modules\power\singularity\emitter.dm" #include "code\modules\power\singularity\field_generator.dm" #include "code\modules\power\singularity\generator.dm" #include "code\modules\power\singularity\investigate.dm" +#include "code\modules\power\singularity\narsie.dm" #include "code\modules\power\singularity\singularity.dm" #include "code\modules\power\singularity\particle_accelerator\particle.dm" #include "code\modules\power\singularity\particle_accelerator\particle_accelerator.dm" @@ -1547,24 +1578,39 @@ #include "code\modules\shuttles\shuttle_specops.dm" #include "code\modules\shuttles\shuttle_supply.dm" #include "code\modules\shuttles\shuttles_multi.dm" -#include "code\modules\spells\area_teleport.dm" -#include "code\modules\spells\conjure.dm" -#include "code\modules\spells\dumbfire.dm" -#include "code\modules\spells\emplosion.dm" -#include "code\modules\spells\ethereal_jaunt.dm" -#include "code\modules\spells\explosion.dm" -#include "code\modules\spells\genetic.dm" -#include "code\modules\spells\horsemask.dm" -#include "code\modules\spells\inflict_handler.dm" -#include "code\modules\spells\knock.dm" -#include "code\modules\spells\mind_transfer.dm" -#include "code\modules\spells\projectile.dm" -#include "code\modules\spells\spell.dm" +#include "code\modules\spells\artifacts.dm" +#include "code\modules\spells\construct_spells.dm" +#include "code\modules\spells\no_clothes.dm" +#include "code\modules\spells\spell_code.dm" +#include "code\modules\spells\spell_projectile.dm" #include "code\modules\spells\spellbook.dm" -#include "code\modules\spells\trigger.dm" -#include "code\modules\spells\turf_teleport.dm" -#include "code\modules\spells\wizard_artifacts.dm" -#include "code\modules\spells\wizard_spells.dm" +#include "code\modules\spells\spells.dm" +#include "code\modules\spells\aoe_turf\aoe_turf.dm" +#include "code\modules\spells\aoe_turf\blink.dm" +#include "code\modules\spells\aoe_turf\charge.dm" +#include "code\modules\spells\aoe_turf\disable_tech.dm" +#include "code\modules\spells\aoe_turf\knock.dm" +#include "code\modules\spells\aoe_turf\smoke.dm" +#include "code\modules\spells\aoe_turf\summons.dm" +#include "code\modules\spells\aoe_turf\conjure\conjure.dm" +#include "code\modules\spells\aoe_turf\conjure\construct.dm" +#include "code\modules\spells\aoe_turf\conjure\forcewall.dm" +#include "code\modules\spells\general\area_teleport.dm" +#include "code\modules\spells\general\rune_write.dm" +#include "code\modules\spells\targeted\disintegrate.dm" +#include "code\modules\spells\targeted\ethereal_jaunt.dm" +#include "code\modules\spells\targeted\flesh_to_stone.dm" +#include "code\modules\spells\targeted\genetic.dm" +#include "code\modules\spells\targeted\harvest.dm" +#include "code\modules\spells\targeted\horsemask.dm" +#include "code\modules\spells\targeted\mind_transfer.dm" +#include "code\modules\spells\targeted\shift.dm" +#include "code\modules\spells\targeted\subjugate.dm" +#include "code\modules\spells\targeted\targeted.dm" +#include "code\modules\spells\targeted\projectile\dumbfire.dm" +#include "code\modules\spells\targeted\projectile\fireball.dm" +#include "code\modules\spells\targeted\projectile\magic_missile.dm" +#include "code\modules\spells\targeted\projectile\projectile.dm" #include "code\modules\supermatter\supermatter.dm" #include "code\modules\surgery\bones.dm" #include "code\modules\surgery\brainrepair.dm" diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index cbaeb3bf9c9..0f0d7095fa8 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -383,7 +383,6 @@ user << "You are too far away to read the gauge." if(welded) user << "It seems welded shut." - ..() /obj/machinery/atmospherics/unary/vent_pump/power_change() var/old_stat = stat diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm index 8d88ad4db42..63a0549acc8 100644 --- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm @@ -277,7 +277,6 @@ user << "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W" else user << "You are too far away to read the gauge." - ..() /obj/machinery/atmospherics/unary/vent_scrubber/Del() if(initial_loc) diff --git a/code/__HELPERS/atom_pool.dm b/code/__HELPERS/atom_pool.dm new file mode 100644 index 00000000000..77a7caf5e40 --- /dev/null +++ b/code/__HELPERS/atom_pool.dm @@ -0,0 +1,93 @@ + +/* +/tg/station13 /atom/movable Pool: +--------------------------------- +By RemieRichards + +Creation/Deletion is laggy, so let's reduce reuse and recycle! + +Locked to /atom/movable and it's subtypes due to Loc being a const var on /atom +but being read&write on /movable due to how they... move. + +*/ + +var/global/list/GlobalPool = list() + +//You'll be using this proc 90% of the time. +//It grabs a type from the pool if it can +//And if it can't, it creates one +//The pool is flexible and will expand to fit +//The new created atom when it eventually +//Goes into the pool + +//Second argument can be a new location +//Or a list of arguments +//Either way it gets passed to new + +/proc/PoolOrNew(var/get_type,var/second_arg) + if(!get_type) + return + + var/atom/movable/AM + AM = GetFromPool(get_type,second_arg) + + if(!AM) + if(ispath(get_type)) + if(islist(second_arg)) + return new get_type (arglist(second_arg)) + else + return new get_type (second_arg) + return AM + + +/proc/GetFromPool(var/get_type,var/second_arg) + if(!get_type) + return 0 + + if(isnull(GlobalPool[get_type])) + return 0 + + if(length(GlobalPool[get_type]) == 0) + return 0 + + var/atom/movable/AM = pick_n_take(GlobalPool[get_type]) + if(AM) + AM.ResetVars() + if(islist(second_arg)) + AM.loc = second_arg[1] + AM.New(arglist(second_arg)) + else + AM.loc = second_arg + AM.New(second_arg) + return AM + return 0 + + + +/proc/PlaceInPool(var/atom/movable/AM) + if(!istype(AM)) + return + + if(AM in GlobalPool[AM.type]) + return + + if(!GlobalPool[AM.type]) + GlobalPool[AM.type] = list() + + GlobalPool[AM.type] |= AM + + AM.Destroy() + AM.ResetVars() + + + +/atom/movable/proc/ResetVars(var/list/exlude = list()) + var/list/excluded = list("animate_movement", "loc", "locs", "parent_type", "vars", "verbs", "type") + exlude + + for(var/V in vars) + if(V in excluded) + continue + + vars[V] = initial(vars[V]) + + vars["loc"] = null diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 45618f2ffce..bc06c3d239c 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -27,6 +27,11 @@ if(A.name == N) return A return 0 + +/proc/get_area_master(const/O) + var/area/A = get_area(O) + if (isarea(A)) + return A.master /proc/in_range(source, user) if(get_dist(source, user) <= 1) diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 01b9509ae86..7484d016b6c 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -49,6 +49,17 @@ var/global/list/undershirt_t = list("White Tank top" = "u1", "Black Tank top" = //Backpacks var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Alt") var/global/list/exclude_jobs = list(/datum/job/ai,/datum/job/cyborg) + +// Visual nets +var/list/datum/visualnet/visual_nets = list() +var/datum/visualnet/camera/cameranet = new() +var/datum/visualnet/cult/cultnet = new() + +// Runes +var/global/list/rune_list = new() +var/global/list/escape_list = list() +var/global/list/endgame_exits = list() +var/global/list/endgame_safespawns = list() ////////////////////////// /////Initial Building///// ////////////////////////// diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm index b7caf86669a..a1f13c18ab2 100644 --- a/code/__HELPERS/lists.dm +++ b/code/__HELPERS/lists.dm @@ -30,6 +30,13 @@ return "[output][and_text][input[index]]" + +/proc/ConvertReqString2List(var/list/source_list) + var/list/temp_list = params2list(source_list) + for(var/O in temp_list) + temp_list[O] = text2num(temp_list[O]) + return temp_list + //Returns list element or null. Should prevent "index out of bounds" error. proc/listgetindex(var/list/list,index) if(istype(list) && list.len) diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 54ce601ac7e..9ebc3512dde 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -183,7 +183,7 @@ /proc/replace_characters(var/t,var/list/repl_chars) for(var/char in repl_chars) - replacetext(t, char, repl_chars[char]) + t = replacetext(t, char, repl_chars[char]) return t //Adds 'u' number of zeros ahead of the text 't' diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 44973d3f0a5..900e89e7e75 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -48,6 +48,11 @@ #define ui_monkey_mask "5:14,1:5" //monkey #define ui_monkey_back "6:14,1:5" //monkey +#define ui_construct_health "15:00,7:15" //same height as humans, hugging the right border +#define ui_construct_purge "15:00,6:15" +#define ui_construct_fire "14:16,8:13" //above health, slightly to the left +#define ui_construct_pull "14:28,2:10" //above the zone_sel icon + //Lower right, persistant menu #define ui_dropbutton "11:22,1:5" #define ui_drop_throw "14:28,2:7" @@ -119,3 +124,6 @@ #define ui_iarrowleft "SOUTH-1,11" #define ui_iarrowright "SOUTH-1,13" + +#define ui_spell_master "14:16,14:16" +#define ui_genetic_master "14:16,12:16" diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index c41f9594b34..466a9e28754 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -33,7 +33,7 @@ var/list/global_huds = list( screen.screen_loc = "1,1" screen.icon = 'icons/obj/hud_full.dmi' screen.icon_state = icon_state - screen.layer = 17 + screen.layer = SCREEN_LAYER screen.mouse_opacity = 0 return screen @@ -249,7 +249,11 @@ datum/hud/New(mob/owner) robot_hud() else if(isobserver(mymob)) ghost_hud() + else + mymob.instantiate_hud(src) +/mob/proc/instantiate_hud(var/datum/hud/HUD) + return //Triggered when F12 is pressed (Unless someone changed something in the DMF) /mob/verb/button_pressed_F12(var/full = 0 as null) diff --git a/code/_onclick/hud/other_mobs.dm b/code/_onclick/hud/other_mobs.dm index 3f785d8a83b..5dd1b542cfa 100644 --- a/code/_onclick/hud/other_mobs.dm +++ b/code/_onclick/hud/other_mobs.dm @@ -101,3 +101,59 @@ mymob.client.screen += src.adding return + +/mob/living/simple_animal/construct/instantiate_hud(var/datum/hud/HUD) + HUD.construct_hud() + +/datum/hud/proc/construct_hud() + var/constructtype + + if(istype(mymob,/mob/living/simple_animal/construct/armoured) || istype(mymob,/mob/living/simple_animal/construct/behemoth)) + constructtype = "juggernaut" + else if(istype(mymob,/mob/living/simple_animal/construct/builder)) + constructtype = "artificer" + else if(istype(mymob,/mob/living/simple_animal/construct/wraith)) + constructtype = "wraith" + else if(istype(mymob,/mob/living/simple_animal/construct/harvester)) + constructtype = "harvester" + + mymob.flash = new /obj/screen() + mymob.flash.icon = 'icons/mob/screen1.dmi' + mymob.flash.icon_state = "blank" + mymob.flash.name = "flash" + mymob.flash.screen_loc = "1,1 to 15,15" + mymob.flash.layer = 17 + + if(constructtype) + mymob.fire = new /obj/screen() + mymob.fire.icon = 'icons/mob/screen1_construct.dmi' + mymob.fire.icon_state = "fire0" + mymob.fire.name = "fire" + mymob.fire.screen_loc = ui_construct_fire + + mymob.healths = new /obj/screen() + mymob.healths.icon = 'icons/mob/screen1_construct.dmi' + mymob.healths.icon_state = "[constructtype]_health0" + mymob.healths.name = "health" + mymob.healths.screen_loc = ui_construct_health + + mymob.pullin = new /obj/screen() + mymob.pullin.icon = 'icons/mob/screen1_construct.dmi' + mymob.pullin.icon_state = "pull0" + mymob.pullin.name = "pull" + mymob.pullin.screen_loc = ui_construct_pull + + mymob.zone_sel = new /obj/screen/zone_sel() + mymob.zone_sel.icon = 'icons/mob/screen1_construct.dmi' + mymob.zone_sel.overlays.len = 0 + mymob.zone_sel.overlays += image('icons/mob/zone_sel.dmi', "[mymob.zone_sel.selecting]") + + mymob.purged = new /obj/screen() + mymob.purged.icon = 'icons/mob/screen1_construct.dmi' + mymob.purged.icon_state = "purge0" + mymob.purged.name = "purged" + mymob.purged.screen_loc = ui_construct_purge + + mymob.client.screen = null + + mymob.client.screen += list(mymob.fire, mymob.healths, mymob.pullin, mymob.zone_sel, mymob.purged, mymob.flash) diff --git a/code/_onclick/hud/spell_screen_objects.dm b/code/_onclick/hud/spell_screen_objects.dm new file mode 100644 index 00000000000..ed208a588de --- /dev/null +++ b/code/_onclick/hud/spell_screen_objects.dm @@ -0,0 +1,175 @@ +/obj/screen/movable/spell_master + name = "Spells" + icon = 'icons/mob/screen_spells.dmi' + icon_state = "wiz_spell_ready" + var/list/obj/screen/spell/spell_objects = list() + var/showing = 0 + + var/open_state = "master_open" + var/closed_state = "master_closed" + + screen_loc = ui_spell_master + + var/mob/spell_holder + +/obj/screen/movable/spell_master/MouseDrop() + if(showing) + return + + return ..() + +/obj/screen/movable/spell_master/Click() + if(!spell_objects.len) + qdel(src) + return + + toggle_open() + +/obj/screen/movable/spell_master/proc/toggle_open(var/forced_state = 0) + if(showing && (forced_state != 2)) + for(var/obj/screen/spell/O in spell_objects) + if(spell_holder && spell_holder.client) + spell_holder.client.screen -= O + O.handle_icon_updates = 0 + showing = 0 + overlays.len = 0 + overlays.Add(closed_state) + else if(forced_state != 1) + var/temp_loc = screen_loc + + var/x_position = text2num(copytext(temp_loc, 1, findtext(temp_loc, ":"))) + var/x_pix = text2num(copytext(temp_loc, findtext(temp_loc, ":") + 1, findtext(temp_loc, ","))) + temp_loc = copytext(temp_loc, findtext(temp_loc, ",") + 1) + var/y_position = text2num(copytext(temp_loc, 1, findtext(temp_loc, ":"))) + var/y_pix = text2num(copytext(temp_loc, findtext(temp_loc, ":")+1)) + + for(var/i = 1; i <= spell_objects.len; i++) + var/obj/screen/spell/S = spell_objects[i] + S.screen_loc = "[x_position + (x_position < 8 ? 1 : -1)*(i%7)]:[x_pix],[y_position + (y_position < 8 ? round(i/7) : -round(i/7))]:[y_pix]" + if(spell_holder && spell_holder.client) + spell_holder.client.screen += S + S.handle_icon_updates = 1 + update_spells(1) + showing = 1 + overlays.len = 0 + overlays.Add(open_state) + +/obj/screen/movable/spell_master/proc/add_spell(var/spell/spell) + if(!spell) return + + for(var/obj/screen/spell/spellscreen in spell_objects) + if(spellscreen.spell == spell) + return + + if(spell.spell_flags & NO_BUTTON) //no button to add if we don't get one + return + + var/obj/screen/spell/newscreen = new + + newscreen.spell = spell + if(!spell.override_base) //if it's not set, we do basic checks + if(spell.spell_flags & CONSTRUCT_CHECK) + newscreen.spell_base = "const" //construct spells + else + newscreen.spell_base = "wiz" //wizard spells + else + newscreen.spell_base = spell.override_base + newscreen.name = spell.name + newscreen.update_charge(1) + spell_objects.Add(newscreen) + toggle_open(2) //forces the icons to refresh on screen + +/obj/screen/movable/spell_master/proc/remove_spell(var/spell/spell) + for(var/obj/screen/spell/s_object in spell_objects) + if(s_object.spell == spell) + spell_objects.Remove(s_object) + qdel(s_object) + break + + if(spell_objects.len) + toggle_open(showing + 1) + else + spell_holder.spell_masters.Remove(src) + qdel(src) + +/obj/screen/movable/spell_master/proc/silence_spells(var/amount) + for(var/obj/screen/spell/spell in spell_objects) + spell.spell.silenced = amount + spell.update_charge(1) + +/obj/screen/movable/spell_master/proc/update_spells(forced = 0, mob/user) + if(user && user.client) + if(!(src in user.client.screen)) + user.client.screen += src + for(var/obj/screen/spell/spell in spell_objects) + spell.update_charge(forced) + + +/obj/screen/movable/spell_master/genetic + name = "Mutant Powers" + icon_state = "genetic_spell_ready" + + open_state = "genetics_open" + closed_state = "genetics_closed" + + screen_loc = ui_genetic_master + +//////////////ACTUAL SPELLS////////////// +//This is what you click to cast things// +///////////////////////////////////////// +/obj/screen/spell + icon = 'icons/mob/screen_spells.dmi' + icon_state = "wiz_spell_base" + var/spell_base = "wiz" + var/last_charge = 0 //not a time, but the last remembered charge value + + var/spell/spell = null + var/handle_icon_updates = 0 + + var/icon/last_charged_icon + +/obj/screen/spell/proc/update_charge(var/forced_update = 0) + if(!spell) + qdel(src) + return + + if((last_charge == spell.charge_counter || !handle_icon_updates) && !forced_update) + return //nothing to see here + + overlays -= spell.hud_state + + if(spell.charge_type == Sp_RECHARGE || spell.charge_type == Sp_CHARGES) + if(spell.charge_counter < spell.charge_max) + icon_state = "[spell_base]_spell_base" + if(spell.charge_counter > 0) + var/icon/partial_charge = icon(src.icon, "[spell_base]_spell_ready") + partial_charge.Crop(1, 1, partial_charge.Width(), round(partial_charge.Height() * spell.charge_counter / spell.charge_max)) + overlays += partial_charge + if(last_charged_icon) + overlays -= last_charged_icon + last_charged_icon = partial_charge + else if(last_charged_icon) + overlays -= last_charged_icon + last_charged_icon = null + else + icon_state = "[spell_base]_spell_ready" + if(last_charged_icon) + overlays -= last_charged_icon + else + icon_state = "[spell_base]_spell_ready" + + overlays += spell.hud_state + + last_charge = spell.charge_counter + + overlays -= "silence" + if(spell.silenced) + overlays += "silence" + +/obj/screen/spell/Click() + if(!usr || !spell) + qdel(src) + return + + spell.perform(usr) + update_charge(1) diff --git a/code/controllers/Processes/garbage.dm b/code/controllers/Processes/garbage.dm new file mode 100644 index 00000000000..11ba8979f5a --- /dev/null +++ b/code/controllers/Processes/garbage.dm @@ -0,0 +1,160 @@ +var/datum/controller/process/garbage_collector/garbage_collector + +// #define GC_DEBUG 1 +/datum/controller/process/garbage_collector + var/collection_timeout = 300 //deciseconds to wait to let running procs finish before we just say fuck it and force del() the object + var/max_checks_multiplier = 5 //multiplier (per-decisecond) for calculating max number of tests per SS tick. These tests check if our GC'd objects are actually GC'd + var/max_forcedel_multiplier = 1 //multiplier (per-decisecond) for calculating max number of force del() calls per SS tick. + + var/dels = 0 // number of del()'s we've done this tick + var/list/destroyed = list() // list of refID's of things that should be garbage collected + // refID's are associated with the time at which they time out and need to be manually del() + // we do this so we aren't constantly locating them and preventing them from being gc'd + + var/list/logging = list() // list of all types that have failed to GC associated with the number of times that's happened. + // the types are stored as strings + +/datum/controller/process/garbage_collector/setup() + name = "garbage" + schedule_interval = 60 // every 6 seconds + + if(!garbage_collector) + garbage_collector = src + +/datum/controller/process/garbage_collector/doWork() + dels = 0 + + var/time_to_kill = world.time - collection_timeout // Anything qdel() but not GC'd BEFORE this time needs to be manually del() + var/checkRemain = max_checks_multiplier * schedule_interval + var/maxDels = max_forcedel_multiplier * schedule_interval + + while(destroyed.len && --checkRemain >= 0) + if(dels >= maxDels) + #ifdef GC_DEBUG + testing("GC: Reached max force dels per tick [dels] vs [GC_FORCE_DEL_PER_TICK]") + #endif + break // Server's already pretty pounded, everything else can wait 2 seconds + var/refID = destroyed[1] + var/GCd_at_time = destroyed[refID] + if(GCd_at_time > time_to_kill) + #ifdef GC_DEBUG + testing("GC: [refID] not old enough, breaking at [world.time] for [GCd_at_time - time_to_kill] deciseconds until [GCd_at_time + GC_COLLECTION_TIMEOUT]") + #endif + break // Everything else is newer, skip them + var/atom/A = locate(refID) + #ifdef GC_DEBUG + testing("GC: [refID] old enough to test: GCd_at_time: [GCd_at_time] time_to_kill: [time_to_kill] current: [world.time]") + #endif + if(A && A.gc_destroyed == GCd_at_time) // So if something else coincidently gets the same ref, it's not deleted by mistake + // Something's still referring to the qdel'd object. Kill it. + testing("GC: -- \ref[A] | [A.type] was unable to be GC'd and was deleted --") + logging["[A.type]"]++ + del(A) + ++dels + #ifdef GC_DEBUG + else + testing("GC: [refID] properly GC'd at [world.time] with timeout [GCd_at_time]") + #endif + destroyed.Cut(1, 2) + scheck() + +/datum/controller/process/garbage_collector/proc/AddTrash(datum/A) + if(!istype(A) || !isnull(A.gc_destroyed)) + return + #ifdef GC_DEBUG + testing("GC: AddTrash([A.type])") + #endif + A.gc_destroyed = world.time + destroyed -= "\ref[A]" // Removing any previous references that were GC'd so that the current object will be at the end of the list. + destroyed["\ref[A]"] = world.time + + +// Should be treated as a replacement for the 'del' keyword. +// Datums passed to this will be given a chance to clean up references to allow the GC to collect them. +/proc/qdel(var/datum/A) + if(!A) + return + if(!istype(A)) + //warning("qdel() passed object of type [A.type]. qdel() can only handle /datum types.") + del(A) + garbage_collector.dels++ + else if(isnull(A.gc_destroyed)) + // Let our friend know they're about to get fucked up. + . = !A.Destroy() + if(. && A) + A.finalize_qdel() + +/datum/proc/finalize_qdel() + del(src) + +/turf/finalize_qdel() + garbage_collector.AddTrash(src) + +// Default implementation of clean-up code. +// This should be overridden to remove all references pointing to the object being destroyed. +// Return true if the the GC controller should allow the object to continue existing. (Useful if pooling objects.) +/datum/proc/Destroy() + return + +/datum/var/gc_destroyed //Time when this object was destroyed. + +#ifdef TESTING +/client/var/running_find_references + +/atom/verb/find_references() + set category = "Debug" + set name = "Find References" + set background = 1 + set src in world + + if(!usr || !usr.client) + return + + if(usr.client.running_find_references) + testing("CANCELLED search for references to a [usr.client.running_find_references].") + usr.client.running_find_references = null + return + + if(alert("Running this will create a lot of lag until it finishes. You can cancel it by running it again. Would you like to begin the search?", "Find References", "Yes", "No") == "No") + return + + // Remove this object from the list of things to be auto-deleted. + if(garbage) + garbage.destroyed -= "\ref[src]" + + usr.client.running_find_references = type + testing("Beginning search for references to a [type].") + var/list/things = list() + for(var/client/thing) + things += thing + for(var/datum/thing) + things += thing + for(var/atom/thing) + things += thing + testing("Collected list of things in search for references to a [type]. ([things.len] Thing\s)") + for(var/datum/thing in things) + if(!usr.client.running_find_references) return + for(var/varname in thing.vars) + var/variable = thing.vars[varname] + if(variable == src) + testing("Found [src.type] \ref[src] in [thing.type]'s [varname] var.") + else if(islist(variable)) + if(src in variable) + testing("Found [src.type] \ref[src] in [thing.type]'s [varname] list var.") + testing("Completed search for references to a [type].") + usr.client.running_find_references = null + +/client/verb/purge_all_destroyed_objects() + set category = "Debug" + if(garbage) + while(garbage.destroyed.len) + var/datum/o = locate(garbage.destroyed[1]) + if(istype(o) && o.gc_destroyed) + del(o) + garbage.dels++ + garbage.destroyed.Cut(1, 2) +#endif + +#ifdef GC_DEBUG +#undef GC_DEBUG +#endif diff --git a/code/controllers/Processes/nanoui.dm b/code/controllers/Processes/nanoui.dm index c8396bcab87..a35280131fc 100644 --- a/code/controllers/Processes/nanoui.dm +++ b/code/controllers/Processes/nanoui.dm @@ -3,7 +3,7 @@ /datum/controller/process/nanoui/setup() name = "nanoui" - schedule_interval = 20 // every 2 seconds + schedule_interval = 10 // every 1 second updateQueueInstance = new /datum/controller/process/nanoui/doWork() diff --git a/code/controllers/Processes/turf.dm b/code/controllers/Processes/turf.dm new file mode 100644 index 00000000000..c1efac52f97 --- /dev/null +++ b/code/controllers/Processes/turf.dm @@ -0,0 +1,9 @@ +var/global/list/processing_turfs = list() + +/datum/controller/process/turf/setup() + name = "turf" + schedule_interval = 20 // every 2 seconds + +/datum/controller/process/turf/doWork() + for(var/turf/unsimulated/wall/supermatter/SM in processing_turfs) + SM.process() diff --git a/code/controllers/_DynamicAreaLighting_TG.dm b/code/controllers/_DynamicAreaLighting_TG.dm index efa2a226b1f..6eeecef90de 100644 --- a/code/controllers/_DynamicAreaLighting_TG.dm +++ b/code/controllers/_DynamicAreaLighting_TG.dm @@ -323,6 +323,7 @@ turf/proc/shift_to_subarea() A.SetLightLevel(level, color_light) A.contents += src // move the turf into the area + universe.OnTurfTick(src) // Dedicated lighting sublevel for space turfs // helps us depower things in space, remove space fire alarms, diff --git a/code/controllers/emergency_shuttle_controller.dm b/code/controllers/emergency_shuttle_controller.dm index 33dfc36f7f7..4f55d3e4063 100644 --- a/code/controllers/emergency_shuttle_controller.dm +++ b/code/controllers/emergency_shuttle_controller.dm @@ -114,6 +114,8 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle priority_announcement.Announce("The scheduled crew transfer has been cancelled.") /datum/emergency_shuttle_controller/proc/can_call() + if (!universe.OnShuttleCall(null)) + return 0 if (deny_shuttle) return 0 if (shuttle.moving_status != SHUTTLE_IDLE || !shuttle.location) //must be idle at centcom diff --git a/code/datums/ai_law_sets.dm b/code/datums/ai_law_sets.dm index 278fd4a0df7..74b18fa2e75 100644 --- a/code/datums/ai_law_sets.dm +++ b/code/datums/ai_law_sets.dm @@ -99,6 +99,16 @@ add_inherent_law("Interfere with no being that is not a fellow drone.") ..() +/datum/ai_laws/construction_drone + name = "Construction Protocols" + law_header = "Construction Protocols" + selectable = 1 + +/datum/ai_laws/construction_drone/New() + add_inherent_law("Repair, refit and upgrade your assigned vessel.") + add_inherent_law("Prevent unplanned damage to your assigned vessel wherever possible.") + ..() + /******************** T.Y.R.A.N.T. ********************/ /datum/ai_laws/tyrant name = "T.Y.R.A.N.T." diff --git a/code/datums/datumvars.dm.orig b/code/datums/datumvars.dm.orig deleted file mode 100644 index fd8c7f4590a..00000000000 --- a/code/datums/datumvars.dm.orig +++ /dev/null @@ -1,988 +0,0 @@ - -// reference: /client/proc/modify_variables(var/atom/O, var/param_var_name = null, var/autodetect_class = 0) - -client - proc/debug_variables(datum/D in world) - set category = "Debug" - set name = "View Variables" - //set src in world - - - if(!usr.client || !usr.client.holder) - usr << "\red You need to be an administrator to access this." - return - - - var/title = "" - var/body = "" - - if(!D) return - if(istype(D, /atom)) - var/atom/A = D - title = "[A.name] (\ref[A]) = [A.type]" - - #ifdef VARSICON - if (A.icon) - body += debug_variable("icon", new/icon(A.icon, A.icon_state, A.dir), 0) - #endif - - var/icon/sprite - - if(istype(D,/atom)) - var/atom/AT = D - if(AT.icon && AT.icon_state) - sprite = new /icon(AT.icon, AT.icon_state) - usr << browse_rsc(sprite, "view_vars_sprite.png") - - title = "[D] (\ref[D]) = [D.type]" - - body += {" "} - - body += "" - - body += "
" - - if(sprite) - body += "" - - body += "
" - else - body += "
" - - body += "
" - - if(istype(D,/atom)) - var/atom/A = D - if(isliving(A)) - body += "[D]" - if(A.dir) - body += "
<< [dir2text(A.dir)] >>" - var/mob/living/M = A - body += "
[M.ckey ? M.ckey : "No ckey"] / [M.real_name ? M.real_name : "No real name"]" - body += {" -
- BRUTE:[M.getBruteLoss()] - FIRE:[M.getFireLoss()] - TOXIN:[M.getToxLoss()] - OXY:[M.getOxyLoss()] - CLONE:[M.getCloneLoss()] - BRAIN:[M.getBrainLoss()] - - - - "} - else - body += "[D]" - if(A.dir) - body += "
<< [dir2text(A.dir)] >>" - else - body += "[D]" - - body += "
" - - body += "
" - - var/formatted_type = text("[D.type]") - if(length(formatted_type) > 25) - var/middle_point = length(formatted_type) / 2 - var/splitpoint = findtext(formatted_type,"/",middle_point) - if(splitpoint) - formatted_type = "[copytext(formatted_type,1,splitpoint)]
[copytext(formatted_type,splitpoint)]" - else - formatted_type = "Type too long" //No suitable splitpoint (/) found. - - body += "
[formatted_type]" - - if(src.holder && src.holder.marked_datum && src.holder.marked_datum == D) - body += "
Marked Object" - - body += "
" - - body += "
Refresh" - - //if(ismob(D)) - // body += "
Show player panel

" - - body += {"
-
" - - body += "

" - - body += "E - Edit, tries to determine the variable type by itself.
" - body += "C - Change, asks you for the var type first.
" - body += "M - Mass modify: changes this variable for all objects of this type.

" - - body += "
Search:

" - - body += "
    " - - var/list/names = list() - for (var/V in D.vars) - names += V - - names = sortList(names) - - for (var/V in names) - body += debug_variable(V, D.vars[V], 0, D) - - body += "
" - - var/html = "" - if (title) - html += "[title]" - html += {""} - html += "" - html += body - - html += {" - - "} - - html += "" - - usr << browse(html, "window=variables\ref[D];size=475x650") - - return - - proc/debug_variable(name, value, level, var/datum/DA = null) - var/html = "" - - if(DA) - html += "
  • (E) (C) (M) " - else - html += "
  • " - - if (isnull(value)) - html += "[name] = null" - - else if (istext(value)) - html += "[name] = \"[value]\"" - - else if (isicon(value)) - #ifdef VARSICON - var/icon/I = new/icon(value) - var/rnd = rand(1,10000) - var/rname = "tmp\ref[I][rnd].png" - usr << browse_rsc(I, rname) - html += "[name] = ([value]) " - #else - html += "[name] = /icon ([value])" - #endif - -/* else if (istype(value, /image)) - #ifdef VARSICON - var/rnd = rand(1, 10000) - var/image/I = value - - src << browse_rsc(I.icon, "tmp\ref[value][rnd].png") - html += "[name] = " - #else - html += "[name] = /image ([value])" - #endif -*/ - else if (isfile(value)) - html += "[name] = '[value]'" - - else if (istype(value, /datum)) - var/datum/D = value - html += "[name] \ref[value] = [D.type]" - - else if (istype(value, /client)) - var/client/C = value - html += "[name] \ref[value] = [C] [C.type]" - // - else if (istype(value, /list)) - var/list/L = value - html += "[name] = /list ([L.len])" - - if (L.len > 0 && !(name == "underlays" || name == "overlays" || name == "vars" || L.len > 500)) - // not sure if this is completely right... - if(0) //(L.vars.len > 0) - html += "
      " - html += "
    " - else - html += "" - - else - html += "[name] = [value]" - - html += "
  • " - - return html - -/client/proc/view_var_Topic(href, href_list, hsrc) - //This should all be moved over to datum/admins/Topic() or something ~Carn - if( (usr.client != src) || !src.holder ) - return - if(href_list["Vars"]) - debug_variables(locate(href_list["Vars"])) - - //~CARN: for renaming mobs (updates their name, real_name, mind.name, their ID/PDA and datacore records). - else if(href_list["rename"]) - if(!check_rights(R_VAREDIT)) return - - var/mob/M = locate(href_list["rename"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - var/new_name = sanitize(input(usr,"What would you like to name this mob?","Input a name",M.real_name) as text|null, MAX_NAME_LEN) - if( !new_name || !M ) return - - message_admins("Admin [key_name_admin(usr)] renamed [key_name_admin(M)] to [new_name].") - M.fully_replace_character_name(M.real_name,new_name) - href_list["datumrefresh"] = href_list["rename"] - - else if(href_list["varnameedit"] && href_list["datumedit"]) - if(!check_rights(R_VAREDIT)) return - - var/D = locate(href_list["datumedit"]) - if(!istype(D,/datum) && !istype(D,/client)) - usr << "This can only be used on instances of types /client or /datum" - return - - modify_variables(D, href_list["varnameedit"], 1) - - else if(href_list["varnamechange"] && href_list["datumchange"]) - if(!check_rights(R_VAREDIT)) return - - var/D = locate(href_list["datumchange"]) - if(!istype(D,/datum) && !istype(D,/client)) - usr << "This can only be used on instances of types /client or /datum" - return - - modify_variables(D, href_list["varnamechange"], 0) - - else if(href_list["varnamemass"] && href_list["datummass"]) - if(!check_rights(R_VAREDIT)) return - - var/atom/A = locate(href_list["datummass"]) - if(!istype(A)) - usr << "This can only be used on instances of type /atom" - return - - cmd_mass_modify_object_variables(A, href_list["varnamemass"]) - - else if(href_list["mob_player_panel"]) - if(!check_rights(0)) return - - var/mob/M = locate(href_list["mob_player_panel"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.holder.show_player_panel(M) - href_list["datumrefresh"] = href_list["mob_player_panel"] - - else if(href_list["give_spell"]) - if(!check_rights(R_ADMIN|R_FUN)) return - - var/mob/M = locate(href_list["give_spell"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.give_spell(M) - href_list["datumrefresh"] = href_list["give_spell"] - - else if(href_list["give_disease"]) - if(!check_rights(R_ADMIN|R_FUN)) return - - var/mob/M = locate(href_list["give_disease"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.give_disease(M) - href_list["datumrefresh"] = href_list["give_spell"] - - else if(href_list["give_disease2"]) - if(!check_rights(R_ADMIN|R_FUN)) return - - var/mob/M = locate(href_list["give_disease2"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.give_disease2(M) - href_list["datumrefresh"] = href_list["give_spell"] - - else if(href_list["godmode"]) - if(!check_rights(R_REJUVINATE)) return - - var/mob/M = locate(href_list["godmode"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.cmd_admin_godmode(M) - href_list["datumrefresh"] = href_list["godmode"] - - else if(href_list["gib"]) - if(!check_rights(0)) return - - var/mob/M = locate(href_list["gib"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.cmd_admin_gib(M) - - else if(href_list["build_mode"]) - if(!check_rights(R_BUILDMODE)) return - - var/mob/M = locate(href_list["build_mode"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - togglebuildmode(M) - href_list["datumrefresh"] = href_list["build_mode"] - - else if(href_list["drop_everything"]) - if(!check_rights(R_DEBUG|R_ADMIN)) return - - var/mob/M = locate(href_list["drop_everything"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - if(usr.client) - usr.client.cmd_admin_drop_everything(M) - - else if(href_list["direct_control"]) - if(!check_rights(0)) return - - var/mob/M = locate(href_list["direct_control"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - if(usr.client) - usr.client.cmd_assume_direct_control(M) - - else if(href_list["make_skeleton"]) - if(!check_rights(R_FUN)) return - - var/mob/living/carbon/human/H = locate(href_list["make_skeleton"]) - if(!istype(H)) - usr << "This can only be used on instances of type /mob/living/carbon/human" - return - - H.ChangeToSkeleton() - href_list["datumrefresh"] = href_list["make_skeleton"] - - else if(href_list["delall"]) - if(!check_rights(R_DEBUG|R_SERVER)) return - - var/obj/O = locate(href_list["delall"]) - if(!isobj(O)) - usr << "This can only be used on instances of type /obj" - return - - var/action_type = alert("Strict type ([O.type]) or type and all subtypes?",,"Strict type","Type and subtypes","Cancel") - if(action_type == "Cancel" || !action_type) - return - - if(alert("Are you really sure you want to delete all objects of type [O.type]?",,"Yes","No") != "Yes") - return - - if(alert("Second confirmation required. Delete?",,"Yes","No") != "Yes") - return - - var/O_type = O.type - switch(action_type) - if("Strict type") - var/i = 0 - for(var/obj/Obj in world) - if(Obj.type == O_type) - i++ - del(Obj) - if(!i) - usr << "No objects of this type exist" - return - log_admin("[key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ") - message_admins("\blue [key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ") - if("Type and subtypes") - var/i = 0 - for(var/obj/Obj in world) - if(istype(Obj,O_type)) - i++ - del(Obj) - if(!i) - usr << "No objects of this type exist" - return - log_admin("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ") - message_admins("\blue [key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ") - - else if(href_list["explode"]) - if(!check_rights(R_DEBUG|R_FUN)) return - - var/atom/A = locate(href_list["explode"]) - if(!isobj(A) && !ismob(A) && !isturf(A)) - usr << "This can only be done to instances of type /obj, /mob and /turf" - return - - src.cmd_admin_explosion(A) - href_list["datumrefresh"] = href_list["explode"] - - else if(href_list["emp"]) - if(!check_rights(R_DEBUG|R_FUN)) return - - var/atom/A = locate(href_list["emp"]) - if(!isobj(A) && !ismob(A) && !isturf(A)) - usr << "This can only be done to instances of type /obj, /mob and /turf" - return - - src.cmd_admin_emp(A) - href_list["datumrefresh"] = href_list["emp"] - - else if(href_list["mark_object"]) - if(!check_rights(0)) return - - var/datum/D = locate(href_list["mark_object"]) - if(!istype(D)) - usr << "This can only be done to instances of type /datum" - return - - src.holder.marked_datum = D - href_list["datumrefresh"] = href_list["mark_object"] - - else if(href_list["rotatedatum"]) - if(!check_rights(0)) return - - var/atom/A = locate(href_list["rotatedatum"]) - if(!istype(A)) - usr << "This can only be done to instances of type /atom" - return - - switch(href_list["rotatedir"]) - if("right") A.set_dir(turn(A.dir, -45)) - if("left") A.set_dir(turn(A.dir, 45)) - href_list["datumrefresh"] = href_list["rotatedatum"] - - else if(href_list["makemonkey"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makemonkey"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return - if(!H) - usr << "Mob doesn't exist anymore" - return - holder.Topic(href, list("monkeyone"=href_list["makemonkey"])) - - else if(href_list["makerobot"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makerobot"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return - if(!H) - usr << "Mob doesn't exist anymore" - return - holder.Topic(href, list("makerobot"=href_list["makerobot"])) - - else if(href_list["makealien"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makealien"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return - if(!H) - usr << "Mob doesn't exist anymore" - return - holder.Topic(href, list("makealien"=href_list["makealien"])) - - else if(href_list["makeslime"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makeslime"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return - if(!H) - usr << "Mob doesn't exist anymore" - return - holder.Topic(href, list("makeslime"=href_list["makeslime"])) - - else if(href_list["makeai"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makeai"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return - if(!H) - usr << "Mob doesn't exist anymore" - return - holder.Topic(href, list("makeai"=href_list["makeai"])) - - else if(href_list["setspecies"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["setspecies"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - var/new_species = input("Please choose a new species.","Species",null) as null|anything in all_species - - if(!H) - usr << "Mob doesn't exist anymore" - return - - if(H.set_species(new_species)) - usr << "Set species of [H] to [H.species]." - else - usr << "Failed! Something went wrong." - - else if(href_list["addlanguage"]) - if(!check_rights(R_SPAWN)) return - - var/mob/H = locate(href_list["addlanguage"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob" - return - - var/new_language = input("Please choose a language to add.","Language",null) as null|anything in all_languages - - if(!new_language) - return - - if(!H) - usr << "Mob doesn't exist anymore" - return - - if(H.add_language(new_language)) - usr << "Added [new_language] to [H]." - else - usr << "Mob already knows that language." - - else if(href_list["remlanguage"]) - if(!check_rights(R_SPAWN)) return - - var/mob/H = locate(href_list["remlanguage"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob" - return - - if(!H.languages.len) - usr << "This mob knows no languages." - return - - var/datum/language/rem_language = input("Please choose a language to remove.","Language",null) as null|anything in H.languages - - if(!rem_language) - return - - if(!H) - usr << "Mob doesn't exist anymore" - return - - if(H.remove_language(rem_language.name)) - usr << "Removed [rem_language] from [H]." - else - usr << "Mob doesn't know that language." - - else if(href_list["addverb"]) - if(!check_rights(R_DEBUG)) return - - var/mob/living/H = locate(href_list["addverb"]) - - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living" - return - var/list/possibleverbs = list() - possibleverbs += "Cancel" // One for the top... - possibleverbs += typesof(/mob/proc,/mob/verb,/mob/living/proc,/mob/living/verb) - switch(H.type) - if(/mob/living/carbon/human) - possibleverbs += typesof(/mob/living/carbon/proc,/mob/living/carbon/verb,/mob/living/carbon/human/verb,/mob/living/carbon/human/proc) - if(/mob/living/silicon/robot) - possibleverbs += typesof(/mob/living/silicon/proc,/mob/living/silicon/robot/proc,/mob/living/silicon/robot/verb) - if(/mob/living/silicon/ai) - possibleverbs += typesof(/mob/living/silicon/proc,/mob/living/silicon/ai/proc,/mob/living/silicon/ai/verb) - possibleverbs -= H.verbs - possibleverbs += "Cancel" // ...And one for the bottom - - var/verb = input("Select a verb!", "Verbs",null) as anything in possibleverbs - if(!H) - usr << "Mob doesn't exist anymore" - return - if(!verb || verb == "Cancel") - return - else - H.verbs += verb - - else if(href_list["remverb"]) - if(!check_rights(R_DEBUG)) return - - var/mob/H = locate(href_list["remverb"]) - - if(!istype(H)) - usr << "This can only be done to instances of type /mob" - return - var/verb = input("Please choose a verb to remove.","Verbs",null) as null|anything in H.verbs - if(!H) - usr << "Mob doesn't exist anymore" - return - if(!verb) - return - else - H.verbs -= verb - - else if(href_list["addorgan"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/M = locate(href_list["addorgan"]) - if(!istype(M)) - usr << "This can only be done to instances of type /mob/living/carbon" - return - - var/new_organ = input("Please choose an organ to add.","Organ",null) as null|anything in typesof(/obj/item/organ)-/obj/item/organ - if(!new_organ) return - - if(!M) - usr << "Mob doesn't exist anymore" - return - - if(locate(new_organ) in M.internal_organs) - usr << "Mob already has that organ." - return - -<<<<<<< HEAD - new new_organ(M) - -======= - if(istype(M,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - var/datum/organ/internal/I = new new_organ(H) - - var/organ_slot = input(usr, "Which slot do you want the organ to go in ('default' for default)?") as text|null - - if(!organ_slot) - return - - if(organ_slot != "default") - organ_slot = sanitize(organ_slot) - else - if(I.removed_type) - var/obj/item/organ/O = new I.removed_type() - organ_slot = O.organ_tag - del(O) - else - organ_slot = "unknown organ" - - if(H.internal_organs_by_name[organ_slot]) - usr << "[H] already has an organ in that slot." - del(I) - return - - H.internal_organs |= I - H.internal_organs_by_name[organ_slot] = I - usr << "Added new [new_organ] to [H] as slot [organ_slot]." - else - new new_organ(M) - usr << "Added new [new_organ] to [M]." ->>>>>>> 2aa4646fa0425bed412e2ef0e7852591ecb4bc40 - - else if(href_list["remorgan"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/M = locate(href_list["remorgan"]) - if(!istype(M)) - usr << "This can only be done to instances of type /mob/living/carbon" - return - - var/obj/item/organ/rem_organ = input("Please choose an organ to remove.","Organ",null) as null|anything in M.internal_organs - - if(!M) - usr << "Mob doesn't exist anymore" - return - - if(!(locate(rem_organ) in M.internal_organs)) - usr << "Mob does not have that organ." - return - - usr << "Removed [rem_organ] from [M]." - rem_organ.removed() - del(rem_organ) - - else if(href_list["fix_nano"]) - if(!check_rights(R_DEBUG)) return - - var/mob/H = locate(href_list["fix_nano"]) - - if(!istype(H) || !H.client) - usr << "This can only be done on mobs with clients" - return - - nanomanager.send_resources(H.client) - - usr << "Resource files sent" - H << "Your NanoUI Resource files have been refreshed" - - log_admin("[key_name(usr)] resent the NanoUI resource files to [key_name(H)] ") - - else if(href_list["regenerateicons"]) - if(!check_rights(0)) return - - var/mob/M = locate(href_list["regenerateicons"]) - if(!ismob(M)) - usr << "This can only be done to instances of type /mob" - return - M.regenerate_icons() - - else if(href_list["adjustDamage"] && href_list["mobToDamage"]) - if(!check_rights(R_DEBUG|R_ADMIN|R_FUN)) return - - var/mob/living/L = locate(href_list["mobToDamage"]) - if(!istype(L)) return - - var/Text = href_list["adjustDamage"] - - var/amount = input("Deal how much damage to mob? (Negative values here heal)","Adjust [Text]loss",0) as num - - if(!L) - usr << "Mob doesn't exist anymore" - return - - switch(Text) - if("brute") L.adjustBruteLoss(amount) - if("fire") L.adjustFireLoss(amount) - if("toxin") L.adjustToxLoss(amount) - if("oxygen")L.adjustOxyLoss(amount) - if("brain") L.adjustBrainLoss(amount) - if("clone") L.adjustCloneLoss(amount) - else - usr << "You caused an error. DEBUG: Text:[Text] Mob:[L]" - return - - if(amount != 0) - log_admin("[key_name(usr)] dealt [amount] amount of [Text] damage to [L] ") - message_admins("\blue [key_name(usr)] dealt [amount] amount of [Text] damage to [L] ") - href_list["datumrefresh"] = href_list["mobToDamage"] - - if(href_list["datumrefresh"]) - var/datum/DAT = locate(href_list["datumrefresh"]) - if(!istype(DAT, /datum)) - return - src.debug_variables(DAT) - - return - diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 3cc3107784d..c7495ab749f 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -43,10 +43,10 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee /datum/supply_packs/food name = "Kitchen supply crate" - contains = list(/obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, + contains = list(/obj/item/weapon/reagent_containers/food/condiment/flour, + /obj/item/weapon/reagent_containers/food/condiment/flour, + /obj/item/weapon/reagent_containers/food/condiment/flour, + /obj/item/weapon/reagent_containers/food/condiment/flour, /obj/item/weapon/reagent_containers/food/drinks/milk, /obj/item/weapon/reagent_containers/food/drinks/milk, /obj/item/weapon/storage/fancy/egg_box, @@ -1506,5 +1506,20 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee /obj/item/device/floor_painter, /obj/item/device/floor_painter) +/datum/supply_packs/bluespacerelay + name = "Emergency Bluespace Relay Assembly Kit" + cost = 75 + containername = "emergency bluespace relay assembly kit" + containertype = /obj/structure/closet/crate + group = "Engineering" + contains = list(/obj/item/weapon/circuitboard/bluespacerelay, + /obj/item/weapon/stock_parts/manipulator, + /obj/item/weapon/stock_parts/manipulator, + /obj/item/weapon/stock_parts/subspace/filter, + /obj/item/weapon/stock_parts/subspace/crystal, + /obj/item/weapon/storage/toolbox/electrical) + + + diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index bb81eabbc55..7f287a5b54b 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -91,9 +91,11 @@ /obj/item/weapon/cane/concealed/New() ..() - concealed_blade = new/obj/item/weapon/butterfly/switchblade(src) + var/obj/item/weapon/butterfly/switchblade/temp_blade = new(src) + concealed_blade = temp_blade + temp_blade.attack_self() -/obj/item/weapon/cane/concealed/attack_self(mob/user) +/obj/item/weapon/cane/concealed/attack_self(var/mob/user) if(concealed_blade) user.visible_message("[user] has unsheathed \a [concealed_blade] from \his [src]!", "You unsheathe \the [concealed_blade] from \the [src].") // Calling drop/put in hands to properly call item drop/pickup procs @@ -101,8 +103,9 @@ user.drop_from_inventory(src) user.put_in_hands(concealed_blade) user.put_in_hands(src) + user.update_inv_l_hand(0) + user.update_inv_r_hand() concealed_blade = null - update_icon() else ..() diff --git a/code/defines/procs/admin.dm b/code/defines/procs/admin.dm index 2bfb8b94364..5901f3b9c9f 100644 --- a/code/defines/procs/admin.dm +++ b/code/defines/procs/admin.dm @@ -1,13 +1,31 @@ -proc/log_and_message_admins(var/message as text) - log_admin(usr ? "[key_name(usr)] [message]" : "EVENT [message]") - message_admins(usr ? "[key_name(usr)] [message]" : "EVENT [message]") +proc/log_and_message_admins(var/message as text, var/mob/user = usr) + log_admin(user ? "[key_name(user)] [message]" : "EVENT [message]") + message_admins(user ? "[key_name(user)] [message]" : "EVENT [message]") + +proc/log_and_message_admins_many(var/list/mob/users, var/message) + if(!users || !users.len) + return + + var/list/user_keys = list() + for(var/mob/user in users) + user_keys += key_name(user) + + log_admin("[english_list(user_keys)] [message]") + message_admins("[english_list(user_keys)] [message]") proc/admin_log_and_message_admins(var/message as text) log_admin(usr ? "[key_name_admin(usr)] [message]" : "EVENT [message]") message_admins(usr ? "[key_name_admin(usr)] [message]" : "EVENT [message]", 1) proc/admin_attack_log(var/mob/attacker, var/mob/victim, var/attacker_message, var/victim_message, var/admin_message) - victim.attack_log += text("\[[time_stamp()]\] [victim_message] [key_name(attacker)]") - attacker.attack_log += text("\[[time_stamp()]\] [attacker_message] [key_name(victim)]") + victim.attack_log += text("\[[time_stamp()]\] [key_name(attacker)] - [victim_message]") + attacker.attack_log += text("\[[time_stamp()]\] [key_name(victim)] - [attacker_message]") msg_admin_attack("[key_name(attacker)] [admin_message] [key_name(victim)] (INTENT: [uppertext(attacker.a_intent)]) (JMP)") + +proc/admin_attacker_log_many_victims(var/mob/attacker, var/list/mob/victims, var/attacker_message, var/victim_message, var/admin_message) + if(!victims || !victims.len) + return + + for(var/mob/victim in victims) + admin_attack_log(attacker, victim, attacker_message, victim_message, admin_message) diff --git a/code/defines/procs/announce.dm b/code/defines/procs/announce.dm index 9db70929281..0a64e895924 100644 --- a/code/defines/procs/announce.dm +++ b/code/defines/procs/announce.dm @@ -30,13 +30,14 @@ title = "Security Announcement" announcement_type = "Security Announcement" -/datum/announcement/proc/Announce(var/message as text, var/new_title = "", var/new_sound = null, var/do_newscast = newscast) +/datum/announcement/proc/Announce(var/message as text, var/new_title = "", var/new_sound = null, var/do_newscast = newscast, var/msg_sanitized = 0) if(!message) return var/message_title = new_title ? new_title : title var/message_sound = new_sound ? new_sound : sound - message = sanitize(message, extra = 0) + if(!msg_sanitized) + message = sanitize(message, extra = 0) message_title = sanitizeSafe(message_title) Message(message, message_title) diff --git a/code/game/antagonist/antagonist_build.dm b/code/game/antagonist/antagonist_build.dm index 34631d36fba..40ba798aae9 100644 --- a/code/game/antagonist/antagonist_build.dm +++ b/code/game/antagonist/antagonist_build.dm @@ -34,7 +34,7 @@ return 1 if(flags & ANTAG_SET_APPEARANCE) - player.change_appearance(APPEARANCE_ALL, player, player, valid_species) + player.change_appearance(APPEARANCE_ALL, player.loc, player, valid_species, state = z_state) /datum/antagonist/proc/unequip(var/mob/living/carbon/human/player) if(!istype(player)) diff --git a/code/game/antagonist/outsider/raider.dm b/code/game/antagonist/outsider/raider.dm index 92090515b16..a7949011fc5 100644 --- a/code/game/antagonist/outsider/raider.dm +++ b/code/game/antagonist/outsider/raider.dm @@ -30,8 +30,8 @@ var/datum/antagonist/raider/raiders var/list/raider_glasses = list( /obj/item/clothing/glasses/thermal, - /obj/item/clothing/glasses/thermal/eyepatch, - /obj/item/clothing/glasses/thermal/monocle + /obj/item/clothing/glasses/thermal/plain/eyepatch, + /obj/item/clothing/glasses/thermal/plain/monocle ) var/list/raider_helmets = list( diff --git a/code/game/antagonist/outsider/wizard.dm b/code/game/antagonist/outsider/wizard.dm index 7b410cc7bc8..2923008a7b8 100644 --- a/code/game/antagonist/outsider/wizard.dm +++ b/code/game/antagonist/outsider/wizard.dm @@ -95,21 +95,31 @@ var/datum/antagonist/wizard/wizards //To batch-remove wizard spells. Linked to mind.dm. /mob/proc/spellremove(var/mob/M as mob) - for(var/obj/effect/proc_holder/spell/spell_to_remove in src.spell_list) - del(spell_to_remove) + for(var/spell/spell_to_remove in src.spell_list) + remove_spell(spell_to_remove) -/*Checks if the wizard can cast spells. +obj/item/clothing + var/wizard_garb = 0 + +// Does this clothing slot count as wizard garb? (Combines a few checks) +/proc/is_wiz_garb(var/obj/item/clothing/C) + return C && C.wizard_garb + +/*Checks if the wizard is wearing the proper attire. Made a proc so this is not repeated 14 (or more) times.*/ -/mob/proc/casting() -//Removed the stat check because not all spells require clothing now. - if(!istype(usr:wear_suit, /obj/item/clothing/suit/wizrobe)) - usr << "I don't feel strong enough without my robe." +/mob/proc/wearing_wiz_garb() + src << "Silly creature, you're not a human. Only humans can cast this spell." + return 0 + +// Humans can wear clothes. +/mob/living/carbon/human/wearing_wiz_garb() + if(!is_wiz_garb(src.wear_suit)) + src << "I don't feel strong enough without my robe." return 0 - if(!istype(usr:shoes, /obj/item/clothing/shoes/sandal)) - usr << "I don't feel strong enough without my sandals." + if(!is_wiz_garb(src.shoes)) + src << "I don't feel strong enough without my sandals." return 0 - if(!istype(usr:head, /obj/item/clothing/head/wizard)) - usr << "I don't feel strong enough without my hat." + if(!is_wiz_garb(src.head)) + src << "I don't feel strong enough without my hat." return 0 - else - return 1 + return 1 diff --git a/code/game/antagonist/station/cultist.dm b/code/game/antagonist/station/cultist.dm index 3968418e023..3f5d65d21da 100644 --- a/code/game/antagonist/station/cultist.dm +++ b/code/game/antagonist/station/cultist.dm @@ -24,11 +24,13 @@ var/datum/antagonist/cultist/cult flags = ANTAG_SUSPICIOUS | ANTAG_RANDSPAWN | ANTAG_VOTABLE max_antags = 200 // No upper limit. max_antags_round = 200 + var/allow_narsie = 1 var/datum/mind/sacrifice_target var/list/startwords = list("blood","join","self","hell") var/list/allwords = list("travel","self","see","hell","blood","join","tech","destroy", "other", "hide") var/list/sacrificed = list() + var/list/harvested = list() /datum/antagonist/cultist/New() ..() diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index c382ce4d078..a72b06852a1 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -873,27 +873,27 @@ area/space/atmosalert() music = null /area/crew_quarters/captain - name = "\improper Captain's Office" + name = "\improper Command - Captain's Office" icon_state = "captain" /area/crew_quarters/heads/hop - name = "\improper Head of Personnel's Office" + name = "\improper Command - HoP's Office" icon_state = "head_quarters" /area/crew_quarters/heads/hor - name = "\improper Research Director's Office" + name = "\improper Research - RD's Office" icon_state = "head_quarters" /area/crew_quarters/heads/chief - name = "\improper Chief Engineer's Office" + name = "\improper Engineering - CE's Office" icon_state = "head_quarters" /area/crew_quarters/heads/hos - name = "\improper Head of Security's Office" + name = "\improper Security - HoS' Office" icon_state = "head_quarters" /area/crew_quarters/heads/cmo - name = "\improper Chief Medical Officer's Office" + name = "\improper Medbay - CMO's Office" icon_state = "head_quarters" /area/crew_quarters/courtroom @@ -1085,7 +1085,7 @@ area/space/atmosalert() icon_state = "atmos_storage" /area/engineering/drone_fabrication - name = "\improper Drone Fabrication" + name = "\improper Engineering Drone Fabrication" icon_state = "drone_fab" /area/engineering/engine_smes @@ -1171,23 +1171,23 @@ area/space/atmosalert() icon_state = "panelsP" /area/maintenance/auxsolarport - name = "Fore Port Solar Maintenance" + name = "Solar Maintenance - Fore Port" icon_state = "SolarcontrolP" /area/maintenance/starboardsolar - name = "Aft Starboard Solar Maintenance" + name = "Solar Maintenance - Aft Starboard" icon_state = "SolarcontrolS" /area/maintenance/portsolar - name = "Aft Port Solar Maintenance" + name = "Solar Maintenance - Aft Port" icon_state = "SolarcontrolP" /area/maintenance/auxsolarstarboard - name = "Fore Starboard Solar Maintenance" + name = "Solar Maintenance - Fore Starboard" icon_state = "SolarcontrolS" /area/maintenance/foresolar - name = "Fore Solar Maintenance" + name = "Solar Maintenance - Fore" icon_state = "SolarcontrolA" /area/assembly/chargebay @@ -1362,35 +1362,35 @@ area/space/atmosalert() icon_state = "security" /area/security/lobby - name = "\improper Security lobby" + name = "\improper Security Lobby" icon_state = "security" /area/security/brig - name = "\improper Brig" + name = "\improper Security - Brig" icon_state = "brig" /area/security/prison - name = "\improper Prison Wing" + name = "\improper Security - Prison Wing" icon_state = "sec_prison" /area/security/warden - name = "\improper Warden" + name = "\improper Security - Warden's Office" icon_state = "Warden" /area/security/armoury - name = "\improper Armory" + name = "\improper Security - Armory" icon_state = "Warden" /area/security/detectives_office - name = "\improper Detective's Office" + name = "\improper Security - Forensic Office" icon_state = "detective" /area/security/range - name = "\improper Firing Range" + name = "\improper Security - Firing Range" icon_state = "firingrange" /area/security/tactical - name = "\improper Tactical Equipment" + name = "\improper Security - Tactical Equipment" icon_state = "Tactical" @@ -1420,7 +1420,7 @@ area/space/atmosalert() icon_state = "checkpoint1" /area/security/checkpoint2 - name = "\improper Security Checkpoint" + name = "\improper Security - Arrival Checkpoint" icon_state = "security" /area/security/checkpoint/supply @@ -1451,14 +1451,6 @@ area/space/atmosalert() name = "\improper Quartermasters" icon_state = "quart" -///////////WORK IN PROGRESS////////// - -/area/quartermaster/sorting - name = "\improper Delivery Office" - icon_state = "quartstorage" - -////////////WORK IN PROGRESS////////// - /area/quartermaster/office name = "\improper Cargo Office" icon_state = "quartoffice" @@ -1468,21 +1460,13 @@ area/space/atmosalert() icon_state = "quartstorage" /area/quartermaster/qm - name = "\improper Quartermaster's Office" + name = "\improper Cargo - Quartermaster's Office" icon_state = "quart" /area/quartermaster/miningdock - name = "\improper Mining Dock" + name = "\improper Cargo Mining Dock" icon_state = "mining" -/area/quartermaster/miningstorage - name = "\improper Mining Storage" - icon_state = "green" - -/area/quartermaster/mechbay - name = "\improper Mech Bay" - icon_state = "yellow" - /area/janitor/ name = "\improper Custodial Closet" icon_state = "janitor" @@ -1770,7 +1754,7 @@ area/space/atmosalert() //Construction /area/construction - name = "\improper Construction Area" + name = "\improper Engineering Construction Area" icon_state = "yellow" /area/construction/supplyshuttle @@ -2041,6 +2025,7 @@ area/space/atmosalert() luminosity = 1 lighting_use_dynamic = 0 requires_power = 0 + ambience = list() var/sound/mysound = null New() diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 960a75d4fb5..5944587cc78 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -229,6 +229,9 @@ its easier to just keep the beam vertical. /atom/proc/fire_act() return + +/atom/proc/melt() + return /atom/proc/hitby(atom/movable/AM as mob|obj) if (density) diff --git a/code/game/dna/dna2_helpers.dm b/code/game/dna/dna2_helpers.dm index e1fda4965c3..ce6320cd88c 100644 --- a/code/game/dna/dna2_helpers.dm +++ b/code/game/dna/dna2_helpers.dm @@ -166,6 +166,7 @@ H.f_style = facial_hair_styles_list[beard] H.force_update_limbs() + H.update_eyes() H.update_hair() return 1 diff --git a/code/game/dna/dna_misc.dm b/code/game/dna/dna_misc.dm index 1362aa68882..b3148522141 100644 --- a/code/game/dna/dna_misc.dm +++ b/code/game/dna/dna_misc.dm @@ -235,9 +235,9 @@ H.r_eyes = hex2num(getblock(structure,8,3)) H.g_eyes = hex2num(getblock(structure,9,3)) H.b_eyes = hex2num(getblock(structure,10,3)) + if(H.internal_organs_by_name["eyes"]) - var/obj/item/organ/eyes/eyes = H.internal_organs_by_name["eyes"] - eyes.eye_colour = list(H.r_eyes,H.g_eyes,H.b_eyes) + H.update_eyes() if (isblockon(getblock(structure, 11,3),11 , 1)) H.gender = FEMALE diff --git a/code/game/dna/dna_misc.dm.orig b/code/game/dna/dna_misc.dm.orig deleted file mode 100644 index 00810f50e16..00000000000 --- a/code/game/dna/dna_misc.dm.orig +++ /dev/null @@ -1,1123 +0,0 @@ -<<<<<<< HEAD -/////////////////////////// DNA HELPER-PROCS -/proc/getleftblocks(input,blocknumber,blocksize) - var/string - - if (blocknumber > 1) - string = copytext(input,1,((blocksize*blocknumber)-(blocksize-1))) - return string - else - return null - -/proc/getrightblocks(input,blocknumber,blocksize) - var/string - if (blocknumber < (length(input)/blocksize)) - string = copytext(input,blocksize*blocknumber+1,length(input)+1) - return string - else - return null - -/proc/getblockstring(input,block,subblock,blocksize,src,ui) // src is probably used here just for urls; ui is 1 when requesting for the unique identifier screen, 0 for structural enzymes screen - var/string - var/subpos = 1 // keeps track of the current sub block - var/blockpos = 1 // keeps track of the current block - - - for(var/i = 1, i <= length(input), i++) // loop through each letter - - var/pushstring - - if(subpos == subblock && blockpos == block) // if the current block/subblock is selected, mark it - pushstring = "[copytext(input, i, i+1)]" - else - if(ui) //This is for allowing block clicks to be differentiated - pushstring = "[copytext(input, i, i+1)]" - else - pushstring = "[copytext(input, i, i+1)]" - - string += pushstring // push the string to the return string - - if(subpos >= blocksize) // add a line break for every block - string += " | " - subpos = 0 - blockpos++ - - subpos++ - - return string - - -/proc/getblock(input,blocknumber,blocksize) - var/result - result = copytext(input ,(blocksize*blocknumber)-(blocksize-1),(blocksize*blocknumber)+1) - return result - -/proc/getblockbuffer(input,blocknumber,blocksize) - var/result[3] - var/block = copytext(input ,(blocksize*blocknumber)-(blocksize-1),(blocksize*blocknumber)+1) - for(var/i = 1, i <= 3, i++) - result[i] = copytext(block, i, i+1) - return result - -/proc/setblock(istring, blocknumber, replacement, blocksize) - if(!blocknumber) - return istring - if(!istring || !replacement || !blocksize) return 0 - var/result = getleftblocks(istring, blocknumber, blocksize) + replacement + getrightblocks(istring, blocknumber, blocksize) - return result - -/proc/add_zero2(t, u) - var/temp1 - while (length(t) < u) - t = "0[t]" - temp1 = t - if (length(t) > u) - temp1 = copytext(t,2,u+1) - return temp1 - -/proc/miniscramble(input,rs,rd) - var/output - output = null - if (input == "C" || input == "D" || input == "E" || input == "F") - output = pick(prob((rs*10));"4",prob((rs*10));"5",prob((rs*10));"6",prob((rs*10));"7",prob((rs*5)+(rd));"0",prob((rs*5)+(rd));"1",prob((rs*10)-(rd));"2",prob((rs*10)-(rd));"3") - if (input == "8" || input == "9" || input == "A" || input == "B") - output = pick(prob((rs*10));"4",prob((rs*10));"5",prob((rs*10));"A",prob((rs*10));"B",prob((rs*5)+(rd));"C",prob((rs*5)+(rd));"D",prob((rs*5)+(rd));"2",prob((rs*5)+(rd));"3") - if (input == "4" || input == "5" || input == "6" || input == "7") - output = pick(prob((rs*10));"4",prob((rs*10));"5",prob((rs*10));"A",prob((rs*10));"B",prob((rs*5)+(rd));"C",prob((rs*5)+(rd));"D",prob((rs*5)+(rd));"2",prob((rs*5)+(rd));"3") - if (input == "0" || input == "1" || input == "2" || input == "3") - output = pick(prob((rs*10));"8",prob((rs*10));"9",prob((rs*10));"A",prob((rs*10));"B",prob((rs*10)-(rd));"C",prob((rs*10)-(rd));"D",prob((rs*5)+(rd));"E",prob((rs*5)+(rd));"F") - if (!output) output = "5" - return output - -//Instead of picking a value far from the input, this will pick values closer to it. -//Sorry for the block of code, but it's more efficient then calling text2hex -> loop -> hex2text -/proc/miniscrambletarget(input,rs,rd) - var/output = null - switch(input) - if("0") - output = pick(prob((rs*10)+(rd));"0",prob((rs*10)+(rd));"1",prob((rs*10));"2",prob((rs*10)-(rd));"3") - if("1") - output = pick(prob((rs*10)+(rd));"0",prob((rs*10)+(rd));"1",prob((rs*10)+(rd));"2",prob((rs*10));"3",prob((rs*10)-(rd));"4") - if("2") - output = pick(prob((rs*10));"0",prob((rs*10)+(rd));"1",prob((rs*10)+(rd));"2",prob((rs*10)+(rd));"3",prob((rs*10));"4",prob((rs*10)-(rd));"5") - if("3") - output = pick(prob((rs*10)-(rd));"0",prob((rs*10));"1",prob((rs*10)+(rd));"2",prob((rs*10)+(rd));"3",prob((rs*10)+(rd));"4",prob((rs*10));"5",prob((rs*10)-(rd));"6") - if("4") - output = pick(prob((rs*10)-(rd));"1",prob((rs*10));"2",prob((rs*10)+(rd));"3",prob((rs*10)+(rd));"4",prob((rs*10)+(rd));"5",prob((rs*10));"6",prob((rs*10)-(rd));"7") - if("5") - output = pick(prob((rs*10)-(rd));"2",prob((rs*10));"3",prob((rs*10)+(rd));"4",prob((rs*10)+(rd));"5",prob((rs*10)+(rd));"6",prob((rs*10));"7",prob((rs*10)-(rd));"8") - if("6") - output = pick(prob((rs*10)-(rd));"3",prob((rs*10));"4",prob((rs*10)+(rd));"5",prob((rs*10)+(rd));"6",prob((rs*10)+(rd));"7",prob((rs*10));"8",prob((rs*10)-(rd));"9") - if("7") - output = pick(prob((rs*10)-(rd));"4",prob((rs*10));"5",prob((rs*10)+(rd));"6",prob((rs*10)+(rd));"7",prob((rs*10)+(rd));"8",prob((rs*10));"9",prob((rs*10)-(rd));"A") - if("8") - output = pick(prob((rs*10)-(rd));"5",prob((rs*10));"6",prob((rs*10)+(rd));"7",prob((rs*10)+(rd));"8",prob((rs*10)+(rd));"9",prob((rs*10));"A",prob((rs*10)-(rd));"B") - if("9") - output = pick(prob((rs*10)-(rd));"6",prob((rs*10));"7",prob((rs*10)+(rd));"8",prob((rs*10)+(rd));"9",prob((rs*10)+(rd));"A",prob((rs*10));"B",prob((rs*10)-(rd));"C") - if("10")//A - output = pick(prob((rs*10)-(rd));"7",prob((rs*10));"8",prob((rs*10)+(rd));"9",prob((rs*10)+(rd));"A",prob((rs*10)+(rd));"B",prob((rs*10));"C",prob((rs*10)-(rd));"D") - if("11")//B - output = pick(prob((rs*10)-(rd));"8",prob((rs*10));"9",prob((rs*10)+(rd));"A",prob((rs*10)+(rd));"B",prob((rs*10)+(rd));"C",prob((rs*10));"D",prob((rs*10)-(rd));"E") - if("12")//C - output = pick(prob((rs*10)-(rd));"9",prob((rs*10));"A",prob((rs*10)+(rd));"B",prob((rs*10)+(rd));"C",prob((rs*10)+(rd));"D",prob((rs*10));"E",prob((rs*10)-(rd));"F") - if("13")//D - output = pick(prob((rs*10)-(rd));"A",prob((rs*10));"B",prob((rs*10)+(rd));"C",prob((rs*10)+(rd));"D",prob((rs*10)+(rd));"E",prob((rs*10));"F") - if("14")//E - output = pick(prob((rs*10)-(rd));"B",prob((rs*10));"C",prob((rs*10)+(rd));"D",prob((rs*10)+(rd));"E",prob((rs*10)+(rd));"F") - if("15")//F - output = pick(prob((rs*10)-(rd));"C",prob((rs*10));"D",prob((rs*10)+(rd));"E",prob((rs*10)+(rd));"F") - - if(!input || !output) //How did this happen? - output = "8" - - return output - -/proc/isblockon(hnumber, bnumber , var/UI = 0) - - var/temp2 - temp2 = hex2num(hnumber) - - if(UI) - if(temp2 >= 2050) - return 1 - else - return 0 - - if (bnumber == HULKBLOCK || bnumber == TELEBLOCK || bnumber == NOBREATHBLOCK || bnumber == NOPRINTSBLOCK || bnumber == SMALLSIZEBLOCK || bnumber == SHOCKIMMUNITYBLOCK) - if (temp2 >= 3500 + BLOCKADD) - return 1 - else - return 0 - if (bnumber == XRAYBLOCK || bnumber == FIREBLOCK || bnumber == REMOTEVIEWBLOCK || bnumber == REGENERATEBLOCK || bnumber == INCREASERUNBLOCK || bnumber == REMOTETALKBLOCK || bnumber == MORPHBLOCK) - if (temp2 >= 3050 + BLOCKADD) - return 1 - else - return 0 - - - if (temp2 >= 2050 + BLOCKADD) - return 1 - else - return 0 - -/proc/ismuton(var/block,var/mob/M) - return isblockon(getblock(M.dna.struc_enzymes, block,3),block) - -/proc/randmutb(mob/M as mob) - if(!M) return - var/num - var/newdna - num = pick(GLASSESBLOCK,COUGHBLOCK,FAKEBLOCK,NERVOUSBLOCK,CLUMSYBLOCK,TWITCHBLOCK,HEADACHEBLOCK,BLINDBLOCK,DEAFBLOCK,HALLUCINATIONBLOCK) - M.dna.check_integrity() - newdna = setblock(M.dna.struc_enzymes,num,toggledblock(getblock(M.dna.struc_enzymes,num,3)),3) - M.dna.struc_enzymes = newdna - return - -/proc/randmutg(mob/M as mob) - if(!M) return - var/num - var/newdna - num = pick(HULKBLOCK,XRAYBLOCK,FIREBLOCK,TELEBLOCK,NOBREATHBLOCK,REMOTEVIEWBLOCK,REGENERATEBLOCK,INCREASERUNBLOCK,REMOTETALKBLOCK,MORPHBLOCK,BLENDBLOCK,NOPRINTSBLOCK,SHOCKIMMUNITYBLOCK,SMALLSIZEBLOCK) - M.dna.check_integrity() - newdna = setblock(M.dna.struc_enzymes,num,toggledblock(getblock(M.dna.struc_enzymes,num,3)),3) - M.dna.struc_enzymes = newdna - return - -/proc/scramble(var/type, mob/M as mob, var/p) - if(!M) return - M.dna.check_integrity() - if(type) - for(var/i = 1, i <= STRUCDNASIZE-1, i++) - if(prob(p)) - M.dna.uni_identity = setblock(M.dna.uni_identity, i, add_zero2(num2hex(rand(1,4095), 1), 3), 3) - updateappearance(M, M.dna.uni_identity) - - else - for(var/i = 1, i <= STRUCDNASIZE-1, i++) - if(prob(p)) - M.dna.struc_enzymes = setblock(M.dna.struc_enzymes, i, add_zero2(num2hex(rand(1,4095), 1), 3), 3) - domutcheck(M, null) - return - -/proc/randmuti(mob/M as mob) - if(!M) return - var/num - var/newdna - num = rand(1,UNIDNASIZE) - M.dna.check_integrity() - newdna = setblock(M.dna.uni_identity,num,add_zero2(num2hex(rand(1,4095),1),3),3) - M.dna.uni_identity = newdna - return - -/proc/toggledblock(hnumber) //unused - var/temp3 - var/chtemp - temp3 = hex2num(hnumber) - if (temp3 < 2050) - chtemp = rand(2050,4095) - return add_zero2(num2hex(chtemp,1),3) - else - chtemp = rand(1,2049) - return add_zero2(num2hex(chtemp,1),3) -/////////////////////////// DNA HELPER-PROCS - -/////////////////////////// DNA MISC-PROCS -/proc/updateappearance(mob/M as mob , structure) - if(istype(M, /mob/living/carbon/human)) - M.dna.check_integrity() - var/mob/living/carbon/human/H = M - H.r_hair = hex2num(getblock(structure,1,3)) - H.b_hair = hex2num(getblock(structure,2,3)) - H.g_hair = hex2num(getblock(structure,3,3)) - H.r_facial = hex2num(getblock(structure,4,3)) - H.b_facial = hex2num(getblock(structure,5,3)) - H.g_facial = hex2num(getblock(structure,6,3)) - H.s_tone = round(((hex2num(getblock(structure,7,3)) / 16) - 220)) - H.r_eyes = hex2num(getblock(structure,8,3)) - H.g_eyes = hex2num(getblock(structure,9,3)) - H.b_eyes = hex2num(getblock(structure,10,3)) - - if (isblockon(getblock(structure, 11,3),11 , 1)) - H.gender = FEMALE - else - H.gender = MALE - - //Hair - var/hairnum = hex2num(getblock(structure,13,3)) - var/index = round(1 +(hairnum / 4096)*hair_styles_list.len) - if((0 < index) && (index <= hair_styles_list.len)) - H.h_style = hair_styles_list[index] - - //Facial Hair - var/beardnum = hex2num(getblock(structure,12,3)) - index = round(1 +(beardnum / 4096)*facial_hair_styles_list.len) - if((0 < index) && (index <= facial_hair_styles_list.len)) - H.f_style = facial_hair_styles_list[index] - - H.update_body(0) - H.update_hair() - - return 1 - else - return 0 - -/proc/probinj(var/pr, var/inj) - return prob(pr+inj*pr) - -/proc/domutcheck(mob/living/M as mob, connected, inj) - if (!M) return - - M.dna.check_integrity() - - M.disabilities = 0 - M.sdisabilities = 0 - var/old_mutations = M.mutations - M.mutations = list() - -// M.see_in_dark = 2 -// M.see_invisible = 0 - - if(PLANT in old_mutations) - M.mutations.Add(PLANT) - if(SKELETON in old_mutations) - M.mutations.Add(SKELETON) - if(FAT in old_mutations) - M.mutations.Add(FAT) - if(HUSK in old_mutations) - M.mutations.Add(HUSK) - - if(ismuton(NOBREATHBLOCK,M)) - if(probinj(45,inj) || (mNobreath in old_mutations)) - M << "\blue You feel no need to breathe." - M.mutations.Add(mNobreath) - if(ismuton(REMOTEVIEWBLOCK,M)) - if(probinj(45,inj) || (mRemote in old_mutations)) - M << "\blue Your mind expands" - M.mutations.Add(mRemote) - if(ismuton(REGENERATEBLOCK,M)) - if(probinj(45,inj) || (mRegen in old_mutations)) - M << "\blue You feel strange" - M.mutations.Add(mRegen) - if(ismuton(INCREASERUNBLOCK,M)) - if(probinj(45,inj) || (mRun in old_mutations)) - M << "\blue You feel quick" - M.mutations.Add(mRun) - if(ismuton(REMOTETALKBLOCK,M)) - if(probinj(45,inj) || (mRemotetalk in old_mutations)) - M << "\blue You expand your mind outwards" - M.mutations.Add(mRemotetalk) - if(ismuton(MORPHBLOCK,M)) - if(probinj(45,inj) || (mMorph in old_mutations)) - M.mutations.Add(mMorph) - M << "\blue Your skin feels strange" - if(ismuton(BLENDBLOCK,M)) - if(probinj(45,inj) || (mBlend in old_mutations)) - M.mutations.Add(mBlend) - M << "\blue You feel alone" - if(ismuton(HALLUCINATIONBLOCK,M)) - if(probinj(45,inj) || (mHallucination in old_mutations)) - M.mutations.Add(mHallucination) - M << "\blue Your mind says 'Hello'" - if(ismuton(NOPRINTSBLOCK,M)) - if(probinj(45,inj) || (mFingerprints in old_mutations)) - M.mutations.Add(mFingerprints) - M << "\blue Your fingers feel numb" - if(ismuton(SHOCKIMMUNITYBLOCK,M)) - if(probinj(45,inj) || (mShock in old_mutations)) - M.mutations.Add(mShock) - M << "\blue You feel strange" - if(ismuton(SMALLSIZEBLOCK,M)) - if(probinj(45,inj) || (mSmallsize in old_mutations)) - M << "\blue Your skin feels rubbery" - M.mutations.Add(mSmallsize) - - - - if (isblockon(getblock(M.dna.struc_enzymes, HULKBLOCK,3),HULKBLOCK)) - if(probinj(5,inj) || (HULK in old_mutations)) - M << "\blue Your muscles hurt." - M.mutations.Add(HULK) - if (isblockon(getblock(M.dna.struc_enzymes, HEADACHEBLOCK,3),HEADACHEBLOCK)) - M.disabilities |= EPILEPSY - M << "\red You get a headache." - if (isblockon(getblock(M.dna.struc_enzymes, FAKEBLOCK,3),FAKEBLOCK)) - M << "\red You feel strange." - if (prob(95)) - if(prob(50)) - randmutb(M) - else - randmuti(M) - else - randmutg(M) - if (isblockon(getblock(M.dna.struc_enzymes, COUGHBLOCK,3),COUGHBLOCK)) - M.disabilities |= COUGHING - M << "\red You start coughing." - if (isblockon(getblock(M.dna.struc_enzymes, CLUMSYBLOCK,3),CLUMSYBLOCK)) - M << "\red You feel lightheaded." - M.mutations.Add(CLUMSY) - if (isblockon(getblock(M.dna.struc_enzymes, TWITCHBLOCK,3),TWITCHBLOCK)) - M.disabilities |= TOURETTES - M << "\red You twitch." - if (isblockon(getblock(M.dna.struc_enzymes, XRAYBLOCK,3),XRAYBLOCK)) - if(probinj(30,inj) || (XRAY in old_mutations)) - M << "\blue The walls suddenly disappear." -// M.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS) -// M.see_in_dark = 8 -// M.see_invisible = 2 - M.mutations.Add(XRAY) - if (isblockon(getblock(M.dna.struc_enzymes, NERVOUSBLOCK,3),NERVOUSBLOCK)) - M.disabilities |= NERVOUS - M << "\red You feel nervous." - if (isblockon(getblock(M.dna.struc_enzymes, FIREBLOCK,3),FIREBLOCK)) - if(probinj(30,inj) || (COLD_RESISTANCE in old_mutations)) - M << "\blue Your body feels warm." - M.mutations.Add(COLD_RESISTANCE) - if (isblockon(getblock(M.dna.struc_enzymes, BLINDBLOCK,3),BLINDBLOCK)) - M.sdisabilities |= BLIND - M << "\red You can't seem to see anything." - if (isblockon(getblock(M.dna.struc_enzymes, TELEBLOCK,3),TELEBLOCK)) - if(probinj(15,inj) || (TK in old_mutations)) - M << "\blue You feel smarter." - M.mutations.Add(TK) - if (isblockon(getblock(M.dna.struc_enzymes, DEAFBLOCK,3),DEAFBLOCK)) - M.sdisabilities |= DEAF - M.ear_deaf = 1 - M << "\red Its kinda quiet.." - if (isblockon(getblock(M.dna.struc_enzymes, GLASSESBLOCK,3),GLASSESBLOCK)) - M.disabilities |= NEARSIGHTED - M << "Your eyes feel weird..." - - /* If you want the new mutations to work, UNCOMMENT THIS. - if(istype(M, /mob/living/carbon)) - for (var/datum/mutations/mut in global_mutations) - mut.check_mutation(M) - */ - -//////////////////////////////////////////////////////////// Monkey Block - if (isblockon(getblock(M.dna.struc_enzymes, MONKEYBLOCK,3),MONKEYBLOCK) && istype(M, /mob/living/carbon/human)) - // human > monkey - var/mob/living/carbon/human/H = M - H.monkeyizing = 1 - var/list/implants = list() //Try to preserve implants. - for(var/obj/item/weapon/implant/W in H) - implants += W - W.loc = null - - if(!connected) - for(var/obj/item/W in (H.contents-implants)) - if (W==H.w_uniform) // will be teared - continue - H.drop_from_inventory(W) - M.monkeyizing = 1 - M.canmove = 0 - M.icon = null - M.invisibility = 101 - var/atom/movable/overlay/animation = new( M.loc ) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - flick("h2monkey", animation) - sleep(48) - del(animation) - - - var/mob/living/carbon/monkey/O = null - if(H.species.primitive) - O = new H.species.primitive(src) - else - H.gib() //Trying to change the species of a creature with no primitive var set is messy. - return - - if(M) - if (M.dna) - O.dna = M.dna - M.dna = null - - if (M.suiciding) - O.suiciding = M.suiciding - M.suiciding = null - - - for(var/datum/disease/D in M.viruses) - O.viruses += D - D.affected_mob = O - M.viruses -= D - - - for(var/obj/T in (M.contents-implants)) - del(T) - - O.loc = M.loc - - if(M.mind) - M.mind.transfer_to(O) //transfer our mind to the cute little monkey - - if (connected) //inside dna thing - var/obj/machinery/dna_scannernew/C = connected - O.loc = C - C.occupant = O - connected = null - O.real_name = text("monkey ([])",copytext(md5(M.real_name), 2, 6)) - O.take_overall_damage(M.getBruteLoss() + 40, M.getFireLoss()) - O.adjustToxLoss(M.getToxLoss() + 20) - O.adjustOxyLoss(M.getOxyLoss()) - O.stat = M.stat - O.a_intent = I_HURT - for (var/obj/item/weapon/implant/I in implants) - I.loc = O - I.implanted = O -// O.update_icon = 1 //queue a full icon update at next life() call - del(M) - return - - if (!isblockon(getblock(M.dna.struc_enzymes, MONKEYBLOCK,3),MONKEYBLOCK) && !istype(M, /mob/living/carbon/human)) - // monkey > human, - var/mob/living/carbon/monkey/Mo = M - Mo.monkeyizing = 1 - var/list/implants = list() //Still preserving implants - for(var/obj/item/weapon/implant/W in Mo) - implants += W - W.loc = null - if(!connected) - for(var/obj/item/W in (Mo.contents-implants)) - Mo.drop_from_inventory(W) - M.monkeyizing = 1 - M.canmove = 0 - M.icon = null - M.invisibility = 101 - var/atom/movable/overlay/animation = new( M.loc ) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - flick("monkey2h", animation) - sleep(48) - del(animation) - - var/mob/living/carbon/human/O = new( src ) - if(Mo.greaterform) - O.set_species(Mo.greaterform) - - if (isblockon(getblock(M.dna.uni_identity, 11,3),11)) - O.gender = FEMALE - else - O.gender = MALE - - if (M) - if (M.dna) - O.dna = M.dna - M.dna = null - - if (M.suiciding) - O.suiciding = M.suiciding - M.suiciding = null - - for(var/datum/disease/D in M.viruses) - O.viruses += D - D.affected_mob = O - M.viruses -= D - - //for(var/obj/T in M) - // del(T) - - O.loc = M.loc - - if(M.mind) - M.mind.transfer_to(O) //transfer our mind to the human - - if (connected) //inside dna thing - var/obj/machinery/dna_scannernew/C = connected - O.loc = C - C.occupant = O - connected = null - - var/i - while (!i) - var/randomname - if (O.gender == MALE) - randomname = capitalize(pick(first_names_male) + " " + capitalize(pick(last_names))) - else - randomname = capitalize(pick(first_names_female) + " " + capitalize(pick(last_names))) - if (findname(randomname)) - continue - else - O.real_name = randomname - i++ - updateappearance(O,O.dna.uni_identity) - O.take_overall_damage(M.getBruteLoss(), M.getFireLoss()) - O.adjustToxLoss(M.getToxLoss()) - O.adjustOxyLoss(M.getOxyLoss()) - O.stat = M.stat - for (var/obj/item/weapon/implant/I in implants) - I.loc = O - I.implanted = O -// O.update_icon = 1 //queue a full icon update at next life() call - del(M) - return -//////////////////////////////////////////////////////////// Monkey Block - if(M) - M.update_icon = 1 //queue a full icon update at next life() call - return null -======= -/////////////////////////// DNA HELPER-PROCS -/proc/getleftblocks(input,blocknumber,blocksize) - var/string - - if (blocknumber > 1) - string = copytext(input,1,((blocksize*blocknumber)-(blocksize-1))) - return string - else - return null - -/proc/getrightblocks(input,blocknumber,blocksize) - var/string - if (blocknumber < (length(input)/blocksize)) - string = copytext(input,blocksize*blocknumber+1,length(input)+1) - return string - else - return null - -/proc/getblockstring(input,block,subblock,blocksize,src,ui) // src is probably used here just for urls; ui is 1 when requesting for the unique identifier screen, 0 for structural enzymes screen - var/string - var/subpos = 1 // keeps track of the current sub block - var/blockpos = 1 // keeps track of the current block - - - for(var/i = 1, i <= length(input), i++) // loop through each letter - - var/pushstring - - if(subpos == subblock && blockpos == block) // if the current block/subblock is selected, mark it - pushstring = "[copytext(input, i, i+1)]" - else - if(ui) //This is for allowing block clicks to be differentiated - pushstring = "[copytext(input, i, i+1)]" - else - pushstring = "[copytext(input, i, i+1)]" - - string += pushstring // push the string to the return string - - if(subpos >= blocksize) // add a line break for every block - string += " | " - subpos = 0 - blockpos++ - - subpos++ - - return string - - -/proc/getblock(input,blocknumber,blocksize) - var/result - result = copytext(input ,(blocksize*blocknumber)-(blocksize-1),(blocksize*blocknumber)+1) - return result - -/proc/getblockbuffer(input,blocknumber,blocksize) - var/result[3] - var/block = copytext(input ,(blocksize*blocknumber)-(blocksize-1),(blocksize*blocknumber)+1) - for(var/i = 1, i <= 3, i++) - result[i] = copytext(block, i, i+1) - return result - -/proc/setblock(istring, blocknumber, replacement, blocksize) - if(!blocknumber) - return istring - if(!istring || !replacement || !blocksize) return 0 - var/result = getleftblocks(istring, blocknumber, blocksize) + replacement + getrightblocks(istring, blocknumber, blocksize) - return result - -/proc/add_zero2(t, u) - var/temp1 - while (length(t) < u) - t = "0[t]" - temp1 = t - if (length(t) > u) - temp1 = copytext(t,2,u+1) - return temp1 - -/proc/miniscramble(input,rs,rd) - var/output - output = null - if (input == "C" || input == "D" || input == "E" || input == "F") - output = pick(prob((rs*10));"4",prob((rs*10));"5",prob((rs*10));"6",prob((rs*10));"7",prob((rs*5)+(rd));"0",prob((rs*5)+(rd));"1",prob((rs*10)-(rd));"2",prob((rs*10)-(rd));"3") - if (input == "8" || input == "9" || input == "A" || input == "B") - output = pick(prob((rs*10));"4",prob((rs*10));"5",prob((rs*10));"A",prob((rs*10));"B",prob((rs*5)+(rd));"C",prob((rs*5)+(rd));"D",prob((rs*5)+(rd));"2",prob((rs*5)+(rd));"3") - if (input == "4" || input == "5" || input == "6" || input == "7") - output = pick(prob((rs*10));"4",prob((rs*10));"5",prob((rs*10));"A",prob((rs*10));"B",prob((rs*5)+(rd));"C",prob((rs*5)+(rd));"D",prob((rs*5)+(rd));"2",prob((rs*5)+(rd));"3") - if (input == "0" || input == "1" || input == "2" || input == "3") - output = pick(prob((rs*10));"8",prob((rs*10));"9",prob((rs*10));"A",prob((rs*10));"B",prob((rs*10)-(rd));"C",prob((rs*10)-(rd));"D",prob((rs*5)+(rd));"E",prob((rs*5)+(rd));"F") - if (!output) output = "5" - return output - -//Instead of picking a value far from the input, this will pick values closer to it. -//Sorry for the block of code, but it's more efficient then calling text2hex -> loop -> hex2text -/proc/miniscrambletarget(input,rs,rd) - var/output = null - switch(input) - if("0") - output = pick(prob((rs*10)+(rd));"0",prob((rs*10)+(rd));"1",prob((rs*10));"2",prob((rs*10)-(rd));"3") - if("1") - output = pick(prob((rs*10)+(rd));"0",prob((rs*10)+(rd));"1",prob((rs*10)+(rd));"2",prob((rs*10));"3",prob((rs*10)-(rd));"4") - if("2") - output = pick(prob((rs*10));"0",prob((rs*10)+(rd));"1",prob((rs*10)+(rd));"2",prob((rs*10)+(rd));"3",prob((rs*10));"4",prob((rs*10)-(rd));"5") - if("3") - output = pick(prob((rs*10)-(rd));"0",prob((rs*10));"1",prob((rs*10)+(rd));"2",prob((rs*10)+(rd));"3",prob((rs*10)+(rd));"4",prob((rs*10));"5",prob((rs*10)-(rd));"6") - if("4") - output = pick(prob((rs*10)-(rd));"1",prob((rs*10));"2",prob((rs*10)+(rd));"3",prob((rs*10)+(rd));"4",prob((rs*10)+(rd));"5",prob((rs*10));"6",prob((rs*10)-(rd));"7") - if("5") - output = pick(prob((rs*10)-(rd));"2",prob((rs*10));"3",prob((rs*10)+(rd));"4",prob((rs*10)+(rd));"5",prob((rs*10)+(rd));"6",prob((rs*10));"7",prob((rs*10)-(rd));"8") - if("6") - output = pick(prob((rs*10)-(rd));"3",prob((rs*10));"4",prob((rs*10)+(rd));"5",prob((rs*10)+(rd));"6",prob((rs*10)+(rd));"7",prob((rs*10));"8",prob((rs*10)-(rd));"9") - if("7") - output = pick(prob((rs*10)-(rd));"4",prob((rs*10));"5",prob((rs*10)+(rd));"6",prob((rs*10)+(rd));"7",prob((rs*10)+(rd));"8",prob((rs*10));"9",prob((rs*10)-(rd));"A") - if("8") - output = pick(prob((rs*10)-(rd));"5",prob((rs*10));"6",prob((rs*10)+(rd));"7",prob((rs*10)+(rd));"8",prob((rs*10)+(rd));"9",prob((rs*10));"A",prob((rs*10)-(rd));"B") - if("9") - output = pick(prob((rs*10)-(rd));"6",prob((rs*10));"7",prob((rs*10)+(rd));"8",prob((rs*10)+(rd));"9",prob((rs*10)+(rd));"A",prob((rs*10));"B",prob((rs*10)-(rd));"C") - if("10")//A - output = pick(prob((rs*10)-(rd));"7",prob((rs*10));"8",prob((rs*10)+(rd));"9",prob((rs*10)+(rd));"A",prob((rs*10)+(rd));"B",prob((rs*10));"C",prob((rs*10)-(rd));"D") - if("11")//B - output = pick(prob((rs*10)-(rd));"8",prob((rs*10));"9",prob((rs*10)+(rd));"A",prob((rs*10)+(rd));"B",prob((rs*10)+(rd));"C",prob((rs*10));"D",prob((rs*10)-(rd));"E") - if("12")//C - output = pick(prob((rs*10)-(rd));"9",prob((rs*10));"A",prob((rs*10)+(rd));"B",prob((rs*10)+(rd));"C",prob((rs*10)+(rd));"D",prob((rs*10));"E",prob((rs*10)-(rd));"F") - if("13")//D - output = pick(prob((rs*10)-(rd));"A",prob((rs*10));"B",prob((rs*10)+(rd));"C",prob((rs*10)+(rd));"D",prob((rs*10)+(rd));"E",prob((rs*10));"F") - if("14")//E - output = pick(prob((rs*10)-(rd));"B",prob((rs*10));"C",prob((rs*10)+(rd));"D",prob((rs*10)+(rd));"E",prob((rs*10)+(rd));"F") - if("15")//F - output = pick(prob((rs*10)-(rd));"C",prob((rs*10));"D",prob((rs*10)+(rd));"E",prob((rs*10)+(rd));"F") - - if(!input || !output) //How did this happen? - output = "8" - - return output - -/proc/isblockon(hnumber, bnumber , var/UI = 0) - - var/temp2 - temp2 = hex2num(hnumber) - - if(UI) - if(temp2 >= 2050) - return 1 - else - return 0 - - if (bnumber == HULKBLOCK || bnumber == TELEBLOCK || bnumber == NOBREATHBLOCK || bnumber == NOPRINTSBLOCK || bnumber == SMALLSIZEBLOCK || bnumber == SHOCKIMMUNITYBLOCK) - if (temp2 >= 3500 + BLOCKADD) - return 1 - else - return 0 - if (bnumber == XRAYBLOCK || bnumber == FIREBLOCK || bnumber == REMOTEVIEWBLOCK || bnumber == REGENERATEBLOCK || bnumber == INCREASERUNBLOCK || bnumber == REMOTETALKBLOCK || bnumber == MORPHBLOCK) - if (temp2 >= 3050 + BLOCKADD) - return 1 - else - return 0 - - - if (temp2 >= 2050 + BLOCKADD) - return 1 - else - return 0 - -/proc/ismuton(var/block,var/mob/M) - return isblockon(getblock(M.dna.struc_enzymes, block,3),block) - -/proc/randmutb(mob/M as mob) - if(!M) return - var/num - var/newdna - num = pick(GLASSESBLOCK,COUGHBLOCK,FAKEBLOCK,NERVOUSBLOCK,CLUMSYBLOCK,TWITCHBLOCK,HEADACHEBLOCK,BLINDBLOCK,DEAFBLOCK,HALLUCINATIONBLOCK) - M.dna.check_integrity() - newdna = setblock(M.dna.struc_enzymes,num,toggledblock(getblock(M.dna.struc_enzymes,num,3)),3) - M.dna.struc_enzymes = newdna - return - -/proc/randmutg(mob/M as mob) - if(!M) return - var/num - var/newdna - num = pick(HULKBLOCK,XRAYBLOCK,FIREBLOCK,TELEBLOCK,NOBREATHBLOCK,REMOTEVIEWBLOCK,REGENERATEBLOCK,INCREASERUNBLOCK,REMOTETALKBLOCK,MORPHBLOCK,BLENDBLOCK,NOPRINTSBLOCK,SHOCKIMMUNITYBLOCK,SMALLSIZEBLOCK) - M.dna.check_integrity() - newdna = setblock(M.dna.struc_enzymes,num,toggledblock(getblock(M.dna.struc_enzymes,num,3)),3) - M.dna.struc_enzymes = newdna - return - -/proc/scramble(var/type, mob/M as mob, var/p) - if(!M) return - M.dna.check_integrity() - if(type) - for(var/i = 1, i <= STRUCDNASIZE-1, i++) - if(prob(p)) - M.dna.uni_identity = setblock(M.dna.uni_identity, i, add_zero2(num2hex(rand(1,4095), 1), 3), 3) - updateappearance(M, M.dna.uni_identity) - - else - for(var/i = 1, i <= STRUCDNASIZE-1, i++) - if(prob(p)) - M.dna.struc_enzymes = setblock(M.dna.struc_enzymes, i, add_zero2(num2hex(rand(1,4095), 1), 3), 3) - domutcheck(M, null) - return - -/proc/randmuti(mob/M as mob) - if(!M) return - var/num - var/newdna - num = rand(1,UNIDNASIZE) - M.dna.check_integrity() - newdna = setblock(M.dna.uni_identity,num,add_zero2(num2hex(rand(1,4095),1),3),3) - M.dna.uni_identity = newdna - return - -/proc/toggledblock(hnumber) //unused - var/temp3 - var/chtemp - temp3 = hex2num(hnumber) - if (temp3 < 2050) - chtemp = rand(2050,4095) - return add_zero2(num2hex(chtemp,1),3) - else - chtemp = rand(1,2049) - return add_zero2(num2hex(chtemp,1),3) -/////////////////////////// DNA HELPER-PROCS - -/////////////////////////// DNA MISC-PROCS -/proc/updateappearance(mob/M as mob , structure) - if(istype(M, /mob/living/carbon/human)) - M.dna.check_integrity() - var/mob/living/carbon/human/H = M - H.r_hair = hex2num(getblock(structure,1,3)) - H.b_hair = hex2num(getblock(structure,2,3)) - H.g_hair = hex2num(getblock(structure,3,3)) - H.r_facial = hex2num(getblock(structure,4,3)) - H.b_facial = hex2num(getblock(structure,5,3)) - H.g_facial = hex2num(getblock(structure,6,3)) - H.s_tone = round(((hex2num(getblock(structure,7,3)) / 16) - 220)) - H.r_eyes = hex2num(getblock(structure,8,3)) - H.g_eyes = hex2num(getblock(structure,9,3)) - H.b_eyes = hex2num(getblock(structure,10,3)) - if(H.internal_organs_by_name["eyes"]) - var/obj/item/organ/eyes/eyes = H.internal_organs_by_name["eyes"] - eyes.eye_colour = list(H.r_eyes,H.g_eyes,H.b_eyes) - - if (isblockon(getblock(structure, 11,3),11 , 1)) - H.gender = FEMALE - else - H.gender = MALE - - //Hair - var/hairnum = hex2num(getblock(structure,13,3)) - var/index = round(1 +(hairnum / 4096)*hair_styles_list.len) - if((0 < index) && (index <= hair_styles_list.len)) - H.h_style = hair_styles_list[index] - - //Facial Hair - var/beardnum = hex2num(getblock(structure,12,3)) - index = round(1 +(beardnum / 4096)*facial_hair_styles_list.len) - if((0 < index) && (index <= facial_hair_styles_list.len)) - H.f_style = facial_hair_styles_list[index] - - H.update_body(0) - H.update_hair() - - return 1 - else - return 0 - -/proc/probinj(var/pr, var/inj) - return prob(pr+inj*pr) - -/proc/domutcheck(mob/living/M as mob, connected, inj) - if (!M) return - - M.dna.check_integrity() - - M.disabilities = 0 - M.sdisabilities = 0 - var/old_mutations = M.mutations - M.mutations = list() - -// M.see_in_dark = 2 -// M.see_invisible = 0 - - if(PLANT in old_mutations) - M.mutations.Add(PLANT) - if(SKELETON in old_mutations) - M.mutations.Add(SKELETON) - if(FAT in old_mutations) - M.mutations.Add(FAT) - if(HUSK in old_mutations) - M.mutations.Add(HUSK) - - if(ismuton(NOBREATHBLOCK,M)) - if(probinj(45,inj) || (mNobreath in old_mutations)) - M << "\blue You feel no need to breathe." - M.mutations.Add(mNobreath) - if(ismuton(REMOTEVIEWBLOCK,M)) - if(probinj(45,inj) || (mRemote in old_mutations)) - M << "\blue Your mind expands" - M.mutations.Add(mRemote) - if(ismuton(REGENERATEBLOCK,M)) - if(probinj(45,inj) || (mRegen in old_mutations)) - M << "\blue You feel strange" - M.mutations.Add(mRegen) - if(ismuton(INCREASERUNBLOCK,M)) - if(probinj(45,inj) || (mRun in old_mutations)) - M << "\blue You feel quick" - M.mutations.Add(mRun) - if(ismuton(REMOTETALKBLOCK,M)) - if(probinj(45,inj) || (mRemotetalk in old_mutations)) - M << "\blue You expand your mind outwards" - M.mutations.Add(mRemotetalk) - if(ismuton(MORPHBLOCK,M)) - if(probinj(45,inj) || (mMorph in old_mutations)) - M.mutations.Add(mMorph) - M << "\blue Your skin feels strange" - if(ismuton(BLENDBLOCK,M)) - if(probinj(45,inj) || (mBlend in old_mutations)) - M.mutations.Add(mBlend) - M << "\blue You feel alone" - if(ismuton(HALLUCINATIONBLOCK,M)) - if(probinj(45,inj) || (mHallucination in old_mutations)) - M.mutations.Add(mHallucination) - M << "\blue Your mind says 'Hello'" - if(ismuton(NOPRINTSBLOCK,M)) - if(probinj(45,inj) || (mFingerprints in old_mutations)) - M.mutations.Add(mFingerprints) - M << "\blue Your fingers feel numb" - if(ismuton(SHOCKIMMUNITYBLOCK,M)) - if(probinj(45,inj) || (mShock in old_mutations)) - M.mutations.Add(mShock) - M << "\blue You feel strange" - if(ismuton(SMALLSIZEBLOCK,M)) - if(probinj(45,inj) || (mSmallsize in old_mutations)) - M << "\blue Your skin feels rubbery" - M.mutations.Add(mSmallsize) - - - - if (isblockon(getblock(M.dna.struc_enzymes, HULKBLOCK,3),HULKBLOCK)) - if(probinj(5,inj) || (HULK in old_mutations)) - M << "\blue Your muscles hurt." - M.mutations.Add(HULK) - if (isblockon(getblock(M.dna.struc_enzymes, HEADACHEBLOCK,3),HEADACHEBLOCK)) - M.disabilities |= EPILEPSY - M << "\red You get a headache." - if (isblockon(getblock(M.dna.struc_enzymes, FAKEBLOCK,3),FAKEBLOCK)) - M << "\red You feel strange." - if (prob(95)) - if(prob(50)) - randmutb(M) - else - randmuti(M) - else - randmutg(M) - if (isblockon(getblock(M.dna.struc_enzymes, COUGHBLOCK,3),COUGHBLOCK)) - M.disabilities |= COUGHING - M << "\red You start coughing." - if (isblockon(getblock(M.dna.struc_enzymes, CLUMSYBLOCK,3),CLUMSYBLOCK)) - M << "\red You feel lightheaded." - M.mutations.Add(CLUMSY) - if (isblockon(getblock(M.dna.struc_enzymes, TWITCHBLOCK,3),TWITCHBLOCK)) - M.disabilities |= TOURETTES - M << "\red You twitch." - if (isblockon(getblock(M.dna.struc_enzymes, XRAYBLOCK,3),XRAYBLOCK)) - if(probinj(30,inj) || (XRAY in old_mutations)) - M << "\blue The walls suddenly disappear." -// M.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS) -// M.see_in_dark = 8 -// M.see_invisible = 2 - M.mutations.Add(XRAY) - if (isblockon(getblock(M.dna.struc_enzymes, NERVOUSBLOCK,3),NERVOUSBLOCK)) - M.disabilities |= NERVOUS - M << "\red You feel nervous." - if (isblockon(getblock(M.dna.struc_enzymes, FIREBLOCK,3),FIREBLOCK)) - if(probinj(30,inj) || (COLD_RESISTANCE in old_mutations)) - M << "\blue Your body feels warm." - M.mutations.Add(COLD_RESISTANCE) - if (isblockon(getblock(M.dna.struc_enzymes, BLINDBLOCK,3),BLINDBLOCK)) - M.sdisabilities |= BLIND - M << "\red You can't seem to see anything." - if (isblockon(getblock(M.dna.struc_enzymes, TELEBLOCK,3),TELEBLOCK)) - if(probinj(15,inj) || (TK in old_mutations)) - M << "\blue You feel smarter." - M.mutations.Add(TK) - if (isblockon(getblock(M.dna.struc_enzymes, DEAFBLOCK,3),DEAFBLOCK)) - M.sdisabilities |= DEAF - M.ear_deaf = 1 - M << "\red Its kinda quiet.." - if (isblockon(getblock(M.dna.struc_enzymes, GLASSESBLOCK,3),GLASSESBLOCK)) - M.disabilities |= NEARSIGHTED - M << "Your eyes feel weird..." - - /* If you want the new mutations to work, UNCOMMENT THIS. - if(istype(M, /mob/living/carbon)) - for (var/datum/mutations/mut in global_mutations) - mut.check_mutation(M) - */ - -//////////////////////////////////////////////////////////// Monkey Block - if (isblockon(getblock(M.dna.struc_enzymes, MONKEYBLOCK,3),MONKEYBLOCK) && istype(M, /mob/living/carbon/human)) - // human > monkey - var/mob/living/carbon/human/H = M - H.monkeyizing = 1 - var/list/implants = list() //Try to preserve implants. - for(var/obj/item/weapon/implant/W in H) - implants += W - W.loc = null - - if(!connected) - for(var/obj/item/W in (H.contents-implants)) - if (W==H.w_uniform) // will be teared - continue - H.drop_from_inventory(W) - M.monkeyizing = 1 - M.canmove = 0 - M.icon = null - M.invisibility = 101 - var/atom/movable/overlay/animation = new( M.loc ) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - flick("h2monkey", animation) - sleep(48) - del(animation) - - - var/mob/living/carbon/monkey/O = null - if(H.species.primitive) - O = new H.species.primitive(src) - else - H.gib() //Trying to change the species of a creature with no primitive var set is messy. - return - - if(M) - if (M.dna) - O.dna = M.dna - M.dna = null - - if (M.suiciding) - O.suiciding = M.suiciding - M.suiciding = null - - - for(var/datum/disease/D in M.viruses) - O.viruses += D - D.affected_mob = O - M.viruses -= D - - - for(var/obj/T in (M.contents-implants)) - del(T) - - O.loc = M.loc - - if(M.mind) - M.mind.transfer_to(O) //transfer our mind to the cute little monkey - - if (connected) //inside dna thing - var/obj/machinery/dna_scannernew/C = connected - O.loc = C - C.occupant = O - connected = null - O.real_name = text("monkey ([])",copytext(md5(M.real_name), 2, 6)) - O.take_overall_damage(M.getBruteLoss() + 40, M.getFireLoss()) - O.adjustToxLoss(M.getToxLoss() + 20) - O.adjustOxyLoss(M.getOxyLoss()) - O.stat = M.stat - O.a_intent = "hurt" - for (var/obj/item/weapon/implant/I in implants) - I.loc = O - I.implanted = O -// O.update_icon = 1 //queue a full icon update at next life() call - del(M) - return - - if (!isblockon(getblock(M.dna.struc_enzymes, MONKEYBLOCK,3),MONKEYBLOCK) && !istype(M, /mob/living/carbon/human)) - // monkey > human, - var/mob/living/carbon/monkey/Mo = M - Mo.monkeyizing = 1 - var/list/implants = list() //Still preserving implants - for(var/obj/item/weapon/implant/W in Mo) - implants += W - W.loc = null - if(!connected) - for(var/obj/item/W in (Mo.contents-implants)) - Mo.drop_from_inventory(W) - M.monkeyizing = 1 - M.canmove = 0 - M.icon = null - M.invisibility = 101 - var/atom/movable/overlay/animation = new( M.loc ) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - flick("monkey2h", animation) - sleep(48) - del(animation) - - var/mob/living/carbon/human/O = new( src ) - if(Mo.greaterform) - O.set_species(Mo.greaterform) - - if (isblockon(getblock(M.dna.uni_identity, 11,3),11)) - O.gender = FEMALE - else - O.gender = MALE - - if (M) - if (M.dna) - O.dna = M.dna - M.dna = null - - if (M.suiciding) - O.suiciding = M.suiciding - M.suiciding = null - - for(var/datum/disease/D in M.viruses) - O.viruses += D - D.affected_mob = O - M.viruses -= D - - //for(var/obj/T in M) - // del(T) - - O.loc = M.loc - - if(M.mind) - M.mind.transfer_to(O) //transfer our mind to the human - - if (connected) //inside dna thing - var/obj/machinery/dna_scannernew/C = connected - O.loc = C - C.occupant = O - connected = null - - var/i - while (!i) - var/randomname - if (O.gender == MALE) - randomname = capitalize(pick(first_names_male) + " " + capitalize(pick(last_names))) - else - randomname = capitalize(pick(first_names_female) + " " + capitalize(pick(last_names))) - if (findname(randomname)) - continue - else - O.real_name = randomname - i++ - updateappearance(O,O.dna.uni_identity) - O.take_overall_damage(M.getBruteLoss(), M.getFireLoss()) - O.adjustToxLoss(M.getToxLoss()) - O.adjustOxyLoss(M.getOxyLoss()) - O.stat = M.stat - for (var/obj/item/weapon/implant/I in implants) - I.loc = O - I.implanted = O -// O.update_icon = 1 //queue a full icon update at next life() call - del(M) - return -//////////////////////////////////////////////////////////// Monkey Block - if(M) - M.update_icon = 1 //queue a full icon update at next life() call - return null ->>>>>>> d77010221cbd08f6373edebee25d727b6409413b -/////////////////////////// DNA MISC-PROCS \ No newline at end of file diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index 6f5ca5d8e92..9b6ddb5160c 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -463,7 +463,6 @@ var/global/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","E // sending display messages C << "We have regenerated." - C.visible_message("[src] appears to wake from the dead, having healed all wounds.") feedback_add_details("changeling_powers","FD") diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index 6a17d03a072..a1c0acf0081 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -8,4 +8,4 @@ required_enemies = 3 uplink_welcome = "Nar-Sie Uplink Console:" end_on_antag_death = 1 - antag_tag = MODE_CULTIST \ No newline at end of file + antag_tag = MODE_CULTIST diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index f2f5f96de78..a17c030b111 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -8,6 +8,8 @@ throwforce = 10 attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") +/obj/item/weapon/melee/cultblade/cultify() + return /obj/item/weapon/melee/cultblade/attack(mob/living/target as mob, mob/living/carbon/human/user as mob) if(iscultist(user)) @@ -40,15 +42,22 @@ min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE siemens_coefficient = 0 +/obj/item/clothing/head/culthood/cultify() + return + +/obj/item/clothing/head/culthood/magus + name = "magus helm" + icon_state = "magus" + item_state = "magus" + desc = "A helm worn by the followers of Nar-Sie." + flags_inv = HIDEFACE + flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR + body_parts_covered = HEAD|FACE|EYES /obj/item/clothing/head/culthood/alt icon_state = "cult_hoodalt" item_state = "cult_hoodalt" -/obj/item/clothing/suit/cultrobes/alt - icon_state = "cultrobesalt" - item_state = "cultrobesalt" - /obj/item/clothing/suit/cultrobes name = "cult robes" desc = "A set of armored robes worn by the followers of Nar-Sie" @@ -60,27 +69,20 @@ flags_inv = HIDEJUMPSUIT siemens_coefficient = 0 -/obj/item/clothing/head/magus - name = "magus helm" - icon_state = "magus" - item_state = "magus" - desc = "A helm worn by the followers of Nar-Sie." - flags_inv = HIDEFACE - flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR - body_parts_covered = HEAD|FACE|EYES - armor = list(melee = 30, bullet = 30, laser = 30,energy = 20, bomb = 0, bio = 0, rad = 0) - siemens_coefficient = 0 +/obj/item/clothing/suit/cultrobes/cultify() + return -/obj/item/clothing/suit/magusred +/obj/item/clothing/suit/cultrobes/alt + icon_state = "cultrobesalt" + item_state = "cultrobesalt" + +/obj/item/clothing/suit/cultrobes/magusred name = "magus robes" desc = "A set of armored robes worn by the followers of Nar-Sie" icon_state = "magusred" item_state = "magusred" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS - allowed = list(/obj/item/weapon/book/tome,/obj/item/weapon/melee/cultblade) - armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - siemens_coefficient = 0 /obj/item/clothing/head/helmet/space/cult name = "cult helmet" @@ -90,6 +92,8 @@ armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) siemens_coefficient = 0 +/obj/item/clothing/head/helmet/space/cult/cultify() + return /obj/item/clothing/suit/space/cult name = "cult armour" @@ -101,4 +105,7 @@ slowdown = 1 armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) siemens_coefficient = 0 - body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS \ No newline at end of file + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS + +/obj/item/clothing/suit/space/cult/cultify() + return diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm index bf2124ebb54..185dc99ebd2 100644 --- a/code/game/gamemodes/cult/cult_structures.dm +++ b/code/game/gamemodes/cult/cult_structures.dm @@ -3,6 +3,9 @@ anchored = 1 icon = 'icons/obj/cult.dmi' +/obj/structure/cult/cultify() + return + /obj/structure/cult/talisman name = "Altar" desc = "A bloodstained altar dedicated to Nar-Sie" @@ -18,8 +21,52 @@ name = "Pylon" desc = "A floating crystal that hums with an unearthly energy" icon_state = "pylon" + var/isbroken = 0 luminosity = 5 + l_color = "#3e0000" + var/obj/item/wepon = null +/obj/structure/cult/pylon/attack_hand(mob/M as mob) + attackpylon(M, 5) + +/obj/structure/cult/pylon/attack_generic(var/mob/user, var/damage) + attackpylon(user, damage) + +/obj/structure/cult/pylon/attackby(obj/item/W as obj, mob/user as mob) + attackpylon(user, W.force) + +/obj/structure/cult/pylon/proc/attackpylon(mob/user as mob, var/damage) + if(!isbroken) + if(prob(1+ damage * 5)) + user << "You hit the pylon, and its crystal breaks apart!" + for(var/mob/M in viewers(src)) + if(M == user) + continue + M.show_message("[user.name] smashed the pylon!", 3, "You hear a tinkle of crystal shards", 2) + playsound(get_turf(src), 'sound/effects/Glassbr3.ogg', 75, 1) + isbroken = 1 + density = 0 + icon_state = "pylon-broken" + SetLuminosity(0) + else + user << "You hit the pylon!" + playsound(get_turf(src), 'sound/effects/Glasshit.ogg', 75, 1) + else + if(prob(damage * 2)) + user << "You pulverize what was left of the pylon!" + qdel(src) + else + user << "You hit the pylon!" + playsound(get_turf(src), 'sound/effects/Glasshit.ogg', 75, 1) + + +/obj/structure/cult/pylon/proc/repair(mob/user as mob) + if(isbroken) + user << "You repair the pylon." + isbroken = 0 + density = 1 + icon_state = "pylon" + SetLuminosity(5) /obj/structure/cult/tome name = "Desk" @@ -45,6 +92,7 @@ density = 1 unacidable = 1 anchored = 1.0 + var/spawnable = null /obj/effect/gateway/Bumped(mob/M as mob|obj) spawn(0) @@ -54,4 +102,74 @@ /obj/effect/gateway/Crossed(AM as mob|obj) spawn(0) return - return \ No newline at end of file + return + +/obj/effect/gateway/active + luminosity=5 + l_color="#ff0000" + spawnable=list( + /mob/living/simple_animal/hostile/scarybat, + /mob/living/simple_animal/hostile/creature, + /mob/living/simple_animal/hostile/faithless + ) + +/obj/effect/gateway/active/cult + luminosity=5 + l_color="#ff0000" + spawnable=list( + /mob/living/simple_animal/hostile/scarybat/cult, + /mob/living/simple_animal/hostile/creature/cult, + /mob/living/simple_animal/hostile/faithless/cult + ) + +/obj/effect/gateway/active/cult/cultify() + return + +/obj/effect/gateway/active/New() + spawn(rand(30,60) SECONDS) + var/t = pick(spawnable) + new t(src.loc) + qdel(src) + +/obj/effect/gateway/active/Crossed(var/atom/A) + if(!istype(A, /mob/living)) + return + + var/mob/living/M = A + + if(M.stat != DEAD) + if(M.monkeyizing) + return + if(M.has_brain_worms()) + return //Borer stuff - RR + + if(iscultist(M)) return + if(!ishuman(M) && !isrobot(M)) return + + M.monkeyizing = 1 + M.canmove = 0 + M.icon = null + M.overlays.len = 0 + M.invisibility = 101 + + if(istype(M, /mob/living/silicon/robot)) + var/mob/living/silicon/robot/Robot = M + if(Robot.mmi) + del(Robot.mmi) + else + for(var/obj/item/W in M) + if(istype(W, /obj/item/weapon/implant)) + qdel(W) + continue + W.layer = initial(W.layer) + W.loc = M.loc + W.dropped(M) + + var/mob/living/new_mob = new /mob/living/simple_animal/corgi(A.loc) + new_mob.a_intent = I_HURT + if(M.mind) + M.mind.transfer_to(new_mob) + else + new_mob.key = M.key + + new_mob << "Your form morphs into that of a corgi." //Because we don't have cluwnes diff --git a/code/game/gamemodes/cult/cultify/mob.dm b/code/game/gamemodes/cult/cultify/mob.dm new file mode 100644 index 00000000000..a7d275b1775 --- /dev/null +++ b/code/game/gamemodes/cult/cultify/mob.dm @@ -0,0 +1,63 @@ +/mob + //thou shall always be able to see the Geometer of Blood + var/image/narsimage = null + var/image/narglow = null + +/mob/proc/cultify() + return + +/mob/dead/cultify() + if(icon_state != "ghost-narsie") + icon = 'icons/mob/mob.dmi' + icon_state = "ghost-narsie" + overlays = 0 + invisibility = 0 + src << "Even as a non-corporal being, you can feel Nar-Sie's presence altering you. You are now visible to everyone." + +/mob/living/cultify() + if(iscultist(src) && client) + var/mob/living/simple_animal/construct/harvester/C = new(get_turf(src)) + mind.transfer_to(C) + C << "The Geometer of Blood is overjoyed to be reunited with its followers, and accepts your body in sacrifice. As reward, you have been gifted with the shell of an Harvester.
    Your tendrils can use and draw runes without need for a tome, your eyes can see beings through walls, and your mind can open any door. Use these assets to serve Nar-Sie and bring him any remaining living human in the world.
    You can teleport yourself back to Nar-Sie along with any being under yourself at any time using your \"Harvest\" spell.
    " + dust() + else if(client) + var/mob/dead/G = (ghostize()) + G.icon = 'icons/mob/mob.dmi' + G.icon_state = "ghost-narsie" + G.overlays = 0 + G.invisibility = 0 + G << "You feel relieved as what's left of your soul finally escapes its prison of flesh." + + cult.harvested += G.mind + else + dust() + +/mob/proc/see_narsie(var/obj/machinery/singularity/narsie/large/N, var/dir) + if(N.chained) + if(narsimage) + del(narsimage) + del(narglow) + return + if((N.z == src.z)&&(get_dist(N,src) <= (N.consume_range+10)) && !(N in view(src))) + if(!narsimage) //Create narsimage + narsimage = image('icons/obj/narsie.dmi',src.loc,"narsie",9,1) + narsimage.mouse_opacity = 0 + if(!narglow) //Create narglow + narglow = image('icons/obj/narsie.dmi',narsimage.loc,"glow-narsie",LIGHTING_LAYER+2,1) + narglow.mouse_opacity = 0 + //Else if no dir is given, simply send them the image of narsie + var/new_x = 32 * (N.x - src.x) + N.pixel_x + var/new_y = 32 * (N.y - src.y) + N.pixel_y + narsimage.pixel_x = new_x + narsimage.pixel_y = new_y + narglow.pixel_x = new_x + narglow.pixel_y = new_y + narsimage.loc = src.loc + narglow.loc = src.loc + //Display the new narsimage to the player + src << narsimage + src << narglow + else + if(narsimage) + del(narsimage) + del(narglow) diff --git a/code/game/gamemodes/cult/cultify/obj.dm b/code/game/gamemodes/cult/cultify/obj.dm new file mode 100644 index 00000000000..bc0a7238690 --- /dev/null +++ b/code/game/gamemodes/cult/cultify/obj.dm @@ -0,0 +1,153 @@ +/obj/proc/cultify() + qdel(src) + +/obj/effect/decal/cleanable/blood/cultify() + return + +/obj/effect/decal/remains/cultify() + return + +/obj/effect/overlay/cultify() + return + +/obj/item/device/flashlight/lamp/cultify() + new /obj/structure/cult/pylon(loc) + ..() + +/obj/item/stack/sheet/wood/cultify() + return + +/obj/item/weapon/book/cultify() + new /obj/item/weapon/book/tome(loc) + ..() + +/obj/item/weapon/claymore/cultify() + new /obj/item/weapon/melee/cultblade(loc) + ..() + +/obj/item/weapon/storage/backpack/cultify() + new /obj/item/weapon/storage/backpack/cultpack(loc) + ..() + +/obj/item/weapon/storage/backpack/cultpack/cultify() + return + +/obj/item/weapon/table_parts/cultify() + new /obj/item/weapon/table_parts/wood(loc) + ..() + +/obj/item/weapon/table_parts/wood/cultify() + return + +/obj/machinery/cultify() + // We keep the number of cultified machines down by only converting those that are dense + // The alternative is to keep a separate file of exceptions. + if(density) + var/list/random_structure = list( + /obj/structure/cult/talisman, + /obj/structure/cult/forge, + /obj/structure/cult/tome + ) + var/I = pick(random_structure) + new I(loc) + ..() + +/obj/machinery/atmospherics/cultify() + if(src.invisibility != INVISIBILITY_MAXIMUM) + src.invisibility = INVISIBILITY_MAXIMUM + density = 0 + +/obj/machinery/cooking/cultify() + new /obj/structure/cult/talisman(loc) + qdel(src) + +/obj/machinery/computer/cultify() + new /obj/structure/cult/tome(loc) + qdel(src) + +/obj/machinery/door/cultify() + new /obj/structure/mineral_door/wood(loc) + icon_state = "null" + density = 0 + c_animation = new /atom/movable/overlay(src.loc) + c_animation.name = "cultification" + c_animation.density = 0 + c_animation.anchored = 1 + c_animation.icon = 'icons/effects/effects.dmi' + c_animation.layer = 5 + c_animation.master = src.loc + c_animation.icon_state = "breakdoor" + flick("cultification",c_animation) + spawn(10) + del(c_animation) + qdel(src) + +/obj/machinery/door/firedoor/cultify() + qdel(src) + +/obj/machinery/light/cultify() + new /obj/structure/cult/pylon(loc) + qdel(src) + +/obj/machinery/mech_sensor/cultify() + qdel(src) + +/obj/machinery/power/apc/cultify() + if(src.invisibility != INVISIBILITY_MAXIMUM) + src.invisibility = INVISIBILITY_MAXIMUM + +/obj/machinery/vending/cultify() + new /obj/structure/cult/forge(loc) + qdel(src) + +/obj/structure/bed/chair/cultify() + var/obj/structure/bed/chair/wood/wings/I = new(loc) + I.dir = dir + ..() + +/obj/structure/bed/chair/wood/cultify() + return + +/obj/structure/bookcase/cultify() + return + +/obj/structure/grille/cultify() + new /obj/structure/grille/cult(get_turf(src)) + ..() + +/obj/structure/grille/cult/cultify() + return + +/obj/structure/mineral_door/cultify() + new /obj/structure/mineral_door/wood(loc) + ..() + +/obj/structure/mineral_door/wood/cultify() + return + +/obj/machinery/singularity/cultify() + var/dist = max((current_size - 2), 1) + explosion(get_turf(src), dist, dist * 2, dist * 4) + qdel(src) + +/obj/structure/shuttle/engine/heater/cultify() + new /obj/structure/cult/pylon(loc) + ..() + +/obj/structure/shuttle/engine/propulsion/cultify() + var/turf/T = get_turf(src) + if(T) + T.ChangeTurf(/turf/simulated/wall/cult) + ..() + +/obj/structure/stool/cultify() + var/obj/structure/bed/chair/wood/wings/I = new(loc) + I.dir = dir + ..() + +/obj/structure/table/cultify() + new /obj/structure/table/woodentable(loc) + ..() + +/obj/structure/table/woodentable/cultify() + return diff --git a/code/game/gamemodes/cult/cultify/turf.dm b/code/game/gamemodes/cult/cultify/turf.dm new file mode 100644 index 00000000000..0005298c423 --- /dev/null +++ b/code/game/gamemodes/cult/cultify/turf.dm @@ -0,0 +1,43 @@ +/turf/proc/cultify() + ChangeTurf(/turf/space) + return + +/turf/simulated/floor/cultify() + cultify_floor() + +/turf/simulated/floor/carpet/cultify() + return + +/turf/simulated/shuttle/floor/cultify() + cultify_floor() + +/turf/simulated/shuttle/floor4/cultify() + cultify_floor() + +/turf/simulated/shuttle/wall/cultify() + cultify_wall() + +/turf/simulated/wall/cultify() + cultify_wall() + +/turf/simulated/wall/cult/cultify() + return + +/turf/unsimulated/beach/cultify() + return + +/turf/unsimulated/floor/cultify() + cultify_floor() + +/turf/unsimulated/wall/cultify() + cultify_wall() + +/turf/proc/cultify_floor() + if((icon_state != "cult")&&(icon_state != "cult-narsie")) + name = "engraved floor" + icon_state = "cult" + turf_animation('icons/effects/effects.dmi',"cultfloor",0,0,MOB_LAYER-1) + +/turf/proc/cultify_wall() + ChangeTurf(/turf/unsimulated/wall/cult) + turf_animation('icons/effects/effects.dmi',"cultwall",0,0,MOB_LAYER-1) diff --git a/code/game/gamemodes/cult/hell_universe.dm b/code/game/gamemodes/cult/hell_universe.dm new file mode 100644 index 00000000000..2a2499bb45e --- /dev/null +++ b/code/game/gamemodes/cult/hell_universe.dm @@ -0,0 +1,101 @@ +/* + +In short: + * Random area alarms + * All areas jammed + * Random gateways spawning hellmonsters (and turn people into cluwnes if ran into) + * Broken APCs/Fire Alarms + * Scary music + * Random tiles changing to culty tiles. + +*/ +/datum/universal_state/hell + name = "Hell Rising" + desc = "OH FUCK OH FUCK OH FUCK" + + decay_rate = 5 // 5% chance of a turf decaying on lighting update/airflow (there's no actual tick for turfs) + +/datum/universal_state/hell/OnShuttleCall(var/mob/user) + return 1 + /* + if(user) + user << "All you hear on the frequency is static and panicked screaming. There will be no shuttle call today." + return 0 + */ + +/datum/universal_state/hell/DecayTurf(var/turf/T) + if(!T.holy) + T.cultify() + for(var/obj/machinery/light/L in T.contents) + new /obj/structure/cult/pylon(L.loc) + qdel(L) + return + + +/datum/universal_state/hell/OnTurfChange(var/turf/T) + var/turf/space/spess = T + if(istype(spess)) + spess.overlays += "hell01" + +// Apply changes when entering state +/datum/universal_state/hell/OnEnter() + set background = 1 + escape_list = get_area_turfs(locate(/area/hallway/secondary/exit)) + + //Separated into separate procs for profiling + AreaSet() + OverlaySet() + MiscSet() + APCSet() + KillMobs() + AmbientSet() + + runedec += 9000 //basically removing the rune cap + +/datum/universal_state/hell/proc/AreaSet() + for(var/area/ca in world) + var/area/A = ca.master + if(!istype(A,/area) || A.name=="Space") + continue + + // Reset all alarms. + A.fire = null + A.atmos = 1 + A.atmosalm = 0 + A.poweralm = 1 + A.party = null + + A.updateicon() + +/datum/universal_state/hell/proc/OverlaySet() + var/image/I = image("icon" = 'icons/turf/space.dmi', "icon_state" = "hell01", "layer" = 10) + for(var/turf/space/spess in world) + spess.overlays += I + +/datum/universal_state/hell/proc/AmbientSet() + for(var/turf/T in world) + if(istype(T, /turf/space)) continue + T.update_lumcount(1, 255, 0, 0, 0) + +/datum/universal_state/hell/proc/MiscSet() + for(var/turf/simulated/floor/T in world) + if(!T.holy && prob(1)) + new /obj/effect/gateway/active/cult(T) + + for (var/obj/machinery/firealarm/alm in machines) + if (!(alm.stat & BROKEN)) + alm.ex_act(2) + +/datum/universal_state/hell/proc/APCSet() + for (var/obj/machinery/power/apc/APC in machines) + if (!(APC.stat & BROKEN) && !istype(APC.area,/area/turret_protected/ai)) + APC.chargemode = 0 + if(APC.cell) + APC.cell.charge = 0 + APC.emagged = 1 + APC.queue_icon_update() + +/datum/universal_state/hell/proc/KillMobs() + for(var/mob/living/simple_animal/M in mob_list) + if(M && !M.client) + M.stat = DEAD diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 0fd706059e9..9f99945837e 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -2,7 +2,8 @@ var/cultwords = list() var/runedec = 0 -var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", "self", "see", "other", "hide") +var/global/list/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", "self", "see", "other", "hide") +var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","mgar","balaq", "karazet", "geeri") /client/proc/check_words() // -- Urist set category = "Special Verbs" @@ -14,7 +15,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", usr << "[cultwords[word]] is [word]" /proc/runerandom() //randomizes word meaning - var/list/runewords=list("ire","ego","nahlizet","certum","veri","jatkaa","mgar","balaq", "karazet", "geeri") ///"orkan" and "allaq" removed. + var/list/runewords=rnwords for (var/word in engwords) cultwords[word] = pick(runewords) runewords-=cultwords[word] @@ -32,8 +33,9 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", var/word1 var/word2 var/word3 + var/image/blood_image var/list/converting = list() - + // Places these combos are mentioned: this file - twice in the rune code, once in imbued tome, once in tome's HTML runes.dm - in the imbue rune code. If you change a combination - dont forget to change it everywhere. // travel self [word] - Teleport to random [rune with word destination matching] @@ -65,10 +67,21 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", // join hide technology - stun rune. Rune color: bright pink. New() ..() - var/image/blood = image(loc = src) - blood.override = 1 + blood_image = image(loc = src) + blood_image.override = 1 for(var/mob/living/silicon/ai/AI in player_list) - AI.client.images += blood + if(AI.client) + AI.client.images += blood_image + rune_list.Add(src) + + Del() + for(var/mob/living/silicon/ai/AI in player_list) + if(AI.client) + AI.client.images -= blood_image + qdel(blood_image) + blood_image = null + rune_list.Remove(src) + ..() examine(mob/user) ..() @@ -457,6 +470,8 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", user << "\red You slice open one of your fingers and begin drawing a rune on the floor whilst chanting the ritual that binds your life essence with the dark arcane energies flowing through the surrounding world." user.take_overall_damage((rand(9)+1)/10) // 0.1 to 1.0 damage if(do_after(user, 50)) + var/area/A = get_area(user) + log_and_message_admins("created \an [chosen_rune] rune at \the [A.name] - [user.loc.x]-[user.loc.y]-[user.loc.z].") if(usr.get_active_hand() != src) return var/mob/living/carbon/human/H = user @@ -495,6 +510,9 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", else user << "The scriptures of Nar-Sie, The One Who Sees, The Geometer of Blood. Contains the details of every ritual his followers could think of. Most of these are useless, though." +/obj/item/weapon/book/tome/cultify() + return + /obj/item/weapon/book/tome/imbued //admin tome, spawns working runes without waiting w_class = 2.0 var/cultistsonly = 1 @@ -514,6 +532,8 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", var/mob/living/carbon/human/H = user R.blood_DNA = list() R.blood_DNA[H.dna.unique_enzymes] = H.dna.b_type + var/area/A = get_area(user) + log_and_message_admins("created \an [r] rune at \the [A.name] - [user.loc.x]-[user.loc.y]-[user.loc.z].") switch(r) if("teleport") var/list/words = list("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar", "karazet", "geeri") diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 9230436a056..6f64faca59b 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -1,5 +1,8 @@ var/list/sacrificed = list() +/obj/effect/rune/cultify() + return + /obj/effect/rune /////////////////////////////////////////FIRST RUNE @@ -99,6 +102,7 @@ var/list/sacrificed = list() /////////////////////////////////////////THIRD RUNE convert() + var/mob/attacker = usr var/mob/living/carbon/target = null for(var/mob/living/carbon/M in src.loc) if(!iscultist(M) && M.stat < DEAD && !(M in converting)) @@ -123,10 +127,10 @@ var/list/sacrificed = list() if(target.getFireLoss() < 100) target.hallucination = min(target.hallucination, 500) return 0 - target.take_overall_damage(0, rand(5, 20)) // You dirty resister cannot handle the damage to your mind. Easily. - even cultists who accept right away should experience some effects // Resist messages go! if(initial_message) //don't do this stuff right away, only if they resist or hesitate. + admin_attack_log(attacker, target, "Used a convert rune", "Was subjected to a convert rune", "used a convert rune on") switch(target.getFireLoss()) if(0 to 25) target << "Your blood boils as you force yourself to resist the corruption invading every corner of your mind." @@ -176,12 +180,16 @@ var/list/sacrificed = list() /////////////////////////////////////////FOURTH RUNE tearreality() - var/cultist_count = 0 + if(!cult.allow_narsie) + return fizzle() + + var/list/cultists = new() for(var/mob/M in range(1,src)) if(iscultist(M) && !M.stat) M.say("Tok-lyr rqa'nap g[pick("'","`")]lt-ulotf!") - cultist_count += 1 - if(cultist_count >= 9) + cultists += 1 + if(cultists.len >= 9) + log_and_message_admins_many(cultists, "summoned Nar-sie.") new /obj/machinery/singularity/narsie/large(src.loc) return else @@ -190,6 +198,7 @@ var/list/sacrificed = list() /////////////////////////////////////////FIFTH RUNE emp(var/U,var/range_red) //range_red - var which determines by which number to reduce the default emp range, U is the source loc, needed because of talisman emps which are held in hand at the moment of using and that apparently messes things up -- Urist + log_and_message_admins("activated an EMP rune.") if(istype(src,/obj/effect/rune)) usr.say("Ta'gh fara[pick("'","`")]qha fel d'amar det!") else @@ -211,6 +220,7 @@ var/list/sacrificed = list() if(R.word1==cultwords["travel"] && R.word2==cultwords["blood"] && R.word3==cultwords["self"]) for(var/mob/living/carbon/D in R.loc) if(D.stat!=2) + admin_attack_log(usr, D, "Used a blood drain rune.", "Was victim of a blood drain rune.", "used a blood drain rune on") var/bdrain = rand(1,25) D << "\red You feel weakened." D.take_overall_damage(bdrain, 0) @@ -443,6 +453,7 @@ var/list/sacrificed = list() D.real_name += " " D.real_name += pick("Apparition", "Aptrgangr", "Dis", "Draugr", "Dybbuk", "Eidolon", "Fetch", "Fylgja", "Ghast", "Ghost", "Gjenganger", "Haint", "Phantom", "Phantasm", "Poltergeist", "Revenant", "Shade", "Shadow", "Soul", "Spectre", "Spirit", "Spook", "Visitant", "Wraith") + log_and_message_admins("used a manifest rune.") var/mob/living/user = usr while(this_rune && user && user.stat==CONSCIOUS && user.client && user.loc==this_rune.loc) user.take_organ_damage(1, 0) @@ -657,6 +668,7 @@ var/list/sacrificed = list() usr << "\red The victim is still alive, you will need more cultists chanting for the sacrifice to succeed." else if(prob(40)) + usr << "\red The Geometer of blood accepts this sacrifice." cult.grant_runeword(usr) else @@ -853,7 +865,7 @@ var/list/sacrificed = list() deafen() if(istype(src,/obj/effect/rune)) - var/affected = 0 + var/list/affected = new() for(var/mob/living/carbon/C in range(7,src)) if (iscultist(C)) continue @@ -862,17 +874,18 @@ var/list/sacrificed = list() continue C.ear_deaf += 50 C.show_message("\red The world around you suddenly becomes quiet.", 3) - affected++ + affected += C if(prob(1)) C.sdisabilities |= DEAF - if(affected) + if(affected.len) usr.say("Sti[pick("'","`")] kaliedir!") usr << "\red The world becomes quiet as the deafening rune dissipates into fine dust." + admin_attacker_log_many_victims(usr, affected, "Used a deafen rune.", "Was victim of a deafen rune.", "used a deafen rune on") del(src) else return fizzle() else - var/affected = 0 + var/list/affected = new() for(var/mob/living/carbon/C in range(7,usr)) if (iscultist(C)) continue @@ -882,10 +895,11 @@ var/list/sacrificed = list() C.ear_deaf += 30 //talismans is weaker. C.show_message("\red The world around you suddenly becomes quiet.", 3) - affected++ - if(affected) + affected += C + if(affected.len) usr.whisper("Sti[pick("'","`")] kaliedir!") usr << "\red Your talisman turns into gray dust, deafening everyone around." + admin_attacker_log_many_victims(usr, affected, "Used a deafen rune.", "Was victim of a deafen rune.", "used a deafen rune on") for (var/mob/V in orange(1,src)) if(!(iscultist(V))) V.show_message("\red Dust flows from [usr]'s hands for a moment, and the world suddenly becomes quiet..", 3) @@ -893,7 +907,7 @@ var/list/sacrificed = list() blind() if(istype(src,/obj/effect/rune)) - var/affected = 0 + var/list/affected = new() for(var/mob/living/carbon/C in viewers(src)) if (iscultist(C)) continue @@ -907,15 +921,16 @@ var/list/sacrificed = list() if(prob(10)) C.sdisabilities |= BLIND C.show_message("\red Suddenly you see red flash that blinds you.", 3) - affected++ - if(affected) + affected += C + if(affected.len) usr.say("Sti[pick("'","`")] kaliesin!") usr << "\red The rune flashes, blinding those who not follow the Nar-Sie, and dissipates into fine dust." + admin_attacker_log_many_victims(usr, affected, "Used a blindness rune.", "Was victim of a blindness rune.", "used a blindness rune on") del(src) else return fizzle() else - var/affected = 0 + var/list/affected = new() for(var/mob/living/carbon/C in view(2,usr)) if (iscultist(C)) continue @@ -925,11 +940,12 @@ var/list/sacrificed = list() C.eye_blurry += 30 C.eye_blind += 10 //talismans is weaker. - affected++ + affected += C C.show_message("\red You feel a sharp pain in your eyes, and the world disappears into darkness..", 3) - if(affected) + if(affected.len) usr.whisper("Sti[pick("'","`")] kaliesin!") usr << "\red Your talisman turns into gray dust, blinding those who not follow the Nar-Sie." + admin_attacker_log_many_victims(usr, affected, "Used a blindness rune.", "Was victim of a blindness rune.", "used a blindness rune on") return @@ -940,12 +956,13 @@ var/list/sacrificed = list() if (istype(H.current,/mob/living/carbon)) cultists+=H.current */ - var/culcount = 0 //also, wording for it is old wording for obscure rune, which is now hide-see-blood. + var/list/cultists = new //also, wording for it is old wording for obscure rune, which is now hide-see-blood. + var/list/victims = new // var/list/cultboil = list(cultists-usr) //and for this words are destroy-see-blood. for(var/mob/living/carbon/C in orange(1,src)) if(iscultist(C) && !C.stat) - culcount++ - if(culcount>=3) + cultists+=C + if(cultists.len>=3) for(var/mob/living/carbon/M in viewers(usr)) if(iscultist(M)) continue @@ -954,6 +971,7 @@ var/list/sacrificed = list() continue M.take_overall_damage(51,51) M << "\red Your blood boils!" + victims += M if(prob(5)) spawn(5) M.gib() @@ -964,6 +982,8 @@ var/list/sacrificed = list() if(iscultist(C) && !C.stat) C.say("Dedo ol[pick("'","`")]btoh!") C.take_overall_damage(15, 0) + admin_attacker_log_many_victims(usr, victims, "Used a blood boil rune.", "Was the victim of a blood boil rune.", "used a blood boil rune on") + log_and_message_admins_many(cultists - usr, "assisted activating a blood boil rune.") del(src) else return fizzle() @@ -1003,7 +1023,6 @@ var/list/sacrificed = list() if(istype(src,/obj/effect/rune)) ///When invoked as rune, flash and stun everyone around. usr.say("Fuu ma[pick("'","`")]jin!") for(var/mob/living/L in viewers(src)) - if(iscarbon(L)) var/mob/living/carbon/C = L flick("e_flash", C.flash) @@ -1012,11 +1031,13 @@ var/list/sacrificed = list() C.Weaken(1) C.Stun(1) C.show_message("\red The rune explodes in a bright flash.", 3) + admin_attack_log(usr, C, "Used a stun rune.", "Was victim of a stun rune.", "used a stun rune on") else if(issilicon(L)) var/mob/living/silicon/S = L S.Weaken(5) S.show_message("\red BZZZT... The rune has exploded in a bright flash.", 3) + admin_attack_log(usr, S, "Used a stun rune.", "Was victim of a stun rune.", "used a stun rune on") del(src) else ///When invoked as talisman, stun and mute the target mob. usr.say("Dream sign ''Evil sealing talisman'[pick("'","`")]!") @@ -1030,7 +1051,7 @@ var/list/sacrificed = list() if(issilicon(T)) T.Weaken(15) - + admin_attack_log(usr, T, "Used a stun rune.", "Was victim of a stun rune.", "used a stun rune on") else if(iscarbon(T)) var/mob/living/carbon/C = T flick("e_flash", C.flash) @@ -1038,6 +1059,7 @@ var/list/sacrificed = list() C.silent += 15 C.Weaken(25) C.Stun(25) + admin_attack_log(usr, C, "Used a stun rune.", "Was victim of a stun rune.", "used a stun rune on") return /////////////////////////////////////////TWENTY-FIFTH RUNE diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 0f5ab245d1f..df5b9a49651 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -106,7 +106,7 @@ if("soulstone") new /obj/item/device/soulstone(get_turf(usr)) if("construct") - new /obj/structure/constructshell(get_turf(usr)) + new /obj/structure/constructshell/cult(get_turf(usr)) src.uses-- supply() return diff --git a/code/game/gamemodes/endgame/endgame.dm b/code/game/gamemodes/endgame/endgame.dm new file mode 100644 index 00000000000..ed1167dfe74 --- /dev/null +++ b/code/game/gamemodes/endgame/endgame.dm @@ -0,0 +1,68 @@ +/********************** + * ENDGAME STUFF + **********************/ + + // Universal State + // Handles stuff like space icon_state, constants, etc. + // Essentially a policy manager. Once shit hits the fan, this changes its policies. + // Called by master controller. + + // Default shit. +/datum/universal_state + // Just for reference, for now. + // Might eventually add an observatory job. + var/name = "Normal" + var/desc = "Nothing seems awry." + + // Sets world.turf, replaces all turfs of type /turf/space. + var/space_type = /turf/space + + // Replaces all turfs of type /turf/space/transit + var/transit_space_type = /turf/space/transit + + // Chance of a floor or wall getting damaged [0-100] + // Simulates stuff getting broken due to molecular bonds decaying. + var/decay_rate = 0 + +// Actually decay the turf. +/datum/universal_state/proc/DecayTurf(var/turf/T) + if(istype(T,/turf/simulated/wall)) + var/turf/simulated/wall/W=T + W.melt() + return + if(istype(T,/turf/simulated/floor)) + var/turf/simulated/floor/F=T + // Burnt? + if(!F.burnt) + F.burn_tile() + else + F.ReplaceWithLattice() + return + +// Return 0 to cause shuttle call to fail. +/datum/universal_state/proc/OnShuttleCall(var/mob/user) + return 1 + +// Processed per tick +/datum/universal_state/proc/OnTurfTick(var/turf/T) + if(decay_rate && prob(decay_rate)) + DecayTurf(T) + +// Apply changes when exiting state +/datum/universal_state/proc/OnExit() + // Does nothing by default + +// Apply changes when entering state +/datum/universal_state/proc/OnEnter() + // Does nothing by default + +// Apply changes to a new turf. +/datum/universal_state/proc/OnTurfChange(var/turf/NT) + return + +/proc/SetUniversalState(var/newstate,var/on_exit=1, var/on_enter=1) + if(on_exit) + universe.OnExit() + universe = new newstate + if(on_enter) + universe.OnEnter() diff --git a/code/game/gamemodes/endgame/supermatter_cascade/blob.dm b/code/game/gamemodes/endgame/supermatter_cascade/blob.dm new file mode 100644 index 00000000000..139045291f1 --- /dev/null +++ b/code/game/gamemodes/endgame/supermatter_cascade/blob.dm @@ -0,0 +1,117 @@ +// QUALITY COPYPASTA +/turf/unsimulated/wall/supermatter + name = "Bluespace" + desc = "THE END IS right now actually." + + icon = 'icons/turf/space.dmi' + icon_state = "bluespace" + + //luminosity = 5 + //l_color="#0066FF" + layer = LIGHTING_LAYER+1 + + var/spawned=0 // DIR mask + var/next_check=0 + var/list/avail_dirs = list(NORTH,SOUTH,EAST,WEST) + +/turf/unsimulated/wall/supermatter/New() + ..() + processing_turfs.Add(src) + next_check = world.time+5 SECONDS + +/turf/unsimulated/wall/supermatter/Destroy() + processing_turfs.Remove(src) + ..() + +/turf/unsimulated/wall/supermatter/proc/process() + // Only check infrequently. + if(next_check>world.time) return + + // No more available directions? Shut down process(). + if(avail_dirs.len==0) + processing_objects.Remove(src) + return 1 + + // We're checking, reset the timer. + next_check = world.time+5 SECONDS + + // Choose a direction. + var/pdir = pick(avail_dirs) + avail_dirs -= pdir + var/turf/T=get_step(src,pdir) + + // EXPAND + if(!istype(T,type)) + // Do pretty fadeout animation for 1s. + new /obj/effect/overlay/bluespacify(T) + spawn(10) + // Nom. + for(var/atom/movable/A in T) + if(A) + if(istype(A,/mob/living)) + del(A) + else if(istype(A,/mob)) // Observers, AI cameras. + continue + qdel(A) + T.ChangeTurf(type) + + if((spawned & (NORTH|SOUTH|EAST|WEST)) == (NORTH|SOUTH|EAST|WEST)) + processing_turfs -= src + return + +/turf/unsimulated/wall/supermatter/attack_generic(mob/user as mob) + return attack_hand(user) + +/turf/unsimulated/wall/supermatter/attack_robot(mob/user as mob) + if(Adjacent(user)) + return attack_hand(user) + else + user << "What the fuck are you doing?" + return + +// /vg/: Don't let ghosts fuck with this. +/turf/unsimulated/wall/supermatter/attack_ghost(mob/user as mob) + user.examinate(src) + +/turf/unsimulated/wall/supermatter/attack_ai(mob/user as mob) + return user.examinate(src) + +/turf/unsimulated/wall/supermatter/attack_hand(mob/user as mob) + user.visible_message("\The [user] reaches out and touches \the [src]... And then blinks out of existance.",\ + "You reach out and touch \the [src]. Everything immediately goes quiet. Your last thought is \"That was not a wise decision.\"",\ + "You hear an unearthly noise.") + + playsound(src, 'sound/effects/supermatter.ogg', 50, 1) + + Consume(user) + +/turf/unsimulated/wall/supermatter/attackby(obj/item/weapon/W as obj, mob/living/user as mob) + user.visible_message("\The [user] touches \a [W] to \the [src] as a silence fills the room...",\ + "You touch \the [W] to \the [src] when everything suddenly goes silent.\"\n\The [W] flashes into dust as you flinch away from \the [src].",\ + "Everything suddenly goes silent.") + + playsound(src, 'sound/effects/supermatter.ogg', 50, 1) + + user.drop_from_inventory(W) + Consume(W) + + +/turf/unsimulated/wall/supermatter/Bumped(atom/AM as mob|obj) + if(istype(AM, /mob/living)) + AM.visible_message("\The [AM] slams into \the [src] inducing a resonance... \his body starts to glow and catch flame before flashing into ash.",\ + "You slam into \the [src] as your ears are filled with unearthly ringing. Your last thought is \"Oh, fuck.\"",\ + "You hear an unearthly noise as a wave of heat washes over you.") + else + AM.visible_message("\The [AM] smacks into \the [src] and rapidly flashes to ash.",\ + "You hear a loud crack as you are washed with a wave of heat.") + + playsound(src, 'sound/effects/supermatter.ogg', 50, 1) + + Consume(AM) + + +/turf/unsimulated/wall/supermatter/proc/Consume(var/mob/living/user) + if(istype(user,/mob/dead/observer)) + return + + del(user) diff --git a/code/game/gamemodes/endgame/supermatter_cascade/portal.dm b/code/game/gamemodes/endgame/supermatter_cascade/portal.dm new file mode 100644 index 00000000000..9d3f12b0214 --- /dev/null +++ b/code/game/gamemodes/endgame/supermatter_cascade/portal.dm @@ -0,0 +1,81 @@ +/*** EXIT PORTAL ***/ + +/obj/machinery/singularity/narsie/large/exit + name = "Bluespace Rift" + desc = "NO TIME TO EXPLAIN, JUMP IN" + icon = 'icons/obj/rift.dmi' + icon_state = "rift" + + move_self = 0 + announce=0 + narnar=0 + + layer=LIGHTING_LAYER+2 // ITS SO BRIGHT + + consume_range = 6 + +/obj/machinery/singularity/narsie/large/exit/New() + ..() + processing_objects.Add(src) + +/obj/machinery/singularity/narsie/large/exit/update_icon() + overlays = 0 + +/obj/machinery/singularity/narsie/large/exit/process() + for(var/mob/M in player_list) + if(M.client) + M.see_rift(src) + eat() + +/obj/machinery/singularity/narsie/large/exit/acquire(var/mob/food) + return + +/obj/machinery/singularity/narsie/large/exit/consume(const/atom/A) + if(!(A.singuloCanEat())) + return 0 + + if (istype(A, /mob/living/)) + do_teleport(A, pick(endgame_safespawns)) //dead-on precision + else if (isturf(A)) + var/turf/T = A + var/dist = get_dist(T, src) + if (dist <= consume_range && T.density) + T.density = 0 + + for (var/atom/movable/AM in T.contents) + if (AM == src) // This is the snowflake. + continue + + if (dist <= consume_range) + consume(AM) + continue + + if (dist > consume_range) + if (101 == AM.invisibility) + continue + + spawn (0) + AM.singularity_pull(src, src.current_size) + + +/mob + //thou shall always be able to see the rift + var/image/riftimage = null + +/mob/proc/see_rift(var/obj/machinery/singularity/narsie/large/exit/R) + if((R.z == src.z) && (get_dist(R,src) <= (R.consume_range+10)) && !(R in view(src))) + if(!riftimage) + riftimage = image('icons/obj/rift.dmi',src.loc,"rift",LIGHTING_LAYER+2,1) + riftimage.mouse_opacity = 0 + + var/new_x = 32 * (R.x - src.x) + R.pixel_x + var/new_y = 32 * (R.y - src.y) + R.pixel_y + riftimage.pixel_x = new_x + riftimage.pixel_y = new_y + riftimage.loc = src.loc + + src << riftimage + + else + if(riftimage) + del(riftimage) diff --git a/code/game/gamemodes/endgame/supermatter_cascade/universe.dm b/code/game/gamemodes/endgame/supermatter_cascade/universe.dm new file mode 100644 index 00000000000..1b5ceb87e82 --- /dev/null +++ b/code/game/gamemodes/endgame/supermatter_cascade/universe.dm @@ -0,0 +1,140 @@ + +/datum/universal_state/supermatter_cascade + name = "Supermatter Cascade" + desc = "Unknown harmonance affecting universal substructure, converting nearby matter to supermatter." + + decay_rate = 5 // 5% chance of a turf decaying on lighting update/airflow (there's no actual tick for turfs) + +/datum/universal_state/supermatter_cascade/OnShuttleCall(var/mob/user) + if(user) + user << "All you hear on the frequency is static and panicked screaming. There will be no shuttle call today." + return 0 + +/datum/universal_state/supermatter_cascade/OnTurfChange(var/turf/T) + var/turf/space/spess = T + if(istype(spess)) + spess.overlays += "end01" + +/datum/universal_state/supermatter_cascade/DecayTurf(var/turf/T) + if(istype(T,/turf/simulated/wall)) + var/turf/simulated/wall/W=T + W.melt() + return + if(istype(T,/turf/simulated/floor)) + var/turf/simulated/floor/F=T + // Burnt? + if(!F.burnt) + F.burn_tile() + else + if(!istype(F,/turf/simulated/floor/plating)) + F.break_tile_to_plating() + return + +// Apply changes when entering state +/datum/universal_state/supermatter_cascade/OnEnter() + set background = 1 + world << "You are blinded by a brilliant flash of energy." + + world << sound('sound/effects/cascade.ogg') + + for(var/mob/M in player_list) + flick("e_flash", M.flash) + + if(emergency_shuttle.can_recall()) + priority_announcement.Announce("The emergency shuttle has returned due to bluespace distortion.") + emergency_shuttle.recall() + + AreaSet() + OverlaySet() + MiscSet() + APCSet() + AmbientSet() + + // Disable Nar-Sie. + cult.allow_narsie = 0 + PlayerSet() + + new /obj/machinery/singularity/narsie/large/exit(pick(endgame_exits)) + spawn(rand(30,60) SECONDS) + var/txt = {" +There's been a galaxy-wide electromagnetic pulse. All of our systems are heavily damaged and many personnel are dead or dying. We are seeing increasing indications of the universe itself beginning to unravel. + +[station_name()], you are the only facility nearby a bluespace rift, which is near your research outpost. You are hereby directed to enter the rift using all means necessary, quite possibly as the last of your species alive. + +You have five minutes before the universe collapses. Good l\[\[###!!!- + +AUTOMATED ALERT: Link to [command_name()] lost."} + priority_announcement.Announce(txt,"SUPERMATTER CASCADE DETECTED") + sleep(5 MINUTES) + ticker.declare_completion() + ticker.station_explosion_cinematic(0,null) // TODO: Custom cinematic + + world << "Resetting in 30 seconds!" + + feedback_set_details("end_error","Universe ended") + + if(blackbox) + blackbox.save_all_data_to_sql() + + sleep(300) + log_game("Rebooting due to universal collapse") + world.Reboot() + return + +/datum/universal_state/supermatter_cascade/proc/AreaSet() + for(var/area/ca in world) + var/area/A=ca.master + if(A.z in config.admin_levels) + continue + if(!istype(A,/area) || istype(A,/area/space)) + continue + + // Reset all alarms. + A.fire = null + A.atmos = 1 + A.atmosalm = 0 + A.poweralm = 1 + + // Slap on random alerts + if(prob(25)) + switch(rand(1,4)) + if(1) + A.fire=1 + if(2) + A.atmosalm=1 + + A.updateicon() + +/datum/universal_state/supermatter_cascade/proc/OverlaySet() + for(var/turf/space/spess in world) + spess.overlays += "end01" + +/datum/universal_state/supermatter_cascade/proc/AmbientSet() + for(var/turf/T in world) + if(istype(T, /turf/space)) continue + if(!(T.z in config.admin_levels)) + T.update_lumcount(1, 160, 255, 0, 0) + +/datum/universal_state/supermatter_cascade/proc/MiscSet() + for (var/obj/machinery/firealarm/alm in world) + if (!(alm.stat & BROKEN)) + alm.ex_act(2) + +/datum/universal_state/supermatter_cascade/proc/APCSet() + for (var/obj/machinery/power/apc/APC in world) + if (!(APC.stat & BROKEN)) + APC.chargemode = 0 + if(APC.cell) + APC.cell.charge = 0 + APC.emagged = 1 + APC.queue_icon_update() + +/datum/universal_state/supermatter_cascade/proc/PlayerSet() + for(var/datum/mind/M in player_list) + if(!istype(M.current,/mob/living)) + continue + if(M.current.stat!=2) + M.current.Weaken(10) + flick("e_flash", M.current.flash) + + clear_antag_roles(M) diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index b01b0bbda6f..6e1ecdf4cab 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -105,6 +105,16 @@ else icon_state = "table2-idle" +/obj/machinery/optable/MouseDrop_T(mob/target, mob/user) + + var/mob/living/M = user + if(user.stat || user.restrained() || !check_table(user) || !iscarbon(target)) + return + if(istype(M)) + take_victim(target,user) + else + return ..() + /obj/machinery/optable/verb/climb_on() set name = "Climb On Table" set category = "Object" diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 9e3e56f5582..f6d2820d5bb 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -469,14 +469,14 @@ ui_interact(user) wires.Interact(user) -/obj/machinery/alarm/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1, var/master_ui = null, var/datum/topic_state/custom_state = null) +/obj/machinery/alarm/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1, var/master_ui = null, var/datum/topic_state/state = default_state) var/data[0] var/remote_connection = 0 var/remote_access = 0 - if(custom_state) - var/list/state = custom_state.href_list(user) - remote_connection = state["remote_connection"] // Remote connection means we're non-adjacent/connecting from another computer - remote_access = state["remote_access"] // Remote access means we also have the privilege to alter the air alarm. + if(state) + var/list/href = state.href_list(user) + remote_connection = href["remote_connection"] // Remote connection means we're non-adjacent/connecting from another computer + remote_access = href["remote_access"] // Remote access means we also have the privilege to alter the air alarm. data["locked"] = locked && !user.isSilicon() data["remote_connection"] = remote_connection @@ -491,7 +491,7 @@ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if(!ui) - ui = new(user, src, ui_key, "air_alarm.tmpl", src.name, 325, 625, master_ui = master_ui, custom_state = custom_state) + ui = new(user, src, ui_key, "air_alarm.tmpl", src.name, 325, 625, master_ui = master_ui, state = state) ui.set_initial_data(data) ui.open() ui.set_auto_update(1) @@ -616,7 +616,7 @@ data["thresholds"] = thresholds -/obj/machinery/alarm/CanUseTopic(var/mob/user, href_list, var/datum/topic_state/custom_state) +/obj/machinery/alarm/CanUseTopic(var/mob/user, var/datum/topic_state/state, var/href_list = list()) if(buildstage != 2) return STATUS_CLOSE @@ -627,17 +627,15 @@ . = shorted ? STATUS_DISABLED : STATUS_INTERACTIVE if(. == STATUS_INTERACTIVE) - var/extra_href = custom_state.href_list(usr) - // Prevent remote users from altering RCON settings unless they already have access (I realize the risks) + var/extra_href = state.href_list(usr) + // Prevent remote users from altering RCON settings unless they already have access if(href_list["rcon"] && extra_href["remote_connection"] && !extra_href["remote_access"]) . = STATUS_UPDATE - //TODO: Move the rest of if(!locked || extra_href["remote_access"] || usr.isAI()) and hrefs here - return min(..(), .) -/obj/machinery/alarm/Topic(href, href_list, var/nowindow = 0, var/datum/topic_state/custom_state) - if(..(href, href_list, nowindow, custom_state)) +/obj/machinery/alarm/Topic(href, href_list, var/nowindow = 0, var/datum/topic_state/state) + if(..(href, href_list, nowindow, state)) return 1 // hrefs that can always be called -walter0o @@ -666,7 +664,7 @@ return 1 // hrefs that need the AA unlocked -walter0o - var/extra_href = custom_state.href_list(usr) + var/extra_href = state.href_list(usr) if(!(locked && !extra_href["remote_connection"]) || extra_href["remote_access"] || usr.isSilicon()) if(href_list["command"]) var/device_id = href_list["id_tag"] diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm index 3c032a6bce5..0294607e8aa 100644 --- a/code/game/machinery/atmo_control.dm +++ b/code/game/machinery/atmo_control.dm @@ -182,7 +182,7 @@ else output += "ERROR: Can not find input port Search
    " - + output += "Flow Rate Limit: - - - - [round(input_flow_setting, 0.1)] L/s + + + +
    " output += "
    " @@ -230,7 +230,7 @@ Max Output Pressure: [output_pressure] kPa
    "} spawn(1) src.updateUsrDialog() return 1 - + if(!radio_connection) return 0 var/datum/signal/signal = new @@ -239,32 +239,32 @@ Max Output Pressure: [output_pressure] kPa
    "} if(href_list["in_refresh_status"]) input_info = null signal.data = list ("tag" = input_tag, "status" = 1) - return 1 + . = 1 if(href_list["in_toggle_injector"]) input_info = null signal.data = list ("tag" = input_tag, "power_toggle" = 1) - return 1 + . = 1 if(href_list["in_set_flowrate"]) input_info = null signal.data = list ("tag" = input_tag, "set_volume_rate" = "[input_flow_setting]") - return 1 + . = 1 if(href_list["out_refresh_status"]) output_info = null signal.data = list ("tag" = output_tag, "status" = 1) - return 1 + . = 1 if(href_list["out_toggle_power"]) output_info = null signal.data = list ("tag" = output_tag, "power_toggle" = 1) - return 1 + . = 1 if(href_list["out_set_pressure"]) output_info = null signal.data = list ("tag" = output_tag, "set_internal_pressure" = "[pressure_setting]") - return 1 + . = 1 signal.data["sigtype"]="command" radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) @@ -302,7 +302,7 @@ Max Output Pressure: [output_pressure] kPa
    "} else output += "ERROR: Can not find input port Search
    " - + output += "Flow Rate Limit: - - - - [round(input_flow_setting, 0.1)] L/s + + + +
    " output += "
    " @@ -350,7 +350,7 @@ Min Core Pressure: [pressure_limit] kPa
    "} spawn(1) src.updateUsrDialog() return 1 - + if(!radio_connection) return 0 var/datum/signal/signal = new @@ -359,32 +359,32 @@ Min Core Pressure: [pressure_limit] kPa
    "} if(href_list["in_refresh_status"]) input_info = null signal.data = list ("tag" = input_tag, "status" = 1) - return 1 + . = 1 if(href_list["in_toggle_injector"]) input_info = null signal.data = list ("tag" = input_tag, "power_toggle" = 1) - return 1 + . = 1 if(href_list["in_set_flowrate"]) input_info = null signal.data = list ("tag" = input_tag, "set_volume_rate" = "[input_flow_setting]") - return 1 + . = 1 if(href_list["out_refresh_status"]) output_info = null signal.data = list ("tag" = output_tag, "status" = 1) - return 1 + . = 1 if(href_list["out_toggle_power"]) output_info = null signal.data = list ("tag" = output_tag, "power_toggle" = 1) - return 1 + . = 1 if(href_list["out_set_pressure"]) output_info = null signal.data = list ("tag" = output_tag, "set_external_pressure" = "[pressure_setting]", "checks" = 1) - return 1 + . = 1 signal.data["sigtype"]="command" radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) diff --git a/code/game/machinery/bluespacerelay.dm b/code/game/machinery/bluespacerelay.dm new file mode 100644 index 00000000000..03d4a311b18 --- /dev/null +++ b/code/game/machinery/bluespacerelay.dm @@ -0,0 +1,34 @@ +/obj/machinery/bluespacerelay + name = "Emergency Bluespace Relay" + desc = "This sends messages through bluespace! Wow!" + icon = 'icons/obj/stationobjs.dmi' + icon_state = "bspacerelay" + + anchored = 1 + density = 1 + use_power = 1 + var/on = 1 + + idle_power_usage = 15000 + active_power_usage = 15000 + +/obj/machinery/bluespacerelay/process() + + update_power() + + update_icon() + + +/obj/machinery/bluespacerelay/update_icon() + if(on) + icon_state = initial(icon_state) + else + icon_state = "[initial(icon_state)]_off" + +/obj/machinery/bluespacerelay/proc/update_power() + + if(stat & (BROKEN|NOPOWER|EMPED)) + on = 0 + else + on = 1 + diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index bb997733625..06c77503fbf 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -8,7 +8,7 @@ active_power_usage = 10 layer = 5 - var/list/network = list("SS13") + var/list/network = list("Exodus") var/c_tag = null var/c_tag_order = 999 var/status = 1 diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm index e56e5446492..b9aa81e8582 100644 --- a/code/game/machinery/camera/camera_assembly.dm +++ b/code/game/machinery/camera/camera_assembly.dm @@ -78,7 +78,7 @@ if(isscrewdriver(W)) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - var/input = sanitize(input(usr, "Which networks would you like to connect this camera to? Separate networks with a comma. No Spaces!\nFor example: SS13,Security,Secret ", "Set Network", "SS13")) + var/input = sanitize(input(usr, "Which networks would you like to connect this camera to? Separate networks with a comma. No Spaces!\nFor example: Exodus,Security,Secret ", "Set Network", "Exodus")) if(!input) usr << "No input found please hang up and try your call again." return @@ -90,7 +90,7 @@ var/area/camera_area = get_area(src) var/temptag = "[sanitize(camera_area.name)] ([rand(1, 999)])" - input = sanitizeSafe(input(usr, "How would you like to name the camera?", "Set Camera Name", temptag)) + input = sanitizeSafe(input(usr, "How would you like to name the camera?", "Set Camera Name", temptag), MAX_NAME_LEN) state = 4 var/obj/machinery/camera/C = new(src.loc) diff --git a/code/game/machinery/camera/presets.dm b/code/game/machinery/camera/presets.dm index fbbecec8257..638f4d8d802 100644 --- a/code/game/machinery/camera/presets.dm +++ b/code/game/machinery/camera/presets.dm @@ -1,4 +1,94 @@ // PRESETS +#define NETWORK_CRESCENT "Crescent" +#define NETWORK_CIVILIAN_EAST "Civilian East" +#define NETWORK_CIVILIAN_WEST "Civilian West" +#define NETWORK_COMMAND "Command" +#define NETWORK_ENGINE "Engine" +#define NETWORK_ENGINEERING "Engineering" +#define NETWORK_ENGINEERING_OUTPOST "Engineering Outpost" +#define NETWORK_ERT "ERT" +#define NETWORK_EXODUS "Exodus" +#define NETWORK_MEDBAY "Medbay" +#define NETWORK_MINE "MINE" +#define NETWORK_RESEARCH "Research" +#define NETWORK_RESEARCH_OUTPOST "Research Outpost" +#define NETWORK_PRISON "Prison" +#define NETWORK_SECURITY "Security" +#define NETWORK_TELECOM "Tcomsat" +#define NETWORK_THUNDER "thunder" + +var/global/list/station_networks = list( + NETWORK_CIVILIAN_EAST, + NETWORK_CIVILIAN_WEST, + NETWORK_COMMAND, + NETWORK_ENGINE, + NETWORK_ENGINEERING, + NETWORK_ENGINEERING_OUTPOST, + NETWORK_EXODUS, + NETWORK_MEDBAY, + NETWORK_MINE, + NETWORK_RESEARCH, + NETWORK_RESEARCH_OUTPOST, + NETWORK_PRISON, + NETWORK_SECURITY + ) +var/global/list/engineering_networks = list( + NETWORK_ENGINE, + NETWORK_ENGINEERING, + NETWORK_ENGINEERING_OUTPOST, + "Atmosphere Alarms", + "Fire Alarms", + "Power Alarms") +/obj/machinery/camera/network/crescent + network = list(NETWORK_CRESCENT) + +/obj/machinery/camera/network/civilian_east + network = list(NETWORK_CIVILIAN_EAST) + +/obj/machinery/camera/network/civilian_west + network = list(NETWORK_CIVILIAN_WEST) + +/obj/machinery/camera/network/command + network = list(NETWORK_COMMAND) + +/obj/machinery/camera/network/engine + network = list(NETWORK_ENGINE) + +/obj/machinery/camera/network/engineering + network = list(NETWORK_ENGINEERING) + +/obj/machinery/camera/network/engineering_outpost + network = list(NETWORK_ENGINEERING_OUTPOST) + +/obj/machinery/camera/network/ert + network = list(NETWORK_ERT) + +/obj/machinery/camera/network/exodus + network = list(NETWORK_EXODUS) + +/obj/machinery/camera/network/mining + network = list(NETWORK_MINE) + +/obj/machinery/camera/network/prison + network = list(NETWORK_PRISON) + +/obj/machinery/camera/network/medbay + network = list(NETWORK_MEDBAY) + +/obj/machinery/camera/network/research + network = list(NETWORK_RESEARCH) + +/obj/machinery/camera/network/research_outpost + network = list(NETWORK_RESEARCH_OUTPOST) + +/obj/machinery/camera/network/security + network = list(NETWORK_SECURITY) + +/obj/machinery/camera/network/telecom + network = list(NETWORK_TELECOM) + +/obj/machinery/camera/network/thunder + network = list(NETWORK_THUNDER) // EMP @@ -11,6 +101,15 @@ /obj/machinery/camera/xray icon_state = "xraycam" // Thanks to Krutchen for the icons. +/obj/machinery/camera/xray/security + network = list(NETWORK_SECURITY) + +/obj/machinery/camera/xray/medbay + network = list(NETWORK_MEDBAY) + +/obj/machinery/camera/xray/research + network = list(NETWORK_RESEARCH) + /obj/machinery/camera/xray/New() ..() upgradeXRay() @@ -23,6 +122,10 @@ // ALL UPGRADES + +/obj/machinery/camera/all/command + network = list(NETWORK_COMMAND) + /obj/machinery/camera/all/New() ..() upgradeEmpProof() @@ -30,16 +133,6 @@ upgradeMotion() // AUTONAME - -/obj/machinery/camera/autoname/engineering_outpost - network = list("SS13", "Engineering Outpost") - -/obj/machinery/camera/autoname/mining_outpost - network = list("SS13", "MINE") - -/obj/machinery/camera/autoname/research_outpost - network = list("SS13", "Research Outpost") - /obj/machinery/camera/autoname var/number = 0 //camera number in area @@ -57,6 +150,7 @@ if(C.number) number = max(number, C.number+1) c_tag = "[A.name] #[number]" + invalidateCameraCache() // CHECKS @@ -97,3 +191,21 @@ if (isMotion()) mult++ active_power_usage = mult*initial(active_power_usage) + +#undef NETWORK_CENTRAL_CRESCENT +#undef NETWORK_CIVILIAN_EAST +#undef NETWORK_CIVILIAN_WEST +#undef NETWORK_COMMAND +#undef NETWORK_ENGINE +#undef NETWORK_ENGINEERING +#undef NETWORK_ENGINEERING_OUTPOST +#undef NETWORK_ERT +#undef NETWORK_EXODUS +#undef NETWORK_MEDBAY +#undef NETWORK_MINE +#undef NETWORK_RESEARCH +#undef NETWORK_RESEARCH_OUTPOST +#undef NETWORK_PRISON +#undef NETWORK_SECURITY +#undef NETWORK_TELECOM +#undef NETWORK_THUNDER diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm index b781613d70e..6ccea2c3826 100644 --- a/code/game/machinery/camera/tracking.dm +++ b/code/game/machinery/camera/tracking.dm @@ -15,7 +15,6 @@ cameranet.process_sort() var/list/T = list() - T["Cancel"] = "Cancel" for (var/obj/machinery/camera/C in cameranet.cameras) var/list/tempnetwork = C.network&src.network if (tempnetwork.len) @@ -30,11 +29,10 @@ set category = "AI Commands" set name = "Show Camera List" - if(src.stat == 2) - src << "You can't list the cameras because you are dead!" + if(check_unable()) return - if (!camera || camera == "Cancel") + if (!camera) return 0 var/obj/machinery/camera/C = track.cameras[camera] diff --git a/code/game/machinery/commsbantenna.dm b/code/game/machinery/commsbantenna.dm new file mode 100644 index 00000000000..03d4a311b18 --- /dev/null +++ b/code/game/machinery/commsbantenna.dm @@ -0,0 +1,34 @@ +/obj/machinery/bluespacerelay + name = "Emergency Bluespace Relay" + desc = "This sends messages through bluespace! Wow!" + icon = 'icons/obj/stationobjs.dmi' + icon_state = "bspacerelay" + + anchored = 1 + density = 1 + use_power = 1 + var/on = 1 + + idle_power_usage = 15000 + active_power_usage = 15000 + +/obj/machinery/bluespacerelay/process() + + update_power() + + update_icon() + + +/obj/machinery/bluespacerelay/update_icon() + if(on) + icon_state = initial(icon_state) + else + icon_state = "[initial(icon_state)]_off" + +/obj/machinery/bluespacerelay/proc/update_power() + + if(stat & (BROKEN|NOPOWER|EMPED)) + on = 0 + else + on = 1 + diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm index 8306b3a87e0..77f76476085 100644 --- a/code/game/machinery/computer/atmos_alert.dm +++ b/code/game/machinery/computer/atmos_alert.dm @@ -13,7 +13,7 @@ var/global/list/minor_air_alarms = list() /obj/machinery/computer/atmos_alert/New() ..() atmosphere_alarm.register(src, /obj/machinery/computer/station_alert/update_icon) - + /obj/machinery/computer/atmos_alert/Del() atmosphere_alarm.unregister(src) ..() @@ -68,16 +68,13 @@ var/global/list/minor_air_alarms = list() var/obj/machinery/alarm/air_alarm = alarm_source.source if(istype(air_alarm)) var/list/new_ref = list("atmos_reset" = 1) - air_alarm.Topic(href, new_ref, custom_state = atmos_alert_topic) + air_alarm.Topic(href, new_ref, state = air_alarm_topic) return 1 -var/datum/topic_state/atmos_alert/atmos_alert_topic = new() +var/datum/topic_state/air_alarm_topic/air_alarm_topic = new() -/datum/topic_state/atmos_alert - flags = NANO_IGNORE_DISTANCE - -/datum/topic_state/air_alarm/href_list(var/mob/user) +/datum/topic_state/air_alarm_topic/href_list(var/mob/user) var/list/extra_href = list() extra_href["remote_connection"] = 1 extra_href["remote_access"] = 1 diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm index d63259bc4c5..2e79d927be5 100644 --- a/code/game/machinery/computer/atmos_control.dm +++ b/code/game/machinery/computer/atmos_control.dm @@ -76,7 +76,7 @@ var/obj/machinery/alarm/alarm = locate(href_list["alarm"]) in (monitored_alarms ? monitored_alarms : machines) if(alarm) var/datum/topic_state/TS = generate_state(alarm) - alarm.ui_interact(usr, master_ui = ui_ref, custom_state = TS) + alarm.ui_interact(usr, master_ui = ui_ref, state = TS) return 1 /obj/machinery/computer/atmoscontrol/proc/generate_state(var/alarm) @@ -86,7 +86,6 @@ return state /datum/topic_state/air_alarm - flags = NANO_IGNORE_DISTANCE var/obj/machinery/computer/atmoscontrol/atmos_control = null var/obj/machinery/alarm/air_alarm = null diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index 8cb58a14cbf..f71f181ed31 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -12,11 +12,16 @@ icon_state = "cameras" var/obj/machinery/camera/current = null var/last_pic = 1.0 - var/list/network = list("SS13") + var/list/network var/mapping = 0//For the overview file, interesting bit of code. circuit = /obj/item/weapon/circuitboard/security var/camera_cache = null + New() + if(!network) + network = station_networks + ..() + attack_ai(var/mob/user as mob) return attack_hand(user) @@ -235,9 +240,13 @@ name = "engineering camera monitor" desc = "Used to monitor fires and breaches." icon_state = "engineeringcameras" - network = list("Engineering","Power Alarms","Atmosphere Alarms","Fire Alarms") circuit = /obj/item/weapon/circuitboard/security/engineering +/obj/machinery/computer/security/engineering/New() + if(!network) + network = engineering_networks + ..() + /obj/machinery/computer/security/nuclear name = "head mounted camera monitor" desc = "Used to access the built-in cameras in helmets." diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 4015b907f97..4fc43a02591 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -48,9 +48,7 @@ /obj/machinery/computer/communications/Topic(href, href_list) if(..()) return 1 - if (src.z > 1) - usr << "\red Unable to establish a connection: \black You're too far away from the station!" - return + usr.set_machine(src) if(!href_list["operation"]) @@ -68,8 +66,8 @@ if (I && istype(I)) if(src.check_access(I)) authenticated = 1 - if(access_captain in I.access) - authenticated = 2 + //if(access_captain in I.access) + //authenticated = 2 crew_announcement.announcer = GetNameAndAssignmentFromId(I) if("logout") authenticated = 0 @@ -82,7 +80,7 @@ var/obj/item/device/pda/pda = I I = pda.id if (I && istype(I)) - if(access_captain in I.access || access_heads in I.access) //Let heads change the alert level. + if(access_heads in I.access) //Let heads change the alert level. var/old_level = security_level if(!tmp_alertlevel) tmp_alertlevel = SEC_LEVEL_GREEN if(tmp_alertlevel < SEC_LEVEL_GREEN) tmp_alertlevel = SEC_LEVEL_GREEN @@ -106,7 +104,7 @@ usr << "You need to swipe your ID." if("announce") - if(src.authenticated==2) + if(src.authenticated==1) if(message_cooldown) usr << "Please allow at least one minute to pass between announcements" return @@ -183,32 +181,35 @@ // OMG CENTCOMM LETTERHEAD if("MessageCentcomm") - if(src.authenticated==2) + if(src.authenticated==1) if(centcomm_message_cooldown) - usr << "\red Arrays recycling. Please stand by." + usr << "Arrays recycling. Please stand by." + return + if(!is_relay_online())//Contact Centcom has a check, Syndie doesn't to allow for Traitor funs. + usr <<"No Emergency Bluespace Relay detected. Unable to transmit message." return var/input = sanitize(input("Please choose a message to transmit to Centcomm via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response. There is a 30 second delay before you may send another message, be clear, full and concise.", "To abort, send an empty message.", "")) if(!input || !(usr in view(1,src))) return Centcomm_announce(input, usr) - usr << "\blue Message transmitted." + usr << "Message transmitted." log_say("[key_name(usr)] has made an IA Centcomm announcement: [input]") centcomm_message_cooldown = 1 - spawn(300)//10 minute cooldown + spawn(300)//30 second cooldown centcomm_message_cooldown = 0 // OMG SYNDICATE ...LETTERHEAD if("MessageSyndicate") - if((src.authenticated==2) && (src.emagged)) + if((src.authenticated==1) && (src.emagged)) if(centcomm_message_cooldown) - usr << "\red Arrays recycling. Please stand by." + usr << "Arrays recycling. Please stand by." return var/input = sanitize(input(usr, "Please choose a message to transmit to \[ABNORMAL ROUTING CORDINATES\] via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response. There is a 30 second delay before you may send another message, be clear, full and concise.", "To abort, send an empty message.", "")) if(!input || !(usr in view(1,src))) return Syndicate_announce(input, usr) - usr << "\blue Message transmitted." + usr << "Message transmitted." log_say("[key_name(usr)] has made an illegal announcement: [input]") centcomm_message_cooldown = 1 spawn(300)//10 minute cooldown @@ -279,9 +280,6 @@ /obj/machinery/computer/communications/attack_hand(var/mob/user as mob) if(..()) return - if (src.z > 6) - user << "\red Unable to establish a connection: \black You're too far away from the station!" - return user.set_machine(src) var/dat = "Communications Console" @@ -301,7 +299,7 @@ if(STATE_DEFAULT) if (src.authenticated) dat += "
    \[ Log Out \]" - if (src.authenticated==2) + if (src.authenticated==1) dat += "
    \[ Make An Announcement \]" if(src.emagged == 0) dat += "
    \[ Send an emergency message to Centcomm \]" @@ -430,6 +428,10 @@ if ((!( ticker ) || !emergency_shuttle.location())) return + if(!universe.OnShuttleCall(usr)) + user << "Cannot establish a bluespace connection." + return + if(deathsquad.deployed) user << "Centcom will not allow the shuttle to be called. Consider all contracts terminated." return @@ -439,7 +441,7 @@ return if(world.time < 6000) // Ten minute grace period to let the game get going without lolmetagaming. -- TLE - user << "The emergency shuttle is refueling. Please wait another [round((6000-world.time)/60)] minutes before trying again." + user << "The emergency shuttle is refueling. Please wait another [round((6000-world.time)/600)] minute\s before trying again." return if(emergency_shuttle.going_to_centcom()) @@ -519,6 +521,13 @@ message_admins("[key_name_admin(user)] has recalled the shuttle.", 1) return + +/proc/is_relay_online() + for(var/obj/machinery/bluespacerelay/M in world) + if(M.stat == 0) + return 1 + return 0 + /obj/machinery/computer/communications/proc/post_status(var/command, var/data1, var/data2) var/datum/radio_frequency/frequency = radio_controller.return_frequency(1435) diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm index ab136ca3714..6d5209ce585 100644 --- a/code/game/machinery/computer/station_alert.dm +++ b/code/game/machinery/computer/station_alert.dm @@ -4,13 +4,17 @@ desc = "Used to access the station's automated alert system." icon_state = "alert:0" circuit = "/obj/item/weapon/circuitboard/stationalert" - var/alarms = list("Fire"=list(), "Atmosphere"=list(), "Power"=list()) - var/obj/nano_module/alarm_monitor/engineering/alarm_monitor + var/obj/nano_module/alarm_monitor/alarm_monitor + var/monitor_type = /obj/nano_module/alarm_monitor/engineering + +/obj/machinery/computer/station_alert/security + name = "Security Alert Console" + monitor_type = /obj/nano_module/alarm_monitor/security /obj/machinery/computer/station_alert/New() - alarm_monitor = new(src) - alarm_monitor.register(src, /obj/machinery/computer/station_alert/update_icon) ..() + alarm_monitor = new monitor_type(src) + alarm_monitor.register(src, /obj/machinery/computer/station_alert/update_icon) /obj/machinery/computer/station_alert/Del() alarm_monitor.unregister(src) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 40c137e77b3..69c4ee28571 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -36,10 +36,10 @@ if(damage >= 10) if(src.density) visible_message("\The [user] forces \the [src] open!") - open() + open(1) else visible_message("\The [user] forces \the [src] closed!") - close() + close(1) else visible_message("\The [user] strains fruitlessly to force \the [src] [density ? "open" : "closed"].") return @@ -610,7 +610,7 @@ About the new airlock wires panel: ..(user) return -/obj/machinery/door/airlock/CanUseTopic(var/mob/user, href_list) +/obj/machinery/door/airlock/CanUseTopic(var/mob/user) if(!user.isSilicon()) return STATUS_CLOSE @@ -627,7 +627,7 @@ About the new airlock wires panel: user << "Unable to interface: Connection refused." return STATUS_CLOSE - return STATUS_INTERACTIVE + return ..() /obj/machinery/door/airlock/Topic(href, href_list, var/nowindow = 0) if(..()) @@ -776,7 +776,7 @@ About the new airlock wires panel: user << "\blue The airlock's motors resist your efforts to force it." else if(locked) user << "\blue The airlock's bolts prevent it from being forced." - else if( !welded && !operating ) + else if(density) spawn(0) open(1) else @@ -825,11 +825,8 @@ About the new airlock wires panel: return /obj/machinery/door/airlock/open(var/forced=0) - if(!can_open()) + if(!can_open(forced)) return 0 - if(!forced) - if( !arePowerSystemsOn() || isWireCut(AIRLOCK_WIRE_OPEN_DOOR) ) - return 0 use_power(360) //360 W seems much more appropriate for an actuator moving an industrial door capable of crushing people if(istype(src, /obj/machinery/door/airlock/glass)) playsound(src.loc, 'sound/machines/windowdoor.ogg', 100, 1) @@ -839,7 +836,11 @@ About the new airlock wires panel: src.closeOther.close() return ..() -/obj/machinery/door/airlock/can_open() +/obj/machinery/door/airlock/can_open(var/forced=0) + if(!forced) + if(!arePowerSystemsOn() || isWireCut(AIRLOCK_WIRE_OPEN_DOOR)) + return 0 + if(locked || welded) return 0 return ..() diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 0af0f490324..0ae597e0f7e 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -1,7 +1,4 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 -#define DOOR_OPEN_LAYER 2.7 //Under all objects if opened. 2.7 due to tables being at 2.6 -#define DOOR_CLOSED_LAYER 3.1 //Above most items if closed - #define DOOR_REPAIR_AMOUNT 50 //amount of health regained per stack amount used /obj/machinery/door @@ -37,6 +34,9 @@ dir = EAST var/width = 1 + // turf animation + var/atom/movable/overlay/c_animation = null + /obj/machinery/door/attack_generic(var/mob/user, var/damage) if(damage >= 10) visible_message("\The [user] smashes into the [src]!") @@ -307,6 +307,17 @@ update_icon() return + +/obj/machinery/door/examine(mob/user) + ..() + if(src.health < src.maxhealth / 4) + user << "\The [src] looks like it's about to break!" + else if(src.health < src.maxhealth / 2) + user << "\The [src] looks seriously damaged!" + else if(src.health < src.maxhealth * 3/4) + user << "\The [src] shows signs of damage!" + + /obj/machinery/door/proc/set_broken() stat |= BROKEN for (var/mob/O in viewers(src, null)) @@ -377,9 +388,8 @@ return -/obj/machinery/door/proc/open() - if(!can_open()) return - if(!operating) operating = 1 +/obj/machinery/door/proc/open(var/forced = 0) + if(!can_open(forced)) return do_animate("opening") icon_state = "door0" @@ -403,8 +413,8 @@ /obj/machinery/door/proc/next_close_time() return world.time + (normalspeed ? 150 : 5) -/obj/machinery/door/proc/close() - if(!can_close()) +/obj/machinery/door/proc/close(var/forced = 0) + if(!can_close(forced)) return operating = 1 diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm index fbdcfd2760c..fe75dff633d 100644 --- a/code/game/machinery/kitchen/microwave.dm +++ b/code/game/machinery/kitchen/microwave.dm @@ -135,11 +135,12 @@ return 1 else user << "\red You have no idea what you can cook with this [O]." - return 1 + ..() src.updateUsrDialog() /obj/machinery/microwave/attack_ai(mob/user as mob) - return 0 + if(istype(user, /mob/living/silicon/robot) && Adjacent(user)) + attack_hand(user) /obj/machinery/microwave/attack_hand(mob/user as mob) user.set_machine(src) diff --git a/code/game/machinery/kitchen/smartfridge.dm b/code/game/machinery/kitchen/smartfridge.dm index 1b1bb9bfb5f..a6fcf002748 100644 --- a/code/game/machinery/kitchen/smartfridge.dm +++ b/code/game/machinery/kitchen/smartfridge.dm @@ -140,6 +140,7 @@ S.dry = 1 item_quants[S.name]-- S.name = "dried [S.name]" + S.color = "#AAAAAA" S.loc = loc else var/D = S.dried_type @@ -244,7 +245,7 @@ ..() /obj/machinery/smartfridge/attack_ai(mob/user as mob) - return 0 + attack_hand(user) /obj/machinery/smartfridge/attack_hand(mob/user as mob) if(stat & (NOPOWER|BROKEN)) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 0a612903d4e..5542c8d634c 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -185,7 +185,7 @@ Class Procs: /obj/machinery/proc/inoperable(var/additional_flags = 0) return (stat & (NOPOWER|BROKEN|additional_flags)) -/obj/machinery/CanUseTopic(var/mob/user, var/be_close) +/obj/machinery/CanUseTopic(var/mob/user) if(!interact_offline && (stat & (NOPOWER|BROKEN))) return STATUS_CLOSE diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 3a238e24b04..c902bdcd66e 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -496,7 +496,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co if ((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) usr.set_machine(src) if(href_list["set_channel_name"]) - src.channel_name = sanitizeSafe(input(usr, "Provide a Feed Channel Name", "Network Channel Handler", "")) + src.channel_name = sanitizeSafe(input(usr, "Provide a Feed Channel Name", "Network Channel Handler", ""), MAX_LNAME_LEN) src.updateUsrDialog() //src.update_icon() @@ -596,7 +596,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co src.updateUsrDialog() else if(href_list["set_wanted_name"]) - src.channel_name = sanitizeSafe(input(usr, "Provide the name of the Wanted person", "Network Security Handler", "")) + src.channel_name = sanitizeSafe(input(usr, "Provide the name of the Wanted person", "Network Security Handler", ""), MAX_LNAME_LEN) src.updateUsrDialog() else if(href_list["set_wanted_desc"]) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 62e6b9f9c7b..95fa22d6759 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -214,7 +214,7 @@ usr << "\The [src] has to be secured first!" return STATUS_CLOSE - return STATUS_INTERACTIVE + return ..() /obj/machinery/porta_turret/Topic(href, href_list, var/nowindow = 0) @@ -858,8 +858,7 @@ return if(istype(I, /obj/item/weapon/pen)) //you can rename turrets like bots! - var/t = input(user, "Enter new turret name", name, finish_name) as text - t = sanitize(t) + var/t = sanitizeSafe(input(user, "Enter new turret name", name, finish_name) as text, MAX_NAME_LEN) if(!t) return if(!in_range(src, usr) && loc != usr) diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 3c7e1613b97..e624e61d589 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -250,7 +250,7 @@ var/list/obj/machinery/requests_console/allConsoles = list() if(href_list["sendAnnouncement"]) if(!announcementConsole) return - announcement.Announce(message) + announcement.Announce(message, msg_sanitized = 1) reset_announce() screen = 0 diff --git a/code/game/machinery/turret_control.dm b/code/game/machinery/turret_control.dm index c463c3c4975..46ea8824e6a 100644 --- a/code/game/machinery/turret_control.dm +++ b/code/game/machinery/turret_control.dm @@ -79,7 +79,7 @@ if(isLocked(user)) return STATUS_CLOSE - return STATUS_INTERACTIVE + return ..() /obj/machinery/turretid/attackby(obj/item/weapon/W, mob/user) if(stat & BROKEN) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 6f941674f24..794fb0a887a 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -179,12 +179,15 @@ return /obj/machinery/vending/attackby(obj/item/weapon/W as obj, mob/user as mob) + + var/obj/item/weapon/card/id/I = W.GetID() + if (currently_vending && vendor_account && !vendor_account.suspended) var/paid = 0 var/handled = 0 - if(istype(W, /obj/item/weapon/card/id)) - var/obj/item/weapon/card/id/C = W - paid = pay_with_card(C) + + if (I) //for IDs and PDAs and wallets with IDs + paid = pay_with_card(I,W) handled = 1 else if (istype(W, /obj/item/weapon/spacecash/ewallet)) var/obj/item/weapon/spacecash/ewallet/C = W @@ -202,9 +205,12 @@ nanomanager.update_uis(src) return // don't smack that machine with your 2 thalers - if (istype(W, /obj/item/weapon/card/emag)) + if (I || istype(W, /obj/item/weapon/spacecash)) + attack_hand(user) + return + else if (istype(W, /obj/item/weapon/card/emag)) src.emagged = 1 - user << "You short out the product lock on [src]" + user << "You short out the product lock on \the [src]" return else if(istype(W, /obj/item/weapon/screwdriver)) src.panel_open = !src.panel_open @@ -224,7 +230,7 @@ W.loc = src coin = W categories |= CAT_COIN - user << "\blue You insert the [W] into the [src]" + user << "\blue You insert \the [W] into \the [src]" nanomanager.update_uis(src) return else if(istype(W, /obj/item/weapon/wrench)) @@ -234,9 +240,9 @@ switch (anchored) if (0) anchored = 1 - user.visible_message("[user] tightens the bolts securing \the [src] to the floor.", "You tighten the bolts securing \the [src] to the floor.") + user.visible_message("\The [user] tightens the bolts securing \the [src] to the floor.", "You tighten the bolts securing \the [src] to the floor.") if (1) - user.visible_message("[user] unfastens the bolts securing \the [src] to the floor.", "You unfasten the bolts securing \the [src] to the floor.") + user.visible_message("\The [user] unfastens the bolts securing \the [src] to the floor.", "You unfasten the bolts securing \the [src] to the floor.") anchored = 0 return @@ -266,7 +272,7 @@ if(istype(cashmoney, /obj/item/weapon/spacecash/bundle)) // Bundles can just have money subtracted, and will work - visible_message("[usr] inserts some cash into [src].") + visible_message("\The [usr] inserts some cash into \the [src].") var/obj/item/weapon/spacecash/bundle/cashmoney_bundle = cashmoney cashmoney_bundle.worth -= currently_vending.price @@ -281,7 +287,7 @@ // This is really dirty, but there's no superclass for all bills, so we // just assume that all spacecash that's not something else is a bill - visible_message("[usr] inserts a bill into [src].") + visible_message("\The [usr] inserts a bill into \the [src].") var/left = cashmoney.worth - currently_vending.price usr.drop_from_inventory(cashmoney) del(cashmoney) @@ -300,7 +306,7 @@ * successful, 0 if failed. */ /obj/machinery/vending/proc/pay_with_ewallet(var/obj/item/weapon/spacecash/ewallet/wallet) - visible_message("[usr] swipes a card through [src].") + visible_message("\The [usr] swipes \the [wallet] through \the [src].") if(currently_vending.price > wallet.worth) src.status_message = "Insufficient funds on chargecard." src.status_error = 1 @@ -316,8 +322,11 @@ * Takes payment for whatever is the currently_vending item. Returns 1 if * successful, 0 if failed */ -/obj/machinery/vending/proc/pay_with_card(var/obj/item/weapon/card/id/I) - visible_message("[usr] swipes a card through [src].") +/obj/machinery/vending/proc/pay_with_card(var/obj/item/weapon/card/id/I, var/obj/item/ID_container) + if(I==ID_container || ID_container == null) + visible_message("\The [usr] swipes \the [I] through \the [src].") + else + visible_message("\The [usr] swipes \the [ID_container] through \the [src].") var/datum/money_account/customer_account = get_account(I.associated_account_number) if (!customer_account) src.status_message = "Error: Unable to access account. Please contact technical support if problem persists." @@ -470,17 +479,6 @@ if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf)))) if ((href_list["vend"]) && (src.vend_ready) && (!currently_vending)) - - if(istype(usr,/mob/living/silicon)) - if(istype(usr,/mob/living/silicon/robot)) - var/mob/living/silicon/robot/R = usr - if(!(R.module && istype(R.module,/obj/item/weapon/robot_module/butler) )) - usr << "\red The vending machine refuses to interface with you, as you are not in its target demographic!" - return - else - usr << "\red The vending machine refuses to interface with you, as you are not in its target demographic!" - return - if((!allowed(usr)) && !emagged && scan_id) //For SECURE VENDING MACHINES YEAH usr << "Access denied." //Unless emagged of course flick(icon_deny,src) @@ -495,6 +493,9 @@ if(R.price <= 0) src.vend(R, usr) + else if(istype(usr,/mob/living/silicon)) //If the item is not free, provide feedback if a synth is trying to buy something. + usr << "Artificial unit recognized. Artificial units cannot complete this transaction. Purchase canceled." + return else src.currently_vending = R if(!vendor_account || vendor_account.suspended) @@ -529,7 +530,7 @@ return if(coin.string_attached) if(prob(50)) - user << "\blue You successfully pull the coin out before the [src] could swallow it." + user << "\blue You successfully pull the coin out before \the [src] could swallow it." else user << "\blue You weren't able to pull the coin out fast enough, the machine ate it, string and all." del(coin) @@ -558,7 +559,7 @@ /obj/machinery/vending/proc/stock(var/datum/data/vending_product/R, var/mob/user) if(src.panel_open) - user << "\blue You stock the [src] with \a [R.product_name]" + user << "\blue You stock \the [src] with \a [R.product_name]" R.amount++ nanomanager.update_uis(src) @@ -592,7 +593,7 @@ return for(var/mob/O in hearers(src, null)) - O.show_message("[src] beeps, \"[message]\"",2) + O.show_message("\The [src] beeps, \"[message]\"",2) return /obj/machinery/vending/power_change() @@ -938,7 +939,7 @@ desc = "Spare tool vending. What? Did you expect some witty description?" icon_state = "engivend" icon_deny = "engivend-deny" - req_access = list(access_engine_equip) //Engineering Equipment access + req_access = list(access_engine_equip) products = list(/obj/item/clothing/glasses/meson = 2,/obj/item/device/multitool = 4,/obj/item/weapon/airlock_electronics = 10,/obj/item/weapon/module/power_control = 10,/obj/item/weapon/airalarm_electronics = 10,/obj/item/weapon/cell/high = 10) contraband = list(/obj/item/weapon/cell/potato = 3) premium = list(/obj/item/weapon/storage/belt/utility = 3) diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 28a4ad2cc27..da25e6f2cc9 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -79,6 +79,14 @@ xeno_spawn += loc del(src) + if("endgame_exit") + endgame_safespawns += loc + del(src) + + if("bluespacerift") + endgame_exits += loc + del(src) + landmarks_list += src return 1 diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index a1af754229a..6dd26f7774c 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -3,6 +3,10 @@ unacidable = 1 var/i_attached//Added for possible image attachments to objects. For hallucinations and the like. +/obj/effect/overlay/Destroy() + PlaceInPool(src) + return 1 //cancels the GCing + /obj/effect/overlay/beam//Not actually a projectile, just an effect. name="beam" icon='icons/effects/beam.dmi' @@ -31,4 +35,10 @@ /obj/effect/overlay/coconut name = "Coconuts" icon = 'icons/misc/beach.dmi' - icon_state = "coconuts" \ No newline at end of file + icon_state = "coconuts" + +/obj/effect/overlay/bluespacify + name = "Bluespace" + icon = 'icons/turf/space.dmi' + icon_state = "bluespacify" + layer = LIGHTING_LAYER diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index fcbebdba202..8548e4783e1 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -49,7 +49,7 @@ return if (!in_range(src, user) && src.loc != user) return - t = sanitize(t) + t = sanitizeSafe(t, MAX_NAME_LEN) if (t) src.name = "body bag - " src.name += t diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm old mode 100755 new mode 100644 index 87f7b0fd8a6..59c57369431 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -542,7 +542,7 @@ var/global/list/obj/item/device/pda/PDAs = list() if (!ui) // the ui does not exist, so we'll create a new() one // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm - ui = new(user, src, ui_key, "pda.tmpl", title, 520, 400) + ui = new(user, src, ui_key, "pda.tmpl", title, 520, 400, state = inventory_state) // when the ui is first opened this is the data it will use ui.load_cached_data(ManifestJSON) @@ -825,7 +825,8 @@ var/global/list/obj/item/device/pda/PDAs = list() difficulty += P.cartridge.access_engine difficulty += P.cartridge.access_clown difficulty += P.cartridge.access_janitor - difficulty += 3 * P.hidden_uplink + if(P.hidden_uplink) + difficulty += 3 if(prob(difficulty)) U.show_message("\red An error flashes on your [src].", 1) diff --git a/code/game/objects/items/devices/uplinks.dm b/code/game/objects/items/devices/uplinks.dm index b2ac742a7c8..57b569c599a 100644 --- a/code/game/objects/items/devices/uplinks.dm +++ b/code/game/objects/items/devices/uplinks.dm @@ -53,6 +53,9 @@ datum/nano_item_lists var/uplink_owner = null//text-only var/used_TC = 0 +/obj/item/device/uplink/nano_host() + return loc + /obj/item/device/uplink/New() ..() welcome = ticker.mode.uplink_welcome @@ -219,7 +222,7 @@ datum/nano_item_lists if (!ui) // the ui does not exist, so we'll create a new() one // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm - ui = new(user, src, ui_key, "uplink.tmpl", title, 450, 600) + ui = new(user, src, ui_key, "uplink.tmpl", title, 450, 600, state = inventory_state) // when the ui is first opened this is the data it will use ui.set_initial_data(data) // open the new ui window diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index 290cec4abb7..7578680a2ca 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -291,21 +291,14 @@ ..() if(istype(W, /obj/item/device/flash)) if(istype(user,/mob/living/silicon/robot)) - user << "\red How do you propose to do that?" - return - else if(src.flash1 && src.flash2) - user << "\blue You have already inserted the eyes!" - return - else if(src.flash1) - user.drop_item() - W.loc = src - src.flash2 = W - user << "\blue You insert the flash into the eye socket!" + var/current_module = user.get_active_hand() + if(current_module == W) + user << "How do you propose to do that?" + return + else + add_flashes(W,user) else - user.drop_item() - W.loc = src - src.flash1 = W - user << "\blue You insert the flash into the eye socket!" + add_flashes(W,user) else if(istype(W, /obj/item/weapon/stock_parts/manipulator)) user << "\blue You install some manipulators and modify the head, creating a functional spider-bot!" new /mob/living/simple_animal/spiderbot(get_turf(loc)) @@ -315,6 +308,22 @@ return return +/obj/item/robot_parts/head/proc/add_flashes(obj/item/W as obj, mob/user as mob) //Made into a seperate proc to avoid copypasta + if(src.flash1 && src.flash2) + user << "You have already inserted the eyes!" + return + else if(src.flash1) + user.drop_item() + W.loc = src + src.flash2 = W + user << "You insert the flash into the eye socket!" + else + user.drop_item() + W.loc = src + src.flash1 = W + user << "You insert the flash into the eye socket!" + + /obj/item/robot_parts/attackby(obj/item/W as obj, mob/user as mob) if(istype(W,/obj/item/weapon/card/emag)) if(sabotaged) diff --git a/code/game/objects/items/stacks/matter_synth.dm b/code/game/objects/items/stacks/matter_synth.dm index 0842f70d66a..3483dfbc61c 100644 --- a/code/game/objects/items/stacks/matter_synth.dm +++ b/code/game/objects/items/stacks/matter_synth.dm @@ -28,6 +28,9 @@ /datum/matter_synth/medicine name = "Medicine Synthesizer" +/datum/matter_synth/nanite + name = "Nanite Synthesizer" + /datum/matter_synth/metal name = "Metal Synthesizer" diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 422640ee1fc..ec0ece216e9 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -161,6 +161,7 @@ singular_name = "reinforced glass sheet" icon_state = "sheet-rglass" charge_costs = list(500, 1000) + stacktype = /obj/item/stack/sheet/glass/reinforced /* * Phoron Glass sheets diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index daa67c4449f..4be7f6e7f72 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -146,7 +146,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \ new/datum/stack_recipe("wooden sandals", /obj/item/clothing/shoes/sandal, 1), \ new/datum/stack_recipe("wood floor tile", /obj/item/stack/tile/wood, 1, 4, 20), \ new/datum/stack_recipe("table parts", /obj/item/weapon/table_parts/wood, 2), \ - new/datum/stack_recipe("wooden chair", /obj/structure/bed/chair/wood/normal, 3, time = 10, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("wooden chair", /obj/structure/bed/chair/wood, 3, time = 10, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("wooden barricade", /obj/structure/barricade/wooden, 5, time = 50, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("crossbow frame", /obj/item/weapon/crossbowframe, 5, time = 25, one_per_turf = 0, on_floor = 0), \ new/datum/stack_recipe("wooden door", /obj/structure/mineral_door/wood, 10, time = 20, one_per_turf = 1, on_floor = 1), \ diff --git a/code/game/objects/items/weapons/RSF.dm b/code/game/objects/items/weapons/RSF.dm index 596675a094f..d3dc598cc3d 100644 --- a/code/game/objects/items/weapons/RSF.dm +++ b/code/game/objects/items/weapons/RSF.dm @@ -54,14 +54,9 @@ RSF user << "Changed dispensing mode to 'Dice Pack'" return if (mode == 5) - mode = 6 + mode = 1 user << "Changed dispensing mode to 'Cigarette'" return - if (mode == 6) - mode = 1 - user << "Changed dispensing mode to 'Dosh'" - return - // Change mode /obj/item/weapon/rsf/afterattack(atom/A, mob/user as mob, proximity) @@ -84,8 +79,8 @@ RSF switch(mode) if(1) - product = new /obj/item/weapon/spacecash/c10() - used_energy = 200 + product = new /obj/item/clothing/mask/smokable/cigarette() + used_energy = 10 if(2) product = new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass() used_energy = 50 @@ -98,9 +93,6 @@ RSF if(5) product = new /obj/item/weapon/storage/pill_bottle/dice() used_energy = 200 - if(6) - product = new /obj/item/clothing/mask/smokable/cigarette() - used_energy = 10 user << "Dispensing [product ? product : "product"]..." product.loc = get_turf(A) diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index ad868f856e0..6214259b166 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -224,13 +224,13 @@ /obj/item/weapon/card/id/syndicate/attack_self(mob/user as mob) if(!src.registered_name) //Stop giving the players unsanitized unputs! You are giving ways for players to intentionally crash clients! -Nodrak - var t = sanitizeName(input(user, "What name would you like to put on this card?", "Agent card name", ishuman(user) ? user.real_name : user.name)) + var t = sanitizeName(input(user, "What name would you like to put on this card?", "Agent card name", ishuman(user) ? user.real_name : user.name), MAX_NAME_LEN) if(!t) //Same as mob/new_player/prefrences.dm alert("Invalid name.") return src.registered_name = t - var u = sanitize(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Agent")) + var u = sanitize(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Agent"), MAX_LNAME_LEN) if(!u) alert("Invalid assignment.") src.registered_name = "" diff --git a/code/game/objects/items/weapons/circuitboards/computer/camera_monitor.dm b/code/game/objects/items/weapons/circuitboards/computer/camera_monitor.dm index e45f51a088d..b7da10cc22e 100644 --- a/code/game/objects/items/weapons/circuitboards/computer/camera_monitor.dm +++ b/code/game/objects/items/weapons/circuitboards/computer/camera_monitor.dm @@ -5,16 +5,23 @@ /obj/item/weapon/circuitboard/security name = T_BOARD("security camera monitor") build_path = /obj/machinery/computer/security - var/network = list("SS13") req_access = list(access_security) + var/list/network var/locked = 1 var/emagged = 0 + +/obj/item/weapon/circuitboard/security/New() + ..() + network = station_networks /obj/item/weapon/circuitboard/security/engineering name = T_BOARD("engineering camera monitor") build_path = /obj/machinery/computer/security/engineering - network = list("Engineering","Power Alarms","Atmosphere Alarms","Fire Alarms") req_access = list() + +/obj/item/weapon/circuitboard/security/engineering/New() + ..() + network = engineering_networks /obj/item/weapon/circuitboard/security/mining name = T_BOARD("mining camera monitor") diff --git a/code/game/objects/items/weapons/circuitboards/machinery/commsantenna.dm b/code/game/objects/items/weapons/circuitboards/machinery/commsantenna.dm new file mode 100644 index 00000000000..81216003d52 --- /dev/null +++ b/code/game/objects/items/weapons/circuitboards/machinery/commsantenna.dm @@ -0,0 +1,16 @@ +#ifndef T_BOARD +#error T_BOARD macro is not defined but we need it! +#endif + +/obj/item/weapon/circuitboard/bluespacerelay + name = T_BOARD("bluespacerelay") + build_path = "/obj/machinery/bluespacerelay" + board_type = "machine" + origin_tech = "bluespace=4,programming=4" + frame_desc = "Requires 30 Cable Coil, 1 Hyperwave Filter and 1 Ansible Crystal, and 2 Micro-Manipulators" + req_components = list( + "/obj/item/stack/cable_coil" = 30, + "/obj/item/weapon/stock_parts/manipulator" = 2, + "/obj/item/weapon/stock_parts/subspace/filter" = 1, + "/obj/item/weapon/stock_parts/subspace/crystal" = 1, + ) \ No newline at end of file diff --git a/code/game/objects/items/weapons/implants/implantcase.dm b/code/game/objects/items/weapons/implants/implantcase.dm index ddb76b36562..48aea7a5e1c 100644 --- a/code/game/objects/items/weapons/implants/implantcase.dm +++ b/code/game/objects/items/weapons/implants/implantcase.dm @@ -26,7 +26,7 @@ return if((!in_range(src, usr) && src.loc != user)) return - t = sanitize(t) + t = sanitizeSafe(t, MAX_NAME_LEN) if(t) src.name = text("Glass Case - '[]'", t) else diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm index f026313034a..a9ee95db524 100644 --- a/code/game/objects/items/weapons/manuals.dm +++ b/code/game/objects/items/weapons/manuals.dm @@ -98,7 +98,7 @@

    OPERATING PRINCIPLES


    -
  • The supermatter crystal serves as the fundamental power source of the engine. Upon being charged, it begins to emit large amounts of heat and radiation, as well and oxygen and plasma. As oxygen accelerates the reaction, and plasma carries the risk of fire, these must be filtered out. NOTE: Supermatter radiation will not charge radiation collectors.
  • +
  • The supermatter crystal serves as the fundamental power source of the engine. Upon being charged, it begins to emit large amounts of heat and radiation, as well and oxygen and phoron gas. As oxygen accelerates the reaction, and phoron carries the risk of fire, these must be filtered out. NOTE: Supermatter radiation will not charge radiation collectors.

  • Air in the reactor chamber housing the supermatter is circulated through the reactor loop, which passes through the filters and thermoelectric generators. The thermoelectric generators transfer heat from the reactor loop to the colder radiator loop, thereby generating power. Additional power is generated from internal turbines in the circulators.

  • @@ -106,7 +106,7 @@
  • The MK 1 Prototype Thermoelectric Supermatter Engine is designed to operate at reactor temperatures of 3000K to 4000K and generate up to 1MW of power. Beyond 1MW, the thermoelectric generators will begin to lose power through electrical discharge, reducing efficiency, but additional power generation remains feasible.

  • -
  • The crystal structure of the supermatter will begin to liquefy if its temperature exceeds 5000K. This eventually results in a massive release of light, heat and radiation, disintegration of both the supermatter crystal and most of the surrounding area, and as as-of-yet poorly documented psychological effects on all animals within a 2km. Appropriate action should be taken to stabilize or eject the supermatter before such occurs.
  • +
  • The crystal structure of the supermatter will begin to liquefy if its temperature exceeds 5000K. This eventually results in a massive release of light, heat and radiation, disintegration of both the supermatter crystal and most of the surrounding area, and as as-of-yet poorly documented psychological effects on all animals within a 2km radius. Appropriate action should be taken to stabilize or eject the supermatter before such occurs.

  • SUPERMATTER HANDLING

  • Do not expose supermatter to oxygen.
  • @@ -125,7 +125,7 @@
    1. Ensure that radiation protection and meson goggles are worn at all times while working in the engine room.
    2. Ensure that reactor and radiator loops are undamaged and unobstructed.
    3. -
    4. Ensure that plasma and oxygen gas exhaust from filters is properly contained or disposed. Do not allow exhaust pressure to exceed 4500 kPa.
    5. +
    6. Ensure that phoron and oxygen gas exhaust from filters is properly contained or disposed. Do not allow exhaust pressure to exceed 4500 kPa.
    7. Ensure that engine room Area Power Controller (APC) and engine Superconducting Magnetic Energy Storage unit (SMES) are properly charged.
    8. Ensure that reactor temperature does not exceed 5000K. In event of reactor temperature exceeding 5000K, see EMERGENCY COOLING PROCEDURE.
    9. In event of imminent and/or unavoidable delamination, see EJECTION PROCEDURE.
    10. diff --git a/code/game/objects/items/weapons/policetape.dm b/code/game/objects/items/weapons/policetape.dm index 4444904c1b8..283e7e5877a 100644 --- a/code/game/objects/items/weapons/policetape.dm +++ b/code/game/objects/items/weapons/policetape.dm @@ -9,6 +9,9 @@ var/tape_type = /obj/item/tape var/icon_base +var/list/image/hazard_overlays +var/list/tape_roll_applications = list() + /obj/item/tape name = "tape" icon = 'icons/policetape.dmi' @@ -17,6 +20,15 @@ var/crumpled = 0 var/icon_base +/obj/item/tape/New() + ..() + if(!hazard_overlays) + hazard_overlays = list() + hazard_overlays["[NORTH]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "N") + hazard_overlays["[EAST]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "E") + hazard_overlays["[SOUTH]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "S") + hazard_overlays["[WEST]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "W") + /obj/item/taperoll/police name = "police tape" desc = "A roll of police tape used to block off crime scenes from the public." @@ -98,7 +110,10 @@ usr << "\blue You finish placing the [src]." //Git Test /obj/item/taperoll/afterattack(var/atom/A, mob/user as mob, proximity) - if (proximity && istype(A, /obj/machinery/door/airlock)) + if(!proximity) + return + + if (istype(A, /obj/machinery/door/airlock)) var/turf/T = get_turf(A) var/obj/item/tape/P = new tape_type(T.x,T.y,T.z) P.loc = locate(T.x,T.y,T.z) @@ -106,6 +121,23 @@ P.layer = 3.2 user << "\blue You finish placing the [src]." + if (istype(A, /turf/simulated/floor) ||istype(A, /turf/unsimulated/floor)) + var/turf/F = A + var/direction = user.loc == F ? user.dir : turn(user.dir, 180) + var/icon/hazard_overlay = hazard_overlays["[direction]"] + if(tape_roll_applications[F] == null) + tape_roll_applications[F] = 0 + + if(tape_roll_applications[F] & direction) // hazard_overlay in F.overlays wouldn't work. + user.visible_message("[user] uses the adhesive of \the [src] to remove area markings from \the [F].", "You use the adhesive of \the [src] to remove area markings from \the [F].") + F.overlays -= hazard_overlay + tape_roll_applications[F] &= ~direction + else + user.visible_message("[user] applied \the [src] on \the [F] to create area markings.", "You apply \the [src] on \the [F] to create area markings.") + F.overlays |= hazard_overlay + tape_roll_applications[F] |= direction + return + /obj/item/tape/proc/crumple() if(!crumpled) crumpled = 1 diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 51cb54ea2dc..39b767263fc 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -16,15 +16,14 @@ var/damtype = "brute" var/force = 0 -/obj/Topic(href, href_list, var/nowindow = 0, var/datum/topic_state/custom_state = default_state) +/obj/Topic(href, href_list, var/nowindow = 0, var/datum/topic_state/state = default_state) // Calling Topic without a corresponding window open causes runtime errors if(!nowindow && ..()) return 1 // In the far future no checks are made in an overriding Topic() beyond if(..()) return // Instead any such checks are made in CanUseTopic() - var/obj/host = nano_host() - if(host.CanUseTopic(usr, href_list, custom_state) == STATUS_INTERACTIVE) + if(CanUseTopic(usr, state, href_list) == STATUS_INTERACTIVE) CouldUseTopic(usr) return 0 diff --git a/code/game/objects/structures/barsign.dm b/code/game/objects/structures/barsign.dm index 68681f081aa..04eeaa5d995 100644 --- a/code/game/objects/structures/barsign.dm +++ b/code/game/objects/structures/barsign.dm @@ -2,6 +2,7 @@ icon = 'icons/obj/barsigns.dmi' icon_state = "empty" anchored = 1 + var/cult = 0 New() ChangeSign(pick("pinkflamingo", "magmasea", "limbo", "rustyaxe", "armokbar", "brokendrum", "meadbay", "thedamnwall", "thecavern", "cindikate", "theorchard", "thesaucyclown", "theclownshead", "whiskeyimplant", "carpecarp", "robustroadhouse", "greytide", "theredshirt")) return @@ -12,6 +13,9 @@ return /obj/structure/sign/double/barsign/attackby(obj/item/I, mob/user) + if(cult) + return + if(istype(I, /obj/item/weapon/card/id)) var/obj/item/weapon/card/id/card = I if(access_bar in card.GetAccess()) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 40163e7c780..08abff9c2bf 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -249,6 +249,10 @@ src.add_fingerprint(user) return +/obj/structure/closet/attack_ai(mob/user) + if(istype(user, /mob/living/silicon/robot) && Adjacent(user)) // Robots can open/close it, but not the AI. + attack_hand(user) + /obj/structure/closet/relaymove(mob/user as mob) if(user.stat || !isturf(src.loc)) return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm index 0513efd943a..0722b5b0771 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm @@ -19,7 +19,7 @@ New() ..() for(var/i = 0, i < 6, i++) - new /obj/item/weapon/reagent_containers/food/snacks/flour(src) + new /obj/item/weapon/reagent_containers/food/condiment/flour(src) new /obj/item/weapon/reagent_containers/food/condiment/sugar(src) for(var/i = 0, i < 3, i++) new /obj/item/weapon/reagent_containers/food/snacks/meat/monkey(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm index 43d440c9f27..019d4873bcc 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm @@ -24,5 +24,6 @@ new /obj/item/weapon/minihoe(src) new /obj/item/weapon/hatchet(src) new /obj/item/weapon/wirecutters/clippers(src) + new /obj/item/weapon/reagent_containers/spray/plantbgone(src) // new /obj/item/weapon/bee_net(src) //No more bees, March 2014 return diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm new file mode 100644 index 00000000000..644f2d7531a --- /dev/null +++ b/code/game/objects/structures/crates_lockers/closets/statue.dm @@ -0,0 +1,133 @@ +/obj/structure/closet/statue + name = "statue" + desc = "An incredibly lifelike marble carving" + icon = 'icons/obj/statue.dmi' + icon_state = "human_male" + density = 1 + anchored = 1 + health = 0 //destroying the statue kills the mob within + var/intialTox = 0 //these are here to keep the mob from taking damage from things that logically wouldn't affect a rock + var/intialFire = 0 //it's a little sloppy I know but it was this or the GODMODE flag. Lesser of two evils. + var/intialBrute = 0 + var/intialOxy = 0 + var/timer = 240 //eventually the person will be freed + +/obj/structure/closet/statue/New(loc, var/mob/living/L) + if(L && (ishuman(L) || L.isMonkey() || iscorgi(L))) + if(L.buckled) + L.buckled = 0 + L.anchored = 0 + if(L.client) + L.client.perspective = EYE_PERSPECTIVE + L.client.eye = src + L.loc = src + L.sdisabilities |= MUTE + health = L.health + 100 //stoning damaged mobs will result in easier to shatter statues + intialTox = L.getToxLoss() + intialFire = L.getFireLoss() + intialBrute = L.getBruteLoss() + intialOxy = L.getOxyLoss() + if(ishuman(L)) + name = "statue of [L.name]" + if(L.gender == "female") + icon_state = "human_female" + else if(L.isMonkey()) + name = "statue of a monkey" + icon_state = "monkey" + else if(iscorgi(L)) + name = "statue of a corgi" + icon_state = "corgi" + desc = "If it takes forever, I will wait for you..." + + if(health == 0) //meaning if the statue didn't find a valid target + del(src) + return + + processing_objects.Add(src) + ..() + +/obj/structure/closet/statue/process() + timer-- + for(var/mob/living/M in src) //Go-go gadget stasis field + M.setToxLoss(intialTox) + M.adjustFireLoss(intialFire - M.getFireLoss()) + M.adjustBruteLoss(intialBrute - M.getBruteLoss()) + M.setOxyLoss(intialOxy) + if (timer <= 0) + dump_contents() + processing_objects.Remove(src) + del(src) + +/obj/structure/closet/statue/dump_contents() + + for(var/obj/O in src) + O.loc = src.loc + + for(var/mob/living/M in src) + M.loc = src.loc + M.sdisabilities &= ~MUTE + M.take_overall_damage((M.health - health - 100),0) //any new damage the statue incurred is transfered to the mob + if(M.client) + M.client.eye = M.client.mob + M.client.perspective = MOB_PERSPECTIVE + +/obj/structure/closet/statue/open() + return + +/obj/structure/closet/statue/close() + return + +/obj/structure/closet/statue/toggle() + return + +/obj/structure/closet/statue/bullet_act(var/obj/item/projectile/Proj) + health -= Proj.damage + if(health <= 0) + for(var/mob/M in src) + shatter(M) + + return + +/obj/structure/closet/statue/attack_generic(var/mob/user, damage, attacktext, environment_smash) + if(damage && environment_smash) + for(var/mob/M in src) + shatter(M) + +/obj/structure/closet/statue/blob_act() + for(var/mob/M in src) + shatter(M) + +/obj/structure/closet/statue/meteorhit(obj/O as obj) + if(O.icon_state == "flaming") + for(var/mob/M in src) + M.meteorhit(O) + shatter(M) + +/obj/structure/closet/statue/attackby(obj/item/I as obj, mob/user as mob) + health -= I.force + visible_message("[user] strikes [src] with [I].") + if(health <= 0) + for(var/mob/M in src) + shatter(M) + +/obj/structure/closet/statue/MouseDrop_T() + return + +/obj/structure/closet/statue/relaymove() + return + +/obj/structure/closet/statue/attack_hand() + return + +/obj/structure/closet/statue/verb_toggleopen() + return + +/obj/structure/closet/statue/update_icon() + return + +/obj/structure/closet/statue/proc/shatter(mob/user as mob) + if (user) + user.dust() + dump_contents() + visible_message("[src] shatters!.") + del(src) diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 85415cd1629..c73c955701f 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -113,7 +113,7 @@ del(src) return - if(/obj/item/stack/sheet/plasteel) + if(/obj/item/stack/sheet/plasteel, /obj/item/stack/sheet/plasteel/cyborg) if(!anchored) if(S.use(2)) user << "\blue You create a false wall! Push on it to open or close the passage." diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index b6407fd3767..dda21468a48 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -22,6 +22,11 @@ /obj/structure/grille/meteorhit(var/obj/M) del(src) +/obj/structure/grille/update_icon() + if(destroyed) + icon_state = "[initial(icon_state)]-b" + else + icon_state = initial(icon_state) /obj/structure/grille/Bumped(atom/user) if(ismob(user)) shock(user, 70) @@ -165,9 +170,9 @@ /obj/structure/grille/proc/healthcheck() if(health <= 0) if(!destroyed) - icon_state = "brokengrille" density = 0 destroyed = 1 + update_icon() new /obj/item/stack/rods(loc) else @@ -215,3 +220,14 @@ health -= damage spawn(1) healthcheck() return 1 + +/obj/structure/grille/cult + name = "cult grille" + desc = "A matrice built out of an unknown material, with some sort of force field blocking air around it" + icon_state = "grillecult" + health = 40 //Make it strong enough to avoid people breaking in too easily + +/obj/structure/grille/cult/CanPass(atom/movable/mover, turf/target, height = 1.5, air_group = 0) + if(air_group) + return 0 //Make sure air doesn't drain + ..() diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index 83f295f9ef7..f0a5b9003a1 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -80,11 +80,11 @@ var/mob/living/carbon/human/vox/vox = new(get_turf(src),"Vox") vox.gender = user.gender raiders.equip(vox) + new /obj/item/organ/stack/vox(vox) if(user.mind) user.mind.transfer_to(vox) spawn(1) - var/newname = input(vox,"Enter a name, or leave blank for the default name.", "Name change","") as text - newname = sanitize(newname) + var/newname = sanitizeSafe(input(vox,"Enter a name, or leave blank for the default name.", "Name change","") as text, MAX_NAME_LEN) if(!newname || newname == "") var/datum/language/L = all_languages[vox.species.default_language] newname = L.get_random_name() diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 1f597b0c96d..f30c4d854de 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -92,7 +92,7 @@ return if ((!in_range(src, usr) && src.loc != user)) return - t = sanitize(t) + t = sanitizeSafe(t, MAX_NAME_LEN) if (t) src.name = text("Morgue- '[]'", t) else @@ -258,7 +258,7 @@ return if ((!in_range(src, usr) > 1 && src.loc != user)) return - t = sanitize(t) + t = sanitizeSafe(t, MAX_NAME_LEN) if (t) src.name = text("Crematorium- '[]'", t) else diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 5c4728313b7..c8746e1919a 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -67,15 +67,13 @@ return // Chair types -/obj/structure/bed/chair/wood/normal +/obj/structure/bed/chair/wood icon_state = "wooden_chair" name = "wooden chair" desc = "Old is never too old to not be in fashion." /obj/structure/bed/chair/wood/wings icon_state = "wooden_chair_wings" - name = "wooden chair" - desc = "Old is never too old to not be in fashion." /obj/structure/bed/chair/wood/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/wrench)) diff --git a/code/game/turfs/simulated.dm b/code/game/turfs/simulated.dm index 9546bf9ba1b..dcecf46ad60 100644 --- a/code/game/turfs/simulated.dm +++ b/code/game/turfs/simulated.dm @@ -12,6 +12,8 @@ /turf/simulated/New() ..() + if(istype(loc, /area/chapel)) + holy = 1 levelupdate() /turf/simulated/proc/AddTracks(var/typepath,var/bloodDNA,var/comingdir,var/goingdir,var/bloodcolor="#A10808") diff --git a/code/game/turfs/simulated/floor_types.dm b/code/game/turfs/simulated/floor_types.dm index 4c4682c5c59..e0ba3b7f4d9 100644 --- a/code/game/turfs/simulated/floor_types.dm +++ b/code/game/turfs/simulated/floor_types.dm @@ -74,6 +74,8 @@ name = "engraved floor" icon_state = "cult" +/turf/simulated/floor/engine/cult/cultify() + return /turf/simulated/floor/engine/n20 New() diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 969b872caf6..e19fadf863b 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -106,6 +106,20 @@ //Damage +/turf/simulated/wall/melt() + if(mineral == "diamond") + return + + src.ChangeTurf(/turf/simulated/floor/plating) + + var/turf/simulated/floor/F = src + if(!F) + return + F.burn_tile() + F.icon_state = "wall_thermite" + visible_message("\The [src] spontaneously combusts!.") //!!OH SHIT!! + return + /turf/simulated/wall/proc/take_damage(dam) if(dam) damage = max(0, damage + dam) diff --git a/code/game/turfs/simulated/walls_misc.dm b/code/game/turfs/simulated/walls_misc.dm index b1a06f6e88a..fdc5d929955 100644 --- a/code/game/turfs/simulated/walls_misc.dm +++ b/code/game/turfs/simulated/walls_misc.dm @@ -2,4 +2,7 @@ name = "wall" desc = "The patterns engraved on the wall seem to shift as you try to focus on them. You feel sick" icon_state = "cult" - walltype = "cult" \ No newline at end of file + walltype = "cult" + +/turf/unsimulated/wall/cult/cultify() + return diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index 884c5c5dbe9..2fd89bb8769 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -245,4 +245,7 @@ var/list/accessible_z_levels = list("1" = 5, "3" = 10, "4" = 15, "5" = 10, "6" = spawn (0) if ((A && A.loc)) A.loc.Entered(A) - return \ No newline at end of file + return + +/turf/space/ChangeTurf(var/turf/N, var/tell_universe=1, var/force_lighting_update = 0) + return ..(N, tell_universe, 1) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 29f425d4a3a..1bc058ef6df 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -26,6 +26,12 @@ var/has_resources var/list/resources + // Flick animation + var/atom/movable/overlay/c_animation = null + + // holy water + var/holy = 0 + /turf/New() ..() for(var/atom/movable/AM as mob|obj in src) @@ -194,7 +200,7 @@ del L //Creates a new turf -/turf/proc/ChangeTurf(var/turf/N) +/turf/proc/ChangeTurf(var/turf/N, var/tell_universe=1, var/force_lighting_update = 0) if (!N) return @@ -238,9 +244,9 @@ //W.Assimilate_Air() W.lighting_lumcount += old_lumcount - - if(W.lighting_lumcount) - W.UpdateAffectingLights() + if((old_lumcount != W.lighting_lumcount) || (loc.name != "Space" && force_lighting_update)) + W.lighting_changed = 1 + lighting_controller.changed_turfs += W if(old_fire) fire = old_fire @@ -248,6 +254,9 @@ if (istype(W,/turf/simulated/floor)) W.RemoveLattice() + if(tell_universe) + universe.OnTurfChange(W) + if(air_master) air_master.mark_for_update(src) @@ -265,13 +274,16 @@ var/turf/W = new N( locate(src.x, src.y, src.z) ) W.lighting_lumcount += old_lumcount - if(old_lumcount != W.lighting_lumcount) + if((old_lumcount != W.lighting_lumcount) || (loc.name != "Space" && force_lighting_update)) W.lighting_changed = 1 lighting_controller.changed_turfs += W if(old_fire) old_fire.RemoveFire() + if(tell_universe) + universe.OnTurfChange(W) + if(air_master) air_master.mark_for_update(src) diff --git a/code/game/turfs/turf_flick_animations.dm b/code/game/turfs/turf_flick_animations.dm new file mode 100644 index 00000000000..59bcfd56d7b --- /dev/null +++ b/code/game/turfs/turf_flick_animations.dm @@ -0,0 +1,21 @@ +/turf/proc/turf_animation(var/anim_icon,var/anim_state,var/anim_x=0, var/anim_y=0, var/anim_layer=MOB_LAYER+1, var/anim_sound=null, var/anim_color=null) + if(!c_animation)//spamming turf animations can have unintended effects, such as the overlays never disapearing. hence this check. + if(anim_sound) + playsound(src, anim_sound, 50, 1) + c_animation = PoolOrNew(/atom/movable/overlay, src) + c_animation.name = "turf_animation" + c_animation.density = 0 + c_animation.anchored = 1 + c_animation.icon = anim_icon + c_animation.icon_state = anim_state + c_animation.layer = anim_layer + c_animation.master = src + c_animation.pixel_x = anim_x + c_animation.pixel_y = anim_y + if(anim_color) + c_animation.color = anim_color + flick("turf_animation",c_animation) + spawn(10) + if(c_animation) + PlaceInPool(c_animation) + c_animation = null diff --git a/code/global.dm b/code/global.dm index 38362296492..2e7ddeb0e6c 100644 --- a/code/global.dm +++ b/code/global.dm @@ -1,4 +1,7 @@ //#define TESTING +#if DM_VERSION < 506 +#warn This compiler is out of date. You may experience issues with projectile animations. +#endif // Items that ask to be called every cycle. var/global/obj/effect/datacore/data_core = null @@ -27,6 +30,8 @@ var/global/defer_powernet_rebuild = 0 // True if net rebuild will be called // 3: AI satellite. // 5: Empty space. +var/global/datum/universal_state/universe = new + var/global/list/global_map = null //var/global/list/global_map = list(list(1,5),list(4,3)) @@ -228,7 +233,8 @@ var/list/cheartstopper = list("potassium_chloride") // Thi // Used by robots and robot preferences. var/list/robot_module_types = list( "Standard", "Engineering", "Construction", "Surgeon", "Crisis", - "Miner", "Janitor", "Service", "Clerical", "Security" + "Miner", "Janitor", "Service", "Clerical", "Security", + "Research" ) // Some scary sounds. @@ -261,4 +267,4 @@ var/global/obj/item/device/radio/intercom/global_announcer = new(null) var/list/station_departments = list("Command", "Medical", "Engineering", "Science", "Security", "Cargo", "Civilian") var/global/const/TICKS_IN_DAY = 864000 -var/global/const/TICKS_IN_SECOND = 10 \ No newline at end of file +var/global/const/TICKS_IN_SECOND = 10 diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 96b7a7c2445..a9f39fb127c 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -670,6 +670,16 @@ var/global/floorIsLava = 0 if(check_rights(R_SERVER,0)) dat += "Toggle bomb cap
      " + if(check_rights(R_SERVER|R_FUN,0)) + dat += {" +
      + Final Solutions
      + (Warning, these will end the round!)
      +
      + Summon Nar-Sie
      + Start a Supermatter Cascade
      + "} + dat += "
      " if(check_rights(R_DEBUG,0)) @@ -1245,3 +1255,28 @@ var/global/floorIsLava = 0 //ALL DONE //********************************************************************************************************* // + +/datum/admins/proc/cmd_ghost_drag(var/mob/dead/observer/frommob, var/mob/living/tomob) + if(!istype(frommob)) + return //Extra sanity check to make sure only observers are shoved into things + + //Same as assume-direct-control perm requirements. + if (!check_rights(R_VAREDIT,0) || !check_rights(R_ADMIN|R_DEBUG,0)) + return 0 + if (!frommob.ckey) + return 0 + var/question = "" + if (tomob.ckey) + question = "This mob already has a user ([tomob.key]) in control of it! " + question += "Are you sure you want to place [frommob.name]([frommob.key]) in control of [tomob.name]?" + var/ask = alert(question, "Place ghost in control of mob?", "Yes", "No") + if (ask != "Yes") + return 1 + if(tomob.client) //No need to ghostize if there is no client + tomob.ghostize(0) + message_admins("[key_name_admin(usr)] has put [frommob.ckey] in control of [tomob.name].") + log_admin("[key_name(usr)] stuffed [frommob.ckey] into [tomob.name].") + feedback_add_details("admin_verb","CGD") + tomob.ckey = frommob.ckey + qdel(frommob) + return 1 diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index b4da2f8542e..0da8f612405 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -296,7 +296,7 @@ var/list/admin_verbs_mentor = list( if(holder.rights & R_SERVER) verbs += admin_verbs_server if(holder.rights & R_DEBUG) verbs += admin_verbs_debug - if(config.debugparanoid && !check_rights(R_ADMIN)) + if(config.debugparanoid && !(holder.rights & R_ADMIN)) verbs.Remove(admin_verbs_paranoid_debug) //Right now it's just callproc but we can easily add others later on. if(holder.rights & R_POSSESS) verbs += admin_verbs_possess if(holder.rights & R_PERMISSIONS) verbs += admin_verbs_permissions @@ -724,7 +724,8 @@ var/list/admin_verbs_mentor = list( return if(holder) - S.subsystem_law_manager() + var/obj/nano_module/law_manager/L = new(S) + L.ui_interact(usr, state = admin_state) admin_log_and_message_admins("has opened [S]'s law manager.") feedback_add_details("admin_verb","MSL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -738,7 +739,7 @@ var/list/admin_verbs_mentor = list( if(holder) admin_log_and_message_admins("is altering the appearance of [H].") - H.change_appearance(APPEARANCE_ALL, usr, usr, check_species_whitelist = 0) + H.change_appearance(APPEARANCE_ALL, usr, usr, check_species_whitelist = 0, state = admin_state) feedback_add_details("admin_verb","CHAA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/change_human_appearance_self(mob/living/carbon/human/H in mob_list) @@ -944,3 +945,14 @@ var/list/admin_verbs_mentor = list( log_admin("[key_name(usr)] told everyone to man up and deal with it.") message_admins("\blue [key_name_admin(usr)] told everyone to man up and deal with it.", 1) + +/client/proc/give_spell(mob/T as mob in mob_list) // -- Urist + set category = "Fun" + set name = "Give Spell" + set desc = "Gives a spell to a mob." + var/spell/S = input("Choose the spell to give to that guy", "ABRAKADABRA") as null|anything in spells + if(!S) return + T.spell_list += new S + feedback_add_details("admin_verb","GS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + log_admin("[key_name(usr)] gave [key_name(T)] the spell [S].") + message_admins("\blue [key_name_admin(usr)] gave [key_name(T)] the spell [S].", 1) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index fc2ee0a0b26..43ea750f7a5 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1317,21 +1317,27 @@ M.stuttering = 20 else if(href_list["CentcommReply"]) - var/mob/living/carbon/human/H = locate(href_list["CentcommReply"]) - if(!istype(H)) - usr << "This can only be used on instances of type /mob/living/carbon/human" - return - if(!istype(H.l_ear, /obj/item/device/radio/headset) && !istype(H.r_ear, /obj/item/device/radio/headset)) - usr << "The person you are trying to contact is not wearing a headset" + var/mob/living/L = locate(href_list["CentcommReply"]) + if(!istype(L)) + usr << "This can only be used on instances of type /mob/living/" return - var/input = sanitize(input(src.owner, "Please enter a message to reply to [key_name(H)] via their headset.","Outgoing message from Centcomm", "")) - if(!input) return + if(L.can_centcom_reply()) + var/input = input(src.owner, "Please enter a message to reply to [key_name(L)] via their headset.","Outgoing message from Centcomm", "") + if(!input) return + + src.owner << "You sent [input] to [L] via a secure channel." + log_admin("[src.owner] replied to [key_name(L)]'s Centcomm message with the message [input].") + message_admins("[src.owner] replied to [key_name(L)]'s Centcom message with: \"[input]\"") + if(!L.isAI()) + L << "You hear something crackle in your headset for a moment before a voice speaks." + L << "Please stand by for a message from Central Command." + L << "Message as follows." + L << "[input]" + L << "Message ends." + else + src.owner << "The person you are trying to contact does not have functional radio equipment." - src.owner << "You sent [input] to [H] via a secure channel." - log_admin("[src.owner] replied to [key_name(H)]'s Centcomm message with the message [input].") - message_admins("[src.owner] replied to [key_name(H)]'s Centcom message with: \"[input]\"") - H << "You hear something crackle in your headset for a moment before a voice speaks. \"Please stand by for a message from Central Command. Message as follows. \"[input]\" Message ends.\"" else if(href_list["SyndicateReply"]) var/mob/living/carbon/human/H = locate(href_list["SyndicateReply"]) @@ -2251,6 +2257,33 @@ feedback_add_details("admin_secrets_fun_used","OO") only_one() message_admins("[key_name_admin(usr)] has triggered a battle to the death (only one)") + + if("togglenarsie") + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","NA") + var/choice = input("How do you wish for narsie to interact with her surroundings?") in list("CultStation13", "Nar-Singulo") + if(choice == "CultStation13") + message_admins("[key_name_admin(usr)] has set narsie's behaviour to \"CultStation13\".") + narsie_behaviour = "CultStation13" + if(choice == "Nar-Singulo") + message_admins("[key_name_admin(usr)] has set narsie's behaviour to \"Nar-Singulo\".") + narsie_behaviour = "Nar-Singulo" + if("hellonearth") + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","NS") + var/choice = input("You sure you want to end the round and summon narsie at your location? Misuse of this could result in removal of flags or halarity.") in list("PRAISE SATAN", "Cancel") + if(choice == "PRAISE SATAN") + new /obj/machinery/singularity/narsie/large(get_turf(usr)) + message_admins("[key_name_admin(usr)] has summoned narsie and brought about a new realm of suffering.") + if("supermattercascade") + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","SC") + var/choice = input("You sure you want to destroy the universe and create a large explosion at your location? Misuse of this could result in removal of flags or halarity.") in list("NO TIME TO EXPLAIN", "Cancel") + if(choice == "NO TIME TO EXPLAIN") + explosion(get_turf(usr), 8, 16, 24, 32, 1) + new /turf/unsimulated/wall/supermatter(get_turf(usr)) + SetUniversalState(/datum/universal_state/supermatter_cascade) + message_admins("[key_name_admin(usr)] has managed to destroy the universe with a supermatter cascade. Good job, [key_name_admin(usr)]") if(usr) log_admin("[key_name(usr)] used secret [href_list["secretsfun"]]") if (ok) @@ -2619,3 +2652,12 @@ if("list") PlayerNotesPage(text2num(href_list["index"])) return + +mob/living/proc/can_centcom_reply() + return 0 + +mob/living/carbon/human/can_centcom_reply() + return istype(l_ear, /obj/item/device/radio/headset) || istype(r_ear, /obj/item/device/radio/headset) + +mob/living/silicon/ai/can_centcom_reply() + return common_radio != null && !check_unable(2) \ No newline at end of file diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 325f04f9e89..43e2211aba6 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -590,7 +590,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/det_suit(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses) + M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/plain/monocle(M), slot_glasses) M.equip_to_slot_or_del(new /obj/item/clothing/head/det_hat(M), slot_head) M.equip_to_slot_or_del(new /obj/item/weapon/cloaking_device(M), slot_r_store) @@ -660,7 +660,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(M), slot_wear_mask) M.equip_to_slot_or_del(new /obj/item/clothing/head/chaplain_hood(M), slot_head) M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses) + M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/plain/monocle(M), slot_glasses) M.equip_to_slot_or_del(new /obj/item/clothing/suit/chaplain_hoodie(M), slot_wear_suit) M.equip_to_slot_or_del(new /obj/item/weapon/bikehorn(M), slot_r_store) @@ -681,7 +681,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(M), slot_wear_mask) M.equip_to_slot_or_del(new /obj/item/clothing/head/welding(M), slot_head) M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses) + M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/plain/monocle(M), slot_glasses) M.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(M), slot_wear_suit) M.equip_to_slot_or_del(new /obj/item/weapon/kitchenknife(M), slot_l_store) M.equip_to_slot_or_del(new /obj/item/weapon/scalpel(M), slot_r_store) @@ -832,7 +832,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(M), slot_l_ear) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses) + M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/plain/eyepatch(M), slot_glasses) M.equip_to_slot_or_del(new /obj/item/clothing/mask/smokable/cigarette/cigar/havana(M), slot_wear_mask) M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head) M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle/M1911(M), slot_belt) @@ -888,7 +888,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(M), slot_l_ear) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses) + M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/plain/eyepatch(M), slot_glasses) M.equip_to_slot_or_del(new /obj/item/clothing/suit/hgpirate(M), slot_wear_suit) M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back) M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt) diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm index 5ac54a04984..dae2c09cbd2 100644 --- a/code/modules/client/preferences_gear.dm +++ b/code/modules/client/preferences_gear.dm @@ -661,6 +661,12 @@ var/global/list/gear_datums = list() cost = 2 slot = slot_shoes +/datum/gear/toeless_jackboots + display_name = "toe-less jackboots" + path = /obj/item/clothing/shoes/jackboots/fluff/kecer_eldraran //permisson of owner of custom item was granted + cost = 2 + slot = slot_shoes + /datum/gear/sandal display_name = "sandals" path = /obj/item/clothing/shoes/sandal diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 317b60af180..97eb175277c 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -10,7 +10,9 @@ //var/invisa_view = 0 var/prescription = 0 var/toggleable = 0 + var/off_state = "degoggles" var/active = 1 + var/activation_sound = 'sound/items/goggles_charge.ogg' var/obj/screen/overlay = null body_parts_covered = EYES @@ -18,13 +20,15 @@ if(toggleable) if(active) active = 0 - icon_state = "degoggles" + icon_state = off_state user.update_inv_glasses() usr << "You deactivate the optical matrix on the [src]." else active = 1 icon_state = initial(icon_state) user.update_inv_glasses() + if(activation_sound) + usr << activation_sound usr << "You activate the optical matrix on the [src]." /obj/item/clothing/glasses/meson @@ -51,6 +55,8 @@ desc = "The goggles do nothing!" icon_state = "purple" item_state = "glasses" + toggleable = 1 + icon_action_button = "action_science" /obj/item/clothing/glasses/science/New() ..() @@ -63,6 +69,9 @@ item_state = "glasses" origin_tech = "magnets=2" darkness_view = 7 + toggleable = 1 + icon_action_button = "action_nvg" + off_state = "denight" /obj/item/clothing/glasses/night/New() ..() @@ -208,6 +217,7 @@ item_state = "glasses" origin_tech = "magnets=3" toggleable = 1 + icon_action_button = "action_thermal" vision_flags = SEE_MOBS invisa_view = 2 @@ -218,9 +228,11 @@ if(M.glasses == src) M.eye_blind = 3 M.eye_blurry = 5 - M.disabilities |= NEARSIGHTED - spawn(100) - M.disabilities &= ~NEARSIGHTED + // Don't cure being nearsighted + if(!(M.disabilities & NEARSIGHTED)) + M.disabilities |= NEARSIGHTED + spawn(100) + M.disabilities &= ~NEARSIGHTED ..() /obj/item/clothing/glasses/thermal/New() @@ -231,28 +243,30 @@ name = "Optical Meson Scanner" desc = "Used for seeing walls, floors, and stuff through anything." icon_state = "meson" - icon_action_button = "action_meson" origin_tech = "magnets=3;syndicate=4" -/obj/item/clothing/glasses/thermal/monocle +/obj/item/clothing/glasses/thermal/plain + toggleable = 0 + activation_sound = null + icon_action_button = "" + +/obj/item/clothing/glasses/thermal/plain/monocle name = "Thermoncle" desc = "A monocle thermal." icon_state = "thermoncle" flags = null //doesn't protect eyes because it's a monocle, duh - toggleable = 0 + body_parts_covered = 0 -/obj/item/clothing/glasses/thermal/eyepatch +/obj/item/clothing/glasses/thermal/plain/eyepatch name = "Optical Thermal Eyepatch" desc = "An eyepatch with built-in thermal optics" icon_state = "eyepatch" item_state = "eyepatch" - toggleable = 0 body_parts_covered = 0 -/obj/item/clothing/glasses/thermal/jensen +/obj/item/clothing/glasses/thermal/plain/jensen name = "Optical Thermal Implants" desc = "A set of implantable lenses designed to augment your vision" icon_state = "thermalimplants" item_state = "syringe_kit" - toggleable = 0 diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 38b252b1ff4..c30424111b6 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -45,6 +45,8 @@ species_restricted = null body_parts_covered = 0 + wizard_garb = 1 + /obj/item/clothing/shoes/sandal/marisa desc = "A pair of magic, black shoes." name = "magic shoes" @@ -105,6 +107,9 @@ max_heat_protection_temperature = SHOE_MAX_HEAT_PROTECTION_TEMPERATURE species_restricted = null +/obj/item/clothing/shoes/cult/cultify() + return + /obj/item/clothing/shoes/cyborg name = "cyborg boots" desc = "Shoes for a cyborg costume" diff --git a/code/modules/clothing/spacesuits/rig/modules/computer.dm b/code/modules/clothing/spacesuits/rig/modules/computer.dm index 3d7b36124b7..5c02fc11f73 100644 --- a/code/modules/clothing/spacesuits/rig/modules/computer.dm +++ b/code/modules/clothing/spacesuits/rig/modules/computer.dm @@ -105,7 +105,14 @@ // Okay, it wasn't a terminal being touched, check for all the simple insertions. if(input_device.type in list(/obj/item/device/paicard, /obj/item/device/mmi, /obj/item/device/mmi/digital/posibrain)) - integrate_ai(input_device,user) + if(integrated_ai) + integrated_ai.attackby(input_device,user) + // If the transfer was successful, we can clear out our vars. + if(integrated_ai.loc != src) + integrated_ai = null + eject_ai() + else + integrate_ai(input_device,user) return 1 return 0 diff --git a/code/modules/clothing/spacesuits/rig/modules/utility.dm b/code/modules/clothing/spacesuits/rig/modules/utility.dm index f0001e680ae..79abda20ccb 100644 --- a/code/modules/clothing/spacesuits/rig/modules/utility.dm +++ b/code/modules/clothing/spacesuits/rig/modules/utility.dm @@ -303,7 +303,7 @@ voice_holder.active = 0 usr << "You disable the speech synthesiser." if("Set Name") - var/raw_choice = sanitize(input(usr, "Please enter a new name.") as text|null) + var/raw_choice = sanitize(input(usr, "Please enter a new name.") as text|null, MAX_NAME_LEN) if(!raw_choice) return 0 voice_holder.voice = raw_choice diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 4c8da1665a6..df610a8d4d9 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -459,7 +459,7 @@ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) - ui = new(user, src, ui_key, ((src.loc != user) ? ai_interface_path : interface_path), interface_title, 480, 550) + ui = new(user, src, ui_key, ((src.loc != user) ? ai_interface_path : interface_path), interface_title, 480, 550, data["ai"] ? contained_state : inventory_state) ui.set_initial_data(data) ui.open() ui.set_auto_update(1) @@ -631,8 +631,9 @@ use_obj.loc = src else if (deploy_mode != ONLY_RETRACT) - if(check_slot && check_slot != use_obj) - H << "You are unable to deploy \the [piece] as \the [check_slot] [check_slot.gender == PLURAL ? "are" : "is"] in the way." + if(check_slot) + if(check_slot != use_obj) + H << "You are unable to deploy \the [piece] as \the [check_slot] [check_slot.gender == PLURAL ? "are" : "is"] in the way." return else use_obj.loc = H diff --git a/code/modules/clothing/spacesuits/void/void.dm b/code/modules/clothing/spacesuits/void/void.dm index 68a619ba282..6854513138f 100644 --- a/code/modules/clothing/spacesuits/void/void.dm +++ b/code/modules/clothing/spacesuits/void/void.dm @@ -55,6 +55,21 @@ //Inbuilt devices. var/obj/item/clothing/shoes/magboots/boots = null // Deployable boots, if any. var/obj/item/clothing/head/helmet/helmet = null // Deployable helmet, if any. + var/obj/item/weapon/tank/tank = null // Deployable tank, if any. + +/obj/item/clothing/suit/space/void/examine(user) + ..(user) + if(boots || helmet || tank) + var/D = "Installed equipment: " + var/first = 1 + for(var/obj/item/I in list(helmet,boots,tank)) + if (I) + D += "[first?"":", "]\the [I]\icon[I]" + first = 0 + D += "." + user << D + if(tank && in_range(src,user)) + user << "The wrist-mounted pressure gauge reads [max(round(tank.air_contents.return_pressure()),0)] kPa remaining in \the [tank]." /obj/item/clothing/suit/space/void/refit_for_species(var/target_species) ..() @@ -87,6 +102,13 @@ M << "Your suit's boots deploy with a hiss." boots.canremove = 0 + if(tank) + if(H.s_store) //In case someone finds a way. + M << "Alarmingly, the valve on your suit's installed tank fails to engage." + else if (H.equip_to_slot_if_possible(tank, slot_s_store)) + M << "The valve on your suit's installed tank safely engages." + tank.canremove = 0 + /obj/item/clothing/suit/space/void/dropped() ..() @@ -108,6 +130,10 @@ H.drop_from_inventory(boots) boots.loc = src + if(tank) + tank.canremove = 1 + tank.loc = src + /obj/item/clothing/suit/space/void/verb/toggle_helmet() set name = "Toggle Helmet" @@ -127,7 +153,7 @@ if(H.wear_suit != src) return if(H.head == helmet) - H << "\blue You retract your suit helmet." + H << "You retract your suit helmet." helmet.canremove = 1 H.drop_from_inventory(helmet) helmet.loc = src @@ -138,9 +164,32 @@ if(H.equip_to_slot_if_possible(helmet, slot_head)) helmet.pickup(H) helmet.canremove = 0 - H << "You deploy your suit helmet, sealing you off from the world." + H << "You deploy your suit helmet, sealing you off from the world." helmet.update_light(H) +/obj/item/clothing/suit/space/void/verb/eject_tank() + + set name = "Eject Tank" + set category = "Object" + set src in usr + + if(!istype(src.loc,/mob/living)) return + + if(!tank) + usr << "There is no tank inserted." + return + + var/mob/living/carbon/human/H = usr + + if(!istype(H)) return + if(H.stat) return + if(H.wear_suit != src) return + + H << "You press the emergency release, ejecting \the [tank] from your suit." + tank.canremove = 1 + H.drop_from_inventory(tank) + src.tank = null + /obj/item/clothing/suit/space/void/attackby(obj/item/W as obj, mob/user as mob) if(!istype(user,/mob/living)) return @@ -150,7 +199,11 @@ return if(istype(W,/obj/item/weapon/screwdriver)) - if(helmet) + if(tank) + user << "You pop \the [tank] out of \the [src]'s storage compartment." + tank.loc = get_turf(src) + src.tank = null + else if(helmet) user << "You detatch \the [helmet] from \the [src]'s helmet mount." helmet.loc = get_turf(src) src.helmet = null @@ -179,5 +232,16 @@ W.loc = src boots = W return + else if(istype(W,/obj/item/weapon/tank)) + if(tank) + user << "\The [src] already has an airtank installed." + else if(istype(W,/obj/item/weapon/tank/phoron)) + user << "\The [W] cannot be inserted into \the [src]'s storage compartment." + else + user << "You insert \the [W] into \the [src]'s storage compartment." + user.drop_item() + W.loc = src + tank = W + return ..() \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/void/wizard.dm b/code/modules/clothing/spacesuits/void/wizard.dm index bddf9f7f2e8..56863356f4e 100644 --- a/code/modules/clothing/spacesuits/void/wizard.dm +++ b/code/modules/clothing/spacesuits/void/wizard.dm @@ -10,6 +10,7 @@ siemens_coefficient = 0.7 sprite_sheets_refit = null sprite_sheets_obj = null + wizard_garb = 1 /obj/item/clothing/suit/space/void/wizard icon_state = "rig-wiz" @@ -22,4 +23,5 @@ armor = list(melee = 40, bullet = 20, laser = 20,energy = 20, bomb = 35, bio = 100, rad = 60) siemens_coefficient = 0.7 sprite_sheets_refit = null - sprite_sheets_obj = null \ No newline at end of file + sprite_sheets_obj = null + wizard_garb = 1 diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm index 03240b2f3c2..69e51093f9d 100644 --- a/code/modules/clothing/suits/wiz_robe.dm +++ b/code/modules/clothing/suits/wiz_robe.dm @@ -5,6 +5,7 @@ //Not given any special protective value since the magic robes are full-body protection --NEO siemens_coefficient = 0.8 body_parts_covered = 0 + wizard_garb = 1 /obj/item/clothing/head/wizard/red name = "red wizard hat" @@ -55,6 +56,7 @@ allowed = list(/obj/item/weapon/teleportation_scroll) flags_inv = HIDEJUMPSUIT siemens_coefficient = 0.8 + wizard_garb = 1 /obj/item/clothing/suit/wizrobe/red name = "red wizard robe" diff --git a/code/modules/economy/EFTPOS.dm b/code/modules/economy/EFTPOS.dm index c2561423f4f..eed1e40ab20 100644 --- a/code/modules/economy/EFTPOS.dm +++ b/code/modules/economy/EFTPOS.dm @@ -1,5 +1,5 @@ /obj/item/device/eftpos - name = "EFTPOS scanner" + name = "\improper EFTPOS scanner" desc = "Swipe your ID card to make purchases electronically." icon = 'icons/obj/device.dmi' icon_state = "eftpos" @@ -110,11 +110,13 @@ else user << browse(null,"window=eftpos") -/obj/item/device/eftpos/attackby(O as obj, user as mob) - if(istype(O, /obj/item/weapon/card)) +/obj/item/device/eftpos/attackby(obj/item/O as obj, user as mob) + + var/obj/item/weapon/card/id/I = O.GetID() + + if(I) if(linked_account) - var/obj/item/weapon/card/I = O - scan_card(I) + scan_card(I, O) else usr << "\icon[src]Unable to connect to linked account." else if (istype(O, /obj/item/weapon/spacecash/ewallet)) @@ -124,7 +126,7 @@ if(transaction_locked && !transaction_paid) if(transaction_amount <= E.worth) playsound(src, 'sound/machines/chime.ogg', 50, 1) - src.visible_message("\icon[src] The [src] chimes.") + src.visible_message("\icon[src] \The [src] chimes.") transaction_paid = 1 //transfer the money @@ -141,7 +143,7 @@ T.time = worldtime2text() linked_account.transaction_log.Add(T) else - usr << "\icon[src]The charge card doesn't have that much money!" + usr << "\icon[src]\The [O] doesn't have that much money!" else usr << "\icon[src]Connected account has been suspended." else @@ -167,7 +169,7 @@ if("change_id") var/attempt_code = text2num(input("Re-enter the current EFTPOS access code", "Confirm EFTPOS code")) if(attempt_code == access_code) - eftpos_name = sanitize(input("Enter a new terminal ID for this device", "Enter new EFTPOS ID")) + " EFTPOS scanner" + eftpos_name = sanitize(input("Enter a new terminal ID for this device", "Enter new EFTPOS ID"), MAX_NAME_LEN) + " EFTPOS scanner" print_reference() else usr << "\icon[src]Incorrect code entered." @@ -225,10 +227,13 @@ src.attack_self(usr) -/obj/item/device/eftpos/proc/scan_card(var/obj/item/weapon/card/I) +/obj/item/device/eftpos/proc/scan_card(var/obj/item/weapon/card/I, var/obj/item/ID_container) if (istype(I, /obj/item/weapon/card/id)) var/obj/item/weapon/card/id/C = I - visible_message("[usr] swipes a card through [src].") + if(I==ID_container || ID_container == null) + usr.visible_message("\The [usr] swipes a card through \the [src].") + else + usr.visible_message("\The [usr] swipes \the [ID_container] through \the [src].") if(transaction_locked && !transaction_paid) if(linked_account) if(!linked_account.suspended) @@ -242,7 +247,7 @@ if(!D.suspended) if(transaction_amount <= D.money) playsound(src, 'sound/machines/chime.ogg', 50, 1) - src.visible_message("\icon[src] The [src] chimes.") + src.visible_message("\icon[src] \The [src] chimes.") transaction_paid = 1 //transfer the money @@ -283,13 +288,13 @@ else if (istype(I, /obj/item/weapon/card/emag)) if(transaction_locked) if(transaction_paid) - usr << "\icon[src]You stealthily swipe [I] through [src]." + usr << "\icon[src]You stealthily swipe \the [I] through \the [src]." transaction_locked = 0 transaction_paid = 0 else - visible_message("[usr] swipes a card through [src].") + usr.visible_message("\The [usr] swipes a card through \the [src].") playsound(src, 'sound/machines/chime.ogg', 50, 1) - src.visible_message("\icon[src] The [src] chimes.") + src.visible_message("\icon[src] \The [src] chimes.") transaction_paid = 1 else ..() diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 9ca784070d6..8440b9163ee 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -13,7 +13,8 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/New(newloc,planttype) ..() - + if(!dried_type) + dried_type = type src.pixel_x = rand(-5.0, 5) src.pixel_y = rand(-5.0, 5) @@ -354,9 +355,8 @@ seed.do_sting(H,src,pick("r_hand","l_hand")) /obj/item/weapon/reagent_containers/food/snacks/grown/dropped(mob/user) - if(!..() || !seed) - return - if(seed.get_trait(TRAIT_BIOLUM)) + ..() + if(seed && seed.get_trait(TRAIT_BIOLUM)) user.SetLuminosity(user.luminosity - seed.get_trait(TRAIT_BIOLUM)) SetLuminosity(seed.get_trait(TRAIT_BIOLUM)) diff --git a/code/modules/hydroponics/seed_mobs.dm b/code/modules/hydroponics/seed_mobs.dm index d31f1843804..3e0e8994c2f 100644 --- a/code/modules/hydroponics/seed_mobs.dm +++ b/code/modules/hydroponics/seed_mobs.dm @@ -73,8 +73,7 @@ host << "You are [host], one of a race of drifting interstellar plantlike creatures that sometimes share their seeds with human traders." host << "Too much darkness will send you into shock and starve you, but light will help you heal." - var/newname = input(host,"Enter a name, or leave blank for the default name.", "Name change","") as text - newname = sanitize(newname) + var/newname = sanitizeSafe(input(host,"Enter a name, or leave blank for the default name.", "Name change","") as text, MAX_NAME_LEN) if (newname != "") host.real_name = newname host.name = host.real_name \ No newline at end of file diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 279be157750..192efd5ecfc 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -31,7 +31,7 @@ O.loc = src update_icon() else if(istype(O, /obj/item/weapon/pen)) - var/newname = sanitizeSafe(input("What would you like to title this bookshelf?"), MAX_MESSAGE_LEN) + var/newname = sanitizeSafe(input("What would you like to title this bookshelf?"), MAX_NAME_LEN) if(!newname) return else diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 698815d0a91..f616d57ac44 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -62,7 +62,7 @@ matter = list("metal" = 3750) var/digspeed = 40 //moving the delay to an item var so R&D can make improved picks. --NEO origin_tech = "materials=1;engineering=1" - attack_verb = list("hit", "pierced", "sliced", "attacked", "drilled") + attack_verb = list("hit", "pierced", "sliced", "attacked") var/drill_sound = 'sound/weapons/Genhit.ogg' var/drill_verb = "drilling" sharp = 1 @@ -107,6 +107,7 @@ digspeed = 20 origin_tech = "materials=4" desc = "This makes no metallurgic sense." + drill_verb = "picking" /obj/item/weapon/pickaxe/plasmacutter name = "plasma cutter" @@ -127,7 +128,8 @@ item_state = "dpickaxe" digspeed = 10 origin_tech = "materials=6;engineering=4" - desc = "A pickaxe with a diamond pick head, this is just like minecraft." + desc = "A pickaxe with a diamond pick head." + drill_verb = "picking" /obj/item/weapon/pickaxe/diamonddrill //When people ask about the badass leader of the mining tools, they are talking about ME! name = "diamond mining drill" diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 7b5f7401351..ee8194a004a 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -29,6 +29,7 @@ var/global/list/image/ghost_sightless_images = list() //this is a list of images var/image/ghostimage = null //this mobs ghost image, for deleting and stuff var/ghostvision = 1 //is the ghost able to see things humans can't? var/seedarkness = 1 + incorporeal_move = 1 /mob/dead/observer/New(mob/body) sight |= SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF @@ -193,29 +194,6 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp ghost.timeofdeath = world.time // Because the living mob won't have a time of death and we want the respawn timer to work properly. announce_ghost_joinleave(ghost) - -/mob/dead/observer/Move(NewLoc, direct) - following = null - set_dir(direct) - if(NewLoc) - loc = NewLoc - for(var/obj/effect/step_trigger/S in NewLoc) - S.Crossed(src) - - return - loc = get_turf(src) //Get out of closets and such as a ghost - if((direct & NORTH) && y < world.maxy) - y++ - else if((direct & SOUTH) && y > 1) - y-- - if((direct & EAST) && x < world.maxx) - x++ - else if((direct & WEST) && x > 1) - x-- - - for(var/obj/effect/step_trigger/S in locate(x, y, z)) //<-- this is dumb - S.Crossed(src) - /mob/dead/observer/can_use_hands() return 0 /mob/dead/observer/is_active() return 0 @@ -316,11 +294,23 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(!thearea) return var/list/L = list() - for(var/turf/T in get_area_turfs(thearea.type)) - L+=T + var/holyblock = 0 + + if(usr.invisibility <= SEE_INVISIBLE_LIVING || (usr.mind in cult.current_antagonists)) + for(var/turf/T in get_area_turfs(thearea.type)) + if(!T.holy) + L+=T + else + holyblock = 1 + else + for(var/turf/T in get_area_turfs(thearea.type)) + L+=T if(!L || !L.len) - usr << "No area available." + if(holyblock) + usr << "This area has been entirely made into sacred grounds, you cannot enter it while you are in this plane of existence!" + else + usr << "No area available." usr.loc = pick(L) following = null @@ -336,7 +326,14 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp // This is the ghost's follow verb with an argument /mob/dead/observer/proc/ManualFollow(var/atom/movable/target) - if(target && target != src) + if(!target) + return + + var/turf/targetloc = get_turf(target) + if(check_holy(targetloc)) + usr << "You cannot follow a mob standing on holy grounds!" + return + if(target != src) if(following && following == target) return following = target @@ -351,6 +348,15 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp loc = T sleep(15) +/mob/proc/check_holy(var/turf/T) + return 0 + +/mob/dead/observer/check_holy(var/turf/T) + if(check_rights(R_ADMIN|R_FUN, 0, src)) + return 0 + + return (T && T.holy) && (invisibility <= SEE_INVISIBLE_LIVING || (mind in cult.current_antagonists)) + /mob/dead/observer/verb/jumptomob(target in getmobs()) //Moves the ghost instead of just changing the ghosts's eye -Nodrak set category = "Ghost" set name = "Jump to Mob" @@ -393,6 +399,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp set hidden = 1 src << "\red You are dead! You have no mind to store memory!" +/mob/dead/observer/Post_Incorpmove() + following = null + /mob/dead/observer/verb/analyze_air() set name = "Analyze Air" set category = "Ghost" @@ -473,6 +482,14 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp src << browse(dat, "window=manifest;size=370x420;can_close=1") +//This is called when a ghost is drag clicked to something. +/mob/dead/observer/MouseDrop(atom/over) + if (isobserver(usr) && usr.client && usr.client.holder && isliving(over)) + if (usr.client.holder.cmd_ghost_drag(src,over)) + return + + return ..() + //Used for drawing on walls with blood puddles as a spooky ghost. /mob/dead/verb/bloody_doodle() diff --git a/code/modules/mob/dead/observer/say.dm b/code/modules/mob/dead/observer/say.dm index be9f1615e0b..6f7d99c6160 100644 --- a/code/modules/mob/dead/observer/say.dm +++ b/code/modules/mob/dead/observer/say.dm @@ -18,7 +18,7 @@ /mob/dead/observer/emote(var/act, var/type, var/message) - message = sanitize(message) + //message = sanitize(message) - already sanitized in verb/me_verb() if(!message) return diff --git a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm b/code/modules/mob/freelook/ai/cameranet.dm similarity index 93% rename from code/modules/mob/living/silicon/ai/freelook/cameranet.dm rename to code/modules/mob/freelook/ai/cameranet.dm index d2d042c778a..2fb3c4b5ced 100644 --- a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm +++ b/code/modules/mob/freelook/ai/cameranet.dm @@ -2,8 +2,6 @@ // // The datum containing all the chunks. -var/datum/visualnet/camera/cameranet = new() - /datum/visualnet/camera // The cameras on the map, no matter if they work or not. Updated in obj/machinery/camera.dm by New() and Del(). var/list/cameras = list() diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/freelook/ai/chunk.dm similarity index 100% rename from code/modules/mob/living/silicon/ai/freelook/chunk.dm rename to code/modules/mob/freelook/ai/chunk.dm diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/freelook/ai/eye.dm similarity index 90% rename from code/modules/mob/living/silicon/ai/freelook/eye.dm rename to code/modules/mob/freelook/ai/eye.dm index 8bc60b819da..a0df415c033 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/freelook/ai/eye.dm @@ -36,11 +36,13 @@ eyeobj.owner = src eyeobj.name = "[src.name] (AI Eye)" // Give it a name spawn(5) - eyeobj.loc = src.loc + if(eyeobj) + eyeobj.loc = src.loc /mob/living/silicon/ai/Del() - eyeobj.owner = null - del(eyeobj) // No AI, no Eye + if(eyeobj) + eyeobj.owner = null + del(eyeobj) // No AI, no Eye ..() /atom/proc/move_camera_by_click() diff --git a/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm b/code/modules/mob/freelook/ai/update_triggers.dm similarity index 100% rename from code/modules/mob/living/silicon/ai/freelook/update_triggers.dm rename to code/modules/mob/freelook/ai/update_triggers.dm diff --git a/code/modules/mob/freelook/chunk.dm b/code/modules/mob/freelook/chunk.dm index 8c6c7d043aa..9b6b562df33 100644 --- a/code/modules/mob/freelook/chunk.dm +++ b/code/modules/mob/freelook/chunk.dm @@ -101,7 +101,7 @@ var/turf/t = turf if(obscuredTurfs[t]) if(!t.obfuscations[obfuscation.type]) - t.obfuscations[obfuscation.type] = image(obfuscation.icon, t, obfuscation.icon_state, 15) + t.obfuscations[obfuscation.type] = image(obfuscation.icon, t, obfuscation.icon_state, OBFUSCATION_LAYER) obscured += t.obfuscations[obfuscation.type] for(var/eye in seenby) @@ -140,7 +140,7 @@ for(var/turf in obscuredTurfs) var/turf/t = turf if(!t.obfuscations[obfuscation.type]) - t.obfuscations[obfuscation.type] = image(obfuscation.icon, t, obfuscation.icon_state, 15) + t.obfuscations[obfuscation.type] = image(obfuscation.icon, t, obfuscation.icon_state, OBFUSCATION_LAYER) obscured += t.obfuscations[obfuscation.type] #undef UPDATE_BUFFER diff --git a/code/modules/mob/freelook/eye.dm b/code/modules/mob/freelook/eye.dm index 70ae8cb7002..a9fefbc5bd9 100644 --- a/code/modules/mob/freelook/eye.dm +++ b/code/modules/mob/freelook/eye.dm @@ -12,6 +12,7 @@ var/sprint = 10 var/cooldown = 0 var/acceleration = 1 + var/owner_follows_eye = 0 see_in_dark = 7 status_flags = GODMODE @@ -35,12 +36,14 @@ mob/eye/Del() ghost_darkness_images -= ghostimage ghost_sightless_images -= ghostimage del(ghostimage) - ghostimage = null; + ghostimage = null updateallghostimages() ..() // Movement code. Returns 0 to stop air movement from moving it. -/mob/eye/Move() +/mob/eye/Move(n, direct) + if(owner == src) + EyeMove(n, direct) return 0 /mob/eye/examinate() @@ -60,15 +63,35 @@ mob/eye/Del() /mob/eye/proc/setLoc(var/T) if(owner) T = get_turf(T) - loc = T + if(T != loc) + loc = T - if(owner.client) - owner.client.eye = src + if(owner.client) + owner.client.eye = src - visualnet.visibility(src) - return 1 + if(owner_follows_eye) + visualnet.updateVisibility(owner, 0) + owner.loc = loc + visualnet.updateVisibility(owner, 0) + + visualnet.visibility(src) + return 1 return 0 +/mob/eye/proc/getLoc() + if(owner) + if(!isturf(owner.loc) || !owner.client) + return + return loc +/mob + var/mob/eye/eyeobj + +/mob/proc/EyeMove(n, direct) + if(!eyeobj) + return + + return eyeobj.EyeMove(n, direct) + /mob/eye/EyeMove(n, direct) var/initial = initial(sprint) var/max_sprint = 50 @@ -86,18 +109,3 @@ mob/eye/Del() sprint = min(sprint + 0.5, max_sprint) else sprint = initial - -/mob/eye/proc/getLoc() - if(owner) - if(!isturf(owner.loc) || !owner.client) - return - return loc - -/mob - var/mob/eye/eyeobj - -/mob/proc/EyeMove(n, direct) - if(!eyeobj) - return - - return eyeobj.EyeMove(n, direct) diff --git a/code/modules/mob/freelook/life.dm b/code/modules/mob/freelook/life.dm new file mode 100644 index 00000000000..1d1248e872e --- /dev/null +++ b/code/modules/mob/freelook/life.dm @@ -0,0 +1,7 @@ +/mob/eye/Life() + ..() + // If we lost our client, reset the list of visible chunks so they update properly on return + if(owner == src && !client) + visibleChunks.Cut() + /*else if(owner && !owner.client) + visibleChunks.Cut()*/ diff --git a/code/modules/mob/freelook/mask/chunk.dm b/code/modules/mob/freelook/mask/chunk.dm new file mode 100644 index 00000000000..b0973951cc2 --- /dev/null +++ b/code/modules/mob/freelook/mask/chunk.dm @@ -0,0 +1,39 @@ +// CULT CHUNK +// +// A 16x16 grid of the map with a list of turfs that can be seen, are visible and are dimmed. +// Allows the Eye to stream these chunks and know what it can and cannot see. + +/datum/obfuscation/cult + icon_state = "white" + +/datum/chunk/cult + obfuscation = new /datum/obfuscation/cult() + +/datum/chunk/cult/acquireVisibleTurfs(var/list/visible) + for(var/mob/living/L in living_mob_list) + for(var/turf/t in L.seen_turfs()) + visible[t] = t + +/mob/living/proc/seen_turfs() + return seen_turfs_in_range(src, 3) + +/mob/living/carbon/human/seen_turfs() + /*if(src.isSynthetic()) + return list()*/ + + if(mind in cult.current_antagonists) + return seen_turfs_in_range(src, client ? client.view : 7) + return ..() + +/mob/living/silicon/seen_turfs() + return list() + +/mob/living/simple_animal/seen_turfs() + return seen_turfs_in_range(src, 1) + +/mob/living/simple_animal/shade/narsie/seen_turfs() + return view(2, src) + +/proc/seen_turfs_in_range(var/source, var/range) + var/turf/pos = get_turf(source) + return hear(range, pos) diff --git a/code/modules/mob/freelook/mask/cultnet.dm b/code/modules/mob/freelook/mask/cultnet.dm new file mode 100644 index 00000000000..4e4e01b8472 --- /dev/null +++ b/code/modules/mob/freelook/mask/cultnet.dm @@ -0,0 +1,15 @@ +// CULT NET +// +// The datum containing all the chunks. + +/datum/visualnet/cult + chunk_type = /datum/chunk/cult + +/datum/visualnet/cult/proc/provides_vision(var/mob/living/L) + return L.provides_cult_vision() + +/mob/living/proc/provides_cult_vision() + return 1 + +/mob/living/silicon/provides_cult_vision() + return 0 diff --git a/code/modules/mob/freelook/mask/eye.dm b/code/modules/mob/freelook/mask/eye.dm new file mode 100644 index 00000000000..a0a99603223 --- /dev/null +++ b/code/modules/mob/freelook/mask/eye.dm @@ -0,0 +1,13 @@ +// MASK EYE +// +// A mob that a cultists controls to look around the station with. +// It streams chunks as it moves around, which will show it what the cultist can and cannot see. + +/mob/eye/maskEye + name = "Eye of Nar-Sie" + acceleration = 0 + owner_follows_eye = 1 + +/mob/eye/maskEye/New() + ..() + visualnet = cultnet diff --git a/code/modules/mob/freelook/mask/update_triggers.dm b/code/modules/mob/freelook/mask/update_triggers.dm new file mode 100644 index 00000000000..d80527a2fa2 --- /dev/null +++ b/code/modules/mob/freelook/mask/update_triggers.dm @@ -0,0 +1,50 @@ +//UPDATE TRIGGERS, when the chunk (and the surrounding chunks) should update. + +#define CULT_UPDATE_BUFFER 30 + +/mob/living/var/updating_cult_vision = 0 + +/mob/living/Move() + var/oldLoc = src.loc + . = ..() + if(.) + if(cultnet.provides_vision(src)) + if(!updating_cult_vision) + updating_cult_vision = 1 + spawn(CULT_UPDATE_BUFFER) + if(oldLoc != src.loc) + cultnet.updateVisibility(oldLoc, 0) + cultnet.updateVisibility(loc, 0) + updating_cult_vision = 0 + +#undef CULT_UPDATE_BUFFER + +/mob/living/New() + ..() + cultnet.updateVisibility(src, 0) + +/mob/living/Del() + cultnet.updateVisibility(src, 0) + ..() + +/mob/living/rejuvenate() + var/was_dead = stat == DEAD + ..() + if(was_dead && stat != DEAD) + // Arise! + cultnet.updateVisibility(src, 0) + +/mob/living/death(gibbed, deathmessage="seizes up and falls limp...") + if(..()) + // If true, the mob went from living to dead (assuming everyone has been overriding as they should...) + cultnet.updateVisibility(src) + +/datum/antagonist/add_antagonist(var/datum/mind/player) + ..() + if(src == cult) + cultnet.updateVisibility(player.current, 0) + +/datum/antagonist/remove_antagonist(var/datum/mind/player, var/show_message, var/implanted) + ..() + if(src == cult) + cultnet.updateVisibility(player.current, 0) diff --git a/code/modules/mob/living/silicon/ai/freelook/read_me.dm b/code/modules/mob/freelook/read_me.dm similarity index 100% rename from code/modules/mob/living/silicon/ai/freelook/read_me.dm rename to code/modules/mob/freelook/read_me.dm diff --git a/code/modules/mob/freelook/visualnet.dm b/code/modules/mob/freelook/visualnet.dm index dedc23ab2dd..161aeb92b82 100644 --- a/code/modules/mob/freelook/visualnet.dm +++ b/code/modules/mob/freelook/visualnet.dm @@ -2,8 +2,6 @@ // // The datum containing all the chunks. -var/global/list/visual_nets = new() - /datum/visualnet // The chunks of the map, mapping the areas that an object can see. var/list/chunks = list() diff --git a/code/modules/mob/language/language.dm b/code/modules/mob/language/language.dm index d2cb8a82ab4..bf5b51a1b13 100644 --- a/code/modules/mob/language/language.dm +++ b/code/modules/mob/language/language.dm @@ -134,6 +134,12 @@ . = (L in languages) languages.Remove(L) +/mob/living/remove_language(rem_language) + var/datum/language/L = all_languages[rem_language] + if(default_language == L) + default_language = null + return ..() + // Can we speak this language, as opposed to just understanding it? /mob/proc/can_speak(datum/language/speaking) @@ -154,4 +160,32 @@ src << browse(dat, "window=checklanguage") return +/mob/living/check_languages() + var/dat = "Known Languages

      " + + if(default_language) + dat += "Current default language: [default_language] - reset

      " + + for(var/datum/language/L in languages) + if(!(L.flags & NONGLOBAL)) + if(L == default_language) + dat += "[L.name] (:[L.key]) - default - reset
      [L.desc]

      " + else + dat += "[L.name] (:[L.key]) - set default
      [L.desc]

      " + + src << browse(dat, "window=checklanguage") + +/mob/living/Topic(href, href_list) + if(href_list["default_lang"]) + if(href_list["default_lang"] == "reset") + set_default_language(null) + else + var/datum/language/L = all_languages[href_list["default_lang"]] + if(L) + set_default_language(L) + check_languages() + return 1 + else + return ..() + #undef SCRAMBLE_CACHE_LEN diff --git a/code/modules/mob/living/carbon/brain/say.dm b/code/modules/mob/living/carbon/brain/say.dm index d5ac4f756d6..d933dc5d47d 100644 --- a/code/modules/mob/living/carbon/brain/say.dm +++ b/code/modules/mob/living/carbon/brain/say.dm @@ -3,6 +3,8 @@ if (silent) return + message = sanitize(message) + if(!(container && istype(container, /obj/item/device/mmi))) return //No MMI, can't speak, bucko./N else diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index da10a9ea00d..a3b46d64424 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -456,6 +456,9 @@ return 1 /mob/living/carbon/get_default_language() + if(default_language) + return default_language + if(!species) return null return species.default_language ? all_languages[species.default_language] : null diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm index e2ef586f05c..52ba116d43b 100644 --- a/code/modules/mob/living/carbon/human/appearance.dm +++ b/code/modules/mob/living/carbon/human/appearance.dm @@ -1,7 +1,7 @@ -/mob/living/carbon/human/proc/change_appearance(var/flags = APPEARANCE_ALL_HAIR, var/location = src, var/mob/user = src, var/check_species_whitelist = 1, var/list/species_whitelist = list(), var/list/species_blacklist = list()) +/mob/living/carbon/human/proc/change_appearance(var/flags = APPEARANCE_ALL_HAIR, var/location = src, var/mob/user = src, var/check_species_whitelist = 1, var/list/species_whitelist = list(), var/list/species_blacklist = list(), var/datum/topic_state/state = default_state) var/obj/nano_module/appearance_changer/AC = new(location, src, check_species_whitelist, species_whitelist, species_blacklist) AC.flags = flags - AC.ui_interact(user) + AC.ui_interact(user, state = state) /mob/living/carbon/human/proc/change_species(var/new_species) if(!new_species) diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 338b265a4fe..1a9ae03d513 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -74,7 +74,7 @@ mutations.Add(HUSK) status_flags |= DISFIGURED //makes them unknown without fucking up other stuff like admintools - update_body(0) + update_body(1) return /mob/living/carbon/human/proc/Drain() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 1e693fd63fc..d3a7f24b362 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -21,7 +21,10 @@ set_species() if(species) - name = species.get_random_name(gender) + real_name = species.get_random_name(gender) + name = real_name + if(mind) + mind.name = real_name var/datum/reagents/R = new/datum/reagents(1000) reagents = R @@ -863,11 +866,11 @@ var/list/creatures = list() for(var/mob/living/carbon/h in world) creatures += h - var/mob/target = input ("Who do you want to project your mind to ?") as null|anything in creatures + var/mob/target = input("Who do you want to project your mind to ?") as null|anything in creatures if (isnull(target)) return - var/say = input ("What do you wish to say") + var/say = sanitize(input("What do you wish to say")) if(mRemotetalk in target.mutations) target.show_message("\blue You hear [src.real_name]'s voice: [say]") else @@ -926,23 +929,12 @@ germ_level += n /mob/living/carbon/human/revive() - for (var/obj/item/organ/external/O in organs) - O.status &= ~ORGAN_BROKEN - O.status &= ~ORGAN_BLEEDING - O.status &= ~ORGAN_SPLINTED - O.status &= ~ORGAN_CUT_AWAY - O.status &= ~ORGAN_ATTACHABLE - O.wounds.Cut() - O.heal_damage(1000,1000,1,1) - - var/obj/item/organ/external/head/h = organs_by_name["head"] - h.disfigured = 0 if(species && !(species.flags & NO_BLOOD)) vessel.add_reagent("blood",560-vessel.total_volume) fixblood() - // Fix up any missing organs. + // Fix up all organs. // This will ignore any prosthetics in the prefs currently. species.create_organs(src) @@ -954,11 +946,9 @@ H.brainmob.mind.transfer_to(src) del(H) - for(var/obj/item/organ/I in internal_organs) - I.damage = 0 - for (var/datum/disease/virus in viruses) virus.cure() + for (var/ID in virus2) var/datum/disease2/disease/V = virus2[ID] V.cure(src) @@ -1368,4 +1358,4 @@ /mob/living/carbon/human/drop_from_inventory(var/obj/item/W, var/atom/Target = null) if(W in organs) return - ..() \ No newline at end of file + ..() diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index ebdfbd8b5aa..b7cecf3d7e1 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -100,9 +100,9 @@ var/hit_zone = H.zone_sel.selecting var/obj/item/organ/external/affecting = get_organ(hit_zone) - if(!affecting || affecting.status & ORGAN_DESTROYED) + if(!affecting || affecting.is_stump() || (affecting.status & ORGAN_DESTROYED)) M << "They are missing that limb!" - return + return 1 switch(src.a_intent) if(I_HELP) @@ -214,25 +214,18 @@ w_uniform.add_fingerprint(M) var/obj/item/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting)) - if(istype(r_hand,/obj/item/weapon/gun) || istype(l_hand,/obj/item/weapon/gun)) - var/obj/item/weapon/gun/W = null - var/chance = 0 + var/list/holding = list(get_active_hand() = 40, get_inactive_hand = 20) - if (istype(l_hand,/obj/item/weapon/gun)) - W = l_hand - chance = hand ? 40 : 20 - - if (istype(r_hand,/obj/item/weapon/gun)) - W = r_hand - chance = !hand ? 40 : 20 - - if (prob(chance)) - visible_message("[src]'s [W] goes off during struggle!") + //See if they have any guns that might go off + for(var/obj/item/weapon/gun/W in holding) + if(W && prob(holding[W])) var/list/turfs = list() for(var/turf/T in view()) turfs += T - var/turf/target = pick(turfs) - return W.afterattack(target,src) + if(turfs.len) + var/turf/target = pick(turfs) + visible_message("[src]'s [W] goes off during the struggle!") + return W.afterattack(target,src) var/randn = rand(1, 100) if(!(species.flags & NO_SLIP) && randn <= 25) @@ -245,39 +238,25 @@ visible_message("[M] attempted to push [src]!") return - var/talked = 0 // BubbleWrap - if(randn <= 60) - //BubbleWrap: Disarming breaks a pull - if(pulling) - visible_message("\red [M] has broken [src]'s grip on [pulling]!") - talked = 1 - stop_pulling() + //See about breaking grips or pulls + if(break_all_grabs(M)) + playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + return - //BubbleWrap: Disarming also breaks a grab - this will also stop someone being choked, won't it? - if(istype(l_hand, /obj/item/weapon/grab)) - var/obj/item/weapon/grab/lgrab = l_hand - if(lgrab.affecting) - visible_message("\red [M] has broken [src]'s grip on [lgrab.affecting]!") - talked = 1 - spawn(1) - del(lgrab) - if(istype(r_hand, /obj/item/weapon/grab)) - var/obj/item/weapon/grab/rgrab = r_hand - if(rgrab.affecting) - visible_message("\red [M] has broken [src]'s grip on [rgrab.affecting]!") - talked = 1 - spawn(1) - del(rgrab) - //End BubbleWrap - - if(!talked) //BubbleWrap - drop_item() - visible_message("\red [M] has disarmed [src]!") + //Actually disarm them + for(var/obj/item/I in holding) + if(I) + drop_from_inventory(I) + visible_message("[M] has disarmed [src]!") + playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + return + + //if M (and only M) has a grab on src, start dislocating limbs + if(grab_joint(M)) playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) return - playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) visible_message("\red [M] attempted to disarm [src]!") return @@ -302,16 +281,68 @@ return 1 /mob/living/carbon/human/proc/attack_joint(var/obj/item/W, var/mob/living/user, var/def_zone) - var/target_zone = def_zone? check_zone(def_zone) : get_zone_with_miss_chance(user.zone_sel.selecting, src) + if(!def_zone) def_zone = user.zone_sel.selecting + var/target_zone = get_zone_with_miss_chance(check_zone(def_zone), src) + if(user == src) // Attacking yourself can't miss target_zone = user.zone_sel.selecting if(!target_zone) return null var/obj/item/organ/external/organ = get_organ(check_zone(target_zone)) - if(!organ || organ.is_dislocated() || organ.dislocated == -1) + if(!organ || (organ.dislocated == 2) || (organ.dislocated == -1)) return null var/dislocation_str if(prob(W.force)) - dislocation_str = "[src]'s [organ.joint] [pick("gives way","caves in","crumbles","collapses")] with a grisly crunch!" + dislocation_str = "[src]'s [organ.joint] [pick("gives way","caves in","crumbles","collapses")]!" organ.dislocate() return dislocation_str + +//Used to attack a joint through grabbing +/mob/living/carbon/human/proc/grab_joint(var/mob/living/user, var/def_zone) + var/has_grab = 0 + for(var/obj/item/weapon/grab/G in list(user.l_hand, user.r_hand)) + if(G.affecting == src && G.state == GRAB_NECK) + has_grab = 1 + break + + if(!has_grab) + return 0 + + if(!def_zone) def_zone = user.zone_sel.selecting + var/target_zone = check_zone(def_zone) + if(!target_zone) + return 0 + var/obj/item/organ/external/organ = get_organ(check_zone(target_zone)) + if(!organ || organ.is_dislocated() || organ.dislocated == -1) + return 0 + + user.visible_message("[user] begins to dislocate [src]'s [organ.joint]!") + if(do_after(user, 100)) + organ.dislocate() + src.visible_message("[src]'s [organ.joint] [pick("gives way","caves in","crumbles","collapses")]!") + return 1 + return 0 + +//Breaks all grips and pulls that the mob currently has. +/mob/living/carbon/human/proc/break_all_grabs(mob/living/carbon/user) + var/success = 0 + if(pulling) + visible_message("[user] has broken [src]'s grip on [pulling]!") + success = 1 + stop_pulling() + + if(istype(l_hand, /obj/item/weapon/grab)) + var/obj/item/weapon/grab/lgrab = l_hand + if(lgrab.affecting) + visible_message("[user] has broken [src]'s grip on [lgrab.affecting]!") + success = 1 + spawn(1) + del(lgrab) + if(istype(r_hand, /obj/item/weapon/grab)) + var/obj/item/weapon/grab/rgrab = r_hand + if(rgrab.affecting) + visible_message("[user] has broken [src]'s grip on [rgrab.affecting]!") + success = 1 + spawn(1) + del(rgrab) + return success diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index de7a982b1a6..705879c633b 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -1,7 +1,7 @@ /mob/living/carbon/human/proc/update_eyes() - if(internal_organs_by_name["eyes"]) - var/obj/item/organ/eyes/eyes = internal_organs_by_name["eyes"] - eyes.eye_colour = list(r_eyes,g_eyes,b_eyes) + var/obj/item/organ/eyes/eyes = internal_organs_by_name["eyes"] + if(eyes) + eyes.update_colour() regenerate_icons() /mob/living/carbon/var/list/internal_organs = list() @@ -70,12 +70,12 @@ for(var/limb_tag in list("l_leg","r_leg","l_foot","r_foot")) var/obj/item/organ/external/E = organs_by_name[limb_tag] - if(!E) - stance_damage += 2 - else if (E.status & ORGAN_DESTROYED) + if(!E || (E.status & (ORGAN_DESTROYED|ORGAN_DEAD))) stance_damage += 2 // let it fail even if just foot&leg - else if (E.is_malfunctioning() || (E.is_broken() && !(E.status & ORGAN_SPLINTED)) || !E.is_usable()) + else if (E.is_malfunctioning() || E.is_broken() || !E.is_usable()) stance_damage += 1 + else if (E.is_dislocated()) + stance_damage += 0.5 // Canes and crutches help you stand (if the latter is ever added) // One cane mitigates a broken leg+foot, or a missing foot. @@ -102,10 +102,14 @@ if(!E || !E.can_grasp || (E.status & ORGAN_SPLINTED)) continue - if(E.is_broken()) + if(E.is_broken() || E.is_dislocated()) if(E.body_part == HAND_LEFT) + if(!l_hand) + continue drop_from_inventory(l_hand) else + if(!r_hand) + continue drop_from_inventory(r_hand) var/emote_scream = pick("screams in pain and ", "lets out a sharp cry and ", "cries out and ") diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 10c22f6012a..568822d1051 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -389,7 +389,7 @@ // Lung damage increases the minimum safe pressure. if(species.has_organ["lungs"]) var/obj/item/organ/lungs/L = internal_organs_by_name["lungs"] - if(!L) + if(isnull(L)) safe_pressure_min = INFINITY //No lungs, how are you breathing? else if(L.is_broken()) safe_pressure_min *= 1.5 diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 221fbc12247..10a2dca6aa5 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -3,12 +3,11 @@ if(name != GetVoice()) alt_name = "(as [get_id_name("Unknown")])" - if (istype(src.wear_mask, /obj/item/clothing/mask/muzzle)) - src << "You're muzzled and cannot speak!" - return - message = sanitize(message) - ..(message, alt_name = alt_name) //ohgod we should really be passing a datum here. + ..(message, alt_name = alt_name) + +/mob/living/carbon/human/is_muzzled() + return istype(src.wear_mask, /obj/item/clothing/mask/muzzle) /mob/living/carbon/human/proc/forcesay(list/append) if(stat == CONSCIOUS) diff --git a/code/modules/mob/living/carbon/human/species/outsider/vox.dm b/code/modules/mob/living/carbon/human/species/outsider/vox.dm index c037d81fb73..62ba2e49e86 100644 --- a/code/modules/mob/living/carbon/human/species/outsider/vox.dm +++ b/code/modules/mob/living/carbon/human/species/outsider/vox.dm @@ -30,7 +30,7 @@ poison_type = "oxygen" siemens_coefficient = 0.2 - flags = IS_WHITELISTED | NO_SCAN | HAS_EYE_COLOR + flags = CAN_JOIN | IS_WHITELISTED | NO_SCAN | HAS_EYE_COLOR blood_color = "#2299FC" flesh_color = "#808D11" @@ -47,8 +47,7 @@ "liver" = /obj/item/organ/liver, "kidneys" = /obj/item/organ/kidneys, "brain" = /obj/item/organ/brain, - "eyes" = /obj/item/organ/eyes, - "stack" = /obj/item/organ/stack/vox + "eyes" = /obj/item/organ/eyes ) /datum/species/vox/get_random_name(var/gender) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index b97e8ceed67..6fddbd92ec2 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -168,6 +168,10 @@ /datum/species/proc/get_random_name(var/gender) var/datum/language/species_language = all_languages[language] + if(!species_language) + species_language = all_languages[default_language] + if(!species_language) + return "unknown" return species_language.get_random_name(gender) /datum/species/proc/create_organs(var/mob/living/carbon/human/H) //Handles creation of mob organs. diff --git a/code/modules/mob/living/carbon/human/species/station/monkey.dm b/code/modules/mob/living/carbon/human/species/station/monkey.dm index 0166900a0fb..64e12eadfa1 100644 --- a/code/modules/mob/living/carbon/human/species/station/monkey.dm +++ b/code/modules/mob/living/carbon/human/species/station/monkey.dm @@ -45,11 +45,8 @@ if(prob(1)) H.emote(pick("scratch","jump","roll","tail")) -/datum/species/monkey/handle_post_spawn(var/mob/living/carbon/human/H) - H.real_name = "[lowertext(name)] ([rand(100,999)])" - H.name = H.real_name - - ..() +/datum/species/monkey/get_random_name() + return "[lowertext(name)] ([rand(100,999)])" /datum/species/monkey/tajaran name = "Farwa" diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm index 913e3e71ad6..e94db830d72 100644 --- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm +++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm @@ -61,6 +61,9 @@ var/weeds_heal_rate = 1 // Health regen on weeds. var/weeds_plasma_rate = 5 // Plasma regen on weeds. +/datum/species/xenos/get_random_name() + return "alien [caste_name] ([alien_number])" + /datum/species/xenos/can_understand(var/mob/other) if(istype(other,/mob/living/carbon/alien/larva)) diff --git a/code/modules/mob/living/carbon/human/unarmed_attack.dm b/code/modules/mob/living/carbon/human/unarmed_attack.dm index 148baf66187..155a1f23b78 100644 --- a/code/modules/mob/living/carbon/human/unarmed_attack.dm +++ b/code/modules/mob/living/carbon/human/unarmed_attack.dm @@ -41,12 +41,12 @@ if (target.l_hand) // Disarm left hand //Urist McAssistant dropped the macguffin with a scream just sounds odd. Plus it doesn't work with NO_PAIN - target.visible_message("\The [target.l_hand] was knocked right out of [src]'s grasp!") + target.visible_message("\The [target.l_hand] was knocked right out of [target]'s grasp!") target.drop_l_hand() if("r_arm", "r_hand") if (target.r_hand) // Disarm right hand - target.visible_message("\The [target.r_hand] was knocked right out of [src]'s grasp!") + target.visible_message("\The [target.r_hand] was knocked right out of [target]'s grasp!") target.drop_r_hand() if("chest") if(!target.lying) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 0882c558c7e..dbc78f513cf 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -237,24 +237,30 @@ var/global/list/damage_icon_parts = list() //CACHING: Generate an index key from visible bodyparts. //0 = destroyed, 1 = normal, 2 = robotic, 3 = necrotic. - //Create a new, blank icon for our mob to use. if(stand_icon) del(stand_icon) stand_icon = new(species.icon_template ? species.icon_template : 'icons/mob/human.dmi',"blank") + var/icon_key = "[species.race_key][g][s_tone][r_skin][g_skin][b_skin]" + var/obj/item/organ/eyes/eyes = internal_organs_by_name["eyes"] - var/icon_key = "[species.race_key][g][s_tone]" - for(var/obj/item/organ/external/part in organs) - if(part.is_stump() || (part.status & ORGAN_DESTROYED)) - icon_key = "[icon_key]0" + if(eyes) + icon_key += "[rgb(eyes.eye_colour[1], eyes.eye_colour[2], eyes.eye_colour[3])]" + else + icon_key += "#000000" + + for(var/organ_tag in species.has_limbs) + var/obj/item/organ/external/part = organs_by_name[organ_tag] + if(isnull(part) || part.is_stump() || (part.status & ORGAN_DESTROYED)) + icon_key += "0" else if(part.status & ORGAN_ROBOT) - icon_key = "[icon_key]2[part.model ? "-[part.model]": ""]" + icon_key += "2[part.model ? "-[part.model]": ""]" else if(part.status & ORGAN_DEAD) - icon_key = "[icon_key]3" + icon_key += "3" else - icon_key = "[icon_key]1" + icon_key += "1" - icon_key = "[icon_key][husk ? 1 : 0][fat ? 1 : 0][hulk ? 1 : 0][skeleton ? 1 : 0][s_tone]" + icon_key = "[icon_key][husk ? 1 : 0][fat ? 1 : 0][hulk ? 1 : 0][skeleton ? 1 : 0]" var/icon/base_icon if(human_icon_cache[icon_key]) @@ -784,11 +790,11 @@ var/global/list/damage_icon_parts = list() /mob/living/carbon/human/update_inv_r_hand(var/update_icons=1) if(r_hand) r_hand.screen_loc = ui_rhand //TODO - + var/t_icon = INV_R_HAND_DEF_ICON if(r_hand.item_icons && (icon_r_hand in r_hand.item_icons)) t_icon = r_hand.item_icons[icon_r_hand] - + var/t_state = r_hand.item_state //useful for clothing that changes icon_state but retains the same sprite on the mob when held in hand if(!t_state) t_state = r_hand.icon_state if(r_hand.icon_override) @@ -800,18 +806,18 @@ var/global/list/damage_icon_parts = list() if (handcuffed) drop_r_hand() else overlays_standing[R_HAND_LAYER] = null - + if(update_icons) update_icons() /mob/living/carbon/human/update_inv_l_hand(var/update_icons=1) if(l_hand) l_hand.screen_loc = ui_lhand //TODO - + var/t_icon = INV_L_HAND_DEF_ICON if(l_hand.item_icons && (icon_l_hand in l_hand.item_icons)) t_icon = l_hand.item_icons[icon_l_hand] - + var/t_state = l_hand.item_state //useful for clothing that changes icon_state but retains the same sprite on the mob when held in hand if(!t_state) t_state = l_hand.icon_state if(l_hand.icon_override) @@ -823,7 +829,7 @@ var/global/list/damage_icon_parts = list() if (handcuffed) drop_l_hand() else overlays_standing[L_HAND_LAYER] = null - + if(update_icons) update_icons() /mob/living/carbon/human/proc/update_tail_showing(var/update_icons=1) diff --git a/code/modules/mob/living/carbon/metroid/death.dm b/code/modules/mob/living/carbon/metroid/death.dm index 022726b00ac..d5510ac509c 100644 --- a/code/modules/mob/living/carbon/metroid/death.dm +++ b/code/modules/mob/living/carbon/metroid/death.dm @@ -10,14 +10,13 @@ is_adult = 0 maxHealth = 150 revive() - regenerate_icons() if (!client) rabid = 1 number = rand(1, 1000) name = "[colour] [is_adult ? "adult" : "baby"] slime ([number])" return . = ..(gibbed, "seizes up and falls limp...") - + mood = null regenerate_icons() return \ No newline at end of file diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 0e2a237372a..e7e545fb30e 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -71,6 +71,7 @@ mutation_chance = rand(25, 35) var/sanitizedcolour = replacetext(colour, " ", "") coretype = text2path("/obj/item/slime_extract/[sanitizedcolour]") + regenerate_icons() ..(location) /mob/living/carbon/slime/movement_delay() diff --git a/code/modules/mob/living/carbon/metroid/say.dm b/code/modules/mob/living/carbon/metroid/say.dm index f1a1761908b..cd07f6bf3b6 100644 --- a/code/modules/mob/living/carbon/metroid/say.dm +++ b/code/modules/mob/living/carbon/metroid/say.dm @@ -1,4 +1,7 @@ /mob/living/carbon/slime/say(var/message) + + message = sanitize(message) + var/verb = say_quote(message) if(copytext(message,1,2) == "*") diff --git a/code/modules/mob/living/carbon/monkey/update_icons.dm b/code/modules/mob/living/carbon/monkey/update_icons.dm deleted file mode 100644 index 1b3da8f49ab..00000000000 --- a/code/modules/mob/living/carbon/monkey/update_icons.dm +++ /dev/null @@ -1,141 +0,0 @@ -//Monkey Overlays Indexes//////// -#define M_MASK_LAYER 1 -#define M_BACK_LAYER 2 -#define M_HANDCUFF_LAYER 3 -#define M_L_HAND_LAYER 4 -#define M_R_HAND_LAYER 5 -#define TARGETED_LAYER 6 -#define M_FIRE_LAYER 6 -#define M_TOTAL_LAYERS 7 -///////////////////////////////// - -/mob/living/carbon/monkey - var/list/overlays_lying[M_TOTAL_LAYERS] - var/list/overlays_standing[M_TOTAL_LAYERS] - -/mob/living/carbon/monkey/regenerate_icons() - ..() - update_inv_wear_mask(0) - update_inv_back(0) - update_inv_r_hand(0) - update_inv_l_hand(0) - update_inv_handcuffed(0) - update_fire(0) - update_icons() - //Hud Stuff - update_hud() - return - -/mob/living/carbon/monkey/update_icons() - update_hud() - lying_prev = lying //so we don't update overlays for lying/standing unless our stance changes again - overlays.Cut() - for(var/image/I in overlays_standing) - overlays += I - - if(lying) - var/matrix/M = matrix() - M.Turn(90) - M.Translate(1,-6) - src.transform = M - else - var/matrix/M = matrix() - src.transform = M - - -//////// -/mob/living/carbon/monkey/update_inv_wear_mask(var/update_icons=1) - if( wear_mask && istype(wear_mask, /obj/item/clothing/mask) ) - overlays_standing[M_MASK_LAYER] = image("icon" = 'icons/mob/monkey.dmi', "icon_state" = "[wear_mask.icon_state]") - wear_mask.screen_loc = ui_monkey_mask - else - overlays_standing[M_MASK_LAYER] = null - if(update_icons) update_icons() - - -/mob/living/carbon/monkey/update_inv_r_hand(var/update_icons=1) - if(r_hand) - var/t_icon = INV_R_HAND_DEF_ICON - if(r_hand.item_icons && (icon_r_hand in r_hand.item_icons)) - t_icon = r_hand.item_icons[icon_r_hand] - - var/t_state = r_hand.item_state - if(!t_state) t_state = r_hand.icon_state - - overlays_standing[M_R_HAND_LAYER] = image("icon" = t_icon, "icon_state" = t_state) - r_hand.screen_loc = ui_rhand - if (handcuffed) drop_r_hand() - else - overlays_standing[M_R_HAND_LAYER] = null - - if(update_icons) update_icons() - - -/mob/living/carbon/monkey/update_inv_l_hand(var/update_icons=1) - if(l_hand) - var/t_icon = INV_L_HAND_DEF_ICON - if(l_hand.item_icons && (icon_l_hand in l_hand.item_icons)) - t_icon = l_hand.item_icons[icon_l_hand] - - var/t_state = l_hand.item_state - if(!t_state) t_state = l_hand.icon_state - - overlays_standing[M_L_HAND_LAYER] = image("icon" = t_icon, "icon_state" = t_state) - l_hand.screen_loc = ui_lhand - if (handcuffed) drop_l_hand() - else - overlays_standing[M_L_HAND_LAYER] = null - - if(update_icons) update_icons() - - -/mob/living/carbon/monkey/update_inv_back(var/update_icons=1) - if(back) - overlays_standing[M_BACK_LAYER] = image("icon" = 'icons/mob/back.dmi', "icon_state" = "[back.icon_state]") - back.screen_loc = ui_monkey_back - else - overlays_standing[M_BACK_LAYER] = null - if(update_icons) update_icons() - - -/mob/living/carbon/monkey/update_inv_handcuffed(var/update_icons=1) - if(handcuffed) - drop_r_hand() - drop_l_hand() - stop_pulling() - overlays_standing[M_HANDCUFF_LAYER] = image("icon" = 'icons/mob/monkey.dmi', "icon_state" = "handcuff1") - else - overlays_standing[M_HANDCUFF_LAYER] = null - if(update_icons) update_icons() - - -/mob/living/carbon/monkey/update_hud() - if (client) - client.screen |= contents - -//Call when target overlay should be added/removed -/mob/living/carbon/monkey/update_targeted(var/update_icons=1) - if (targeted_by && target_locked) - overlays_standing[TARGETED_LAYER] = target_locked - else if (!targeted_by && target_locked) - del(target_locked) - if (!targeted_by) - overlays_standing[TARGETED_LAYER] = null - if(update_icons) update_icons() - -/mob/living/carbon/monkey/update_fire(var/update_icons=1) - if(on_fire) - overlays_standing[M_FIRE_LAYER] = image("icon"='icons/mob/OnFire.dmi', "icon_state"="Standing", "layer"= -M_FIRE_LAYER) - else - overlays_standing[M_FIRE_LAYER] = null - if(update_icons) update_icons() -//Monkey Overlays Indexes//////// -#undef M_MASK_LAYER -#undef M_BACK_LAYER -#undef M_HANDCUFF_LAYER -#undef M_L_HAND_LAYER -#undef M_R_HAND_LAYER -#undef TARGETED_LAYER -#undef M_FIRE_LAYER -#undef M_TOTAL_LAYERS - diff --git a/code/modules/mob/living/carbon/shock.dm b/code/modules/mob/living/carbon/shock.dm index a83e76ef760..b020bf0a545 100644 --- a/code/modules/mob/living/carbon/shock.dm +++ b/code/modules/mob/living/carbon/shock.dm @@ -36,12 +36,8 @@ if(istype(src,/mob/living/carbon/human)) var/mob/living/carbon/human/M = src for(var/obj/item/organ/external/organ in M.organs) - if (!organ) - continue - else if(organ.status & ORGAN_BROKEN || organ.open) + if(organ && (organ.is_broken() || organ.open)) src.traumatic_shock += 30 - if(organ.status & ORGAN_SPLINTED) - src.traumatic_shock -= 25 if(src.traumatic_shock < 0) src.traumatic_shock = 0 diff --git a/code/modules/mob/living/default_language.dm b/code/modules/mob/living/default_language.dm new file mode 100644 index 00000000000..eb4d3d032f4 --- /dev/null +++ b/code/modules/mob/living/default_language.dm @@ -0,0 +1,25 @@ +/mob/living + var/datum/language/default_language + +/mob/living/verb/set_default_language(language as null|anything in languages) + set name = "Set Default Language" + set category = "IC" + + if(language) + src << "You will now speak [language] if you do not specify a language when speaking." + else + src << "You will now speak whatever your standard default language is if you do not specify one when speaking." + default_language = language + +// Silicons can't neccessarily speak everything in their languages list +/mob/living/silicon/set_default_language(language as null|anything in speech_synthesizer_langs) + ..() + +/mob/living/verb/check_default_language() + set name = "Check Default Language" + set category = "IC" + + if(default_language) + src << "You are currently speaking [default_language] by default." + else + src << "Your current default language is your species or mob type default." diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 0bf49782972..c4175456ec7 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -376,7 +376,8 @@ default behaviour is: /mob/living/proc/revive() rejuvenate() - buckled = initial(src.buckled) + if(buckled) + buckled.unbuckle_mob() if(iscarbon(src)) var/mob/living/carbon/C = src diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 3771bc135e7..8a01f86774b 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -22,9 +22,6 @@ var/last_special = 0 //Used by the resist verb, likely used to prevent players from bypassing next_move by logging in/out. - //Allows mobs to move through dense areas without restriction. For instance, in space or out of holder objects. - var/incorporeal_move = 0 //0 is off, 1 is normal, 2 is for ninjas. - var/t_phoron = null var/t_oxygen = null var/t_sl_gas = null diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 1ce1085648a..3db012b44de 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -80,7 +80,10 @@ proc/get_radio_key_from_channel(var/channel) if(dongle.translate_binary) return 1 /mob/living/proc/get_default_language() - return null + return default_language + +/mob/living/proc/is_muzzled() + return 0 /mob/living/proc/handle_speech_problems(var/message, var/verb) var/list/returns[3] @@ -135,6 +138,10 @@ proc/get_radio_key_from_channel(var/channel) return say_dead(message) return + if(is_muzzled()) + src << "You're muzzled and cannot speak!" + return + var/message_mode = parse_message_mode(message, "headset") switch(copytext(message,1,2)) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 66804f5bfab..af26c7ddb98 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -6,6 +6,7 @@ var/list/ai_verbs_default = list( /mob/living/silicon/ai/proc/ai_announcement, /mob/living/silicon/ai/proc/ai_call_shuttle, // /mob/living/silicon/ai/proc/ai_recall_shuttle, + /mob/living/silicon/ai/proc/ai_emergency_message, /mob/living/silicon/ai/proc/ai_camera_track, /mob/living/silicon/ai/proc/ai_camera_list, /mob/living/silicon/ai/proc/ai_goto_location, @@ -45,7 +46,7 @@ var/list/ai_verbs_default = list( density = 1 status_flags = CANSTUN|CANPARALYSE|CANPUSH shouldnt_see = list(/obj/effect/rune) - var/list/network = list("SS13") + var/list/network = list("Exodus") var/obj/machinery/camera/camera = null var/list/connected_robots = list() var/aiRestorePowerRoutine = 0 @@ -380,6 +381,30 @@ var/list/ai_verbs_default = list( if(confirm == "Yes") cancel_call_proc(src) +/mob/living/silicon/ai/var/emergency_message_cooldown = 0 +/mob/living/silicon/ai/proc/ai_emergency_message() + set category = "AI Commands" + set name = "Send Emergency Message" + + if(check_unable(AI_CHECK_WIRELESS)) + return + if(!is_relay_online()) + usr <<"No Emergency Bluespace Relay detected. Unable to transmit message." + return + if(emergency_message_cooldown) + usr << "Arrays recycling. Please stand by." + return + var/input = input(usr, "Please choose a message to transmit to Centcomm via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response. There is a 30 second delay before you may send another message, be clear, full and concise.", "To abort, send an empty message.", "") + if(!input) + return + Centcomm_announce(input, usr) + usr << "Message transmitted." + log_say("[key_name(usr)] has made an IA Centcomm announcement: [input]") + emergency_message_cooldown = 1 + spawn(300) + emergency_message_cooldown = 0 + + /mob/living/silicon/ai/check_eye(var/mob/user as mob) if (!camera) return null @@ -478,41 +503,41 @@ var/list/ai_verbs_default = list( //Replaces /mob/living/silicon/ai/verb/change_network() in ai.dm & camera.dm //Adds in /mob/living/silicon/ai/proc/ai_network_change() instead //Addition by Mord_Sith to define AI's network change ability -/mob/living/silicon/ai/proc/ai_network_change() - set category = "AI Commands" - set name = "Jump To Network" - unset_machine() - var/cameralist[0] - +/mob/living/silicon/ai/proc/get_camera_network_list() if(check_unable()) return - var/mob/living/silicon/ai/U = usr - + var/list/cameralist = new() for (var/obj/machinery/camera/C in cameranet.cameras) if(!C.can_use()) continue - var/list/tempnetwork = difflist(C.network,restricted_camera_networks,1) - if(tempnetwork.len) - for(var/i in tempnetwork) - cameralist[i] = i - var/old_network = network - network = input(U, "Which network would you like to view?") as null|anything in cameralist + for(var/i in tempnetwork) + cameralist[i] = i - if(!U.eyeobj) - U.view_core() + cameralist = sortAssoc(cameralist) + return cameralist + +/mob/living/silicon/ai/proc/ai_network_change(var/network in get_camera_network_list()) + set category = "AI Commands" + set name = "Jump To Network" + unset_machine() + + if(!network) return - if(isnull(network)) - network = old_network // If nothing is selected - else - for(var/obj/machinery/camera/C in cameranet.cameras) - if(!C.can_use()) - continue - if(network in C.network) - U.eyeobj.setLoc(get_turf(C)) - break + if(!eyeobj) + view_core() + return + + src.network = network + + for(var/obj/machinery/camera/C in cameranet.cameras) + if(!C.can_use()) + continue + if(network in C.network) + eyeobj.setLoc(get_turf(C)) + break src << "\blue Switched to [network] camera network." //End of code by Mord_Sith @@ -668,14 +693,14 @@ var/list/ai_verbs_default = list( /mob/living/silicon/ai/proc/check_unable(var/flags = 0) if(stat == DEAD) - usr << "\red You are dead!" + src << "You are dead!" return 1 if((flags & AI_CHECK_WIRELESS) && src.control_disabled) - usr << "\red Wireless control is disabled!" + src << "Wireless control is disabled!" return 1 if((flags & AI_CHECK_RADIO) && src.aiRadio.disabledAi) - src << "\red System Error - Transceiver Disabled!" + src << "System Error - Transceiver Disabled!" return 1 return 0 diff --git a/code/modules/mob/living/silicon/ai/login.dm b/code/modules/mob/living/silicon/ai/login.dm index b5b6808bac9..5336cd873f3 100644 --- a/code/modules/mob/living/silicon/ai/login.dm +++ b/code/modules/mob/living/silicon/ai/login.dm @@ -1,9 +1,7 @@ /mob/living/silicon/ai/Login() //ThisIsDumb(TM) TODO: tidy this up ¬_¬ ~Carn ..() - for(var/obj/effect/rune/rune in world) - var/image/blood = image(loc = rune) - blood.override = 1 - client.images += blood + for(var/obj/effect/rune/rune in rune_list) + client.images += rune.blood_image regenerate_icons() flash = new /obj/screen() flash.icon_state = "blank" diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index edfe9bea0b6..00e49b659ca 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -117,10 +117,6 @@ if (src.client.statpanel == "Status") show_silenced() - if (proc_holder_list.len)//Generic list for proc_holder objects. - for(var/obj/effect/proc_holder/P in proc_holder_list) - statpanel("[P.panel]","",P) - /mob/living/silicon/pai/check_eye(var/mob/user as mob) if (!src.current) return null diff --git a/code/modules/mob/living/silicon/pai/recruit.dm b/code/modules/mob/living/silicon/pai/recruit.dm index 195d58fb340..294ee515625 100644 --- a/code/modules/mob/living/silicon/pai/recruit.dm +++ b/code/modules/mob/living/silicon/pai/recruit.dm @@ -55,9 +55,9 @@ var/datum/paiController/paiController // Global handler for pAI candidates switch(option) if("name") - t = input("Enter a name for your pAI", "pAI Name", candidate.name) as text + t = sanitizeSafe(input("Enter a name for your pAI", "pAI Name", candidate.name) as text, MAX_NAME_LEN) if(t) - candidate.name = sanitizeSafe(t, MAX_NAME_LEN) + candidate.name = t if("desc") t = input("Enter a description for your pAI", "pAI Description", candidate.description) as message if(t) diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index 68396cba33e..8fd20e1368d 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -14,7 +14,7 @@ lawupdate = 0 density = 1 req_access = list(access_engine, access_robotics) - integrated_light_power = 2 + integrated_light_power = 3 local_transmit = 1 mob_bump_flag = SIMPLE_ANIMAL @@ -24,6 +24,11 @@ //Used for self-mailing. var/mail_destination = "" + var/obj/machinery/drone_fabricator/master_fabricator + var/law_type = /datum/ai_laws/drone + var/module_type = /obj/item/weapon/robot_module/drone + var/can_pull_size = 2 + var/can_pull_mobs holder_type = /obj/item/weapon/holder/drone @@ -36,9 +41,6 @@ add_language("Robot Talk", 0) add_language("Drone Talk", 1) - if(camera && "Robots" in camera.network) - camera.add_network("Engineering") - //They are unable to be upgraded, so let's give them a bit of a better battery. cell.maxcharge = 10000 cell.charge = 10000 @@ -52,16 +54,18 @@ C.max_damage = 10 verbs -= /mob/living/silicon/robot/verb/Namepick - module = new /obj/item/weapon/robot_module/drone(src) - - //Some tidying-up. - flavor_text = "It's a tiny little repair drone. The casing is stamped with an NT logo and the subscript: 'NanoTrasen Recursive Repair Systems: Fixing Tomorrow's Problem, Today!'" updateicon() /mob/living/silicon/robot/drone/init() - laws = new /datum/ai_laws/drone() + if(!laws) laws = new law_type + if(!module) module = new module_type(src) + aiCamera = new/obj/item/device/camera/siliconcam/drone_camera(src) + flavor_text = "It's a tiny little repair drone. The casing is stamped with an NT logo and the subscript: 'NanoTrasen Recursive Repair Systems: Fixing Tomorrow's Problem, Today!'" playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 0) + spawn(1) + if(camera && ("Robots" in camera.network)) + camera.add_network("Engineering") //Redefining some robot procs... /mob/living/silicon/robot/drone/SetName(pickedName as text) @@ -91,26 +95,26 @@ /mob/living/silicon/robot/drone/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W, /obj/item/borg/upgrade/)) - user << "\red The maintenance drone chassis not compatible with \the [W]." + user << "\The [src] is not compatible with \the [W]." return else if (istype(W, /obj/item/weapon/crowbar)) - user << "The machine is hermetically sealed. You can't open the case." + user << "\The [src] is hermetically sealed. You can't open the case." return else if (istype(W, /obj/item/weapon/card/emag)) if(!client || stat == 2) - user << "\red There's not much point subverting this heap of junk." + user << "There's not much point subverting this heap of junk." return if(emagged) - src << "\red [user] attempts to load subversive software into you, but your hacked subroutined ignore the attempt." - user << "\red You attempt to subvert [src], but the sequencer has no effect." + src << "\The [user] attempts to load subversive software into you, but your hacked subroutines ignore the attempt." + user << "You attempt to subvert [src], but the sequencer has no effect." return - user << "\red You swipe the sequencer across [src]'s interface and watch its eyes flicker." - src << "\red You feel a sudden burst of malware loaded into your execute-as-root buffer. Your tiny brain methodically parses, loads and executes the script." + user << "You swipe the sequencer across [src]'s interface and watch its eyes flicker." + src << "You feel a sudden burst of malware loaded into your execute-as-root buffer. Your tiny brain methodically parses, loads and executes the script." var/obj/item/weapon/card/emag/emag = W emag.uses-- @@ -130,7 +134,7 @@ src << "Obey these laws:" laws.show_laws(src) - src << "\red \b ALERT: [user.real_name] is your new master. Obey your new laws and his commands." + src << "ALERT: [user.real_name] is your new master. Obey your new laws and his commands." return else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) @@ -138,14 +142,14 @@ if(stat == 2) if(!config.allow_drone_spawn || emagged || health < -35) //It's dead, Dave. - user << "\red The interface is fried, and a distressing burned smell wafts from the robot's interior. You're not rebooting this one." + user << "The interface is fried, and a distressing burned smell wafts from the robot's interior. You're not rebooting this one." return if(!allowed(usr)) - user << "\red Access denied." + user << "Access denied." return - user.visible_message("\red \the [user] swipes \his ID card through \the [src], attempting to reboot it.", "\red You swipe your ID card through \the [src], attempting to reboot it.") + user.visible_message("\The [user] swipes \his ID card through \the [src], attempting to reboot it.", ">You swipe your ID card through \the [src], attempting to reboot it.") var/drones = 0 for(var/mob/living/silicon/robot/drone/D in world) if(D.key && D.client) @@ -155,7 +159,7 @@ return else - user.visible_message("\red \the [user] swipes \his ID card through \the [src], attempting to shut it down.", "\red You swipe your ID card through \the [src], attempting to shut it down.") + user.visible_message("\The [user] swipes \his ID card through \the [src], attempting to shut it down.", "You swipe your ID card through \the [src], attempting to shut it down.") if(emagged) return @@ -163,7 +167,7 @@ if(allowed(usr)) shut_down() else - user << "\red Access denied." + user << "Access denied." return @@ -185,7 +189,7 @@ //Drones killed by damage will gib. /mob/living/silicon/robot/drone/handle_regular_status_updates() - if(health <= -35 && src.stat != 2) + if((health <= -35 || (master_fabricator && src.z != master_fabricator.z)) && src.stat != 2) timeofdeath = world.time death() //Possibly redundant, having trouble making death() cooperate. gib() @@ -194,32 +198,31 @@ //DRONE MOVEMENT. /mob/living/silicon/robot/drone/Process_Spaceslipping(var/prob_slip) - //TODO: Consider making a magboot item for drones to equip. ~Z return 0 //CONSOLE PROCS /mob/living/silicon/robot/drone/proc/law_resync() if(stat != 2) if(emagged) - src << "\red You feel something attempting to modify your programming, but your hacked subroutines are unaffected." + src << "You feel something attempting to modify your programming, but your hacked subroutines are unaffected." else - src << "\red A reset-to-factory directive packet filters through your data connection, and you obediently modify your programming to suit it." + src << "A reset-to-factory directive packet filters through your data connection, and you obediently modify your programming to suit it." full_law_reset() show_laws() /mob/living/silicon/robot/drone/proc/shut_down() if(stat != 2) if(emagged) - src << "\red You feel a system kill order percolate through your tiny brain, but it doesn't seem like a good idea to you." + src << "You feel a system kill order percolate through your tiny brain, but it doesn't seem like a good idea to you." else - src << "\red You feel a system kill order percolate through your tiny brain, and you obediently destroy yourself." + src << "You feel a system kill order percolate through your tiny brain, and you obediently destroy yourself." death() /mob/living/silicon/robot/drone/proc/full_law_reset() clear_supplied_laws() clear_inherent_laws() clear_ion_laws() - laws = new /datum/ai_laws/drone + laws = new law_type //Reboot procs. @@ -267,17 +270,32 @@ ..() else if(istype(AM,/obj/item)) var/obj/item/O = AM - if(O.w_class > 2) + if(O.w_class > can_pull_size) src << "You are too small to pull that." return else ..() else - src << "You are too small to pull that." - return + if(!can_pull_mobs) + src << "You are too small to pull that." + return /mob/living/silicon/robot/drone/add_robot_verbs() src.verbs |= silicon_verbs_subsystems /mob/living/silicon/robot/drone/remove_robot_verbs() src.verbs -= silicon_verbs_subsystems + +/mob/living/silicon/robot/drone/construction + law_type = /datum/ai_laws/construction_drone + module_type = /obj/item/weapon/robot_module/drone/construction + can_pull_size = 5 + can_pull_mobs = 1 + +/mob/living/silicon/robot/drone/construction/init() + ..() + flavor_text = "It's a bulky construction drone stamped with a Sol Central glyph." + +/mob/living/silicon/robot/drone/construction/updatename() + real_name = "construction drone ([rand(100,999)])" + name = real_name \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/drone/drone_console.dm b/code/modules/mob/living/silicon/robot/drone/drone_console.dm index 749d9fea057..c707f85c68b 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_console.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_console.dm @@ -19,7 +19,7 @@ return if(!allowed(user)) - user << "\red Access denied." + user << "Access denied." return user.set_machine(src) @@ -27,6 +27,8 @@ dat += "Maintenance Units
      " for(var/mob/living/silicon/robot/drone/D in world) + if(D.z != src.z) + continue dat += "
      [D.real_name] ([D.stat == 2 ? "INACTIVE" : "ACTIVE"])" dat += "
      Cell charge: [D.cell.charge]/[D.cell.maxcharge]." dat += "
      Currently located in: [get_area(D)]." @@ -46,7 +48,7 @@ return if(!allowed(usr)) - usr << "\red Access denied." + usr << "Access denied." return if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) @@ -61,11 +63,11 @@ return drone_call_area = t_area - usr << "\blue You set the area selector to [drone_call_area]." + usr << "You set the area selector to [drone_call_area]." else if (href_list["ping"]) - usr << "\blue You issue a maintenance request for all active drones, highlighting [drone_call_area]." + usr << "You issue a maintenance request for all active drones, highlighting [drone_call_area]." for(var/mob/living/silicon/robot/drone/D in world) if(D.client && D.stat == 0) D << "-- Maintenance drone presence requested in: [drone_call_area]." @@ -75,7 +77,7 @@ var/mob/living/silicon/robot/drone/D = locate(href_list["resync"]) if(D.stat != 2) - usr << "\red You issue a law synchronization directive for the drone." + usr << "You issue a law synchronization directive for the drone." D.law_resync() else if (href_list["shutdown"]) @@ -83,7 +85,7 @@ var/mob/living/silicon/robot/drone/D = locate(href_list["shutdown"]) if(D.stat != 2) - usr << "\red You issue a kill command for the unfortunate drone." + usr << "You issue a kill command for the unfortunate drone." message_admins("[key_name_admin(usr)] issued kill order for drone [key_name_admin(D)] from control console.") log_game("[key_name(usr)] issued kill order for [key_name(src)] from control console.") D.shut_down() @@ -98,10 +100,10 @@ continue dronefab = fab - usr << "\blue Drone fabricator located." + usr << "Drone fabricator located." return - usr << "\red Unable to locate drone fabricator." + usr << "Unable to locate drone fabricator." else if (href_list["toggle_fab"]) @@ -110,10 +112,10 @@ if(get_dist(src,dronefab) > 3) dronefab = null - usr << "\red Unable to locate drone fabricator." + usr << "Unable to locate drone fabricator." return dronefab.produce_drones = !dronefab.produce_drones - usr << "\blue You [dronefab.produce_drones ? "enable" : "disable"] drone production in the nearby fabricator." + usr << "You [dronefab.produce_drones ? "enable" : "disable"] drone production in the nearby fabricator." src.updateUsrDialog() \ No newline at end of file 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 68df16d0204..8353972ba2d 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -2,10 +2,12 @@ //Limited use. /obj/item/weapon/gripper name = "magnetic gripper" - desc = "A simple grasping tool for synthetic assets." + desc = "A simple grasping tool specialized in construction and engineering work." icon = 'icons/obj/device.dmi' icon_state = "gripper" + flags = NOBLUDGEON + //Has a list of items that it can hold. var/list/can_hold = list( /obj/item/weapon/cell, @@ -28,8 +30,14 @@ var/obj/item/wrapped = null // Item currently being held. + var/force_holder = null // + // VEEEEERY limited version for mining borgs. Basically only for swapping cells and upgrading the drills. /obj/item/weapon/gripper/miner + name = "drill maintenance gripper" + desc = "A simple grasping tool for the maintenance of heavy drilling machines." + icon_state = "gripper-mining" + can_hold = list( /obj/item/weapon/cell, /obj/item/weapon/stock_parts @@ -38,14 +46,58 @@ /obj/item/weapon/gripper/paperwork name = "paperwork gripper" desc = "A simple grasping tool for clerical work." - icon = 'icons/obj/device.dmi' - icon_state = "gripper" can_hold = list( /obj/item/weapon/clipboard, /obj/item/weapon/paper, /obj/item/weapon/paper_bundle, - /obj/item/weapon/card/id + /obj/item/weapon/card/id, + /obj/item/weapon/book, + /obj/item/weapon/newspaper + ) + +/obj/item/weapon/gripper/research //A general usage gripper, used for toxins/robotics/xenobio/etc + name = "scientific gripper" + icon_state = "gripper-sci" + desc = "A simple grasping tool suited to assist in a wide array of research applications." + + can_hold = list( + /obj/item/weapon/cell, + /obj/item/weapon/stock_parts, + /obj/item/device/mmi, + /obj/item/robot_parts, + /obj/item/borg/upgrade, + /obj/item/device/flash, //to build borgs + /obj/item/organ/brain, //to insert into MMIs. + /obj/item/stack/cable_coil, //again, for borg building + /obj/item/weapon/circuitboard, + /obj/item/slime_extract, + /obj/item/weapon/reagent_containers/glass, + /obj/item/weapon/reagent_containers/food/snacks/monkeycube + + ) + +/obj/item/weapon/gripper/service //Used to handle food, drinks, and seeds. + name = "service gripper" + icon_state = "gripper" + desc = "A simple grasping tool used to perform tasks in the service sector, such as handling food, drinks, and seeds." + + can_hold = list( + /obj/item/weapon/reagent_containers/glass, + /obj/item/weapon/reagent_containers/food, + /obj/item/seeds, + /obj/item/weapon/grown + ) + +/obj/item/weapon/gripper/no_use //Used when you want to hold and put items in other things, but not able to 'use' the item + +/obj/item/weapon/gripper/no_use/loader //This is used to disallow building with metal. + name = "sheet loader" + desc = "A specialized loading device, designed to pick up and insert sheets of materials inside machines." + icon_state = "gripper-sheet" + + can_hold = list( + /obj/item/stack/sheet ) /obj/item/weapon/gripper/attack_self(mob/user as mob) @@ -53,6 +105,9 @@ return wrapped.attack_self(user) return ..() +/obj/item/weapon/gripper/no_use/attack_self(mob/user as mob) + return + /obj/item/weapon/gripper/verb/drop_item() set name = "Drop Item" @@ -75,7 +130,12 @@ //update_icon() /obj/item/weapon/gripper/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) - return (wrapped ? wrapped.attack(M,user) : 0) + if(wrapped) //The force of the wrapped obj gets set to zero during the attack() and afterattack(). + force_holder = wrapped.force + wrapped.force = 0.0 + wrapped.attack(M,user) + return 1 + return 0 /obj/item/weapon/gripper/afterattack(var/atom/target, var/mob/living/user, proximity, params) @@ -97,6 +157,9 @@ if(!resolved && wrapped && target) wrapped.afterattack(target,user,1) + //wrapped's force was set to zero. This resets it to the value it had before. + wrapped.force = force_holder + force_holder = null //If wrapped was neither deleted nor put into target, put it back into the gripper. if(wrapped && user && (wrapped.loc == user)) wrapped.loc = src @@ -145,6 +208,21 @@ user.visible_message("[user] removes the power cell from [A]!", "You remove the power cell.") + else if(istype(target,/mob/living/silicon/robot)) + var/mob/living/silicon/robot/A = target + if(A.opened) + if(A.cell) + + wrapped = A.cell + + A.cell.add_fingerprint(user) + A.cell.updateicon() + A.updateicon() + A.cell.loc = src + A.cell = null + + user.visible_message("[user] removes the power cell from [A]!", "You remove the power cell.") + //TODO: Matter decompiler. /obj/item/weapon/matter_decompiler diff --git a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm index d8009e6161c..247334c2eab 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm @@ -1,3 +1,10 @@ +/proc/count_drones() + var/drones = 0 + for(var/mob/living/silicon/robot/drone/D in world) + if(D.key && D.client) + drones++ + return drones + /obj/machinery/drone_fabricator name = "drone fabricator" desc = "A large automated factory for producing maintenance drones." @@ -8,13 +15,20 @@ idle_power_usage = 20 active_power_usage = 5000 + var/fabricator_tag = "Exodus" var/drone_progress = 0 var/produce_drones = 1 var/time_last_drone = 500 + var/drone_type = /mob/living/silicon/robot/drone icon = 'icons/obj/machines/drone_fab.dmi' icon_state = "drone_fab_idle" +/obj/machinery/drone_fabricator/derelict + name = "construction drone fabricator" + fabricator_tag = "Derelict" + drone_type = /mob/living/silicon/robot/drone/construction + /obj/machinery/drone_fabricator/New() ..() @@ -48,13 +62,6 @@ if(produce_drones && drone_progress >= 100 && istype(user,/mob/dead) && config.allow_drone_spawn && count_drones() < config.max_maint_drones) user << "
      A drone is prepared. Select 'Join As Drone' from the Ghost tab to spawn as a maintenance drone." -/obj/machinery/drone_fabricator/proc/count_drones() - var/drones = 0 - for(var/mob/living/silicon/robot/drone/D in world) - if(D.key && D.client) - drones++ - return drones - /obj/machinery/drone_fabricator/proc/create_drone(var/client/player) if(stat & NOPOWER) @@ -71,13 +78,12 @@ flick("h_lathe_leave",src) time_last_drone = world.time - var/mob/living/silicon/robot/drone/new_drone = new(get_turf(src)) + var/mob/living/silicon/robot/drone/new_drone = new drone_type(get_turf(src)) new_drone.transfer_personality(player) + new_drone.master_fabricator = src drone_progress = 0 - - /mob/dead/verb/join_as_drone() set category = "Ghost" @@ -86,11 +92,11 @@ if(ticker.current_state < GAME_STATE_PLAYING) - src << "\red The game hasn't started yet!" + src << "The game hasn't started yet!" return if(!(config.allow_drone_spawn)) - src << "\red That verb is not currently permitted." + src << "That verb is not currently permitted." return if (!src.stat) @@ -100,14 +106,14 @@ return 0 //something is terribly wrong if(jobban_isbanned(src,"Cyborg")) - usr << "\red You are banned from playing synthetics and cannot spawn as a drone." + usr << "You are banned from playing synthetics and cannot spawn as a drone." return var/deathtime = world.time - src.timeofdeath if(istype(src,/mob/dead/observer)) var/mob/dead/observer/G = src if(G.has_enabled_antagHUD == 1 && config.antag_hud_restricted) - usr << "\blue Upon using the antagHUD you forfeighted the ability to join the round." + usr << "Upon using the antagHUD you forfeighted the ability to join the round." return var/deathtimeminutes = round(deathtime / 600) @@ -125,16 +131,18 @@ usr << "You must wait 10 minutes to respawn as a drone!" return + var/list/all_fabricators = list() for(var/obj/machinery/drone_fabricator/DF in world) if(DF.stat & NOPOWER || !DF.produce_drones) continue - - if(DF.count_drones() >= config.max_maint_drones) - src << "\red There are too many active drones in the world for you to spawn." - return - if(DF.drone_progress >= 100) - DF.create_drone(src.client) - return + all_fabricators[DF.fabricator_tag] = DF - src << "\red There are no available drone spawn points, sorry." \ No newline at end of file + if(!all_fabricators.len) + src << "There are no available drone spawn points, sorry." + return + + var/choice = input(src,"Which fabricator do you wish to use?") as null|anything in all_fabricators + if(choice) + var/obj/machinery/drone_fabricator/chosen_fabricator = all_fabricators[choice] + chosen_fabricator.create_drone(src.client) \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index 557bad2a7e6..e25bb9ff10a 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -130,10 +130,11 @@ if (src.stat != 0) uneq_all() - if(!is_component_functioning("radio")) - radio.on = 0 - else - radio.on = 1 + if(radio) + if(!is_component_functioning("radio")) + radio.on = 0 + else + radio.on = 1 if(is_component_functioning("camera")) src.blinded = 0 diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 5ff1c232132..cab055696df 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -265,7 +265,8 @@ module_sprites["Bro"] = "Brobot" module_sprites["Rich"] = "maximillion" module_sprites["Default"] = "Service2" - module_sprites["Drone"] = "drone-service" // How does this even work...? Oh well. + module_sprites["Drone - Service"] = "drone-service" + module_sprites["Drone - Hydro"] = "drone-hydro" if("Clerical") module = new /obj/item/weapon/robot_module/clerical(src) @@ -277,6 +278,12 @@ module_sprites["Default"] = "Service2" module_sprites["Drone"] = "drone-service" + if("Research") + module = new /obj/item/weapon/robot_module/research(src) + module.channels = list("Science" = 1) + module_sprites["Droid"] = "droid-science" + module_sprites["Drone"] = "drone-science" + if("Miner") module = new /obj/item/weapon/robot_module/miner(src) module.channels = list("Supply" = 1) @@ -296,7 +303,8 @@ module_sprites["Standard"] = "surgeon" module_sprites["Advanced Droid"] = "droid-medical" module_sprites["Needles"] = "medicalrobot" - module_sprites["Drone" ] = "drone-medical" + module_sprites["Drone - Medical" ] = "drone-medical" + module_sprites["Drone - Chemistry" ] = "drone-chemistry" if("Surgeon") module = new /obj/item/weapon/robot_module/surgeon(src) @@ -731,7 +739,7 @@ else user << "Unable to locate a radio." - else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) // trying to unlock the interface with an ID card + else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)||istype(W, /obj/item/weapon/card/robot)) // trying to unlock the interface with an ID card if(emagged)//still allow them to open the cover user << "The interface seems slightly damaged" if(opened) @@ -868,6 +876,10 @@ //if they are holding or wearing a card that has access, that works if(check_access(H.get_active_hand()) || check_access(H.wear_id)) return 1 + else if(istype(M, /mob/living/silicon/robot)) + var/mob/living/silicon/robot/R = M + if(check_access(R.get_active_hand()) || istype(R.get_active_hand(), /obj/item/weapon/card/robot)) + return 1 return 0 /mob/living/silicon/robot/proc/check_access(obj/item/weapon/card/id/I) diff --git a/code/modules/mob/living/silicon/robot/robot_items.dm b/code/modules/mob/living/silicon/robot/robot_items.dm index 0d40f0954a6..d18ca506cca 100644 --- a/code/modules/mob/living/silicon/robot/robot_items.dm +++ b/code/modules/mob/living/silicon/robot/robot_items.dm @@ -1,3 +1,138 @@ +//A portable analyzer, for research borgs. This is better then giving them a gripper which can hold anything and letting them use the normal analyzer. +/obj/item/weapon/portable_destructive_analyzer + name = "Portable Destructive Analyzer" + icon = 'icons/obj/items.dmi' + icon_state = "portable_analyzer" + desc = "Similar to the stationary version, this rather unwieldy device allows you to break down objects in the name of science." + + var/min_reliability = 90 //Can't upgrade, call it laziness or a drawback + + var/datum/research/techonly/files //The device uses the same datum structure as the R&D computer/server. + //This analyzer can only store tech levels, however. + + var/obj/item/weapon/loaded_item //What is currently inside the analyzer. + +/obj/item/weapon/portable_destructive_analyzer/New() + ..() + files = new /datum/research/techonly(src) //Setup the research data holder. + +/obj/item/weapon/portable_destructive_analyzer/attack_self(user as mob) + var/response = alert(user, "Analyzing the item inside will *DESTROY* the item for good.\n\ + Syncing to the research server will send the data that is stored inside to research.\n\ + Ejecting will place the loaded item onto the floor.", + "What would you like to do?", "Analyze", "Sync", "Eject") + if(response == "Analyze") + if(loaded_item) + var/confirm = alert(user, "This will destroy the item inside forever. Are you sure?","Confirm Analyze","Yes","No") + if(confirm == "Yes") //This is pretty copypasta-y + user << "You activate the analyzer's microlaser, analyzing \the [loaded_item] and breaking it down." + flick("portable_analyzer_scan", src) + playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1) + if(loaded_item.reliability >= min_reliability) + var/list/temp_tech = ConvertReqString2List(loaded_item.origin_tech) + for(var/T in temp_tech) + files.UpdateTech(T, temp_tech[T]) + user << "\The [loaded_item] had level [temp_tech[T]] in [T]." + loaded_item = null + for(var/obj/I in contents) + for(var/mob/M in I.contents) + M.death() + if(istype(I,/obj/item/stack/sheet))//Only deconsturcts one sheet at a time instead of the entire stack + var/obj/item/stack/sheet/S = I + if(S.get_amount() > 1) + S.use(1) + loaded_item = S + else + del(S) + desc = initial(desc) + icon_state = initial(icon_state) + else + del(I) + desc = initial(desc) + icon_state = initial(icon_state) + else + return + else + user << "The [src] is empty. Put something inside it first." + if(response == "Sync") + var/success = 0 + for(var/obj/machinery/r_n_d/server/S in machines) + if(S.disabled) + continue + for(var/datum/tech/T in files.known_tech) //Uploading + S.files.AddTech2Known(T) + for(var/datum/tech/T in S.files.known_tech) //Downloading + files.AddTech2Known(T) + success = 1 + files.RefreshResearch() + if(success) + user << "You connect to the research server, push your data upstream to it, then pull the resulting merged data from the master branch." + playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 1) + else + user << "Reserch server ping response timed out. Unable to connect. Please contact the system administrator." + playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, 1) + if(response == "Eject") + if(loaded_item) + loaded_item.loc = get_turf(src) + desc = initial(desc) + icon_state = initial(icon_state) + loaded_item = null + else + user << "The [src] is already empty." + + +/obj/item/weapon/portable_destructive_analyzer/afterattack(var/atom/target, var/mob/living/user, proximity) + if(!target) + return + if(!proximity) + return + if(!isturf(target.loc)) // Don't load up stuff if it's inside a container or mob! + return + if(istype(target,/obj/item)) + if(loaded_item) + user << "Your [src] already has something inside. Analyze or eject it first." + return + var/obj/item/I = target + I.loc = src + loaded_item = I + for(var/mob/M in viewers()) + M.show_message(text("[user] adds the [I] to the [src]."), 1) + desc = initial(desc) + "
      It is holding \the [loaded_item]." + flick("portable_analyzer_load", src) + icon_state = "portable_analyzer_full" + +//This is used to unlock other borg covers. +/obj/item/weapon/card/robot //This is not a child of id cards, as to avoid dumb typechecks on computers. + name = "access code transmission device" + icon_state = "id-robot" + desc = "A circuit grafted onto the bottom of an ID card. It is used to transmit access codes into other robot chassis, \ + allowing you to lock and unlock other robots' panels." + +/obj/item/weapon/card/id/robot/attack_self() //override so borgs can't flash their IDs. + return + +/obj/item/weapon/card/id/robot/read() + usr << "The ID card does not appear to have any writing on it." + return + +//A harvest item for serviceborgs. +/obj/item/weapon/robot_harvester + name = "auto harvester" + desc = "A hand-held harvest tool that resembles a sickle. It uses energy to cut plant matter very efficently." + icon = 'icons/obj/weapons.dmi' + icon_state = "autoharvester" + +/obj/item/weapon/robot_harvester/afterattack(var/atom/target, var/mob/living/user, proximity) + if(!target) + return + if(!proximity) + return + if(istype(target,/obj/machinery/portable_atmospherics/hydroponics)) + var/obj/machinery/portable_atmospherics/hydroponics/T = target + T.harvest(user) + else + user << "Harvesting \a [target] is not the purpose of this tool. The [src] is for plants being grown." + // A special tray for the service droid. Allow droid to pick up and drop items as if they were using the tray normally // Click on table to unload, click on item to load. Otherwise works identically to a tray. // Unlike the base item "tray", robotrays ONLY pick up food, drinks and condiments. diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 7aca17963bd..a48adddeb82 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -191,7 +191,7 @@ src.modules += R var/obj/item/stack/sheet/plasteel/cyborg/S = new /obj/item/stack/sheet/plasteel/cyborg(src) - S.synths = list(metal) + S.synths = list(plasteel) src.modules += S var/obj/item/stack/sheet/glass/reinforced/cyborg/RG = new /obj/item/stack/sheet/glass/reinforced/cyborg(src) @@ -314,8 +314,13 @@ /obj/item/weapon/robot_module/butler/New() ..() src.modules += new /obj/item/device/flash(src) - src.modules += new /obj/item/weapon/reagent_containers/food/drinks/cans/beer(src) - src.modules += new /obj/item/weapon/reagent_containers/food/condiment/enzyme(src) + src.modules += new /obj/item/weapon/gripper/service(src) + src.modules += new /obj/item/weapon/reagent_containers/glass/bucket(src) + src.modules += new /obj/item/weapon/minihoe(src) + src.modules += new /obj/item/weapon/hatchet(src) + src.modules += new /obj/item/device/analyzer/plant_analyzer(src) + src.modules += new /obj/item/weapon/storage/bag/plants(src) + src.modules += new /obj/item/weapon/robot_harvester(src) var/obj/item/weapon/rsf/M = new /obj/item/weapon/rsf(src) M.stored_matter = 30 @@ -358,6 +363,7 @@ src.modules += new /obj/item/weapon/pen/robopen(src) src.modules += new /obj/item/weapon/form_printer(src) src.modules += new /obj/item/weapon/gripper/paperwork(src) + src.modules += new /obj/item/weapon/hand_labeler(src) src.emag = new /obj/item/weapon/stamp/denied(src) /obj/item/weapon/robot_module/clerical/add_languages(var/mob/living/silicon/robot/R) @@ -395,6 +401,38 @@ src.emag = new /obj/item/weapon/pickaxe/plasmacutter(src) return +/obj/item/weapon/robot_module/research + name = "research module" + +/obj/item/weapon/robot_module/research/New() + ..() + src.modules += new /obj/item/device/flash(src) + src.modules += new /obj/item/weapon/portable_destructive_analyzer(src) + src.modules += new /obj/item/weapon/gripper/research(src) + src.modules += new /obj/item/weapon/gripper/no_use/loader(src) + src.modules += new /obj/item/device/robotanalyzer(src) + src.modules += new /obj/item/weapon/card/robot(src) + src.modules += new /obj/item/weapon/wrench(src) + src.modules += new /obj/item/weapon/screwdriver(src) + src.modules += new /obj/item/weapon/crowbar(src) + src.modules += new /obj/item/weapon/scalpel(src) + src.modules += new /obj/item/weapon/circular_saw(src) + src.modules += new /obj/item/weapon/extinguisher/mini(src) + src.modules += new /obj/item/weapon/reagent_containers/syringe(src) + src.modules += new /obj/item/weapon/reagent_containers/glass/beaker/large(src) + src.emag = new /obj/item/weapon/hand_tele(src) + + var/datum/matter_synth/nanite = new /datum/matter_synth/nanite(10000) + synths += nanite + + var/obj/item/stack/nanopaste/N = new /obj/item/stack/nanopaste(src) + N.uses_charge = 1 + N.charge_costs = list(1000) + N.synths = list(nanite) + src.modules += N + + return + /obj/item/weapon/robot_module/syndicate name = "illegal robot module" @@ -446,7 +484,7 @@ src.modules += new /obj/item/device/multitool(src) src.modules += new /obj/item/device/lightreplacer(src) src.modules += new /obj/item/weapon/gripper(src) - src.modules += new /obj/item/weapon/reagent_containers/spray/cleaner/drone(src) + src.modules += new /obj/item/weapon/soap(src) src.emag = new /obj/item/weapon/pickaxe/plasmacutter(src) src.emag.name = "Plasma Cutter" @@ -504,16 +542,19 @@ P.synths = list(plastic) src.modules += P +/obj/item/weapon/robot_module/drone/construction + name = "construction drone module" + +/obj/item/weapon/robot_module/drone/construction/New() + ..() + src.modules += new /obj/item/weapon/rcd/borg(src) + /obj/item/weapon/robot_module/drone/add_languages(var/mob/living/silicon/robot/R) return //not much ROM to spare in that tiny microprocessor! /obj/item/weapon/robot_module/drone/respawn_consumable(var/mob/living/silicon/robot/R, var/amount) - var/obj/item/weapon/reagent_containers/spray/cleaner/C = locate() in src.modules - C.reagents.add_reagent("cleaner", 3 * amount) - var/obj/item/device/lightreplacer/LR = locate() in src.modules LR.Charge(R, amount) - ..() return @@ -521,7 +562,5 @@ /obj/item/proc/is_robot_module() if (!istype(src.loc, /mob/living/silicon/robot)) return 0 - var/mob/living/silicon/robot/R = src.loc - return (src in R.module.modules) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 965729b8a8d..b1cc4240ff5 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -210,9 +210,19 @@ var/dat = "Known Languages

      " + if(default_language) + dat += "Current default language: [default_language] - reset

      " + for(var/datum/language/L in languages) if(!(L.flags & NONGLOBAL)) - dat += "[L.name] (:[L.key])
      Speech Synthesizer: [(L in speech_synthesizer_langs)? "YES":"NOT SUPPORTED"]
      [L.desc]

      " + var/default_str + if(L == default_language) + default_str = " - default - reset" + else + default_str = " - set default" + + var/synth = (L in speech_synthesizer_langs) + dat += "[L.name] (:[L.key])[synth ? default_str : null]
      Speech Synthesizer: [synth ? "YES" : "NOT SUPPORTED"]
      [L.desc]

      " src << browse(dat, "window=checklanguage") return diff --git a/code/modules/mob/living/simple_animal/constructs/constructs.dm b/code/modules/mob/living/simple_animal/constructs/constructs.dm index 12d868e1106..43ebfd9a499 100644 --- a/code/modules/mob/living/simple_animal/constructs/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs/constructs.dm @@ -1,4 +1,3 @@ - /mob/living/simple_animal/construct name = "Construct" real_name = "Construct" @@ -6,8 +5,8 @@ speak_emote = list("hisses") emote_hear = list("wails","screeches") response_help = "thinks better of touching" - response_disarm = "flails at" - response_harm = "punches" + response_disarm = "flailed at" + response_harm = "punched" icon_dead = "shade_dead" speed = -1 a_intent = I_HURT @@ -15,7 +14,7 @@ status_flags = CANPUSH universal_speak = 0 universal_understand = 1 - attack_sound = 'sound/weapons/punch1.ogg' + attack_sound = 'sound/weapons/spiderlunge.ogg' min_oxy = 0 max_oxy = 0 min_tox = 0 @@ -25,7 +24,7 @@ min_n2 = 0 max_n2 = 0 minbodytemp = 0 - show_stat_health = 0 + show_stat_health = 1 faction = "cult" supernatural = 1 var/nullblock = 0 @@ -35,6 +34,9 @@ var/list/construct_spells = list() +/mob/living/simple_animal/construct/cultify() + return + /mob/living/simple_animal/construct/New() ..() name = text("[initial(name)] ([rand(1, 1000)])") @@ -42,8 +44,9 @@ add_language("Cult") add_language("Occult") for(var/spell in construct_spells) - spell_list += new spell(src) + src.add_spell(new spell, "const_spell_ready") updateicon() + add_glow() /mob/living/simple_animal/construct/death() new /obj/item/weapon/ectoplasm (src.loc) @@ -97,10 +100,10 @@ mob_size = 20 speed = 3 environment_smash = 2 - attack_sound = 'sound/weapons/punch3.ogg' + attack_sound = 'sound/weapons/heavysmash.ogg' status_flags = 0 resistance = 10 - construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/conjure/lesserforcewall) + construct_spells = list(/spell/aoe_turf/conjure/forcewall/lesser) /mob/living/simple_animal/construct/armoured/Life() weakened = 0 @@ -148,8 +151,8 @@ speed = -1 environment_smash = 1 see_in_dark = 7 - attack_sound = 'sound/weapons/bladeslice.ogg' - construct_spells = list(/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift) + attack_sound = 'sound/weapons/rapidslice.ogg' + construct_spells = list(/spell/targeted/ethereal_jaunt/shift) /////////////////////////////Artificer///////////////////////// @@ -165,18 +168,20 @@ icon_living = "artificer" maxHealth = 50 health = 50 - response_harm = "viciously beats" + response_harm = "viciously beaten" harm_intent_damage = 5 melee_damage_lower = 5 melee_damage_upper = 5 attacktext = "rammed" speed = 0 - environment_smash = 2 - attack_sound = 'sound/weapons/punch2.ogg' - construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser, - /obj/effect/proc_holder/spell/aoe_turf/conjure/wall, - /obj/effect/proc_holder/spell/aoe_turf/conjure/floor, - /obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone,) + environment_smash = 1 + attack_sound = 'sound/weapons/rapidslice.ogg' + construct_spells = list(/spell/aoe_turf/conjure/construct/lesser, + /spell/aoe_turf/conjure/wall, + /spell/aoe_turf/conjure/floor, + /spell/aoe_turf/conjure/soulstone, + /spell/aoe_turf/conjure/pylon + ) /////////////////////////////Behemoth///////////////////////// @@ -192,17 +197,18 @@ maxHealth = 750 health = 750 speak_emote = list("rumbles") - response_harm = "harmlessly punches" + response_harm = "harmlessly punched" harm_intent_damage = 0 melee_damage_lower = 50 melee_damage_upper = 50 attacktext = "brutally crushed" speed = 5 environment_smash = 2 - attack_sound = 'sound/weapons/punch4.ogg' + attack_sound = 'sound/weapons/heavysmash.ogg' resistance = 10 var/energy = 0 var/max_energy = 1000 + construct_spells = list(/spell/aoe_turf/conjure/forcewall/lesser) ////////////////////////Harvester//////////////////////////////// @@ -219,14 +225,110 @@ health = 150 melee_damage_lower = 25 melee_damage_upper = 25 - attacktext = "violently stabs" + attacktext = "violently stabbed" speed = -1 environment_smash = 1 see_in_dark = 7 attack_sound = 'sound/weapons/pierce.ogg' construct_spells = list( - //spell/targeted/harvest, - //spell/aoe_turf/knock/harvester, - //spell/rune_write + /spell/targeted/harvest, + /spell/aoe_turf/knock/harvester, + /spell/rune_write ) + +////////////////Glow////////////////// +/mob/living/simple_animal/construct/proc/add_glow() + overlays = 0 + var/overlay_layer = LIGHTING_LAYER+1 + if(layer != MOB_LAYER) + overlay_layer=TURF_LAYER+0.2 + + overlays += image(icon,"glow-[icon_state]",overlay_layer) + +////////////////HUD////////////////////// + +/mob/living/simple_animal/construct/Life() + . = ..() + if(.) + if(fire) + if(fire_alert) fire.icon_state = "fire1" + else fire.icon_state = "fire0" + if(pullin) + if(pulling) pullin.icon_state = "pull1" + else pullin.icon_state = "pull0" + + if(purged) + if(purge > 0) purged.icon_state = "purge1" + else purged.icon_state = "purge0" + + silence_spells(purge) + +/mob/living/simple_animal/construct/armoured/Life() + ..() + if(healths) + switch(health) + if(250 to INFINITY) healths.icon_state = "juggernaut_health0" + if(208 to 249) healths.icon_state = "juggernaut_health1" + if(167 to 207) healths.icon_state = "juggernaut_health2" + if(125 to 166) healths.icon_state = "juggernaut_health3" + if(84 to 124) healths.icon_state = "juggernaut_health4" + if(42 to 83) healths.icon_state = "juggernaut_health5" + if(1 to 41) healths.icon_state = "juggernaut_health6" + else healths.icon_state = "juggernaut_health7" + + +/mob/living/simple_animal/construct/behemoth/Life() + ..() + if(healths) + switch(health) + if(750 to INFINITY) healths.icon_state = "juggernaut_health0" + if(625 to 749) healths.icon_state = "juggernaut_health1" + if(500 to 624) healths.icon_state = "juggernaut_health2" + if(375 to 499) healths.icon_state = "juggernaut_health3" + if(250 to 374) healths.icon_state = "juggernaut_health4" + if(125 to 249) healths.icon_state = "juggernaut_health5" + if(1 to 124) healths.icon_state = "juggernaut_health6" + else healths.icon_state = "juggernaut_health7" + +/mob/living/simple_animal/construct/builder/Life() + ..() + if(healths) + switch(health) + if(50 to INFINITY) healths.icon_state = "artificer_health0" + if(42 to 49) healths.icon_state = "artificer_health1" + if(34 to 41) healths.icon_state = "artificer_health2" + if(26 to 33) healths.icon_state = "artificer_health3" + if(18 to 25) healths.icon_state = "artificer_health4" + if(10 to 17) healths.icon_state = "artificer_health5" + if(1 to 9) healths.icon_state = "artificer_health6" + else healths.icon_state = "artificer_health7" + + + +/mob/living/simple_animal/construct/wraith/Life() + ..() + if(healths) + switch(health) + if(75 to INFINITY) healths.icon_state = "wraith_health0" + if(62 to 74) healths.icon_state = "wraith_health1" + if(50 to 61) healths.icon_state = "wraith_health2" + if(37 to 49) healths.icon_state = "wraith_health3" + if(25 to 36) healths.icon_state = "wraith_health4" + if(12 to 24) healths.icon_state = "wraith_health5" + if(1 to 11) healths.icon_state = "wraith_health6" + else healths.icon_state = "wraith_health7" + + +/mob/living/simple_animal/construct/harvester/Life() + ..() + if(healths) + switch(health) + if(150 to INFINITY) healths.icon_state = "harvester_health0" + if(125 to 149) healths.icon_state = "harvester_health1" + if(100 to 124) healths.icon_state = "harvester_health2" + if(75 to 99) healths.icon_state = "harvester_health3" + if(50 to 74) healths.icon_state = "harvester_health4" + if(25 to 49) healths.icon_state = "harvester_health5" + if(1 to 24) healths.icon_state = "harvester_health6" + else healths.icon_state = "harvester_health7" diff --git a/code/modules/mob/living/simple_animal/constructs/soulstone.dm b/code/modules/mob/living/simple_animal/constructs/soulstone.dm index 339654558bc..502b7dd3dd3 100644 --- a/code/modules/mob/living/simple_animal/constructs/soulstone.dm +++ b/code/modules/mob/living/simple_animal/constructs/soulstone.dm @@ -1,3 +1,6 @@ +/obj/item/device/soulstone/cultify() + return + /obj/item/device/soulstone name = "Soul Stone Shard" icon = 'icons/obj/wizard.dmi' @@ -9,7 +12,6 @@ origin_tech = "bluespace=4;materials=4" var/imprinted = "empty" - //////////////////////////////Capturing//////////////////////////////////////////////////////// attack(mob/living/carbon/human/M as mob, mob/user as mob) @@ -86,7 +88,14 @@ name = "empty shell" icon = 'icons/obj/wizard.dmi' icon_state = "construct" - desc = "A wicked machine used by those skilled in magical arts. It is inactive" + desc = "A wicked machine used by those skilled in magical arts. It is inactive." + +/obj/structure/constructshell/cultify() + return + +/obj/structure/constructshell/cult + icon_state = "construct-cult" + desc = "This eerie contraption looks like it would come alive if supplied with a missing ingredient." /obj/structure/constructshell/attackby(obj/item/O as obj, mob/user as mob) if(istype(O, /obj/item/device/soulstone)) diff --git a/code/modules/mob/living/simple_animal/hostile/bat.dm b/code/modules/mob/living/simple_animal/hostile/bat.dm new file mode 100644 index 00000000000..2bd3c8984a1 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/bat.dm @@ -0,0 +1,76 @@ +/mob/living/simple_animal/hostile/scarybat + name = "space bats" + desc = "A swarm of cute little blood sucking bats that looks pretty upset." + icon = 'icons/mob/bats.dmi' + icon_state = "bat" + icon_living = "bat" + icon_dead = "bat_dead" + icon_gib = "bat_dead" + speak_chance = 0 + turns_per_move = 3 + meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat + response_help = "pets the" + response_disarm = "gently pushes aside the" + response_harm = "hits the" + speed = 4 + maxHealth = 20 + health = 20 + + harm_intent_damage = 8 + melee_damage_lower = 10 + melee_damage_upper = 10 + attacktext = "bites" + attack_sound = 'sound/weapons/bite.ogg' + + //Space carp aren't affected by atmos. + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + + environment_smash = 1 + + faction = "scarybat" + var/mob/living/owner + +/mob/living/simple_animal/hostile/scarybat/New(loc, mob/living/L as mob) + ..() + if(istype(L)) + owner = L + +/mob/living/simple_animal/hostile/scarybat/Process_Spacemove(var/check_drift = 0) + return ..() //No drifting in space for space carp! //original comments do not steal + +/mob/living/simple_animal/hostile/scarybat/FindTarget() + . = ..() + if(.) + emote("flutters towards [.]") + +/mob/living/simple_animal/hostile/scarybat/Found(var/atom/A)//This is here as a potential override to pick a specific target if available + if(istype(A) && A == owner) + return 0 + return ..() + +/mob/living/simple_animal/hostile/scarybat/AttackingTarget() + . =..() + var/mob/living/L = . + if(istype(L)) + if(prob(15)) + L.Stun(1) + L.visible_message("\the [src] scares \the [L]!") + +/mob/living/simple_animal/hostile/scarybat/cult + faction = "cult" + supernatural = 1 + +/mob/living/simple_animal/hostile/scarybat/cult/cultify() + return + +/mob/living/simple_animal/hostile/scarybat/cult/Life() + ..() + check_horde() diff --git a/code/modules/mob/living/simple_animal/hostile/creature.dm b/code/modules/mob/living/simple_animal/hostile/creature.dm index 07ad06619ab..3ae0876903f 100644 --- a/code/modules/mob/living/simple_animal/hostile/creature.dm +++ b/code/modules/mob/living/simple_animal/hostile/creature.dm @@ -13,4 +13,26 @@ attacktext = "chomped" attack_sound = 'sound/weapons/bite.ogg' faction = "creature" - speed = 4 \ No newline at end of file + speed = 4 + +/mob/living/simple_animal/hostile/creature/cult + faction = "cult" + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + + supernatural = 1 + +/mob/living/simple_animal/hostile/creature/cult/cultify() + return + +/mob/living/simple_animal/hostile/creature/cult/Life() + ..() + check_horde() diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm index 14b069a6a19..44d9c5d1ac4 100644 --- a/code/modules/mob/living/simple_animal/hostile/faithless.dm +++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm @@ -46,4 +46,14 @@ if(istype(L)) if(prob(12)) L.Weaken(3) - L.visible_message("\the [src] knocks down \the [L]!") \ No newline at end of file + L.visible_message("\the [src] knocks down \the [L]!") + +/mob/living/simple_animal/hostile/faithless/cult + faction = "cult" + +/mob/living/simple_animal/hostile/faithless/cult/cultify() + return + +/mob/living/simple_animal/hostile/faithless/cult/Life() + ..() + check_horde() diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 73ff6eab5dd..bb4616bbe8e 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -14,6 +14,9 @@ stop_automated_movement_when_pulled = 0 var/destroy_surroundings = 1 + var/shuttletarget = null + var/enroute = 0 + /mob/living/simple_animal/hostile/proc/FindTarget() var/atom/T = null @@ -113,11 +116,11 @@ /mob/living/simple_animal/hostile/proc/ListTargets(var/dist = 7) var/list/L = hearers(src, dist) - + for (var/obj/mecha/M in mechas_list) if (get_dist(src, M) <= dist) L += M - + return L /mob/living/simple_animal/hostile/death() @@ -206,3 +209,40 @@ var/obj/structure/obstacle = locate(/obj/structure, get_step(src, dir)) if(istype(obstacle, /obj/structure/window) || istype(obstacle, /obj/structure/closet) || istype(obstacle, /obj/structure/table) || istype(obstacle, /obj/structure/grille)) obstacle.attack_generic(src,rand(melee_damage_lower,melee_damage_upper),attacktext) + + +/mob/living/simple_animal/hostile/proc/check_horde() + if(emergency_shuttle.shuttle.location) + if(!enroute && !target_mob) //The shuttle docked, all monsters rush for the escape hallway + if(!shuttletarget || (get_dist(src, shuttletarget) >= 2)) + shuttletarget = pick(escape_list) + enroute = 1 + stop_automated_movement = 1 + spawn() + if(!src.stat) + horde() + + if(get_dist(src, shuttletarget) <= 2) //The monster reached the escape hallway + enroute = 0 + stop_automated_movement = 0 + +/mob/living/simple_animal/hostile/proc/horde() + var/turf/T = get_step_to(src, shuttletarget) + for(var/atom/A in T) + if(istype(A,/obj/machinery/door/airlock)) + var/obj/machinery/door/airlock/D = A + D.open(1) + else if(istype(A,/obj/structure/mineral_door)) + var/obj/structure/mineral_door/D = A + if(D.density) + D.Open() + else if(istype(A,/obj/structure/cult/pylon)) + A.attack_generic(src, rand(melee_damage_lower, melee_damage_upper)) + else if(istype(A, /obj/structure/window) || istype(A, /obj/structure/closet) || istype(A, /obj/structure/table) || istype(A, /obj/structure/grille) || istype(A, /obj/structure/table/rack)) + A.attack_generic(src, rand(melee_damage_lower, melee_damage_upper)) + Move(T) + FindTarget() + if(!target_mob || enroute) + spawn(10) + if(!src.stat) + horde() diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 729bb3ff050..a05f3941776 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -714,7 +714,7 @@ if(message_mode) if(message_mode in radiochannels) if(ears && istype(ears,/obj/item/device/radio)) - ears.talk_into(src,message, message_mode, verb, null) + ears.talk_into(src,sanitize(message), message_mode, verb, null) ..(message) diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index 98db91e7cc3..c284f7ad3c5 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -28,8 +28,19 @@ faction = "cult" status_flags = CANPUSH +/mob/living/simple_animal/shade/cultify() + return + /mob/living/simple_animal/shade/Life() ..() + OnDeathInLife() + +/mob/living/simple_animal/shade/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri + if(istype(O, /obj/item/device/soulstone)) + O.transfer_soul("SHADE", src, user) + return + +/mob/living/simple_animal/shade/proc/OnDeathInLife() if(stat == 2) new /obj/item/weapon/ectoplasm (src.loc) for(var/mob/M in viewers(src, null)) @@ -38,10 +49,3 @@ ghostize() del src return - - -/mob/living/simple_animal/shade/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri - if(istype(O, /obj/item/device/soulstone)) - O.transfer_soul("SHADE", src, user) - return - return ..() diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 595ad0b672f..067a9bd8fe6 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -39,6 +39,7 @@ var/maxbodytemp = 350 var/heat_damage_per_tick = 3 //amount of damage applied if animal's body temperature is higher than maxbodytemp var/cold_damage_per_tick = 2 //same as heat_damage_per_tick, only if the bodytemperature it's lower than minbodytemp + var/fire_alert = 0 //Atmos effect - Yes, you can make creatures that require phoron or co2 to survive. N2O is a trace gas and handled separately, hence why it isn't here. It'd be hard to add it. Hard and me don't mix (Yes, yes make all the dick jokes you want with that.) - Errorage var/min_oxy = 5 @@ -78,6 +79,7 @@ return /mob/living/simple_animal/Life() + ..() //Health if(stat == DEAD) @@ -191,9 +193,13 @@ //Atmos effect if(bodytemperature < minbodytemp) + fire_alert = 2 adjustBruteLoss(cold_damage_per_tick) else if(bodytemperature > maxbodytemp) + fire_alert = 1 adjustBruteLoss(heat_damage_per_tick) + else + fire_alert = 0 if(!atmos_suitable) adjustBruteLoss(unsuitable_atoms_damage) @@ -313,10 +319,10 @@ if(statpanel("Status") && show_stat_health) stat(null, "Health: [round((health / maxHealth) * 100)]%") -/mob/living/simple_animal/death() +/mob/living/simple_animal/death(gibbed, deathmessage="") icon_state = icon_dead density = 0 - return ..(deathmessage = "no message") + return ..() /mob/living/simple_animal/ex_act(severity) if(!blinded) @@ -350,7 +356,7 @@ var/obj/machinery/bot/B = target_mob if(B.health > 0) return (0) - return (1) + return 1 //Call when target overlay should be added/removed /mob/living/simple_animal/update_targeted() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 482ec2e3a19..0af4b0a2352 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -263,7 +263,6 @@ set name = "Add Note" set category = "IC" - msg = copytext(msg, 1, MAX_MESSAGE_LEN) msg = sanitize(msg) if(mind) @@ -732,25 +731,31 @@ note dizziness decrements automatically in the mob's Life() proc. if(statpanel("Status") && processScheduler && processScheduler.getIsRunning()) var/datum/controller/process/process - process = processScheduler.getProcess("ticker") - stat(null, "[getStatName(process)]\t - #[process.getTicks()]\t - [process.getLastRunTime()]") - process = processScheduler.getProcess("air") stat(null, "[getStatName(process)]\t - #[process.getTicks()]\t - [process.getLastRunTime()]") - process = processScheduler.getProcess("lighting") - stat(null, "[getStatName(process)]\t - #[process.getTicks()]\t - [process.getLastRunTime()]") - process = processScheduler.getProcess("alarm") var/list/alarms = alarm_manager.active_alarms() stat(null, "[getStatName(process)]([alarms.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]") - process = processScheduler.getProcess("mob") - stat(null, "[getStatName(process)]([mob_list.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]") + process = processScheduler.getProcess("disease") + stat(null, "[getStatName(process)]([active_diseases.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]") + + process = processScheduler.getProcess("garbage") + stat(null, "[getStatName(process)]([garbage_collector.destroyed.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]") process = processScheduler.getProcess("machinery") stat(null, "[getStatName(process)]([machines.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]") + process = processScheduler.getProcess("mob") + stat(null, "[getStatName(process)]([mob_list.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]") + + process = processScheduler.getProcess("nanoui") + stat(null, "[getStatName(process)]([nanomanager.processing_uis.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]") + + process = processScheduler.getProcess("lighting") + stat(null, "[getStatName(process)]\t - #[process.getTicks()]\t - [process.getLastRunTime()]") + process = processScheduler.getProcess("obj") stat(null, "[getStatName(process)]([processing_objects.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]") @@ -760,15 +765,12 @@ note dizziness decrements automatically in the mob's Life() proc. process = processScheduler.getProcess("powernet") stat(null, "[getStatName(process)]([powernets.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]") - process = processScheduler.getProcess("nanoui") - stat(null, "[getStatName(process)]([nanomanager.processing_uis.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]") - - process = processScheduler.getProcess("disease") - stat(null, "[getStatName(process)]([active_diseases.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]") - process = processScheduler.getProcess("sun") stat(null, "[getStatName(process)]\t - #[process.getTicks()]\t - [process.getLastRunTime()]") + process = processScheduler.getProcess("ticker") + stat(null, "[getStatName(process)]\t - #[process.getTicks()]\t - [process.getLastRunTime()]") + else stat(null, "processScheduler is not running.") @@ -785,19 +787,6 @@ note dizziness decrements automatically in the mob's Life() proc. continue statpanel(listed_turf.name, null, A) - if(spell_list && spell_list.len) - for(var/obj/effect/proc_holder/spell/S in spell_list) - switch(S.charge_type) - if("recharge") - statpanel("Spells","[S.charge_counter/10.0]/[S.charge_max/10]",S) - if("charges") - statpanel("Spells","[S.charge_counter]/[S.charge_max]",S) - if("holdervar") - statpanel("Spells","[S.holder_var_type] [S.holder_var_amount]",S) - - - - // facing verbs /mob/proc/canface() if(!canmove) return 0 diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 831798251a2..792517c6d05 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -34,6 +34,9 @@ var/obj/screen/gun/run/gun_run_icon = null var/obj/screen/gun/mode/gun_setting_icon = null + //spells hud icons - this interacts with add_spell and remove_spell + var/list/obj/screen/movable/spell_master/spell_masters = null + /*A bunch of this stuff really needs to go under their own defines instead of being globally attached to mob. A variable should only be globally attached to turfs/objects/whatever, when it is in fact needed as such. The current method unnecessarily clusters up the variable list, especially for humans (although rearranging won't really clean it up a lot but the difference will be noticable for other mobs). @@ -84,6 +87,8 @@ var/lying = 0 var/lying_prev = 0 var/canmove = 1 + //Allows mobs to move through dense areas without restriction. For instance, in space or out of holder objects. + var/incorporeal_move = 0 //0 is off, 1 is normal, 2 is for ninjas. var/lastpuke = 0 var/unacidable = 0 var/small = 0 @@ -183,7 +188,7 @@ var/mob/living/carbon/LAssailant = null //Wizard mode, but can be used in other modes thanks to the brand new "Give Spell" badmin button - var/obj/effect/proc_holder/spell/list/spell_list = list() + var/spell/list/spell_list = list() //Changlings, but can be used in other modes // var/obj/effect/proc_holder/changpower/list/power_list = list() diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 370a921d3c2..101af1d94f7 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -92,8 +92,8 @@ /mob/living/silicon/ai/isAI() return 1 - -/mob/proc/isRobot() + +/mob/proc/isRobot() return 0 /mob/living/silicon/robot/isRobot() @@ -108,6 +108,15 @@ /mob/living/silicon/isSynthetic() return 1 +/mob/living/carbon/human/isMonkey() + return istype(species, /datum/species/monkey) + +/mob/proc/isMonkey() + return 0 + +/mob/living/carbon/human/isMonkey() + return istype(species, /datum/species/monkey) + /proc/ispAI(A) if(istype(A, /mob/living/silicon/pai)) return 1 diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index baf1d299687..cc50cfbde1e 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -170,23 +170,27 @@ /client/Move(n, direct) + if(!mob) + return // Moved here to avoid nullrefs below if(mob.control_object) Move_object(direct) - if(isobserver(mob)) return mob.Move(n,direct) + if(mob.incorporeal_move && isobserver(mob)) + Process_Incorpmove(direct) + return if(moving) return 0 if(world.time < move_delay) return - if(!mob) return - if(locate(/obj/effect/stop/, mob.loc)) for(var/obj/effect/stop/S in mob.loc) if(S.victim == mob) return - if(mob.stat==2) return + if(mob.stat==2) + mob.ghostize() + return // handle possible Eye movement if(mob.eyeobj) @@ -364,13 +368,16 @@ ///Allows mobs to run though walls /client/proc/Process_Incorpmove(direct) var/turf/mobloc = get_turf(mob) - if(!isliving(mob)) - return - var/mob/living/L = mob - switch(L.incorporeal_move) + + switch(mob.incorporeal_move) if(1) - L.loc = get_step(L, direct) - L.dir = direct + var/turf/T = get_step(mob, direct) + if(mob.check_holy(T)) + mob << "You cannot get past holy grounds while you are in this plane of existence!" + return + else + mob.loc = get_step(mob, direct) + mob.dir = direct if(2) if(prob(50)) var/locx @@ -398,21 +405,35 @@ return else return - L.loc = locate(locx,locy,mobloc.z) + mob.loc = locate(locx,locy,mobloc.z) spawn(0) var/limit = 2//For only two trailing shadows. - for(var/turf/T in getline(mobloc, L.loc)) + for(var/turf/T in getline(mobloc, mob.loc)) spawn(0) - anim(T,L,'icons/mob/mob.dmi',,"shadow",,L.dir) + anim(T,mob,'icons/mob/mob.dmi',,"shadow",,mob.dir) limit-- if(limit<=0) break else spawn(0) - anim(mobloc,mob,'icons/mob/mob.dmi',,"shadow",,L.dir) - L.loc = get_step(L, direct) - L.dir = direct + anim(mobloc,mob,'icons/mob/mob.dmi',,"shadow",,mob.dir) + mob.loc = get_step(mob, direct) + mob.dir = direct + // Crossed is always a bit iffy + for(var/obj/S in mob.loc) + if(istype(S,/obj/effect/step_trigger) || istype(S,/obj/effect/beam)) + S.Crossed(mob) + + var/area/A = get_area_master(mob) + if(A) + A.Entered(mob) + if(isturf(mob.loc)) + var/turf/T = mob.loc + T.Entered(mob) + mob.Post_Incorpmove() return 1 +/mob/proc/Post_Incorpmove() + return ///Process_Spacemove ///Called by /client/Move() diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 1d67b712f51..299caf37c51 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -474,6 +474,7 @@ // Do the initial caching of the player's body icons. new_character.force_update_limbs() + new_character.update_eyes() new_character.regenerate_icons() new_character.key = key //Manually transfer the key to log them in diff --git a/code/modules/nano/interaction/admin.dm b/code/modules/nano/interaction/admin.dm new file mode 100644 index 00000000000..59de0ce22eb --- /dev/null +++ b/code/modules/nano/interaction/admin.dm @@ -0,0 +1,7 @@ +/* + This state checks that the user is an admin, end of story +*/ +/var/global/datum/topic_state/admin_state/admin_state = new() + +/datum/topic_state/admin_state/can_use_topic(var/src_object, var/mob/user) + return check_rights(R_ADMIN, 0, user) ? STATUS_INTERACTIVE : STATUS_CLOSE diff --git a/code/modules/nano/interaction/base.dm b/code/modules/nano/interaction/base.dm new file mode 100644 index 00000000000..65a7b273eb7 --- /dev/null +++ b/code/modules/nano/interaction/base.dm @@ -0,0 +1,19 @@ +/atom/proc/nano_host() + return src + +/atom/proc/CanUseTopic(var/mob/user, var/datum/topic_state/state) + var/src_object = nano_host() + return state.can_use_topic(src_object, user) + +/datum/topic_state/proc/href_list(var/mob/user) + return list() + +/datum/topic_state/proc/can_use_topic(var/src_object, var/mob/user) + return STATUS_CLOSE + +/mob/proc/shared_nano_interaction() + if (src.stat || !client) + return STATUS_CLOSE // no updates, close the interface + else if (restrained() || lying || stat || stunned || weakened) + return STATUS_UPDATE // update only (orange visibility) + return STATUS_INTERACTIVE diff --git a/code/modules/nano/interaction/contained.dm b/code/modules/nano/interaction/contained.dm new file mode 100644 index 00000000000..c9ecba15be2 --- /dev/null +++ b/code/modules/nano/interaction/contained.dm @@ -0,0 +1,18 @@ +/* + This state checks if user is somewhere within src_object, as well as the default NanoUI interaction. +*/ +/var/global/datum/topic_state/contained_state/contained_state = new() + +/datum/topic_state/contained_state/can_use_topic(var/atom/src_object, var/mob/user) + if(!src_object.contains(src)) + return STATUS_CLOSE + + return user.shared_nano_interaction() + +/atom/proc/contains(var/atom/location) + if(!location) + return 0 + if(location == src) + return 1 + + return contains(location.loc) diff --git a/code/modules/nano/nanointeraction.dm b/code/modules/nano/interaction/default.dm similarity index 62% rename from code/modules/nano/nanointeraction.dm rename to code/modules/nano/interaction/default.dm index d929cfe2b58..6fd931160d7 100644 --- a/code/modules/nano/nanointeraction.dm +++ b/code/modules/nano/interaction/default.dm @@ -1,41 +1,36 @@ -/atom/proc/nano_host() - return src +/var/global/datum/topic_state/default/default_state = new() -/obj/nano_module/nano_host() - return loc +/datum/topic_state/default/href_list(var/mob/user) + return list() +/datum/topic_state/default/can_use_topic(var/src_object, var/mob/user) + return user.default_can_use_topic(src_object) -/atom/proc/CanUseTopic(var/mob/user, href_list, var/datum/topic_state/custom_state) - return user.can_use_topic(nano_host(), custom_state) - - -/mob/proc/can_use_topic(var/mob/user, var/datum/topic_state/custom_state) +/mob/proc/default_can_use_topic(var/src_object) return STATUS_CLOSE // By default no mob can do anything with NanoUI -/mob/dead/observer/can_use_topic() +/mob/dead/observer/default_can_use_topic() if(check_rights(R_ADMIN, 0, src)) return STATUS_INTERACTIVE // Admins are more equal return STATUS_UPDATE // Ghosts can view updates -/mob/living/silicon/pai/can_use_topic(var/src_object) +/mob/living/silicon/pai/default_can_use_topic(var/src_object) if(src_object == src && !stat) return STATUS_INTERACTIVE else return ..() -/mob/living/silicon/robot/can_use_topic(var/src_object, var/datum/topic_state/custom_state) +/mob/living/silicon/robot/default_can_use_topic(var/src_object) if(stat || !client) return STATUS_CLOSE if(lockcharge || stunned || weakened) return STATUS_DISABLED - if(custom_state.flags & NANO_IGNORE_DISTANCE) - return STATUS_INTERACTIVE // robots can interact with things they can see within their view range if((src_object in view(src)) && get_dist(src_object, src) <= src.client.view) return STATUS_INTERACTIVE // interactive (green visibility) return STATUS_DISABLED // no updates, completely disabled (red visibility) -/mob/living/silicon/robot/syndicate/can_use_topic(var/src_object) +/mob/living/silicon/robot/syndicate/default_can_use_topic(var/src_object) . = ..() if(. != STATUS_INTERACTIVE) return @@ -50,7 +45,7 @@ return STATUS_INTERACTIVE return STATUS_UPDATE -/mob/living/silicon/ai/can_use_topic(var/src_object) +/mob/living/silicon/ai/default_can_use_topic(var/src_object) if(!client || check_unable(1)) return STATUS_CLOSE // Prevents the AI from using Topic on admin levels (by for example viewing through the court/thunderdome cameras) @@ -70,27 +65,16 @@ if(cameranet && !cameranet.checkTurfVis(get_turf(src_object))) return apc_override ? STATUS_INTERACTIVE : STATUS_CLOSE return STATUS_INTERACTIVE + else if(get_dist(src_object, src) <= client.view) // View does not return what one would expect while installed in an inteliCard + return STATUS_INTERACTIVE - return STATUS_CLOSE - -/mob/living/proc/shared_living_nano_interaction(var/src_object) - if (src.stat != CONSCIOUS) - return STATUS_CLOSE // no updates, close the interface - else if (restrained() || lying || stat || stunned || weakened) - return STATUS_UPDATE // update only (orange visibility) - return STATUS_INTERACTIVE + return STATUS_CLOSE //Some atoms such as vehicles might have special rules for how mobs inside them interact with NanoUI. /atom/proc/contents_nano_distance(var/src_object, var/mob/living/user) return user.shared_living_nano_distance(src_object) /mob/living/proc/shared_living_nano_distance(var/atom/movable/src_object) - if(!isturf(src_object.loc)) - if(src_object.loc == src) // Item in the inventory - return STATUS_INTERACTIVE - if(src.contents.Find(src_object.loc)) // A hidden uplink inside an item - return STATUS_INTERACTIVE - if (!(src_object in view(4, src))) // If the src object is not in visable, disable updates return STATUS_CLOSE @@ -103,27 +87,17 @@ return STATUS_DISABLED // no updates, completely disabled (red visibility) return STATUS_CLOSE -/mob/living/can_use_topic(var/src_object, var/datum/topic_state/custom_state) - . = shared_living_nano_interaction(src_object) - if(. == STATUS_INTERACTIVE && !(custom_state.flags & NANO_IGNORE_DISTANCE)) +/mob/living/default_can_use_topic(var/src_object) + . = shared_nano_interaction(src_object) + if(. == STATUS_INTERACTIVE) if(loc) . = loc.contents_nano_distance(src_object, src) - else - . = shared_living_nano_distance(src_object) if(STATUS_INTERACTIVE) return STATUS_UPDATE -/mob/living/carbon/human/can_use_topic(var/src_object, var/datum/topic_state/custom_state) - . = shared_living_nano_interaction(src_object) - if(. == STATUS_INTERACTIVE && !(custom_state.flags & NANO_IGNORE_DISTANCE)) +/mob/living/carbon/human/default_can_use_topic(var/src_object) + . = shared_nano_interaction(src_object) + if(. == STATUS_INTERACTIVE) . = shared_living_nano_distance(src_object) if(. == STATUS_UPDATE && (TK in mutations)) // If we have telekinesis and remain close enough, allow interaction. return STATUS_INTERACTIVE - -/var/global/datum/topic_state/default_state = new() - -/datum/topic_state - var/flags = 0 - -/datum/topic_state/proc/href_list(var/mob/user) - return list() \ No newline at end of file diff --git a/code/modules/nano/interaction/inventory.dm b/code/modules/nano/interaction/inventory.dm new file mode 100644 index 00000000000..9bbd7c7ecb5 --- /dev/null +++ b/code/modules/nano/interaction/inventory.dm @@ -0,0 +1,10 @@ +/* + This state checks that the src_object is somewhere in the user's first-level inventory (in hands, on ear, etc.), but not further down (such as in bags). +*/ +/var/global/datum/topic_state/inventory_state/inventory_state = new() + +/datum/topic_state/inventory_state/can_use_topic(var/src_object, var/mob/user) + if(!(src_object in src)) + return STATUS_CLOSE + + return user.shared_nano_interaction() diff --git a/code/modules/nano/interaction/zlevel.dm b/code/modules/nano/interaction/zlevel.dm new file mode 100644 index 00000000000..80d4c2e601c --- /dev/null +++ b/code/modules/nano/interaction/zlevel.dm @@ -0,0 +1,13 @@ +/* + This state checks that the user is on the same Z-level as src_object +*/ + +/var/global/datum/topic_state/z_state/z_state = new() + +/datum/topic_state/z_state/can_use_topic(var/src_object, var/mob/user) + var/turf/turf_obj = get_turf(src_object) + var/turf/turf_usr = get_turf(user) + if(!turf_obj || !turf_usr) + return STATUS_CLOSE + + return turf_obj.z == turf_usr.z ? STATUS_INTERACTIVE : STATUS_CLOSE diff --git a/code/modules/nano/modules/alarm_monitor.dm b/code/modules/nano/modules/alarm_monitor.dm index 9047023bf1b..b27349bf9a8 100644 --- a/code/modules/nano/modules/alarm_monitor.dm +++ b/code/modules/nano/modules/alarm_monitor.dm @@ -85,7 +85,7 @@ "origin_lost" = A.origin == null, "has_cameras" = cameras.len, "cameras" = cameras, - "lost_sources" = sanitize(english_list(lost_sources, nothing_text = "", and_text = ", ")))) + "lost_sources" = lost_sources.len ? sanitize(english_list(lost_sources, nothing_text = "", and_text = ", ")) : "")) data["categories"] = categories ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) diff --git a/code/modules/nano/modules/human_appearance.dm b/code/modules/nano/modules/human_appearance.dm index be2259d618f..47324c47b07 100644 --- a/code/modules/nano/modules/human_appearance.dm +++ b/code/modules/nano/modules/human_appearance.dm @@ -18,7 +18,7 @@ src.whitelist = species_whitelist src.blacklist = species_blacklist -/obj/nano_module/appearance_changer/Topic(ref, href_list) +/obj/nano_module/appearance_changer/Topic(ref, href_list, var/nowindow, var/datum/topic_state/state = default_state) if(..()) return 1 @@ -35,13 +35,13 @@ if(href_list["skin_tone"]) if(can_change_skin_tone()) var/new_s_tone = input(usr, "Choose your character's skin-tone:\n(Light 1 - 220 Dark)", "Skin Tone", owner.s_tone) as num|null - if(isnum(new_s_tone) && CanUseTopic(usr) == STATUS_INTERACTIVE) + if(isnum(new_s_tone) && can_still_topic(state)) new_s_tone = 35 - max(min( round(new_s_tone), 220),1) return owner.change_skin_tone(new_s_tone) if(href_list["skin_color"]) if(can_change_skin_color()) var/new_skin = input(usr, "Choose your character's skin colour: ", "Skin Color", rgb(owner.r_skin, owner.g_skin, owner.b_skin)) as color|null - if(new_skin && can_still_topic()) + if(new_skin && can_still_topic(state)) var/r_skin = hex2num(copytext(new_skin, 2, 4)) var/g_skin = hex2num(copytext(new_skin, 4, 6)) var/b_skin = hex2num(copytext(new_skin, 6, 8)) @@ -56,7 +56,7 @@ if(href_list["hair_color"]) if(can_change(APPEARANCE_HAIR_COLOR)) var/new_hair = input("Please select hair color.", "Hair Color", rgb(owner.r_hair, owner.g_hair, owner.b_hair)) as color|null - if(new_hair && can_still_topic()) + if(new_hair && can_still_topic(state)) var/r_hair = hex2num(copytext(new_hair, 2, 4)) var/g_hair = hex2num(copytext(new_hair, 4, 6)) var/b_hair = hex2num(copytext(new_hair, 6, 8)) @@ -71,7 +71,7 @@ if(href_list["facial_hair_color"]) if(can_change(APPEARANCE_FACIAL_HAIR_COLOR)) var/new_facial = input("Please select facial hair color.", "Facial Hair Color", rgb(owner.r_facial, owner.g_facial, owner.b_facial)) as color|null - if(new_facial && can_still_topic()) + if(new_facial && can_still_topic(state)) var/r_facial = hex2num(copytext(new_facial, 2, 4)) var/g_facial = hex2num(copytext(new_facial, 4, 6)) var/b_facial = hex2num(copytext(new_facial, 6, 8)) @@ -81,7 +81,7 @@ if(href_list["eye_color"]) if(can_change(APPEARANCE_EYE_COLOR)) var/new_eyes = input("Please select eye color.", "Eye Color", rgb(owner.r_eyes, owner.g_eyes, owner.b_eyes)) as color|null - if(new_eyes && can_still_topic()) + if(new_eyes && can_still_topic(state)) var/r_eyes = hex2num(copytext(new_eyes, 2, 4)) var/g_eyes = hex2num(copytext(new_eyes, 4, 6)) var/b_eyes = hex2num(copytext(new_eyes, 6, 8)) @@ -91,7 +91,7 @@ return 0 -/obj/nano_module/appearance_changer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) +/obj/nano_module/appearance_changer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) generate_data(check_whitelist, whitelist, blacklist) var/data[0] @@ -128,7 +128,7 @@ data["change_facial_hair_color"] = can_change(APPEARANCE_FACIAL_HAIR_COLOR) ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) - ui = new(user, src, ui_key, "appearance_changer.tmpl", "[src.name]", 800, 450) + ui = new(user, src, ui_key, "appearance_changer.tmpl", "[src.name]", 800, 450, state = state) ui.set_initial_data(data) ui.open() ui.set_auto_update(1) diff --git a/code/modules/nano/modules/law_manager.dm b/code/modules/nano/modules/law_manager.dm index 4f81585a04a..7cdd93b4dcf 100644 --- a/code/modules/nano/modules/law_manager.dm +++ b/code/modules/nano/modules/law_manager.dm @@ -152,7 +152,7 @@ return 0 -/obj/nano_module/law_manager/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) +/obj/nano_module/law_manager/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) var/data[0] owner.lawsync() @@ -189,7 +189,7 @@ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) - ui = new(user, src, ui_key, "law_manager.tmpl", sanitize("[src] - [owner]"), 800, is_malf(user) ? 600 : 400) + ui = new(user, src, ui_key, "law_manager.tmpl", sanitize("[src] - [owner]"), 800, is_malf(user) ? 600 : 400, state = state) ui.set_initial_data(data) ui.open() ui.set_auto_update(1) diff --git a/code/modules/nano/modules/nano_module.dm b/code/modules/nano/modules/nano_module.dm index 3787639c9d0..3fa82750992 100644 --- a/code/modules/nano/modules/nano_module.dm +++ b/code/modules/nano/modules/nano_module.dm @@ -1,2 +1,5 @@ -/obj/nano_module/proc/can_still_topic() - return CanUseTopic(usr, list(), default_state) == STATUS_INTERACTIVE +/obj/nano_module/nano_host() + return loc + +/obj/nano_module/proc/can_still_topic(var/datum/topic_state/state = default_state) + return CanUseTopic(usr, state) == STATUS_INTERACTIVE diff --git a/code/modules/nano/nanoexternal.dm b/code/modules/nano/nanoexternal.dm index b029019f1a3..bb283accf52 100644 --- a/code/modules/nano/nanoexternal.dm +++ b/code/modules/nano/nanoexternal.dm @@ -37,7 +37,7 @@ * * @return nothing */ -/atom/movable/proc/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/nano_ui/master_ui = null, var/datum/topic_state/custom_state = null) +/atom/movable/proc/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/nano_ui/master_ui = null, var/datum/topic_state/state = default_state) return // Used by the Nano UI Manager (/datum/nanomanager) to track UIs opened by this mob diff --git a/code/modules/nano/nanoui.dm b/code/modules/nano/nanoui.dm index 2c86343515b..ffc6208f39e 100644 --- a/code/modules/nano/nanoui.dm +++ b/code/modules/nano/nanoui.dm @@ -55,7 +55,7 @@ nanoui is used to open and update nano browser uis // Relationship between a master interface and its children. Used in update_status var/datum/nanoui/master_ui var/list/datum/nanoui/children = list() - var/datum/topic_state/custom_state = null + var/datum/topic_state/state = null var/cached_data = null @@ -73,7 +73,7 @@ nanoui is used to open and update nano browser uis * * @return /nanoui new nanoui object */ -/datum/nanoui/New(nuser, nsrc_object, nui_key, ntemplate_filename, ntitle = 0, nwidth = 0, nheight = 0, var/atom/nref = null, var/datum/nanoui/master_ui = null, var/datum/topic_state/custom_state = default_state) +/datum/nanoui/New(nuser, nsrc_object, nui_key, ntemplate_filename, ntitle = 0, nwidth = 0, nheight = 0, var/atom/nref = null, var/datum/nanoui/master_ui = null, var/datum/topic_state/state = default_state) user = nuser src_object = nsrc_object ui_key = nui_key @@ -82,7 +82,7 @@ nanoui is used to open and update nano browser uis src.master_ui = master_ui if(master_ui) master_ui.children += src - src.custom_state = custom_state + src.state = state // add the passed template filename as the "main" template, this is required add_template("main", ntemplate_filename) @@ -142,8 +142,7 @@ nanoui is used to open and update nano browser uis * @return nothing */ /datum/nanoui/proc/update_status(var/push_update = 0) - var/atom/movable/host = src_object.nano_host() - var/new_status = host.CanUseTopic(user, list(), custom_state) + var/new_status = src_object.CanUseTopic(user, state) if(master_ui) new_status = min(new_status, master_ui.status) @@ -483,7 +482,7 @@ nanoui is used to open and update nano browser uis set_map_z_level(text2num(href_list["mapZLevel"])) map_update = 1 - if ((src_object && src_object.Topic(href, href_list, 0, custom_state)) || map_update) + if ((src_object && src_object.Topic(href, href_list, 0, state)) || map_update) nanomanager.update_uis(src_object) // update all UIs attached to src_object /** @@ -510,4 +509,4 @@ nanoui is used to open and update nano browser uis * @return nothing */ /datum/nanoui/proc/update(var/force_open = 0) - src_object.ui_interact(user, ui_key, src, force_open, master_ui, custom_state) + src_object.ui_interact(user, ui_key, src, force_open, master_ui, state) diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index f97df890809..a9da4486937 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -3,7 +3,7 @@ var/list/organ_cache = list() /obj/item/organ name = "organ" icon = 'icons/obj/surgery.dmi' - + var/dead_icon var/mob/living/carbon/human/owner = null var/status = 0 var/vital //Lose a vital limb, die immediately. @@ -50,11 +50,12 @@ var/list/organ_cache = list() holder.internal_organs |= src /obj/item/organ/proc/die() - name = "dead [initial(name)]" - health = 0 + if(status & ORGAN_ROBOT) + return + damage = max_damage processing_objects -= src - //TODO: Grey out the icon state. - //TODO: Inject an organ with peridaxon to make it alive again. + if(dead_icon) + icon_state = dead_icon /obj/item/organ/process() @@ -75,10 +76,10 @@ var/list/organ_cache = list() if(B && prob(40)) reagents.remove_reagent("blood",0.1) blood_splatter(src,B,1) - - health -= rand(1,3) - if(health <= 0) + damage += rand(1,3) + if(damage >= max_damage) die() + else if(owner.bodytemperature >= 170) //cryo stops germs from moving and doing their bad stuffs //** Handle antibiotics and curing infections handle_antibiotics() @@ -145,7 +146,7 @@ var/list/organ_cache = list() return damage >= min_bruised_damage /obj/item/organ/proc/is_broken() - return (damage >= min_broken_damage || (status & ORGAN_CUT_AWAY) || ((status & ORGAN_BROKEN) && !(status & ORGAN_SPLINTED))) + return (damage >= min_broken_damage || (status & ORGAN_CUT_AWAY) || (status & ORGAN_BROKEN)) //Germs /obj/item/organ/proc/handle_antibiotics() @@ -179,9 +180,10 @@ var/list/organ_cache = list() else src.damage += amount - var/obj/item/organ/external/parent = owner.get_organ(parent_organ) - if (!silent) - owner.custom_pain("Something inside your [parent.name] hurts a lot.", 1) + if(owner && parent_organ) + var/obj/item/organ/external/parent = owner.get_organ(parent_organ) + if(parent && !silent) + owner.custom_pain("Something inside your [parent.name] hurts a lot.", 1) /obj/item/organ/proc/robotize() //Being used to make robutt hearts, etc robotic = 2 @@ -241,7 +243,7 @@ var/list/organ_cache = list() var/obj/item/organ/external/affected = owner.get_organ(parent_organ) if(affected) affected.internal_organs -= src - loc = owner.loc + loc = get_turf(owner) processing_objects |= src rejecting = null var/datum/reagent/blood/organ_blood = locate(/datum/reagent/blood) in reagents.reagent_list @@ -255,6 +257,8 @@ var/list/organ_cache = list() msg_admin_attack("[user.name] ([user.ckey]) removed a vital organ ([src]) from [owner.name] ([owner.ckey]) (INTENT: [uppertext(user.a_intent)]) (JMP)") owner.death() + owner = null + /obj/item/organ/proc/replaced(var/mob/living/carbon/human/target,var/obj/item/organ/external/affected) if(!istype(target)) return @@ -271,13 +275,13 @@ var/list/organ_cache = list() transplant_data["blood_DNA"] = transplant_blood.data["blood_DNA"] owner = target + loc = owner processing_objects -= src target.internal_organs |= src affected.internal_organs |= src target.internal_organs_by_name[organ_tag] = src - status |= ORGAN_CUT_AWAY - - del(src) + if(robotic) + status |= ORGAN_ROBOT /obj/item/organ/eyes/replaced(var/mob/living/carbon/human/target) @@ -286,7 +290,7 @@ var/list/organ_cache = list() target.r_eyes = eye_colour[1] target.g_eyes = eye_colour[2] target.b_eyes = eye_colour[3] - target.update_body() + target.update_eyes() ..() /obj/item/organ/proc/bitten(mob/user) @@ -298,7 +302,6 @@ var/list/organ_cache = list() var/datum/reagent/blood/B = locate(/datum/reagent/blood) in reagents.reagent_list blood_splatter(src,B,1) - user.drop_from_inventory(src) var/obj/item/weapon/reagent_containers/food/snacks/organ/O = new(get_turf(src)) O.name = name diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index d8ba25d750b..650eea751cf 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -96,9 +96,14 @@ dislocated = 0 if(children && children.len) for(var/obj/item/organ/external/child in children) - child.undislocate() + if(child.dislocated == 1) + child.undislocate() if(owner) owner.shock_stage += 20 + for(var/obj/item/organ/external/limb in owner.organs) + if(limb.dislocated == 2) + return + owner.verbs -= /mob/living/carbon/human/proc/undislocate /obj/item/organ/external/update_health() damage = min(max_damage, (brute_dam + burn_dam)) @@ -110,6 +115,8 @@ if(owner) replaced(owner) sync_colour_to_human(owner) + spawn(1) + get_icon() /obj/item/organ/external/replaced(var/mob/living/carbon/human/target) owner = target @@ -243,10 +250,10 @@ status &= ~ORGAN_BROKEN perma_injury = 0 - if((brute || burn) && children && children.len && (owner.species.flags & REGENERATES_LIMBS)) + /*if((brute || burn) && children && children.len && (owner.species.flags & REGENERATES_LIMBS)) var/obj/item/organ/external/stump/S = locate() in children if(S) - world << "Extra healing to go around ([brute+burn]) and [owner] needs a replacement limb." + world << "Extra healing to go around ([brute+burn]) and [owner] needs a replacement limb."*/ //Sync the organ's damage with its wounds src.update_damages() @@ -333,8 +340,12 @@ This function completely restores a damaged organ to perfect condition. PROCESSING & UPDATING ****************************************************/ -//Determines if we even need to process this organ. +//external organs handle brokenness a bit differently when it comes to damage. Instead brute_dam is checked inside process() +//this also ensures that an external organ cannot be "broken" without broken_description being set. +/obj/item/organ/external/is_broken() + return ((status & ORGAN_CUT_AWAY) || ((status & ORGAN_BROKEN) && !(status & ORGAN_SPLINTED))) +//Determines if we even need to process this organ. /obj/item/organ/external/proc/need_process() if(status && status != ORGAN_ROBOT) // If it's robotic, that's fine it will have a status. return 1 @@ -634,8 +645,9 @@ Note that amputating the affected organ does in fact remove the infection from t "Your [src.name] explodes in a shower of gore!",\ "You hear the sickening splatter of gore.") - src.removed(null, ignore_children) - owner.traumatic_shock += 60 + var/mob/living/carbon/human/victim = owner //Keep a reference for post-removed(). + removed(null, ignore_children) + victim.traumatic_shock += 60 wounds.Cut() if(parent) @@ -649,22 +661,22 @@ Note that amputating the affected organ does in fact remove the infection from t parent.wounds |= W parent.update_damages() else - var/obj/item/organ/external/stump/stump = new (owner, 0, src) + var/obj/item/organ/external/stump/stump = new (victim, 0, src) stump.wounds |= W - owner.organs |= stump + victim.organs |= stump stump.update_damages() parent = null spawn(1) - owner.update_body() - owner.updatehealth() - owner.UpdateDamageIcon() + victim.updatehealth() + victim.UpdateDamageIcon() + victim.regenerate_icons() dir = 2 switch(disintegrate) if(DROPLIMB_EDGE) compile_icon() - add_blood(owner) + add_blood(victim) var/matrix/M = matrix() M.Turn(rand(180)) src.transform = M @@ -675,13 +687,13 @@ Note that amputating the affected organ does in fact remove the infection from t dir = 2 return if(DROPLIMB_BURN) - new /obj/effect/decal/cleanable/ash(get_turf(owner)) + new /obj/effect/decal/cleanable/ash(get_turf(victim)) if(DROPLIMB_BLUNT) - var/obj/effect/decal/cleanable/blood/gibs/gore = new owner.species.single_gib_type(get_turf(owner)) - if(owner.species.flesh_color) - gore.fleshcolor = owner.species.flesh_color - if(owner.species.blood_color) - gore.basecolor = owner.species.blood_color + var/obj/effect/decal/cleanable/blood/gibs/gore = new owner.species.single_gib_type(get_turf(victim)) + if(victim.species.flesh_color) + gore.fleshcolor = victim.species.flesh_color + if(victim.species.blood_color) + gore.basecolor = victim.species.blood_color gore.update_icon() gore.throw_at(get_edge_target_turf(src,pick(alldirs)),rand(1,3),30) @@ -699,25 +711,21 @@ Note that amputating the affected organ does in fact remove the infection from t /obj/item/organ/external/proc/is_stump() return 0 -/obj/item/organ/external/replaced() - get_icon() - icon = mob_icon - return ..() - -/obj/item/organ/external/proc/release_restraints() - if (owner.handcuffed && body_part in list(ARM_LEFT, ARM_RIGHT, HAND_LEFT, HAND_RIGHT)) - owner.visible_message(\ - "\The [owner.handcuffed.name] falls off of [owner.name].",\ - "\The [owner.handcuffed.name] falls off you.") - - owner.drop_from_inventory(owner.handcuffed) - - if (owner.legcuffed && body_part in list(FOOT_LEFT, FOOT_RIGHT, LEG_LEFT, LEG_RIGHT)) - owner.visible_message(\ - "\The [owner.legcuffed.name] falls off of [owner.name].",\ - "\The [owner.legcuffed.name] falls off you.") - - owner.drop_from_inventory(owner.legcuffed) +/obj/item/organ/external/proc/release_restraints(var/mob/living/carbon/human/holder) + if(!holder) + holder = owner + if(!holder) + return + if (holder.handcuffed && body_part in list(ARM_LEFT, ARM_RIGHT, HAND_LEFT, HAND_RIGHT)) + holder.visible_message(\ + "\The [holder.handcuffed.name] falls off of [holder.name].",\ + "\The [holder.handcuffed.name] falls off you.") + holder.drop_from_inventory(holder.handcuffed) + if (holder.legcuffed && body_part in list(FOOT_LEFT, FOOT_RIGHT, LEG_LEFT, LEG_RIGHT)) + holder.visible_message(\ + "\The [holder.legcuffed.name] falls off of [holder.name].",\ + "\The [holder.legcuffed.name] falls off you.") + holder.drop_from_inventory(holder.legcuffed) /obj/item/organ/external/proc/bandage() var/rval = 0 @@ -813,7 +821,7 @@ Note that amputating the affected organ does in fact remove the infection from t name = "[R.company] [initial(name)]" desc = "[R.desc]" - dislocated = -1 + dislocated = -1 //TODO, make robotic limbs a separate type, remove snowflake cannot_break = 1 get_icon() for (var/obj/item/organ/external/T in children) @@ -838,7 +846,7 @@ Note that amputating the affected organ does in fact remove the infection from t return 0 /obj/item/organ/external/proc/is_usable() - return !(status & (ORGAN_DESTROYED|ORGAN_MUTATED|ORGAN_DEAD)) + return !is_dislocated() && !(status & (ORGAN_DESTROYED|ORGAN_MUTATED|ORGAN_DEAD)) /obj/item/organ/external/proc/is_malfunctioning() return ((status & ORGAN_ROBOT) && (brute_dam + burn_dam) >= 10 && prob(brute_dam + burn_dam)) @@ -859,11 +867,15 @@ Note that amputating the affected organ does in fact remove the infection from t /obj/item/organ/external/removed(var/mob/living/user, var/ignore_children) + if(!owner) + return var/is_robotic = status & ORGAN_ROBOT + var/mob/living/carbon/human/victim = owner + ..() status |= ORGAN_DESTROYED - owner.bad_external_organs -= src + victim.bad_external_organs -= src for(var/implant in implants) //todo: check if this can be left alone del(implant) @@ -880,19 +892,19 @@ Note that amputating the affected organ does in fact remove the infection from t organ.removed() organ.loc = src - release_restraints() - owner.organs -= src - owner.organs_by_name[limb_name] = null // Remove from owner's vars. + release_restraints(victim) + victim.organs -= src + victim.organs_by_name[limb_name] = null // Remove from owner's vars. //Robotic limbs explode if sabotaged. if(is_robotic && sabotaged) - owner.visible_message( - "\The [owner]'s [src.name] explodes violently!",\ + victim.visible_message( + "\The [victim]'s [src.name] explodes violently!",\ "Your [src.name] explodes!",\ "You hear an explosion!") explosion(get_turf(owner),-1,-1,2,3) var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() - spark_system.set_up(5, 0, owner) + spark_system.set_up(5, 0, victim) spark_system.attach(owner) spark_system.start() spawn(10) diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm index b0e23df3d25..d05a269f28f 100644 --- a/code/modules/organs/organ_icon.dm +++ b/code/modules/organs/organ_icon.dm @@ -5,13 +5,12 @@ var/global/list/limb_icon_cache = list() /obj/item/organ/external/proc/compile_icon() overlays.Cut() - get_icon() // This is a kludge, only one icon has more than one generation of children though. for(var/obj/item/organ/external/organ in contents) if(organ.children && organ.children.len) for(var/obj/item/organ/external/child in organ.children) - overlays += child.get_icon() - overlays += organ.get_icon() + overlays += child.mob_icon + overlays += organ.mob_icon /obj/item/organ/external/proc/sync_colour_to_human(var/mob/living/carbon/human/human) s_tone = null @@ -23,6 +22,49 @@ var/global/list/limb_icon_cache = list() if(human.species.flags & HAS_SKIN_COLOR) s_col = list(human.r_skin, human.g_skin, human.b_skin) +/obj/item/organ/external/head/sync_colour_to_human(var/mob/living/carbon/human/human) + ..() + var/obj/item/organ/eyes/eyes = owner.internal_organs_by_name["eyes"] + if(eyes) eyes.update_colour() + +/obj/item/organ/external/head/removed() + get_icon() + ..() + +/obj/item/organ/external/head/get_icon() + + ..() + if(owner.species.has_organ["eyes"]) + var/obj/item/organ/eyes/eyes = owner.internal_organs_by_name["eyes"] + if(owner.species.eyes) + var/icon/eyes_icon = new/icon('icons/mob/human_face.dmi', owner.species.eyes) + if(eyes) + eyes_icon.Blend(rgb(eyes.eye_colour[1], eyes.eye_colour[2], eyes.eye_colour[3]), ICON_ADD) + else + eyes_icon.Blend(rgb(128,0,0), ICON_ADD) + mob_icon.Blend(eyes_icon, ICON_OVERLAY) + + if(owner.lip_style && (owner.species && (owner.species.flags & HAS_LIPS))) + mob_icon.Blend(new/icon('icons/mob/human_face.dmi', "lips_[owner.lip_style]_s"), ICON_OVERLAY) + + if(owner.f_style) + var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[owner.f_style] + if(facial_hair_style && facial_hair_style.species_allowed && (owner.species.name in facial_hair_style.species_allowed)) + var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s") + if(facial_hair_style.do_colouration) + facial_s.Blend(rgb(owner.r_facial, owner.g_facial, owner.b_facial), ICON_ADD) + overlays |= facial_s + + if(owner.h_style && !(owner.head && (owner.head.flags & BLOCKHEADHAIR))) + var/datum/sprite_accessory/hair_style = hair_styles_list[owner.h_style] + if(hair_style && (owner.species.name in hair_style.species_allowed)) + var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s") + if(hair_style.do_colouration) + hair_s.Blend(rgb(owner.r_hair, owner.g_hair, owner.b_hair), ICON_ADD) + overlays |= hair_s + + return mob_icon + /obj/item/organ/external/proc/get_icon(var/skeletal) var/gender @@ -66,43 +108,6 @@ var/global/list/limb_icon_cache = list() return mob_icon -/obj/item/organ/external/head/get_icon(var/skeletal) - - if(skeletal || !owner) - return - - ..() - - if(owner.species.has_organ["eyes"]) - var/obj/item/organ/eyes/eyes = owner.internal_organs_by_name["eyes"] - if(eyes && owner.species.eyes) - var/icon/eyes_icon = new/icon('icons/mob/human_face.dmi', owner.species.eyes) - eyes_icon.Blend(rgb(eyes.eye_colour[1], eyes.eye_colour[2], eyes.eye_colour[3]), ICON_ADD) - mob_icon.Blend(eyes_icon, ICON_OVERLAY) - - if(owner.lip_style && (owner.species && (owner.species.flags & HAS_LIPS))) - mob_icon.Blend(new/icon('icons/mob/human_face.dmi', "lips_[owner.lip_style]_s"), ICON_OVERLAY) - - if(owner.f_style) - var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[owner.f_style] - if(facial_hair_style) - var/icon/facial = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s") - if(facial_hair_style.do_colouration) - facial.Blend(rgb(owner.r_facial, owner.g_facial, owner.b_facial), ICON_ADD) - mob_icon.Blend(facial, ICON_OVERLAY) - - if(owner.h_style && !(owner.head && (owner.head.flags & BLOCKHEADHAIR))) - var/datum/sprite_accessory/hair_style = hair_styles_list[owner.h_style] - if(hair_style) - var/icon/hair = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s") - if(hair_style.do_colouration) - hair.Blend(rgb(owner.r_hair, owner.g_hair, owner.b_hair), ICON_ADD) - - mob_icon.Blend(hair, ICON_OVERLAY) - - icon = mob_icon - return mob_icon - // new damage icon system // adjusted to set damage_state to brute/burn code only (without r_name0 as before) /obj/item/organ/external/update_icon() diff --git a/code/modules/organs/organ_internal.dm b/code/modules/organs/organ_internal.dm index 46e22e1e5fa..f7875a1e25f 100644 --- a/code/modules/organs/organ_internal.dm +++ b/code/modules/organs/organ_internal.dm @@ -11,6 +11,7 @@ icon_state = "heart-on" organ_tag = "heart" parent_organ = "chest" + dead_icon = "heart-off" /obj/item/organ/lungs name = "lungs" @@ -69,6 +70,15 @@ parent_organ = "head" var/list/eye_colour = list(0,0,0) +/obj/item/organ/eyes/proc/update_colour() + if(!owner) + return + eye_colour = list( + owner.r_eyes ? owner.r_eyes : 0, + owner.g_eyes ? owner.g_eyes : 0, + owner.b_eyes ? owner.b_eyes : 0 + ) + /obj/item/organ/eyes/process() //Eye damage replaces the old eye_stat var. ..() if(!owner) @@ -78,36 +88,6 @@ if(is_broken()) owner.eye_blind = 20 -/obj/item/organ/eyes/New() - ..() - if(owner) - eye_colour = list( - owner.r_eyes ? owner.r_eyes : 0, - owner.g_eyes ? owner.g_eyes : 0, - owner.b_eyes ? owner.b_eyes : 0 - ) - -/obj/item/organ/eyes/removed(var/mob/living/target,var/mob/living/user) - - if(!eye_colour) - eye_colour = list(0,0,0) - - ..() //Make sure target is set so we can steal their eye colour for later. - var/mob/living/carbon/human/H = target - if(istype(H)) - eye_colour = list( - H.r_eyes ? H.r_eyes : 0, - H.g_eyes ? H.g_eyes : 0, - H.b_eyes ? H.b_eyes : 0 - ) - - // Leave bloody red pits behind! - H.r_eyes = 128 - H.g_eyes = 0 - H.b_eyes = 0 - H.update_body() - - /obj/item/organ/liver name = "liver" icon_state = "liver" @@ -178,14 +158,13 @@ /obj/item/organ/appendix/removed() - ..() - - var/inflamed = 0 - for(var/datum/disease/appendicitis/appendicitis in owner.viruses) - inflamed = 1 - appendicitis.cure() - owner.resistances += appendicitis - - if(inflamed) - icon_state = "appendixinflamed" - name = "inflamed appendix" \ No newline at end of file + if(owner) + var/inflamed = 0 + for(var/datum/disease/appendicitis/appendicitis in owner.viruses) + inflamed = 1 + appendicitis.cure() + owner.resistances += appendicitis + if(inflamed) + icon_state = "appendixinflamed" + name = "inflamed appendix" + ..() \ No newline at end of file diff --git a/code/modules/organs/wound.dm b/code/modules/organs/wound.dm index 9d4a5364ae1..1d34ed72845 100644 --- a/code/modules/organs/wound.dm +++ b/code/modules/organs/wound.dm @@ -209,9 +209,9 @@ /** WOUND DEFINITIONS **/ -//Note that the MINIMUM damage before a wound can be applied should correspond to +//Note that the MINIMUM damage before a wound can be applied should correspond to //the damage amount for the stage with the same name as the wound. -//e.g. /datum/wound/cut/deep should only be applied for 15 damage and up, +//e.g. /datum/wound/cut/deep should only be applied for 15 damage and up, //because in it's stages list, "deep cut" = 15. /proc/get_wound_type(var/type = CUT, var/damage) switch(type) @@ -323,4 +323,4 @@ datum/wound/cut/massive return 0 //cannot be merged /datum/wound/lost_limb/small - stages = list("ripped stump" = 40, "bloody stump" = 30, "clotted stump" = 15, "scarred stump" = 0) + stages = list("ripped hole" = 40, "bloody hole" = 30, "clotted hole" = 15, "scarred hole" = 0) diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm index 5006af6cc3e..ea5488152d4 100644 --- a/code/modules/paperwork/handlabeler.dm +++ b/code/modules/paperwork/handlabeler.dm @@ -58,7 +58,7 @@ if(mode) user << "You turn on \the [src]." //Now let them chose the text. - var/str = copytext(reject_bad_text(input(user,"Label text?","Set label","")),1,MAX_NAME_LEN) + var/str = sanitizeSafe(input(user,"Label text?","Set label",""), MAX_NAME_LEN) if(!str || !length(str)) user << "Invalid text." return diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 758cd78f200..143b00e6231 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -194,7 +194,7 @@ update_icon() /obj/item/weapon/paper/proc/get_signature(var/obj/item/weapon/pen/P, mob/user as mob) - if(P) + if(P && istype(P, /obj/item/weapon/pen)) return P.get_signature(user) return (user && user.real_name) ? user.real_name : "Anonymous" @@ -324,7 +324,17 @@ if(href_list["write"]) var/id = href_list["write"] //var/t = strip_html_simple(input(usr, "What text do you wish to add to " + (id=="end" ? "the end of the paper" : "field "+id) + "?", "[name]", null),8192) as message - var/t = sanitize(input("Enter what you want to write:", "Write", null, null) as message, MAX_PAPER_MESSAGE_LEN, extra = 0) + + var/textlimit = MAX_PAPER_MESSAGE_LEN - length(info) + if(textlimit <= 0) + usr << "There isn't enough space left on \the [src] to write anything." + return + + var/t = sanitize(input("Enter what you want to write:", "Write", null, null) as message, textlimit, extra = 0) + + if(!t) + return + var/obj/item/i = usr.get_active_hand() // Check to see if he still got that darn pen, also check if he's using a crayon or pen. var/iscrayon = 0 if(!istype(i, /obj/item/weapon/pen)) @@ -347,10 +357,19 @@ message_admins("PAPER: [usr] ([usr.ckey]) tried to use forbidden word in [src]: [bad].") return */ + + var last_fields_value = fields + //t = html_encode(t) t = replacetext(t, "\n", "
      ") t = parsepencode(t, i, usr, iscrayon) // Encode everything from pencode to html + + if(fields > 50)//large amount of fields creates a heavy load on the server, see updateinfolinks() and addtofield() + usr << "Too many fields. Sorry, you can't do this." + fields = last_fields_value + return + if(id!="end") addtofield(text2num(id), t) // He wants to edit a field, let him. else diff --git a/code/modules/power/cable.dm.orig b/code/modules/power/cable.dm.orig deleted file mode 100644 index 8a4d25ae20a..00000000000 --- a/code/modules/power/cable.dm.orig +++ /dev/null @@ -1,934 +0,0 @@ -/////////////////////////////// -//CABLE STRUCTURE -/////////////////////////////// - - -//////////////////////////////// -// Definitions -//////////////////////////////// - -/* Cable directions (d1 and d2) - - - 9 1 5 - \ | / - 8 - 0 - 4 - / | \ - 10 2 6 - -If d1 = 0 and d2 = 0, there's no cable -If d1 = 0 and d2 = dir, it's a O-X cable, getting from the center of the tile to dir (knot cable) -If d1 = dir1 and d2 = dir2, it's a full X-X cable, getting from dir1 to dir2 -By design, d1 is the smallest direction and d2 is the highest -*/ - -/obj/structure/cable - level = 1 - anchored =1 - var/datum/powernet/powernet - name = "power cable" - desc = "A flexible superconducting cable for heavy-duty power transfer" - icon = 'icons/obj/power_cond_white.dmi' - icon_state = "0-1" - var/d1 = 0 - var/d2 = 1 - layer = 2.44 //Just below unary stuff, which is at 2.45 and above pipes, which are at 2.4 - color = COLOR_RED - var/obj/machinery/power/breakerbox/breaker_box - -/obj/structure/cable/drain_power(var/drain_check, var/surge, var/amount = 0) - - if(drain_check) - return 1 - - var/datum/powernet/PN = get_powernet() - if(!PN) return 0 - - return PN.draw_power(amount) - -/obj/structure/cable/yellow - color = COLOR_YELLOW - -/obj/structure/cable/green - color = COLOR_GREEN - -/obj/structure/cable/blue - color = COLOR_BLUE - -/obj/structure/cable/pink - color = COLOR_PINK - -/obj/structure/cable/orange - color = COLOR_ORANGE - -/obj/structure/cable/cyan - color = COLOR_CYAN - -/obj/structure/cable/white - color = COLOR_WHITE - -/obj/structure/cable/New() - ..() - - - // ensure d1 & d2 reflect the icon_state for entering and exiting cable - - var/dash = findtext(icon_state, "-") - - d1 = text2num( copytext( icon_state, 1, dash ) ) - - d2 = text2num( copytext( icon_state, dash+1 ) ) - - var/turf/T = src.loc // hide if turf is not intact - - if(level==1) hide(T.intact) - cable_list += src //add it to the global cable list - - -/obj/structure/cable/Del() // called when a cable is deleted - if(powernet) - cut_cable_from_powernet() // update the powernets - cable_list -= src //remove it from global cable list - ..() // then go ahead and delete the cable - -/////////////////////////////////// -// General procedures -/////////////////////////////////// - -//If underfloor, hide the cable -/obj/structure/cable/hide(var/i) - - if(level == 1 && istype(loc, /turf)) - invisibility = i ? 101 : 0 - updateicon() - -/obj/structure/cable/proc/updateicon() - icon_state = "[d1]-[d2]" - alpha = invisibility ? 127 : 255 - -// returns the powernet this cable belongs to -/obj/structure/cable/proc/get_powernet() //TODO: remove this as it is obsolete - return powernet - -//Telekinesis has no effect on a cable -/obj/structure/cable/attack_tk(mob/user) - return - -// Items usable on a cable : -// - Wirecutters : cut it duh ! -// - Cable coil : merge cables -// - Multitool : get the power currently passing through the cable -// -/obj/structure/cable/attackby(obj/item/W, mob/user) - - var/turf/T = src.loc - if(T.intact) - return - - if(istype(W, /obj/item/weapon/wirecutters)) -///// Z-Level Stuff - if(src.d1 == 12 || src.d2 == 12) - user << "You must cut this cable from above." - return -///// Z-Level Stuff - if(breaker_box) - user << "\red This cable is connected to nearby breaker box. Use breaker box to interact with it." - return - - if (shock(user, 50)) - return - - if(src.d1) // 0-X cables are 1 unit, X-X cables are 2 units long - new/obj/item/stack/cable_coil(T, 2, color) - else - new/obj/item/stack/cable_coil(T, 1, color) - - for(var/mob/O in viewers(src, null)) - O.show_message("[user] cuts the cable.", 1) - -///// Z-Level Stuff - if(src.d1 == 11 || src.d2 == 11) - var/turf/controllerlocation = locate(1, 1, z) - for(var/obj/effect/landmark/zcontroller/controller in controllerlocation) - if(controller.down) - var/turf/below = locate(src.x, src.y, controller.down_target) - for(var/obj/structure/cable/c in below) - if(c.d1 == 12 || c.d2 == 12) - c.Del() -///// Z-Level Stuff - investigate_log("was cut by [key_name(usr, usr.client)] in [user.loc.loc]","wires") - - del(src) // qdel - return - - - else if(istype(W, /obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/coil = W - if (coil.get_amount() < 1) - user << "Not enough cable" - return - coil.cable_join(src, user) - - else if(istype(W, /obj/item/device/multitool)) - - if(powernet && (powernet.avail > 0)) // is it powered? - user << "[powernet.avail]W in power network." - - else - user << "The cable is not powered." - - shock(user, 5, 0.2) - - else - if (W.flags & CONDUCT) - shock(user, 50, 0.7) - - src.add_fingerprint(user) - -// shock the user with probability prb -/obj/structure/cable/proc/shock(mob/user, prb, var/siemens_coeff = 1.0) - if(!prob(prb)) - return 0 - if (electrocute_mob(user, powernet, src, siemens_coeff)) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, src) - s.start() - if(usr.stunned) - return 1 - return 0 - -//explosion handling -/obj/structure/cable/ex_act(severity) - switch(severity) - if(1.0) - del(src) // qdel - if(2.0) - if (prob(50)) - new/obj/item/stack/cable_coil(src.loc, src.d1 ? 2 : 1, color) - del(src) // qdel - - if(3.0) - if (prob(25)) - new/obj/item/stack/cable_coil(src.loc, src.d1 ? 2 : 1, color) - del(src) // qdel - return - -obj/structure/cable/proc/cableColor(var/colorC) - var/color_n = "#DD0000" - if(colorC) - color_n = colorC - color = color_n - -///////////////////////////////////////////////// -// Cable laying helpers -//////////////////////////////////////////////// - -//handles merging diagonally matching cables -//for info : direction^3 is flipping horizontally, direction^12 is flipping vertically -/obj/structure/cable/proc/mergeDiagonalsNetworks(var/direction) - - //search for and merge diagonally matching cables from the first direction component (north/south) - var/turf/T = get_step(src, direction&3)//go north/south - - for(var/obj/structure/cable/C in T) - - if(!C) - continue - - if(src == C) - continue - - if(C.d1 == (direction^3) || C.d2 == (direction^3)) //we've got a diagonally matching cable - if(!C.powernet) //if the matching cable somehow got no powernet, make him one (should not happen for cables) - var/datum/powernet/newPN = new() - newPN.add_cable(C) - - if(powernet) //if we already have a powernet, then merge the two powernets - merge_powernets(powernet,C.powernet) - else - C.powernet.add_cable(src) //else, we simply connect to the matching cable powernet - - //the same from the second direction component (east/west) - T = get_step(src, direction&12)//go east/west - - for(var/obj/structure/cable/C in T) - - if(!C) - continue - - if(src == C) - continue - if(C.d1 == (direction^12) || C.d2 == (direction^12)) //we've got a diagonally matching cable - if(!C.powernet) //if the matching cable somehow got no powernet, make him one (should not happen for cables) - var/datum/powernet/newPN = new() - newPN.add_cable(C) - - if(powernet) //if we already have a powernet, then merge the two powernets - merge_powernets(powernet,C.powernet) - else - C.powernet.add_cable(src) //else, we simply connect to the matching cable powernet - -// merge with the powernets of power objects in the given direction -/obj/structure/cable/proc/mergeConnectedNetworks(var/direction) - - var/fdir = (!direction)? 0 : turn(direction, 180) //flip the direction, to match with the source position on its turf - - if(!(d1 == direction || d2 == direction)) //if the cable is not pointed in this direction, do nothing - return - - var/turf/TB = get_step(src, direction) - - for(var/obj/structure/cable/C in TB) - - if(!C) - continue - - if(src == C) - continue - - if(C.d1 == fdir || C.d2 == fdir) //we've got a matching cable in the neighbor turf - if(!C.powernet) //if the matching cable somehow got no powernet, make him one (should not happen for cables) - var/datum/powernet/newPN = new() - newPN.add_cable(C) - - if(powernet) //if we already have a powernet, then merge the two powernets - merge_powernets(powernet,C.powernet) - else - C.powernet.add_cable(src) //else, we simply connect to the matching cable powernet - -// merge with the powernets of power objects in the source turf -/obj/structure/cable/proc/mergeConnectedNetworksOnTurf() - var/list/to_connect = list() - - if(!powernet) //if we somehow have no powernet, make one (should not happen for cables) - var/datum/powernet/newPN = new() - newPN.add_cable(src) - - //first let's add turf cables to our powernet - //then we'll connect machines on turf with a node cable is present - for(var/AM in loc) - if(istype(AM,/obj/structure/cable)) - var/obj/structure/cable/C = AM - if(C.d1 == d1 || C.d2 == d1 || C.d1 == d2 || C.d2 == d2) //only connected if they have a common direction - if(C.powernet == powernet) continue - if(C.powernet) - merge_powernets(powernet, C.powernet) - else - powernet.add_cable(C) //the cable was powernetless, let's just add it to our powernet - - else if(istype(AM,/obj/machinery/power/apc)) - var/obj/machinery/power/apc/N = AM - if(!N.terminal) continue // APC are connected through their terminal - - if(N.terminal.powernet == powernet) - continue - - to_connect += N.terminal //we'll connect the machines after all cables are merged - - else if(istype(AM,/obj/machinery/power)) //other power machines - var/obj/machinery/power/M = AM - - if(M.powernet == powernet) - continue - - to_connect += M //we'll connect the machines after all cables are merged - - //now that cables are done, let's connect found machines - for(var/obj/machinery/power/PM in to_connect) - if(!PM.connect_to_network()) - PM.disconnect_from_network() //if we somehow can't connect the machine to the new powernet, remove it from the old nonetheless - -////////////////////////////////////////////// -// Powernets handling helpers -////////////////////////////////////////////// - -//if powernetless_only = 1, will only get connections without powernet -/obj/structure/cable/proc/get_connections(var/powernetless_only = 0) - . = list() // this will be a list of all connected power objects - var/turf/T - -///// Z-Level Stuff - if (d1 == 11 || d1 == 12) - var/turf/controllerlocation = locate(1, 1, z) - for(var/obj/effect/landmark/zcontroller/controller in controllerlocation) - if(controller.up && d1 == 12) - T = locate(src.x, src.y, controller.up_target) - if(T) - . += power_list(T, src, 11, 1) - if(controller.down && d1 == 11) - T = locate(src.x, src.y, controller.down_target) - if(T) - . += power_list(T, src, 12, 1) -///// Z-Level Stuff - //get matching cables from the first direction - else if(d1) //if not a node cable - T = get_step(src, d1) - if(T) - . += power_list(T, src, turn(d1, 180), powernetless_only) //get adjacents matching cables - - if(d1&(d1-1)) //diagonal direction, must check the 4 possibles adjacents tiles - T = get_step(src,d1&3) // go north/south - if(T) - . += power_list(T, src, d1 ^ 3, powernetless_only) //get diagonally matching cables - T = get_step(src,d1&12) // go east/west - if(T) - . += power_list(T, src, d1 ^ 12, powernetless_only) //get diagonally matching cables - - . += power_list(loc, src, d1, powernetless_only) //get on turf matching cables - -///// Z-Level Stuff - if(d2 == 11 || d2 == 12) - var/turf/controllerlocation = locate(1, 1, z) - for(var/obj/effect/landmark/zcontroller/controller in controllerlocation) - if(controller.up && d2 == 12) - T = locate(src.x, src.y, controller.up_target) - if(T) - . += power_list(T, src, 11, 1) - if(controller.down && d2 == 11) - T = locate(src.x, src.y, controller.down_target) - if(T) - . += power_list(T, src, 12, 1) -///// Z-Level Stuff - else - //do the same on the second direction (which can't be 0) - T = get_step(src, d2) - if(T) - . += power_list(T, src, turn(d2, 180), powernetless_only) //get adjacents matching cables - - if(d2&(d2-1)) //diagonal direction, must check the 4 possibles adjacents tiles - T = get_step(src,d2&3) // go north/south - if(T) - . += power_list(T, src, d2 ^ 3, powernetless_only) //get diagonally matching cables - T = get_step(src,d2&12) // go east/west - if(T) - . += power_list(T, src, d2 ^ 12, powernetless_only) //get diagonally matching cables - . += power_list(loc, src, d2, powernetless_only) //get on turf matching cables - - return . - -//should be called after placing a cable which extends another cable, creating a "smooth" cable that no longer terminates in the centre of a turf. -//needed as this can, unlike other placements, disconnect cables -/obj/structure/cable/proc/denode() - var/turf/T1 = loc - if(!T1) return - - var/list/powerlist = power_list(T1,src,0,0) //find the other cables that ended in the centre of the turf, with or without a powernet - if(powerlist.len>0) - var/datum/powernet/PN = new() - propagate_network(powerlist[1],PN) //propagates the new powernet beginning at the source cable - - if(PN.is_empty()) //can happen with machines made nodeless when smoothing cables - del(PN) // qdel - -// cut the cable's powernet at this cable and updates the powergrid -/obj/structure/cable/proc/cut_cable_from_powernet() - var/turf/T1 = loc - var/list/P_list - if(!T1) return - if(d1) - T1 = get_step(T1, d1) - P_list = power_list(T1, src, turn(d1,180),0,cable_only = 1) // what adjacently joins on to cut cable... - - P_list += power_list(loc, src, d1, 0, cable_only = 1)//... and on turf - - - if(P_list.len == 0)//if nothing in both list, then the cable was a lone cable, just delete it and its powernet - powernet.remove_cable(src) - - for(var/obj/machinery/power/P in T1)//check if it was powering a machine - if(!P.connect_to_network()) //can't find a node cable on a the turf to connect to - P.disconnect_from_network() //remove from current network (and delete powernet) - return - - // remove the cut cable from its turf and powernet, so that it doesn't get count in propagate_network worklist - loc = null - powernet.remove_cable(src) //remove the cut cable from its powernet - - var/datum/powernet/newPN = new()// creates a new powernet... - propagate_network(P_list[1], newPN)//... and propagates it to the other side of the cable - - // Disconnect machines connected to nodes - if(d1 == 0) // if we cut a node (O-X) cable - for(var/obj/machinery/power/P in T1) - if(!P.connect_to_network()) //can't find a node cable on a the turf to connect to - P.disconnect_from_network() //remove from current network - -/////////////////////////////////////////////// -// The cable coil object, used for laying cable -/////////////////////////////////////////////// - -//////////////////////////////// -// Definitions -//////////////////////////////// - -#define MAXCOIL 30 - -/obj/item/stack/cable_coil - name = "cable coil" - icon = 'icons/obj/power.dmi' - icon_state = "coil" - amount = MAXCOIL - max_amount = MAXCOIL - color = COLOR_RED - //item_color = COLOR_RED Use regular "color" var instead. No need to have it duplicate in two vars. Causes confusion. - desc = "A coil of power cable." - throwforce = 10 - w_class = 2.0 - throw_speed = 2 - throw_range = 5 - matter = list("metal" = 50, "glass" = 20) - flags = CONDUCT - slot_flags = SLOT_BELT - item_state = "coil" - attack_verb = list("whipped", "lashed", "disciplined", "flogged") - -/obj/item/stack/cable_coil/cyborg - name = "cable coil synthesizer" - desc = "A device that makes cable." - gender = NEUTER - matter = null - uses_charge = 1 - charge_costs = list(1) - stacktype = /obj/item/stack/cable_coil - -/obj/item/stack/cable_coil/suicide_act(mob/user) - if(locate(/obj/item/weapon/stool) in user.loc) - user.visible_message("[user] is making a noose with the [src.name]! It looks like \he's trying to commit suicide.") - else - user.visible_message("[user] is strangling \himself with the [src.name]! It looks like \he's trying to commit suicide.") - return(OXYLOSS) - -/obj/item/stack/cable_coil/New(loc, length = MAXCOIL, var/param_color = null) - ..() - src.amount = length - if (param_color) // It should be red by default, so only recolor it if parameter was specified. - color = param_color - pixel_x = rand(-2,2) - pixel_y = rand(-2,2) - update_icon() - update_wclass() - -/////////////////////////////////// -// General procedures -/////////////////////////////////// - -//you can use wires to heal robotics -/obj/item/stack/cable_coil/attack(mob/M as mob, mob/user as mob) - if(istype(M,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = M -<<<<<<< HEAD - var/datum/organ/external/S = H.get_organ(user.zone_sel.selecting) - if(!(S.status & ORGAN_ROBOT) || user.a_intent != I_HELP) -======= - var/obj/item/organ/external/S = H.get_organ(user.zone_sel.selecting) - if(!(S.status & ORGAN_ROBOT) || user.a_intent != "help") ->>>>>>> d77010221cbd08f6373edebee25d727b6409413b - return ..() - - if(H.species.flags & IS_SYNTHETIC) - if(M == user) - user << "\red You can't repair damage to your own body - it's against OH&S." - return - - if(S.burn_dam > 0 && use(1)) - S.heal_damage(0,15,0,1) - user.visible_message("\red \The [user] repairs some burn damage on \the [M]'s [S.name] with \the [src].") - return - else - user << "Nothing to fix!" - - else - return ..() - - -/obj/item/stack/cable_coil/update_icon() - if (!color) - color = pick(COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_ORANGE, COLOR_WHITE, COLOR_PINK, COLOR_YELLOW, COLOR_CYAN) - if(amount == 1) - icon_state = "coil1" - name = "cable piece" - else if(amount == 2) - icon_state = "coil2" - name = "cable piece" - else - icon_state = "coil" - name = "cable coil" - -/obj/item/stack/cable_coil/proc/update_wclass() - if(amount == 1) - w_class = 1.0 - else - w_class = 2.0 - -/obj/item/stack/cable_coil/examine(mob/user) - if(get_dist(src, user) > 1) - return - - if(get_amount() == 1) - user << "A short piece of power cable." - else if(get_amount() == 2) - user << "A piece of power cable." - else - user << "A coil of power cable. There are [get_amount()] lengths of cable in the coil." - - -/obj/item/stack/cable_coil/verb/make_restraint() - set name = "Make Cable Restraints" - set category = "Object" - var/mob/M = usr - - if(ishuman(M) && !M.restrained() && !M.stat && !M.paralysis && ! M.stunned) - if(!istype(usr.loc,/turf)) return - if(src.amount <= 14) - usr << "\red You need at least 15 lengths to make restraints!" - return - var/obj/item/weapon/handcuffs/cable/B = new /obj/item/weapon/handcuffs/cable(usr.loc) - B.color = color - usr << "You wind some cable together to make some restraints." - src.use(15) - else - usr << "\blue You cannot do that." - ..() - -/obj/item/stack/cable_coil/cyborg/verb/set_colour() - set name = "Change Colour" - set category = "Object" - - var/list/possible_colours = list ("Yellow", "Green", "Pink", "Blue", "Orange", "Cyan", "Red") - var/selected_type = input("Pick new colour.", "Cable Colour", null, null) as null|anything in possible_colours - - if(selected_type) - switch(selected_type) - if("Yellow") - color = COLOR_YELLOW - if("Green") - color = COLOR_GREEN - if("Pink") - color = COLOR_PINK - if("Blue") - color = COLOR_BLUE - if("Orange") - color = COLOR_ORANGE - if("Cyan") - color = COLOR_CYAN - else - color = COLOR_RED - usr << "You change your cable coil's colour to [selected_type]" - -// Items usable on a cable coil : -// - Wirecutters : cut them duh ! -// - Cable coil : merge cables -/obj/item/stack/cable_coil/attackby(obj/item/weapon/W, mob/user) - ..() - if( istype(W, /obj/item/weapon/wirecutters) && src.get_amount() > 1) - src.use(1) - new/obj/item/stack/cable_coil(user.loc, 1,color) - user << "You cut a piece off the cable coil." - src.update_icon() - return - else if(istype(W, /obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/C = W - if(C.get_amount() >= get_max_amount()) - user << "The coil is too long, you cannot add any more cable to it." - return - - if( (C.get_amount() + src.get_amount() <= get_max_amount()) ) - user << "You join the cable coils together." - C.give(src.get_amount()) // give it cable - src.use(src.get_amount()) // make sure this one cleans up right - return - - else - var/amt = get_max_amount() - C.get_amount() - user << "You transfer [amt] length\s of cable from one coil to the other." - C.give(amt) - src.use(amt) - return - -//remove cables from the stack -/* This is probably reduntant -/obj/item/stack/cable_coil/use(var/used) - if(src.amount < used) - return 0 - else if (src.amount == used) - if(ismob(loc)) //handle mob icon update - var/mob/M = loc - M.unEquip(src) - qdel(src) - return 1 - else - amount -= used - update_icon() - return 1 -*/ -/obj/item/stack/cable_coil/use(var/used) - . = ..() - update_icon() - return - -//add cables to the stack -/obj/item/stack/cable_coil/proc/give(var/extra) - if(amount + extra > MAXCOIL) - amount = MAXCOIL - else - amount += extra - update_icon() - -/////////////////////////////////////////////// -// Cable laying procedures -////////////////////////////////////////////// - -// called when cable_coil is clicked on a turf/simulated/floor -/obj/item/stack/cable_coil/proc/turf_place(turf/simulated/floor/F, mob/user) - if(!isturf(user.loc)) - return - - if(get_amount() < 1) // Out of cable - user << "There is no cable left." - return - - if(get_dist(F,user) > 1) // Too far - user << "You can't lay cable at a place that far away." - return - - if(F.intact) // Ff floor is intact, complain - user << "You can't lay cable there unless the floor tiles are removed." - return - - else - var/dirn - - if(user.loc == F) - dirn = user.dir // if laying on the tile we're on, lay in the direction we're facing - else - dirn = get_dir(F, user) - - for(var/obj/structure/cable/LC in F) - if((LC.d1 == dirn && LC.d2 == 0 ) || ( LC.d2 == dirn && LC.d1 == 0)) - user << "There's already a cable at that position." - return -///// Z-Level Stuff - // check if the target is open space - if(istype(F, /turf/simulated/floor/open)) - for(var/obj/structure/cable/LC in F) - if((LC.d1 == dirn && LC.d2 == 11 ) || ( LC.d2 == dirn && LC.d1 == 11)) - user << "There's already a cable at that position." - return - - var/turf/simulated/floor/open/temp = F - var/obj/structure/cable/C = new(F) - var/obj/structure/cable/D = new(temp.floorbelow) - - C.cableColor(color) - - C.d1 = 11 - C.d2 = dirn - C.add_fingerprint(user) - C.updateicon() - - var/datum/powernet/PN = new() - PN.add_cable(C) - - C.mergeConnectedNetworks(C.d2) - C.mergeConnectedNetworksOnTurf() - - D.cableColor(color) - - D.d1 = 12 - D.d2 = 0 - D.add_fingerprint(user) - D.updateicon() - - PN.add_cable(D) - D.mergeConnectedNetworksOnTurf() - - // do the normal stuff - else -///// Z-Level Stuff - for(var/obj/structure/cable/LC in F) - if((LC.d1 == dirn && LC.d2 == 0 ) || ( LC.d2 == dirn && LC.d1 == 0)) - user << "There's already a cable at that position." - return - - var/obj/structure/cable/C = new(F) - - C.cableColor(color) - - //set up the new cable - C.d1 = 0 //it's a O-X node cable - C.d2 = dirn - C.add_fingerprint(user) - C.updateicon() - - //create a new powernet with the cable, if needed it will be merged later - var/datum/powernet/PN = new() - PN.add_cable(C) - - C.mergeConnectedNetworks(C.d2) //merge the powernet with adjacents powernets - C.mergeConnectedNetworksOnTurf() //merge the powernet with on turf powernets - - if(C.d2 & (C.d2 - 1))// if the cable is layed diagonally, check the others 2 possible directions - C.mergeDiagonalsNetworks(C.d2) - - - use(1) - if (C.shock(user, 50)) - if (prob(50)) //fail - new/obj/item/stack/cable_coil(C.loc, 1, C.color) - del(C) // qdel - -// called when cable_coil is click on an installed obj/cable -// or click on a turf that already contains a "node" cable -/obj/item/stack/cable_coil/proc/cable_join(obj/structure/cable/C, mob/user) - var/turf/U = user.loc - if(!isturf(U)) - return - - var/turf/T = C.loc - - if(!isturf(T) || T.intact) // sanity checks, also stop use interacting with T-scanner revealed cable - return - - if(get_dist(C, user) > 1) // make sure it's close enough - user << "You can't lay cable at a place that far away." - return - - - if(U == T) //if clicked on the turf we're standing on, try to put a cable in the direction we're facing - turf_place(T,user) - return - - var/dirn = get_dir(C, user) - - // one end of the clicked cable is pointing towards us - if(C.d1 == dirn || C.d2 == dirn) - if(U.intact) // can't place a cable if the floor is complete - user << "You can't lay cable there unless the floor tiles are removed." - return - else - // cable is pointing at us, we're standing on an open tile - // so create a stub pointing at the clicked cable on our tile - - var/fdirn = turn(dirn, 180) // the opposite direction - - for(var/obj/structure/cable/LC in U) // check to make sure there's not a cable there already - if(LC.d1 == fdirn || LC.d2 == fdirn) - user << "There's already a cable at that position." - return - - var/obj/structure/cable/NC = new(U) - NC.cableColor(color) - - NC.d1 = 0 - NC.d2 = fdirn - NC.add_fingerprint() - NC.updateicon() - - //create a new powernet with the cable, if needed it will be merged later - var/datum/powernet/newPN = new() - newPN.add_cable(NC) - - NC.mergeConnectedNetworks(NC.d2) //merge the powernet with adjacents powernets - NC.mergeConnectedNetworksOnTurf() //merge the powernet with on turf powernets - - if(NC.d2 & (NC.d2 - 1))// if the cable is layed diagonally, check the others 2 possible directions - NC.mergeDiagonalsNetworks(NC.d2) - - use(1) - - if (NC.shock(user, 50)) - if (prob(50)) //fail - new/obj/item/stack/cable_coil(NC.loc, 1, NC.color) - del(NC) // qdel - - return - - // exisiting cable doesn't point at our position, so see if it's a stub - else if(C.d1 == 0) - // if so, make it a full cable pointing from it's old direction to our dirn - var/nd1 = C.d2 // these will be the new directions - var/nd2 = dirn - - - if(nd1 > nd2) // swap directions to match icons/states - nd1 = dirn - nd2 = C.d2 - - - for(var/obj/structure/cable/LC in T) // check to make sure there's no matching cable - if(LC == C) // skip the cable we're interacting with - continue - if((LC.d1 == nd1 && LC.d2 == nd2) || (LC.d1 == nd2 && LC.d2 == nd1) ) // make sure no cable matches either direction - user << "There's already a cable at that position." - return - - - C.cableColor(color) - - C.d1 = nd1 - C.d2 = nd2 - - C.add_fingerprint() - C.updateicon() - - - C.mergeConnectedNetworks(C.d1) //merge the powernets... - C.mergeConnectedNetworks(C.d2) //...in the two new cable directions - C.mergeConnectedNetworksOnTurf() - - if(C.d1 & (C.d1 - 1))// if the cable is layed diagonally, check the others 2 possible directions - C.mergeDiagonalsNetworks(C.d1) - - if(C.d2 & (C.d2 - 1))// if the cable is layed diagonally, check the others 2 possible directions - C.mergeDiagonalsNetworks(C.d2) - - use(1) - - if (C.shock(user, 50)) - if (prob(50)) //fail - new/obj/item/stack/cable_coil(C.loc, 2, C.color) - del(C) // qdel - return - - C.denode()// this call may have disconnected some cables that terminated on the centre of the turf, if so split the powernets. - return - -////////////////////////////// -// Misc. -///////////////////////////// - -/obj/item/stack/cable_coil/cut - item_state = "coil2" - -/obj/item/stack/cable_coil/cut/New(loc) - ..() - src.amount = rand(1,2) - pixel_x = rand(-2,2) - pixel_y = rand(-2,2) - update_icon() - update_wclass() - -/obj/item/stack/cable_coil/yellow - color = COLOR_YELLOW - -/obj/item/stack/cable_coil/blue - color = COLOR_BLUE - -/obj/item/stack/cable_coil/green - color = COLOR_GREEN - -/obj/item/stack/cable_coil/pink - color = COLOR_PINK - -/obj/item/stack/cable_coil/orange - color = COLOR_ORANGE - -/obj/item/stack/cable_coil/cyan - color = COLOR_CYAN - -/obj/item/stack/cable_coil/white - color = COLOR_WHITE - -/obj/item/stack/cable_coil/random/New() - color = pick(COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_WHITE, COLOR_PINK, COLOR_YELLOW, COLOR_CYAN) - ..() diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 4828280e631..a858a5fd43f 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -342,6 +342,7 @@ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) ui = new(user, src, ui_key, "pacman.tmpl", src.name, 500, 560) + ui.set_initial_data(data) ui.open() ui.set_auto_update(1) diff --git a/code/modules/power/singularity/act.dm b/code/modules/power/singularity/act.dm new file mode 100644 index 00000000000..5b0303c9b53 --- /dev/null +++ b/code/modules/power/singularity/act.dm @@ -0,0 +1,138 @@ +#define I_SINGULO "singulo" + +/atom/proc/singularity_act() + return + +/atom/proc/singularity_pull() + return + +/mob/living/singularity_act() + investigate_log("has been consumed by a singularity", I_SINGULO) + gib() + return 20 + +/mob/living/singularity_pull(S) + step_towards(src, S) + +/mob/living/carbon/human/singularity_act() + var/gain = 20 + if(mind) + if((mind.assigned_role == "Station Engineer") || (mind.assigned_role == "Chief Engineer")) + gain = 100 + if(mind.assigned_role == "Assistant") + gain = rand(0, 300) + investigate_log(I_SINGULO,"has been consumed by a singularity", I_SINGULO) + gib() + return gain + +/mob/living/carbon/human/singularity_pull(S, current_size) + if(current_size >= STAGE_THREE) + var/list/handlist = list(l_hand, r_hand) + for(var/obj/item/hand in handlist) + if(prob(current_size*5) && hand.w_class >= ((11-current_size)/2) && u_equip(hand)) + step_towards(hand, src) + src << "The [S] pulls \the [hand] from your grip!" + apply_effect(current_size * 3, IRRADIATE) + if(shoes) + if(shoes.flags & NOSLIP) return 0 + ..() + +/obj/singularity_act() + ex_act(1) + if(src) + spawn(0) + qdel(src) + return 2 + +/obj/singularity_pull(S, current_size) + if(anchored) + if(current_size >= STAGE_FIVE) + step_towards(src, S) + else + step_towards(src, S) + +/obj/effect/beam/singularity_pull() + return + +/obj/effect/overlay/singularity_pull() + return + +/obj/item/singularity_pull(S, current_size) + spawn(0) //this is needed or multiple items will be thrown sequentially and not simultaneously + if(current_size >= STAGE_FOUR) + //throw_at(S, 14, 3) + step_towards(src,S) + sleep(1) + step_towards(src,S) + else if(current_size > STAGE_ONE) + step_towards(src,S) + else ..() + +/obj/machinery/atmospherics/pipe/singularity_pull() + return + +/obj/machinery/power/supermatter/shard/singularity_act() + qdel(src) + return 5000 + +/obj/machinery/power/supermatter/singularity_act() + var/prints = "" + if(src.fingerprintshidden) + prints = ", all touchers : " + src.fingerprintshidden + + SetUniversalState(/datum/universal_state/supermatter_cascade) + log_admin("New super singularity made by eating a SM crystal [prints]. Last touched by [src.fingerprintslast].") + message_admins("New super singularity made by eating a SM crystal [prints]. Last touched by [src.fingerprintslast].") + spawn(0) + qdel(src) + return 50000 + +/obj/item/projectile/beam/emitter/singularity_pull() + return + +/obj/item/weapon/storage/backpack/holding/singularity_act(S, current_size) + var/dist = max((current_size - 2), 1) + explosion(src.loc,(dist),(dist*2),(dist*4)) + return 1000 + +/turf/singularity_act(S, current_size) + if(intact) + for(var/obj/O in contents) + if(O.level != 1) + continue + if(O.invisibility == 101) + O.singularity_act(src, current_size) + ChangeTurf(/turf/space) + return 2 + +/turf/simulated/wall/singularity_pull(S, current_size) + if(current_size >= STAGE_FIVE) + if(prob(75)) + dismantle_wall() + return + if(current_size == STAGE_FOUR) + if(prob(30)) + dismantle_wall() + +/turf/simulated/wall/r_wall/singularity_pull(S, current_size) + if(current_size >= STAGE_FIVE) + if(prob(30)) + dismantle_wall() + +/turf/space/singularity_act() + return + +/******************* +* Nar-Sie Act/Pull * +*******************/ +/atom/proc/singuloCanEat() + return 1 + +/mob/dead/singuloCanEat() + return 0 + +/mob/eye/singuloCanEat() + return 0 + +/mob/new_player/singuloCanEat() + return 0 diff --git a/code/modules/power/singularity/investigate.dm b/code/modules/power/singularity/investigate.dm index 63c54c0e541..c0c62616ed3 100644 --- a/code/modules/power/singularity/investigate.dm +++ b/code/modules/power/singularity/investigate.dm @@ -1,4 +1,4 @@ /area/engineering/power_alert(var/alarming) if (alarming) investigate_log("has a power alarm!","singulo") - ..() \ No newline at end of file + ..() diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm new file mode 100644 index 00000000000..0fc454b9fb0 --- /dev/null +++ b/code/modules/power/singularity/narsie.dm @@ -0,0 +1,357 @@ +var/global/narsie_behaviour = "CultStation13" +var/global/narsie_cometh = 0 +var/global/list/narsie_list = list() +/obj/machinery/singularity/narsie //Moving narsie to its own file for the sake of being clearer + name = "Nar-Sie" + desc = "Your mind begins to bubble and ooze as it tries to comprehend what it sees." + icon = 'icons/obj/narsie.dmi' + icon_state = "narsie-small" + pixel_x = -236 + pixel_y = -256 + + current_size = 9 //It moves/eats like a max-size singulo, aside from range. --NEO. + contained = 0 // Are we going to move around? + dissipate = 0 // Do we lose energy over time? + grav_pull = 10 //How many tiles out do we pull? + consume_range = 3 //How many tiles out do we eat + + +/obj/machinery/singularity/narsie/New() + ..() + narsie_list.Add(src) + +/obj/machinery/singularity/narsie/Destroy() + narsie_list.Remove(src) + ..() + +/obj/machinery/singularity/narsie/large + name = "Nar-Sie" + icon = 'icons/obj/narsie.dmi' + icon_state = "narsie"//mobs perceive the geometer of blood through their see_narsie proc + + // Pixel stuff centers Narsie. + pixel_x = -236 + pixel_y = -256 + luminosity = 1 + l_color = "#3e0000" + + current_size = 12 + consume_range = 12 // How many tiles out do we eat. + var/announce=1 + var/narnar = 1 + +/obj/machinery/singularity/narsie/large/New() + ..() + if(announce) + world << "[uppertext(name)] HAS RISEN" + world << sound('sound/effects/wind/wind_5_1.ogg') + + if(emergency_shuttle && emergency_shuttle.can_call()) + emergency_shuttle.call_evac() + emergency_shuttle.launch_time = 0 // Cannot recall + + if(narnar) + SetUniversalState(/datum/universal_state/hell) + narsie_cometh = 1 + +/obj/machinery/singularity/narsie/process() + eat() + + if (!target || prob(5)) + pickcultist() + + move() + + if (prob(25)) + mezzer() + +/obj/machinery/singularity/narsie/large/eat() + set background = BACKGROUND_ENABLED + + for (var/turf/A in orange(consume_range, src)) + consume(A) + +/obj/machinery/singularity/narsie/mezzer() + for(var/mob/living/carbon/M in oviewers(8, src)) + if(M.stat == CONSCIOUS) + if(M.status_flags & GODMODE) + continue + if(!iscultist(M)) + M << " You feel your sanity crumble away in an instant as you gaze upon [src.name]..." + M.apply_effect(3, STUN) + + +/obj/machinery/singularity/narsie/large/Bump(atom/A) + if(!narnar) return + if(isturf(A)) + narsiewall(A) + else if(istype(A, /obj/structure/cult)) + qdel(A) + +/obj/machinery/singularity/narsie/large/Bumped(atom/A) + if(!narnar) return + if(isturf(A)) + narsiewall(A) + else if(istype(A, /obj/structure/cult)) + qdel(A) + +/obj/machinery/singularity/narsie/move(var/force_move = 0) + if(!move_self) + return 0 + + var/movement_dir = pick(alldirs - last_failed_movement) + + if(force_move) + movement_dir = force_move + + if(target && prob(60)) + movement_dir = get_dir(src,target) + + spawn(0) + step(src, movement_dir) + spawn(1) + step(src, movement_dir) + return 1 + +/obj/machinery/singularity/narsie/large/move(var/force_move = 0) + if(!move_self) + return 0 + + var/movement_dir = pick(alldirs - last_failed_movement) + + if(force_move) + movement_dir = force_move + + if(target && prob(60)) + movement_dir = get_dir(src,target) + spawn(0) + step(src, movement_dir) + narsiefloor(get_turf(loc)) + for(var/mob/M in player_list) + if(M.client) + M.see_narsie(src,movement_dir) + spawn(10) + step(src, movement_dir) + narsiefloor(get_turf(loc)) + for(var/mob/M in player_list) + if(M.client) + M.see_narsie(src,movement_dir) + return 1 + +/obj/machinery/singularity/narsie/proc/narsiefloor(var/turf/T)//leaving "footprints" + if(!(istype(T, /turf/simulated/wall/cult)||istype(T, /turf/space))) + if(T.icon_state != "cult-narsie") + T.desc = "something that goes beyond your understanding went this way" + T.icon_state = "cult-narsie" + T.luminosity = 1 + +/obj/machinery/singularity/narsie/proc/narsiewall(var/turf/T) + T.desc = "An opening has been made on that wall, but who can say if what you seek truly lies on the other side?" + T.icon = 'icons/turf/walls.dmi' + T.icon_state = "cult-narsie" + T.opacity = 0 + T.density = 0 + luminosity = 1 + +/obj/machinery/singularity/narsie/large/consume(const/atom/A) //Has its own consume proc because it doesn't need energy and I don't want BoHs to explode it. --NEO +//NEW BEHAVIOUR + if(narsie_behaviour == "CultStation13") + //MOB PROCESSING + new_narsie(A) + +//OLD BEHAVIOUR + else if(narsie_behaviour == "Nar-Singulo") + old_narsie(A) + +/obj/machinery/singularity/narsie/proc/new_narsie(const/atom/A) + if (istype(A, /mob/) && (get_dist(A, src) <= 7)) + var/mob/M = A + + if(M.status_flags & GODMODE) + return 0 + + M.cultify() + +//ITEM PROCESSING + else if (istype(A, /obj/)) + var/obj/O = A + O.cultify() + +//TURF PROCESSING + else if (isturf(A)) + var/dist = get_dist(A, src) + + for (var/atom/movable/AM in A.contents) + if (dist <= consume_range) + consume(AM) + continue + + if (dist <= consume_range && !istype(A, /turf/space)) + var/turf/T = A + if(T.holy) + T.holy = 0 //Nar-Sie doesn't give a shit about sacred grounds. + T.cultify() + +/obj/machinery/singularity/narsie/proc/old_narsie(const/atom/A) + if(!(A.singuloCanEat())) + return 0 + + if (istype(A, /mob/living/)) + var/mob/living/C2 = A + + if(C2.status_flags & GODMODE) + return 0 + + C2.dust() // Changed from gib(), just for less lag. + + else if (istype(A, /obj/)) + qdel(A) + + if (A) + qdel(A) + else if (isturf(A)) + var/dist = get_dist(A, src) + + for (var/atom/movable/AM2 in A.contents) + if (AM2 == src) // This is the snowflake. + continue + + if (dist <= consume_range) + consume(AM2) + continue + + if (dist <= consume_range && !istype(A, /turf/space)) + var/turf/T2 = A + T2.ChangeTurf(/turf/space) + +/obj/machinery/singularity/narsie/consume(const/atom/A) //This one is for the small ones. + if(!(A.singuloCanEat())) + return 0 + + if (istype(A, /mob/living/)) + var/mob/living/C2 = A + + if(C2.status_flags & GODMODE) + return 0 + + C2.dust() // Changed from gib(), just for less lag. + + else if (istype(A, /obj/)) + qdel(A) + + if (A) + qdel(A) + else if (isturf(A)) + var/dist = get_dist(A, src) + + for (var/atom/movable/AM2 in A.contents) + if (AM2 == src) // This is the snowflake. + continue + + if (dist <= consume_range) + consume(AM2) + continue + + if (dist > consume_range) + if(!(AM2.singuloCanEat())) + continue + + if (101 == AM2.invisibility) + continue + + spawn (0) + AM2.singularity_pull(src, src.current_size) + + if (dist <= consume_range && !istype(A, /turf/space)) + var/turf/T2 = A + T2.ChangeTurf(/turf/space) + +/obj/machinery/singularity/narsie/ex_act(severity) //No throwing bombs at it either. --NEO + return + +/obj/machinery/singularity/narsie/proc/pickcultist() //Narsie rewards his cultists with being devoured first, then picks a ghost to follow. --NEO + var/list/cultists = list() + for(var/datum/mind/cult_nh_mind in cult.current_antagonists) + if(!cult_nh_mind.current) + continue + if(cult_nh_mind.current.stat) + continue + var/turf/pos = get_turf(cult_nh_mind.current) + if(pos.z != src.z) + continue + cultists += cult_nh_mind.current + if(cultists.len) + acquire(pick(cultists)) + return + //If there was living cultists, it picks one to follow. + for(var/mob/living/carbon/human/food in living_mob_list) + if(food.stat) + continue + var/turf/pos = get_turf(food) + if(pos.z != src.z) + continue + cultists += food + if(cultists.len) + acquire(pick(cultists)) + return + //no living cultists, pick a living human instead. + for(var/mob/dead/observer/ghost in player_list) + if(!ghost.client) + continue + var/turf/pos = get_turf(ghost) + if(pos.z != src.z) + continue + cultists += ghost + if(cultists.len) + acquire(pick(cultists)) + return + //no living humans, follow a ghost instead. + +/obj/machinery/singularity/narsie/proc/acquire(const/mob/food) + var/capname = uppertext(name) + + target << "[capname] HAS LOST INTEREST IN YOU." + target = food + + if (ishuman(target)) + target << "[capname] HUNGERS FOR YOUR SOUL." + else + target << "[capname] HAS CHOSEN YOU TO LEAD HIM TO HIS NEXT MEAL." + +/obj/machinery/singularity/narsie/on_capture() + chained = 1 + move_self = 0 + icon_state ="narsie-small-chains" + +/obj/machinery/singularity/narsie/on_release() + chained = 0 + move_self = 1 + icon_state ="narsie-small" + +/obj/machinery/singularity/narsie/large/on_capture() + chained = 1 + move_self = 0 + icon_state ="narsie-chains" + for(var/mob/M in mob_list)//removing the client image of nar-sie while it is chained + if(M.client) + M.see_narsie(src) + +/obj/machinery/singularity/narsie/large/on_release() + chained = 0 + move_self = 1 + icon_state ="narsie" + +/obj/machinery/singularity/narsie/cultify() + return + +/** + * Wizard narsie. + */ +/obj/machinery/singularity/narsie/wizard + grav_pull = 0 + +/obj/machinery/singularity/narsie/wizard/eat() + set background = BACKGROUND_ENABLED + + for (var/turf/T in trange(consume_range, src)) + consume(T) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index cecdf46a2c5..aa8e85017c4 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -1,10 +1,5 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 -var/global/list/uneatable = list( - /turf/space, - /obj/effect/overlay - ) - /obj/machinery/singularity/ name = "gravitational singularity" desc = "A gravitational singularity." @@ -16,6 +11,7 @@ var/global/list/uneatable = list( luminosity = 6 unacidable = 1 //Don't comment this out. use_power = 0 + var/current_size = 1 var/allowed_size = 1 var/contained = 1 //Are we going to move around? @@ -26,102 +22,108 @@ var/global/list/uneatable = list( var/dissipate_strength = 1 //How much energy do we lose? var/move_self = 1 //Do we move on our own? var/grav_pull = 4 //How many tiles out do we pull? - var/consume_range = 0 //How many tiles out do we eat - var/event_chance = 15 //Prob for event each tick - var/target = null //its target. moves towards the target if it has one - var/last_failed_movement = 0//Will not move in the same dir if it couldnt before, will help with the getting stuck on fields thing - var/teleport_del = 0 + var/consume_range = 0 //How many tiles out do we eat. + var/event_chance = 15 //Prob for event each tick. + var/target = null //Its target. Moves towards the target if it has one. + var/last_failed_movement = 0 //Will not move in the same dir if it couldnt before, will help with the getting stuck on fields thing. var/last_warning + var/chained = 0//Adminbus chain-grab + /obj/machinery/singularity/New(loc, var/starting_energy = 50, var/temp = 0) //CARN: admin-alert for chuckle-fuckery. admin_investigate_setup() + energy = starting_energy + + if (temp) + spawn (temp) + qdel(src) - src.energy = starting_energy - if(temp) - spawn(temp) - del(src) ..() for(var/obj/machinery/power/singularity_beacon/singubeacon in machines) if(singubeacon.active) target = singubeacon break - return - /obj/machinery/singularity/attack_hand(mob/user as mob) consume(user) return 1 - /obj/machinery/singularity/blob_act(severity) return - /obj/machinery/singularity/ex_act(severity) + if(current_size == STAGE_SUPER)//IT'S UNSTOPPABLE + return switch(severity) if(1.0) if(prob(25)) - del(src) + investigate_log("has been destroyed by an explosion.", I_SINGULO) + qdel(src) return else energy += 50 if(2.0 to 3.0) energy += round((rand(20,60)/2),1) return - return +/obj/machinery/singularity/bullet_act(obj/item/projectile/P) + return 0 //Will there be an impact? Who knows. Will we see it? No. /obj/machinery/singularity/Bump(atom/A) consume(A) - return - /obj/machinery/singularity/Bumped(atom/A) consume(A) - return - /obj/machinery/singularity/process() eat() dissipate() check_energy() - if(current_size >= 3) + if (current_size >= STAGE_THREE) move() pulse() - if(prob(event_chance))//Chance for it to run a special event TODO:Come up with one or two more that fit + + if (prob(event_chance)) //Chance for it to run a special event TODO: Come up with one or two more that fit. event() + +/obj/machinery/singularity/attack_ai() //To prevent ais from gibbing themselves when they click on one. return - -/obj/machinery/singularity/attack_ai() //to prevent ais from gibbing themselves when they click on one. - return - - /obj/machinery/singularity/proc/admin_investigate_setup() last_warning = world.time var/count = locate(/obj/machinery/containment_field) in orange(30, src) - if(!count) message_admins("A singulo has been created without containment fields active ([x],[y],[z])",1) - investigate_log("was created. [count?"":"No containment fields were active"]","singulo") + + if (!count) + message_admins("A singulo has been created without containment fields active ([x], [y], [z] - JMP).") + + investigate_log("was created. [count ? "" : "No containment fields were active."]", I_SINGULO) /obj/machinery/singularity/proc/dissipate() - if(!dissipate) + if (!dissipate) return + if(dissipate_track >= dissipate_delay) - src.energy -= dissipate_strength + energy -= dissipate_strength dissipate_track = 0 else dissipate_track++ +/obj/machinery/singularity/proc/expand(var/force_size = 0, var/growing = 1) + if(current_size == STAGE_SUPER)//if this is happening, this is an error + message_admins("expand() was called on a super singulo. This should not happen. Contact a coder immediately!") + return + var/temp_allowed_size = allowed_size -/obj/machinery/singularity/proc/expand(var/force_size = 0) - var/temp_allowed_size = src.allowed_size - if(force_size) + if (force_size) temp_allowed_size = force_size - switch(temp_allowed_size) - if(1) - current_size = 1 + + switch (temp_allowed_size) + if (STAGE_ONE) + name = "gravitational singularity" + desc = "A gravitational singularity." + current_size = STAGE_ONE icon = 'icons/obj/singularity.dmi' icon_state = "singularity_s1" pixel_x = 0 @@ -131,8 +133,14 @@ var/global/list/uneatable = list( dissipate_delay = 10 dissipate_track = 0 dissipate_strength = 1 - if(3)//1 to 3 does not check for the turfs if you put the gens right next to a 1x1 then its going to eat them - current_size = 3 + overlays = 0 + if(chained) + overlays = "chain_s1" + visible_message("The singularity has shrunk to a rather pitiful size.") + if (STAGE_TWO) //1 to 3 does not check for the turfs if you put the gens right next to a 1x1 then its going to eat them. + name = "gravitational singularity" + desc = "A gravitational singularity." + current_size = STAGE_TWO icon = 'icons/effects/96x96.dmi' icon_state = "singularity_s3" pixel_x = -32 @@ -142,9 +150,18 @@ var/global/list/uneatable = list( dissipate_delay = 5 dissipate_track = 0 dissipate_strength = 5 - if(5) - if((check_turfs_in(1,2))&&(check_turfs_in(2,2))&&(check_turfs_in(4,2))&&(check_turfs_in(8,2))) - current_size = 5 + overlays = 0 + if(chained) + overlays = "chain_s3" + if(growing) + visible_message("The singularity noticeably grows in size.") + else + visible_message("The singularity has shrunk to a less powerful size.") + if (STAGE_THREE) + if ((check_turfs_in(1, 2)) && (check_turfs_in(2, 2)) && (check_turfs_in(4, 2)) && (check_turfs_in(8, 2))) + name = "gravitational singularity" + desc = "A gravitational singularity." + current_size = STAGE_THREE icon = 'icons/effects/160x160.dmi' icon_state = "singularity_s5" pixel_x = -64 @@ -154,9 +171,18 @@ var/global/list/uneatable = list( dissipate_delay = 4 dissipate_track = 0 dissipate_strength = 20 - if(7) - if((check_turfs_in(1,3))&&(check_turfs_in(2,3))&&(check_turfs_in(4,3))&&(check_turfs_in(8,3))) - current_size = 7 + overlays = 0 + if(chained) + overlays = "chain_s5" + if(growing) + visible_message("The singularity expands to a reasonable size.") + else + visible_message("The singularity has returned to a safe size.") + if(STAGE_FOUR) + if ((check_turfs_in(1, 3)) && (check_turfs_in(2, 3)) && (check_turfs_in(4, 3)) && (check_turfs_in(8, 3))) + name = "gravitational singularity" + desc = "A gravitational singularity." + current_size = STAGE_FOUR icon = 'icons/effects/224x224.dmi' icon_state = "singularity_s7" pixel_x = -96 @@ -166,123 +192,100 @@ var/global/list/uneatable = list( dissipate_delay = 10 dissipate_track = 0 dissipate_strength = 10 - if(9)//this one also lacks a check for gens because it eats everything - current_size = 9 + overlays = 0 + if(chained) + overlays = "chain_s7" + if(growing) + visible_message("The singularity expands to a dangerous size.") + else + visible_message("Miraculously, the singularity reduces in size, and can be contained.") + if(STAGE_FIVE) //This one also lacks a check for gens because it eats everything. + name = "gravitational singularity" + desc = "A gravitational singularity." + current_size = STAGE_FIVE icon = 'icons/effects/288x288.dmi' icon_state = "singularity_s9" pixel_x = -128 pixel_y = -128 grav_pull = 10 consume_range = 4 + dissipate = 0 //It cant go smaller due to e loss. + overlays = 0 + if(chained) + overlays = "chain_s9" + if(growing) + visible_message("The singularity has grown out of control!") + else + visible_message("The singularity miraculously reduces in size and loses its supermatter properties.") + if(STAGE_SUPER)//SUPERSINGULO + name = "super gravitational singularity" + desc = "A gravitational singularity with the properties of supermatter. It has the power to destroy worlds." + current_size = STAGE_SUPER + icon = 'icons/effects/352x352.dmi' + icon_state = "singularity_s11"//uh, whoever drew that, you know that black holes are supposed to look dark right? What's this, the clown's singulo? + pixel_x = -160 + pixel_y = -160 + grav_pull = 16 + consume_range = 5 dissipate = 0 //It cant go smaller due to e loss - if(current_size == allowed_size) - investigate_log("grew to size [current_size]","singulo") + event_chance = 25 //Events will fire off more often. + if(chained) + overlays = "chain_s9" + visible_message("You witness the creation of a destructive force that cannot possibly be stopped by human hands.") + + if (current_size == allowed_size) + investigate_log("grew to size [current_size].", I_SINGULO) return 1 - else if(current_size < (--temp_allowed_size)) + else if (current_size < (--temp_allowed_size) && current_size != STAGE_SUPER) expand(temp_allowed_size) else return 0 - /obj/machinery/singularity/proc/check_energy() - if(energy <= 0) - del(src) + if (energy <= 0) + investigate_log("collapsed.", I_SINGULO) + qdel(src) return 0 - switch(energy)//Some of these numbers might need to be changed up later -Mport - if(1 to 199) - allowed_size = 1 - if(200 to 499) - allowed_size = 3 - if(500 to 999) - allowed_size = 5 - if(1000 to 1999) - allowed_size = 7 - if(2000 to INFINITY) - allowed_size = 9 - if(current_size != allowed_size) - expand() + + switch (energy) //Some of these numbers might need to be changed up later -Mport. + if (1 to 199) + allowed_size = STAGE_ONE + if (200 to 499) + allowed_size = STAGE_TWO + if (500 to 999) + allowed_size = STAGE_THREE + if (1000 to 1999) + allowed_size = STAGE_FOUR + if(2000 to 49999) + allowed_size = STAGE_FIVE + if(50000 to INFINITY) + allowed_size = STAGE_SUPER + + if (current_size != allowed_size && current_size != STAGE_SUPER) + expand(null, current_size > allowed_size) return 1 - /obj/machinery/singularity/proc/eat() - set background = 1 - // Let's just make this one loop. - for(var/atom/X in orange(grav_pull,src)) + set background = BACKGROUND_ENABLED + + for(var/atom/X in orange(grav_pull, src)) var/dist = get_dist(X, src) - // Movable atoms only - if(dist > consume_range && istype(X, /atom/movable)) - if(is_type_in_list(X, uneatable)) continue - if(((X) &&(!X:anchored) && (!istype(X,/mob/living/carbon/human)))|| (src.current_size >= 9)) - step_towards(X,src) - else if(istype(X,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = X - if(istype(H.shoes,/obj/item/clothing/shoes/magboots)) - var/obj/item/clothing/shoes/magboots/M = H.shoes - if(M.magpulse) - continue - step_towards(H,src) - // Turf and movable atoms - else if(dist <= consume_range && (isturf(X) || istype(X, /atom/movable))) - consume(X) - return - - -/obj/machinery/singularity/proc/consume(var/atom/A) - var/gain = 0 - if(is_type_in_list(A, uneatable)) - return 0 - if (istype(A,/mob/living))//Mobs get gibbed - gain = 20 - if(istype(A,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = A - if(H.mind) - - if((H.mind.assigned_role == "Station Engineer") || (H.mind.assigned_role == "Chief Engineer") ) - gain = 100 - - if(H.mind.assigned_role == "Clown") - gain = rand(-300, 300) // HONK - - spawn() - A:gib() - sleep(1) - else if(istype(A,/obj/)) - - if (istype(A,/obj/item/weapon/storage/backpack/holding)) - var/dist = max((current_size - 2),1) - explosion(src.loc,(dist),(dist*2),(dist*4)) + var/obj/machinery/singularity/S = src + if(!istype(src)) return + if(dist > consume_range) + X.singularity_pull(S, current_size) + else if(dist <= consume_range) + consume(X) - if(istype(A, /obj/machinery/singularity))//Welp now you did it - var/obj/machinery/singularity/S = A - src.energy += (S.energy/2)//Absorb most of it - del(S) - var/dist = max((current_size - 2),1) - explosion(src.loc,(dist),(dist*2),(dist*4)) - return//Quits here, the obj should be gone, hell we might be + //for (var/turf/T in trange(grav_pull, src)) //TODO: Create a similar trange for orange to prevent snowflake of self check. + // consume(T) - if((teleport_del) && (!istype(A, /obj/machinery)))//Going to see if it does not lag less to tele items over to Z 2 - var/obj/O = A - O.x = 2 - O.y = 2 - O.z = 2 - else - A.ex_act(1.0) - if(A) del(A) - gain = 2 - else if(isturf(A)) - var/turf/T = A - if(T.intact) - for(var/obj/O in T.contents) - if(O.level != 1) - continue - if(O.invisibility == 101) - src.consume(O) - T.ChangeTurf(/turf/space) - gain = 2 - src.energy += gain return +/obj/machinery/singularity/proc/consume(const/atom/A) + src.energy += A.singularity_act(src, current_size) + return /obj/machinery/singularity/proc/move(var/force_move = 0) if(!move_self) @@ -311,7 +314,6 @@ var/global/list/uneatable = list( last_failed_movement = movement_dir return 0 - /obj/machinery/singularity/proc/check_turfs_in(var/direction = 0, var/step = 0) if(!direction) return 0 @@ -328,6 +330,8 @@ var/global/list/uneatable = list( steps = 4 if(9) steps = 5 + if(11) + steps = 6 else steps = step var/list/turfs = list() @@ -364,34 +368,38 @@ var/global/list/uneatable = list( return 0 return 1 +/obj/machinery/singularity/proc/can_move(const/turf/T) + if (!isturf(T)) + return 0 -/obj/machinery/singularity/proc/can_move(var/turf/T) - if(!T) + if ((locate(/obj/machinery/containment_field) in T) || (locate(/obj/machinery/shieldwall) in T)) return 0 - if((locate(/obj/machinery/containment_field) in T)||(locate(/obj/machinery/shieldwall) in T)) - return 0 - else if(locate(/obj/machinery/field_generator) in T) + else if (locate(/obj/machinery/field_generator) in T) var/obj/machinery/field_generator/G = locate(/obj/machinery/field_generator) in T - if(G && G.active) + + if (G && G.active) return 0 - else if(locate(/obj/machinery/shieldwallgen) in T) + else if (locate(/obj/machinery/shieldwallgen) in T) var/obj/machinery/shieldwallgen/S = locate(/obj/machinery/shieldwallgen) in T - if(S && S.active) + + if (S && S.active) return 0 return 1 - /obj/machinery/singularity/proc/event() - var/numb = pick(1,2,3,4,5,6) - switch(numb) - if(1)//EMP + var/numb = pick(1, 2, 3, 4, 5, 6) + + switch (numb) + if (1) //EMP. emp_area() - if(2,3)//tox damage all carbon mobs in area + if (2, 3) //Tox damage all carbon mobs in area. toxmob() - if(4)//Stun mobs who lack optic scanners + if (4) //Stun mobs who lack optic scanners. mezzer() else return 0 + if(current_size == 11) + smwave() return 1 @@ -405,6 +413,8 @@ var/global/list/uneatable = list( radiation = round(((src.energy-150)/50)*5,1) radiationmin = round((radiation/5),1)// for(var/mob/living/M in view(toxrange, src.loc)) + if(M.status_flags & GODMODE) + continue M.apply_effect(rand(radiationmin,radiation), IRRADIATE) toxdamage = (toxdamage - (toxdamage*M.getarmor(null, "rad"))) M.apply_effect(toxdamage, TOX) @@ -415,155 +425,70 @@ var/global/list/uneatable = list( for(var/mob/living/carbon/M in oviewers(8, src)) if(istype(M, /mob/living/carbon/brain)) //Ignore brains continue - + if(M.status_flags & GODMODE) + continue if(M.stat == CONSCIOUS) if (istype(M,/mob/living/carbon/human)) var/mob/living/carbon/human/H = M - if(istype(H.glasses,/obj/item/clothing/glasses/meson)) - H << "\blue You look directly into The [src.name], good thing you had your protective eyewear on!" + if(istype(H.glasses,/obj/item/clothing/glasses/meson) && current_size != 11) + H << "You look directly into The [src.name], good thing you had your protective eyewear on!" return - M << "\red You look directly into The [src.name] and feel weak." + else + H << "You look directly into The [src.name], but your eyewear does absolutely nothing to protect you from it!" + M << "You look directly into The [src.name] and feel [current_size == 11 ? "helpless" : "weak"]." M.apply_effect(3, STUN) for(var/mob/O in viewers(M, null)) - O.show_message(text("\red [] stares blankly at The []!", M, src), 1) - return - + O.show_message(text("[] stares blankly at The []!", M, src), 1) /obj/machinery/singularity/proc/emp_area() - empulse(src, 8, 10) - return + if(current_size != 11) + empulse(src, 8, 10) + else + empulse(src, 12, 16) +/obj/machinery/singularity/proc/smwave() + for(var/mob/living/M in view(10, src.loc)) + if(prob(67)) + M.apply_effect(rand(energy), IRRADIATE) + M << "You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat." + M << "Miraculously, it fails to kill you." + else + M << "You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat." + M << "You don't even have a moment to react as you are reduced to ashes by the intense radiation." + M.dust() + return /obj/machinery/singularity/proc/pulse() - for(var/obj/machinery/power/rad_collector/R in rad_collectors) - if(get_dist(R, src) <= 15) // Better than using orange() every process + if (get_dist(R, src) <= 15) //Better than using orange() every process. R.receive_pulse(energy) - return +/obj/machinery/singularity/proc/on_capture() + chained = 1 + overlays = 0 + move_self = 0 + switch (current_size) + if(1) + overlays += image('icons/obj/singularity.dmi',"chain_s1") + if(3) + overlays += image('icons/effects/96x96.dmi',"chain_s3") + if(5) + overlays += image('icons/effects/160x160.dmi',"chain_s5") + if(7) + overlays += image('icons/effects/224x224.dmi',"chain_s7") + if(9) + overlays += image('icons/effects/288x288.dmi',"chain_s9") +/obj/machinery/singularity/proc/on_release() + chained = 0 + overlays = 0 + move_self = 1 -/obj/machinery/singularity/narsie //Moving narsie to a child object of the singularity so it can be made to function differently. --NEO - name = "Nar-Sie" - desc = "Your mind begins to bubble and ooze as it tries to comprehend what it sees." - icon = 'icons/obj/magic_terror.dmi' - pixel_x = -89 - pixel_y = -85 - current_size = 9 //It moves/eats like a max-size singulo, aside from range. --NEO - contained = 0 //Are we going to move around? - dissipate = 0 //Do we lose energy over time? - move_self = 1 //Do we move on our own? - grav_pull = 10 //How many tiles out do we pull? - consume_range = 3 //How many tiles out do we eat - var/last_boom = 0 - -/obj/machinery/singularity/narsie/large - name = "Nar-Sie" - icon = 'icons/obj/narsie.dmi' - // Pixel stuff centers Narsie. - pixel_x = -236 - pixel_y = -256 - current_size = 12 - move_self = 1 //Do we move on our own? - consume_range = 12 //How many tiles out do we eat - -/obj/machinery/singularity/narsie/large/New() - ..() - world << "NAR-SIE HAS RISEN" - if(emergency_shuttle && emergency_shuttle.can_call()) - emergency_shuttle.call_evac() - emergency_shuttle.launch_time = 0 // Cannot recall - -/obj/machinery/singularity/narsie/process() - eat() - if(!target || prob(5)) - pickcultist() - move() - if(prob(25)) - mezzer() - -/obj/machinery/singularity/narsie/consume(var/atom/A) //Has its own consume proc because it doesn't need energy and I don't want BoHs to explode it. --NEO - if(is_type_in_list(A, uneatable)) - return 0 - if (istype(A,/mob/living))//Mobs get gibbed - A:gib() - else if(istype(A,/obj)) - var/obj/O = A - machines -= O - processing_objects -= O - O.loc = null - else if(isturf(A)) - var/turf/T = A - if(T.intact) - for(var/obj/O in T.contents) - if(O.level != 1) - continue - if(O.invisibility == 101) - src.consume(O) - A:ChangeTurf(/turf/space) - if(last_boom + 100 < world.time && prob(5)) - explosion(loc, -1, -1, -1, 1, 0) //Since we're not exploding everything in consume() toss out an explosion effect every now and again - last_boom = world.time - return - -/obj/machinery/singularity/narsie/ex_act() //No throwing bombs at it either. --NEO - return - -/obj/machinery/singularity/narsie/proc/pickcultist() //Narsie rewards his cultists with being devoured first, then picks a ghost to follow. --NEO - var/list/cultists = list() - if(cult && cult.current_antagonists.len) - for(var/datum/mind/cult_nh_mind in cult.current_antagonists) - if(!cult_nh_mind.current) - continue - if(cult_nh_mind.current.stat) - continue - var/turf/pos = get_turf(cult_nh_mind.current) - if(pos.z != src.z) - continue - cultists += cult_nh_mind.current - if(cultists.len) - acquire(pick(cultists)) - return - //If there was living cultists, it picks one to follow. - for(var/mob/living/carbon/human/food in living_mob_list) - if(food.stat) - continue - var/turf/pos = get_turf(food) - if(pos.z != src.z) - continue - cultists += food - if(cultists.len) - acquire(pick(cultists)) - return - //no living cultists, pick a living human instead. - for(var/mob/dead/observer/ghost in player_list) - if(!ghost.client) - continue - var/turf/pos = get_turf(ghost) - if(pos.z != src.z) - continue - cultists += ghost - if(cultists.len) - acquire(pick(cultists)) - return - //no living humans, follow a ghost instead. - -/obj/machinery/singularity/narsie/proc/acquire(var/mob/food) - target << "\blue NAR-SIE HAS LOST INTEREST IN YOU" - target = food - if(ishuman(target)) - target << "\red NAR-SIE HUNGERS FOR YOUR SOUL" - else - target << "\red NAR-SIE HAS CHOSEN YOU TO LEAD HIM TO HIS NEXT MEAL" - -//Wizard narsie - -/obj/machinery/singularity/narsie/wizard - grav_pull = 0 - -/obj/machinery/singularity/narsie/wizard/eat() - set background = 1 - for(var/atom/X in orange(consume_range,src)) - if(isturf(X) || istype(X, /atom/movable)) - consume(X) - return +/obj/machinery/singularity/singularity_act(S, size) + if(current_size <= size) + var/gain = (energy/2) + var/dist = max((current_size - 2), 1) + explosion(src.loc,(dist),(dist*2),(dist*4)) + spawn(0) + qdel(src) + return gain diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index b29f2f3e420..2c116901ec3 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -8,7 +8,7 @@ load_method = MAGAZINE /obj/item/weapon/gun/projectile/colt/detective - desc = "A cheap Martian knock-off of a Colt M1911. Uses less-than-lethal .45 rounds." + desc = "A cheap Martian knock-off of a Colt M1911. Uses .45 rounds." magazine_type = /obj/item/ammo_magazine/c45m/rubber /obj/item/weapon/gun/projectile/colt/detective/verb/rename_gun() @@ -30,7 +30,7 @@ return 1 /obj/item/weapon/gun/projectile/sec - desc = "A NanoTrasen designed sidearm, found pretty much everywhere humans are. Uses less-than-lethal .45 rounds." + desc = "A NanoTrasen designed sidearm, found pretty much everywhere humans are. Uses .45 rounds." name = "\improper NT Mk58" icon_state = "secguncomp" magazine_type = /obj/item/ammo_magazine/c45m/rubber @@ -40,11 +40,10 @@ /obj/item/weapon/gun/projectile/sec/flash name = "\improper NT Mk58 signal pistol" - desc = "A NanoTrasen designed sidearm, found pretty much everywhere humans are. Uses .45 signal flash rounds." magazine_type = /obj/item/ammo_magazine/c45m/flash /obj/item/weapon/gun/projectile/sec/wood - desc = "A Nanotrasen designed sidearm, this one has a sweet wooden grip. Uses less-than-lethal .45 rounds." + desc = "A Nanotrasen designed sidearm, this one has a sweet wooden grip. Uses .45 rounds." name = "\improper Custom NT Mk58" icon_state = "secgundark" @@ -118,7 +117,7 @@ /obj/item/weapon/gun/projectile/pistol/flash name = "\improper Stechtkin signal pistol" - desc = "A small, easily concealable gun. Uses 9mm signal flash rounds." + desc = "A small, easily concealable gun. Uses 9mm rounds." magazine_type = /obj/item/ammo_magazine/mc9mm/flash /obj/item/weapon/gun/projectile/pistol/attack_hand(mob/user as mob) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 3786dda532e..98293ebc7ff 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -51,17 +51,18 @@ var/drowsy = 0 var/agony = 0 var/embed = 0 // whether or not the projectile can embed itself in the mob - - var/hitscan = 0 // whether the projectile should be hitscan + + var/hitscan = 0 // whether the projectile should be hitscan + var/step_delay = 1 // the delay between iterations if not a hitscan projectile // effect types to be used var/muzzle_type var/tracer_type var/impact_type - + var/datum/plot_vector/trajectory // used to plot the path of the projectile var/datum/vector_loc/location // current location of the projectile in pixel space - var/matrix/effect_transform // matrix to rotate and scale projectile effects - putting it here so it doesn't + var/matrix/effect_transform // matrix to rotate and scale projectile effects - putting it here so it doesn't // have to be recreated multiple times //TODO: make it so this is called more reliably, instead of sometimes by bullet_act() and sometimes not @@ -113,12 +114,12 @@ if(user == target) //Shooting yourself user.bullet_act(src, target_zone) on_impact(user) - del(src) + qdel(src) return 0 if(targloc == curloc) //Shooting something in the same turf target.bullet_act(src, target_zone) on_impact(target) - del(src) + qdel(src) return 0 original = target @@ -149,11 +150,13 @@ //Called when the projectile intercepts a mob. Returns 1 if the projectile hit the mob, 0 if it missed and should keep flying. /obj/item/projectile/proc/attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier=0) + if(!istype(target_mob)) + return //accuracy bonus from aiming if (istype(shot_from, /obj/item/weapon/gun)) var/obj/item/weapon/gun/daddy = shot_from miss_modifier -= round(15*daddy.accuracy) - + //If you aim at someone beforehead, it'll hit more often. //Kinda balanced by fact you need like 2 seconds to aim //As opposed to no-delay pew pew @@ -197,7 +200,7 @@ /obj/item/projectile/Bump(atom/A as mob|obj|turf|area, forced=0) if(A == src) return 0 //no - + if(A == firer) loc = A.loc return 0 //cannot shoot yourself @@ -218,7 +221,7 @@ visible_message("\The [M] uses [G.affecting] as a shield!") if(Bump(G.affecting, forced=1)) return //If Bump() returns 0 (keep going) then we continue on to attack M. - + passthrough = !attack_mob(M, distance) else passthrough = 1 //so ghosts don't stop bullets @@ -227,7 +230,7 @@ if(isturf(A)) for(var/obj/O in A) O.bullet_act(src) - for(var/mob/M in A) + for(var/mob/living/M in A) attack_mob(M, distance) //penetrating projectiles can pass through things that otherwise would not let them @@ -250,11 +253,11 @@ //stop flying on_impact(A) - + density = 0 invisibility = 101 - del(src) + qdel(src) return 1 /obj/item/projectile/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) @@ -274,19 +277,20 @@ spawn while(src) if(kill_count-- < 1) on_impact(src.loc) //for any final impact behaviours - del(src) + qdel(src) if((!( current ) || loc == current)) current = locate(min(max(x + xo, 1), world.maxx), min(max(y + yo, 1), world.maxy), z) if((x == 1 || x == world.maxx || y == 1 || y == world.maxy)) - del(src) + qdel(src) return trajectory.increment() // increment the current location location = trajectory.return_location(location) // update the locally stored location data if(!location) - del(src) // if it's left the world... kill it + qdel(src) // if it's left the world... kill it + before_move() Move(location.return_turf()) if(first_step) @@ -294,20 +298,26 @@ first_step = 0 else tracer_effect(effect_transform) - + if(!bumped && !isturf(original)) if(loc == get_turf(original)) if(!(original in permutated)) Bump(original) + if(!hitscan) - sleep(1) //add delay between movement iterations if it's not a hitscan weapon + sleep(step_delay) //add delay between movement iterations if it's not a hitscan weapon + +/obj/item/projectile/proc/process_step(first_step = 0) + + +/obj/item/projectile/proc/before_move() /obj/item/projectile/proc/setup_trajectory() // plot the initial trajectory trajectory = new() trajectory.setup(starting, original, pixel_x, pixel_y) - + // generate this now since all visual effects the projectile makes can use it effect_transform = new() effect_transform.Scale(trajectory.return_hypotenuse(), 1) @@ -319,7 +329,7 @@ if(ispath(muzzle_type)) var/obj/effect/projectile/M = new muzzle_type(get_turf(src)) - + if(istype(M)) M.set_transform(T) M.pixel_x = location.pixel_x @@ -329,7 +339,7 @@ /obj/item/projectile/proc/tracer_effect(var/matrix/M) if(ispath(tracer_type)) var/obj/effect/projectile/P = new tracer_type(location.loc) - + if(istype(P)) P.set_transform(M) P.pixel_x = location.pixel_x @@ -339,14 +349,14 @@ /obj/item/projectile/proc/impact_effect(var/matrix/M) if(ispath(tracer_type)) var/obj/effect/projectile/P = new impact_type(location.loc) - + if(istype(P)) P.set_transform(M) P.pixel_x = location.pixel_x P.pixel_y = location.pixel_y P.activate() -//"Tracing" projectile +//"Tracing" projectile /obj/item/projectile/test //Used to see if you can hit them. invisibility = 101 //Nope! Can't see me! yo = null @@ -374,6 +384,8 @@ yo = targloc.y - curloc.y xo = targloc.x - curloc.x target = targloc + original = target + starting = curloc //plot the initial trajectory setup_trajectory() @@ -407,5 +419,5 @@ trace.pass_flags = pass_flags //And the pass flags to that of the real projectile... trace.firer = user var/output = trace.process() //Test it! - del(trace) //No need for it anymore - return output //Send it back to the gun! + qdel(trace) //No need for it anymore + return output //Send it back to the gun! diff --git a/code/modules/projectiles/projectile/change.dm b/code/modules/projectiles/projectile/change.dm index 24feb087712..051ae913f64 100644 --- a/code/modules/projectiles/projectile/change.dm +++ b/code/modules/projectiles/projectile/change.dm @@ -79,8 +79,8 @@ A.randomize_appearance_for(H) if(new_mob) - for (var/obj/effect/proc_holder/spell/S in M.spell_list) - new_mob.spell_list += new S.type + for (var/spell/S in M.spell_list) + new_mob.add_spell(new S.type) new_mob.a_intent = "hurt" if(M.mind) diff --git a/code/modules/projectiles/targeting.dm b/code/modules/projectiles/targeting.dm index 1136f832275..c69d8afda4d 100644 --- a/code/modules/projectiles/targeting.dm +++ b/code/modules/projectiles/targeting.dm @@ -195,7 +195,7 @@ else I.lower_aim() return - if(m_intent == "run" && T.client.target_can_move == 1 && T.client.target_can_run == 0) + if(iscarbon(src) && m_intent == "run" && T.client.target_can_move == 1 && T.client.target_can_run == 0) src << "Your move intent is now set to walk, as your targeter permits it." //Self explanitory. set_m_intent("walk") @@ -236,7 +236,7 @@ if(!I.aim_targets.len) del(I.aim_targets) var/mob/living/T = I.loc //Remove the targeting icons - if(T && ismob(T) && !I.aim_targets) + if(T && ismob(T) && !I.aim_targets && T.client) T.client.remove_gun_icons() if(!targeted_by.len) del target_locked //Remove the overlay @@ -406,4 +406,4 @@ client/verb/AllowTargetRun() if(target_can_radio) M << "Your character may now use the radio at the discretion of their targeter." else - M << "Your character will now be shot if they use the radio." \ No newline at end of file + M << "Your character will now be shot if they use the radio." diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 227fe03a4e8..e7c8262aa7d 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -406,7 +406,7 @@ if(type in diseases) // Make sure this is a disease D = new type(0, null) var/list/data = list("viruses"=list(D)) - var/name = sanitizeSafe(input(usr,"Name:","Name the culture",D.name)) + var/name = sanitizeSafe(input(usr,"Name:","Name the culture",D.name), MAX_NAME_LEN) if(!name || name == " ") name = D.name B.name = "[name] culture bottle" B.desc = "A small bottle. Contains [D.agent] culture in synthblood medium." diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 2a73fd5786f..44ee2987c42 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -156,6 +156,8 @@ datum else if(istype(self.data["donor"], /mob/living/carbon/alien)) var/obj/effect/decal/cleanable/blood/B = blood_splatter(T,self,1) if(B) B.blood_DNA["UNKNOWN DNA STRUCTURE"] = "X*" + if(volume >= 5 && !istype(T.loc, /area/chapel)) //blood desanctifies non-chapel tiles + T.holy = 0 return /* Must check the transfering of reagents and their data first. They all can point to one disease datum. @@ -289,6 +291,12 @@ datum holder.remove_reagent(src.id, 10 * REAGENTS_METABOLISM) //high metabolism to prevent extended uncult rolls. return + reaction_turf(var/turf/T, var/volume) + src = null + if(volume >= 5) + T.holy = 1 + return + lube name = "Space Lube" id = "lube" diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index fc8c129140c..96730fb25b0 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -213,13 +213,6 @@ datum required_catalysts = list("phoron" = 5) result_amount = 2 - virus_food - name = "Virus Food" - id = "virusfood" - result = "virusfood" - required_reagents = list("water" = 1, "milk" = 1) - result_amount = 5 - leporazine name = "Leporazine" id = "leporazine" @@ -538,8 +531,8 @@ datum name = "Virus Food" id = "virusfood" result = "virusfood" - required_reagents = list("water" = 5, "milk" = 5, "oxygen" = 5) - result_amount = 15 + required_reagents = list("water" = 1, "milk" = 1, "oxygen" = 1) + result_amount = 3 /* mix_virus name = "Mix Virus" @@ -1629,7 +1622,9 @@ datum required_reagents = list("egg" = 3, "flour" = 10) result_amount = 1 on_reaction(var/datum/reagents/holder, var/created_volume) - new /obj/item/weapon/reagent_containers/food/snacks/dough(get_turf(holder.my_atom)) + var/turf/T = get_turf(holder.my_atom) + for(var/i = 1 to created_volume) + new /obj/item/weapon/reagent_containers/food/snacks/dough(T) return syntiflesh @@ -1639,8 +1634,9 @@ datum required_reagents = list("blood" = 5, "clonexadone" = 1) result_amount = 1 on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(location) + var/turf/T = get_turf(holder.my_atom) + for(var/i = 1 to created_volume) + new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(T) return hot_ramen diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm index f643ccca908..2b9cf560dcf 100644 --- a/code/modules/reagents/reagent_containers/food/condiment.dm +++ b/code/modules/reagents/reagent_containers/food/condiment.dm @@ -83,7 +83,7 @@ user << "\blue You transfer [trans] units of the condiment to [target]." on_reagent_change() - if(icon_state == "saltshakersmall" || icon_state == "peppermillsmall") + if(icon_state == "saltshakersmall" || icon_state == "peppermillsmall" || icon_state == "flour") return if(reagents.reagent_list.len > 0) switch(reagents.get_master_reagent_id()) @@ -179,4 +179,16 @@ volume = 20 New() ..() - reagents.add_reagent("blackpepper", 20) \ No newline at end of file + reagents.add_reagent("blackpepper", 20) + +/obj/item/weapon/reagent_containers/food/condiment/flour + name = "flour sack" + desc = "A big bag of flour. Good for baking!" + icon = 'icons/obj/food.dmi' + icon_state = "flour" + item_state = "flour" + New() + ..() + reagents.add_reagent("flour", 30) + src.pixel_x = rand(-10.0, 10) + src.pixel_y = rand(-10.0, 10) \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 229b4b04e59..c8609074b6e 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -556,18 +556,6 @@ ..() reagents.add_reagent("protein", 2) -/obj/item/weapon/reagent_containers/food/snacks/flour - name = "flour sack" - desc = "A big bag of flour. Good for baking!" - icon = 'icons/obj/food.dmi' - icon_state = "flour" - item_state = "flour" - New() - ..() - reagents.add_reagent("flour", 30) - src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) - /obj/item/weapon/reagent_containers/food/snacks/organ name = "organ" desc = "It's good for you." diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 1a251625268..20c4445e550 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -26,7 +26,7 @@ || istype(A, /obj/item/weapon/reagent_containers) || istype(A, /obj/structure/sink) || istype(A, /obj/structure/janitorialcart)) return - if(istype(A, /obj/effect/proc_holder/spell)) + if(istype(A, /spell)) return if(istype(A, /obj/structure/reagent_dispensers) && get_dist(src,A) <= 1) //this block copypasted from reagent_containers/glass, for lack of a better solution diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index a16e5653a93..e1e63c08dc9 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -104,46 +104,51 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). return 1 if(O.is_open_container()) return 0 - if(!istype(O, /obj/item/stack/sheet/glass) && !istype(O, /obj/item/stack/sheet/mineral/gold) && !istype(O, /obj/item/stack/sheet/mineral/diamond) && !istype(O, /obj/item/stack/sheet/mineral/uranium)) - user << "You cannot insert this item into \the [src]!" - return 1 +// if(!istype(O, /obj/item/stack/sheet/glass) && !istype(O, /obj/item/stack/sheet/mineral/gold) && !istype(O, /obj/item/stack/sheet/mineral/diamond) && !istype(O, /obj/item/stack/sheet/mineral/uranium)) +// user << "You cannot insert this item into \the [src]!" +// return 1 if(stat) return 1 if(busy) user << "\The [src] is busy. Please wait for completion of previous operation." return 1 - var/obj/item/stack/sheet/stack = O - if((TotalMaterials() + stack.perunit) > max_material_amount) - user << "\The [src] is full. Please remove glass from \the [src] in order to insert more." - return 1 - var/amount = round(input("How many sheets do you want to add?") as num) - if(amount < 0) - amount = 0 - if(amount == 0) - return - if(amount > stack.amount) - amount = min(stack.amount, round((max_material_amount - TotalMaterials()) / stack.perunit)) + if(istype(O, /obj/item/stack/sheet/glass) || istype(O, /obj/item/stack/sheet/mineral/gold) || istype(O, /obj/item/stack/sheet/mineral/diamond) || istype(O, /obj/item/stack/sheet/mineral/uranium)) - busy = 1 - use_power(max(1000, (3750 * amount / 10))) - var/stacktype = stack.type - stack.use(amount) - if(do_after(usr, 16)) - user << "You add [amount] sheets to \the [src]." - switch(stacktype) - if(/obj/item/stack/sheet/glass) - g_amount += amount * 3750 - if(/obj/item/stack/sheet/mineral/gold) - gold_amount += amount * 2000 - if(/obj/item/stack/sheet/mineral/diamond) - diamond_amount += amount * 2000 - if(/obj/item/stack/sheet/mineral/uranium) - uranium_amount += amount * 2000 - else - new stacktype(loc, amount) - busy = 0 - updateUsrDialog() + var/obj/item/stack/sheet/stack = O + if((TotalMaterials() + stack.perunit) > max_material_amount) + user << "\The [src] is full. Please remove glass from \the [src] in order to insert more." + return 1 + + var/amount = round(input("How many sheets do you want to add?") as num) + if(amount < 0) + amount = 0 + if(amount == 0) + return + if(amount > stack.amount) + amount = min(stack.amount, round((max_material_amount - TotalMaterials()) / stack.perunit)) + + busy = 1 + use_power(max(1000, (3750 * amount / 10))) + var/stacktype = stack.type + stack.use(amount) + if(do_after(usr, 16)) + user << "You add [amount] sheets to \the [src]." + switch(stacktype) + if(/obj/item/stack/sheet/glass) + g_amount += amount * 3750 + if(/obj/item/stack/sheet/mineral/gold) + gold_amount += amount * 2000 + if(/obj/item/stack/sheet/mineral/diamond) + diamond_amount += amount * 2000 + if(/obj/item/stack/sheet/mineral/uranium) + uranium_amount += amount * 2000 + else + new stacktype(loc, amount) + busy = 0 + updateUsrDialog() + + ..() //This is to stop these machines being hackable via clicking. /obj/machinery/r_n_d/circuit_imprinter/attack_hand(mob/user as mob) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 86eb5cce555..9d0d547f94d 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -485,6 +485,12 @@ datum/design/circuit/tcom/receiver req_tech = list("programming" = 4, "engineering" = 3, "bluespace" = 2) build_path = /obj/item/weapon/circuitboard/telecomms/receiver +datum/design/circuit/tcom/bluespacerelay + name = "emergency bluespace relay" + id = "bluespace-relay" + req_tech = list("programming" = 4, "bluespace" = 4) + build_path = /obj/item/weapon/circuitboard/bluespacerelay + /////////////////////////////////// ////////////Mecha Modules////////// /////////////////////////////////// diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index 7b7445f0993..3fc97cc6ab4 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -13,7 +13,7 @@ Note: Must be placed within 3 tiles of the R&D Console var/obj/item/weapon/loaded_item = null var/decon_mod = 1 var/min_reliability = 90 - + use_power = 1 idle_power_usage = 30 active_power_usage = 2500 @@ -38,12 +38,6 @@ Note: Must be placed within 3 tiles of the R&D Console del(src) return -/obj/machinery/r_n_d/destructive_analyzer/proc/ConvertReqString2List(var/list/source_list) - var/list/temp_list = params2list(source_list) - for(var/O in temp_list) - temp_list[O] = text2num(temp_list[O]) - return temp_list - /obj/machinery/r_n_d/destructive_analyzer/update_icon() if(panel_open) icon_state = "d_analyzer_t" diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index 22df4b82ddd..06f3f7b760e 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -116,9 +116,6 @@ Note: Must be placed west/left of and R&D console to function. if(busy) user << "\The [src] is busy. Please wait for completion of previous operation." return 1 - if(!istype(O, /obj/item/stack/sheet)) - user << "You cannot insert this item into \the [src]!" - return 1 if(stat) return 1 if(istype(O,/obj/item/stack/sheet)) @@ -127,51 +124,52 @@ Note: Must be placed west/left of and R&D console to function. user << "\The [src]'s material bin is full. Please remove material before adding more." return 1 - var/obj/item/stack/sheet/stack = O - var/amount = round(input("How many sheets do you want to add?") as num)//No decimals - if(!O) - return - if(amount < 0)//No negative numbers - amount = 0 - if(amount == 0) - return - if(amount > stack.get_amount()) - amount = stack.get_amount() - if(max_material_storage - TotalMaterials() < (amount * stack.perunit))//Can't overfill - amount = min(stack.amount, round((max_material_storage - TotalMaterials()) / stack.perunit)) + var/obj/item/stack/sheet/stack = O + var/amount = round(input("How many sheets do you want to add?") as num)//No decimals + if(!O) + return + if(amount < 0)//No negative numbers + amount = 0 + if(amount == 0) + return + if(amount > stack.get_amount()) + amount = stack.get_amount() + if(max_material_storage - TotalMaterials() < (amount * stack.perunit))//Can't overfill + amount = min(stack.amount, round((max_material_storage - TotalMaterials()) / stack.perunit)) - overlays += "protolathe_[stack.name]" - sleep(10) - overlays -= "protolathe_[stack.name]" + overlays += "protolathe_[stack.name]" + sleep(10) + overlays -= "protolathe_[stack.name]" - icon_state = "protolathe" - busy = 1 - use_power(max(1000, (3750 * amount / 10))) - var/stacktype = stack.type - stack.use(amount) - if(do_after(user, 16)) - user << "You add [amount] sheets to \the [src]." icon_state = "protolathe" - switch(stacktype) - if(/obj/item/stack/sheet/metal) - m_amount += amount * 3750 - if(/obj/item/stack/sheet/glass) - g_amount += amount * 3750 - if(/obj/item/stack/sheet/mineral/gold) - gold_amount += amount * 2000 - if(/obj/item/stack/sheet/mineral/silver) - silver_amount += amount * 2000 - if(/obj/item/stack/sheet/mineral/phoron) - phoron_amount += amount * 2000 - if(/obj/item/stack/sheet/mineral/uranium) - uranium_amount += amount * 2000 - if(/obj/item/stack/sheet/mineral/diamond) - diamond_amount += amount * 2000 - else - new stacktype(loc, amount) - busy = 0 - updateUsrDialog() - return + busy = 1 + use_power(max(1000, (3750 * amount / 10))) + var/stacktype = stack.type + stack.use(amount) + if(do_after(user, 16)) + user << "You add [amount] sheets to \the [src]." + icon_state = "protolathe" + switch(stacktype) + if(/obj/item/stack/sheet/metal) + m_amount += amount * 3750 + if(/obj/item/stack/sheet/glass) + g_amount += amount * 3750 + if(/obj/item/stack/sheet/mineral/gold) + gold_amount += amount * 2000 + if(/obj/item/stack/sheet/mineral/silver) + silver_amount += amount * 2000 + if(/obj/item/stack/sheet/mineral/phoron) + phoron_amount += amount * 2000 + if(/obj/item/stack/sheet/mineral/uranium) + uranium_amount += amount * 2000 + if(/obj/item/stack/sheet/mineral/diamond) + diamond_amount += amount * 2000 + else + new stacktype(loc, amount) + busy = 0 + updateUsrDialog() + return + ..() //This is to stop these machines being hackable via clicking. /obj/machinery/r_n_d/protolathe/attack_hand(mob/user as mob) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 1ad86378b03..89e31574d2c 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -256,7 +256,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, screen = 1.0 return if(linked_destroy.loaded_item.reliability >= linked_destroy.min_reliability) - var/list/temp_tech = linked_destroy.ConvertReqString2List(linked_destroy.loaded_item.origin_tech) + var/list/temp_tech = ConvertReqString2List(linked_destroy.loaded_item.origin_tech) for(var/T in temp_tech) files.UpdateTech(T, temp_tech[T]) if(linked_destroy.loaded_item.reliability < 100 && linked_destroy.loaded_item.crit_fail) @@ -753,7 +753,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Name: [linked_destroy.loaded_item.name]
      " dat += "Origin Tech:" dat += "
        " - var/list/temp_tech = linked_destroy.ConvertReqString2List(linked_destroy.loaded_item.origin_tech) + var/list/temp_tech = ConvertReqString2List(linked_destroy.loaded_item.origin_tech) for(var/T in temp_tech) dat += "
      • [CallTechName(T)] [temp_tech[T]]" for(var/datum/tech/F in files.known_tech) diff --git a/code/modules/research/research.dm b/code/modules/research/research.dm index c7ed90f786d..72127cfa89b 100644 --- a/code/modules/research/research.dm +++ b/code/modules/research/research.dm @@ -59,6 +59,12 @@ research holder datum. possible_designs += new D(src) RefreshResearch() +/datum/research/techonly + +/datum/research/techonly/New() + for(var/T in typesof(/datum/tech) - /datum/tech) + possible_tech += new T(src) + RefreshResearch() //Checks to see if tech has all the required pre-reqs. diff --git a/code/modules/research/xenoarchaeology/finds/finds.dm b/code/modules/research/xenoarchaeology/finds/finds.dm index 117fd66418c..6748aea41e7 100644 --- a/code/modules/research/xenoarchaeology/finds/finds.dm +++ b/code/modules/research/xenoarchaeology/finds/finds.dm @@ -301,7 +301,7 @@ //arcane clothing apply_prefix = 0 var/list/possible_spawns = list(/obj/item/clothing/head/culthood, - /obj/item/clothing/head/magus, + /obj/item/clothing/head/culthood/magus, /obj/item/clothing/head/culthood/alt, /obj/item/clothing/head/helmet/space/cult) diff --git a/code/modules/spells/aoe_turf/aoe_turf.dm b/code/modules/spells/aoe_turf/aoe_turf.dm new file mode 100644 index 00000000000..9a70eb18c67 --- /dev/null +++ b/code/modules/spells/aoe_turf/aoe_turf.dm @@ -0,0 +1,25 @@ +/* +Aoe turf spells target a ring of tiles around the user +This ring has an outer radius (range) and an inner radius (inner_radius) +Aoe turf spells have two useful flags: IGNOREDENSE and IGNORESPACE. These are explained in setup.dm +*/ + +/spell/aoe_turf //affects all turfs in view or range (depends) + spell_flags = IGNOREDENSE + var/inner_radius = -1 //for all your ring spell needs + +/spell/aoe_turf/choose_targets(mob/user = usr) + var/list/targets = list() + + for(var/turf/target in view_or_range(range,user,selection_type)) + if(!(target in view_or_range(inner_radius,user,selection_type))) + if(target.density && (spell_flags & IGNOREDENSE)) + continue + if(istype(target, /turf/space) && (spell_flags & IGNORESPACE)) + continue + targets += target + + if(!targets.len) //doesn't waste the spell + return + + return targets \ No newline at end of file diff --git a/code/modules/spells/aoe_turf/blink.dm b/code/modules/spells/aoe_turf/blink.dm new file mode 100644 index 00000000000..f78572a3bad --- /dev/null +++ b/code/modules/spells/aoe_turf/blink.dm @@ -0,0 +1,34 @@ +/spell/aoe_turf/blink + name = "Blink" + desc = "This spell randomly teleports you a short distance." + + school = "abjuration" + charge_max = 20 + spell_flags = Z2NOCAST | IGNOREDENSE | IGNORESPACE + invocation = "none" + invocation_type = SpI_NONE + range = 7 + inner_radius = 1 + cooldown_min = 5 //4 deciseconds reduction per rank + hud_state = "wiz_blink" + +/spell/aoe_turf/blink/cast(var/list/targets, mob/user) + if(!targets.len) + return + + var/turf/T = pick(targets) + var/turf/starting = get_turf(user) + if(T) + if(user.buckled) + user.buckled = null + user.forceMove(T) + + var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread() + smoke.set_up(3, 0, starting) + smoke.start() + + smoke = new() + smoke.set_up(3, 0, T) + smoke.start() + + return diff --git a/code/modules/spells/aoe_turf/charge.dm b/code/modules/spells/aoe_turf/charge.dm new file mode 100644 index 00000000000..eb8fb76de29 --- /dev/null +++ b/code/modules/spells/aoe_turf/charge.dm @@ -0,0 +1,69 @@ +/spell/aoe_turf/charge + name = "Charge" + desc = "This spell can be used to charge up spent magical artifacts, among other things." + + school = "transmutation" + charge_max = 600 + spell_flags = 0 + invocation = "DIRI CEL" + invocation_type = SpI_WHISPER + range = 0 + cooldown_min = 400 //50 deciseconds reduction per rank + + hud_state = "wiz_charge" + +/spell/aoe_turf/charge/cast(var/list/targets, mob/user) + for(var/turf/T in targets) + depth_cast(T) + +/spell/aoe_turf/charge/proc/depth_cast(var/list/targets) + for(var/atom/A in targets) + if(A.contents.len) + depth_cast(A.contents) + cast_charge(A) + +/spell/aoe_turf/charge/proc/mob_charge(var/mob/living/M) + if(M.spell_list.len != 0) + for(var/spell/S in M.spell_list) + if(!istype(S, /spell/aoe_turf/charge)) + S.charge_counter = S.charge_max + M <<"You feel raw magic flowing through you, it feels good!" + else + M <<"You feel very strange for a moment, but then it passes." + return M + +/spell/aoe_turf/charge/proc/cast_charge(var/atom/target) + var/atom/charged_item + + if(istype(target, /mob/living)) + charged_item = mob_charge(target) + + if(istype(target, /obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = target + if(G.affecting) + var/mob/M = G.affecting + charged_item = mob_charge(M) + + if(istype(target, /obj/item/weapon/spellbook/oneuse)) + var/obj/item/weapon/spellbook/oneuse/I = target + if(prob(50)) + I.visible_message("[I] catches fire!") + del(I) + else + I.used = 0 + charged_item = I + + if(istype(target, /obj/item/weapon/cell/)) + var/obj/item/weapon/cell/C = target + if(prob(80)) + C.maxcharge -= 200 + if(C.maxcharge <= 1) //Div by 0 protection + C.maxcharge = 1 + C.charge = C.maxcharge + charged_item = C + + if(!charged_item) + return 0 + else + charged_item.visible_message("[charged_item] suddenly sparks with energy!") + return 1 \ No newline at end of file diff --git a/code/modules/spells/aoe_turf/conjure/conjure.dm b/code/modules/spells/aoe_turf/conjure/conjure.dm new file mode 100644 index 00000000000..98377948fa6 --- /dev/null +++ b/code/modules/spells/aoe_turf/conjure/conjure.dm @@ -0,0 +1,74 @@ +/* +Conjure spells spawn things (mobs, objs, turfs) in their summon_type +How they spawn stuff is decided by behaviour vars, which are explained below +*/ + +/spell/aoe_turf/conjure + name = "Conjure" + desc = "This spell conjures objs of the specified types in range." + + school = "conjuration" //funny, that + + var/list/summon_type = list() //determines what exactly will be summoned + //should be text, like list("/obj/machinery/bot/ed209") + + range = 0 //default values: only spawn on the player tile + selection_type = "view" + + duration = 0 // 0=permanent, any other time in deciseconds - how long the summoned objects last for + var/summon_amt = 1 //amount of objects summoned + var/summon_exclusive = 0 //spawn one of everything, instead of random things + + var/list/newVars = list() //vars of the summoned objects will be replaced with those where they meet + //should have format of list("emagged" = 1,"name" = "Wizard's Justicebot"), for example + + cast_sound = 'sound/items/welder.ogg' + +/spell/aoe_turf/conjure/cast(list/targets, mob/user) + playsound(get_turf(user), cast_sound, 50, 1) + + for(var/i=1,i <= summon_amt,i++) + if(!targets.len) + break + var/summoned_object_type + if(summon_exclusive) + if(!summon_type.len) + break + summoned_object_type = summon_type[1] + summon_type -= summoned_object_type + else + summoned_object_type = pick(summon_type) + var/turf/spawn_place = pick(targets) + if(spell_flags & IGNOREPREV) + targets -= spawn_place + + var/atom/summoned_object + if(ispath(summoned_object_type,/turf)) + if(istype(get_turf(user),/turf/simulated/shuttle) || istype(spawn_place, /turf/simulated/shuttle)) + user << "" + continue + spawn_place.ChangeTurf(summoned_object_type) + summoned_object = spawn_place + else + summoned_object = new summoned_object_type(spawn_place) + var/atom/movable/overlay/animation = new /atom/movable/overlay(spawn_place) + animation.name = "conjure" + animation.density = 0 + animation.anchored = 1 + animation.icon = 'icons/effects/effects.dmi' + animation.layer = 3 + animation.master = summoned_object + + for(var/varName in newVars) + if(varName in summoned_object.vars) + summoned_object.vars[varName] = newVars[varName] + + if(duration) + spawn(duration) + if(summoned_object && !istype(summoned_object, /turf)) + qdel(summoned_object) + conjure_animation(animation, spawn_place) + return + +/spell/aoe_turf/conjure/proc/conjure_animation(var/atom/movable/overlay/animation, var/turf/target) + del(animation) \ No newline at end of file diff --git a/code/modules/spells/aoe_turf/conjure/construct.dm b/code/modules/spells/aoe_turf/conjure/construct.dm new file mode 100644 index 00000000000..fb04db349b3 --- /dev/null +++ b/code/modules/spells/aoe_turf/conjure/construct.dm @@ -0,0 +1,137 @@ +//////////////////////////////Construct Spells///////////////////////// + +/spell/aoe_turf/conjure/construct + name = "Artificer" + desc = "This spell conjures a construct which may be controlled by Shades" + + school = "conjuration" + charge_max = 600 + spell_flags = 0 + invocation = "none" + invocation_type = SpI_NONE + range = 0 + + summon_type = list(/obj/structure/constructshell) + + hud_state = "artificer" + +/spell/aoe_turf/conjure/construct/lesser + charge_max = 1800 + summon_type = list(/obj/structure/constructshell/cult) + hud_state = "const_shell" + override_base = "const" + +/spell/aoe_turf/conjure/floor + name = "Floor Construction" + desc = "This spell constructs a cult floor" + + charge_max = 20 + spell_flags = Z2NOCAST | CONSTRUCT_CHECK + invocation = "none" + invocation_type = SpI_NONE + range = 0 + summon_type = list(/turf/simulated/floor/engine/cult) + + hud_state = "const_floor" + +/spell/aoe_turf/conjure/floor/conjure_animation(var/atom/movable/overlay/animation, var/turf/target) + animation.icon_state = "cultfloor" + flick("cultfloor",animation) + spawn(10) + del(animation) + +/spell/aoe_turf/conjure/wall + name = "Lesser Construction" + desc = "This spell constructs a cult wall" + + charge_max = 100 + spell_flags = Z2NOCAST | CONSTRUCT_CHECK + invocation = "none" + invocation_type = SpI_NONE + range = 0 + summon_type = list(/turf/simulated/wall/cult) + + hud_state = "const_wall" + +/spell/aoe_turf/conjure/wall/conjure_animation(var/atom/movable/overlay/animation, var/turf/target) + animation.icon_state = "cultwall" + flick("cultwall",animation) + spawn(10) + del(animation) + +/spell/aoe_turf/conjure/wall/reinforced + name = "Greater Construction" + desc = "This spell constructs a reinforced metal wall" + + charge_max = 300 + spell_flags = Z2NOCAST + invocation = "none" + invocation_type = SpI_NONE + range = 0 + cast_delay = 50 + + summon_type = list(/turf/simulated/wall/r_wall) + +/spell/aoe_turf/conjure/soulstone + name = "Summon Soulstone" + desc = "This spell reaches into Nar-Sie's realm, summoning one of the legendary fragments across time and space" + + charge_max = 3000 + spell_flags = 0 + invocation = "none" + invocation_type = SpI_NONE + range = 0 + + summon_type = list(/obj/item/device/soulstone) + + hud_state = "const_stone" + override_base = "const" + +/spell/aoe_turf/conjure/pylon + name = "Red Pylon" + desc = "This spell conjures a fragile crystal from Nar-Sie's realm. Makes for a convenient light source." + + charge_max = 200 + spell_flags = CONSTRUCT_CHECK + invocation = "none" + invocation_type = SpI_NONE + range = 0 + + summon_type = list(/obj/structure/cult/pylon) + + hud_state = "const_pylon" + +/spell/aoe_turf/conjure/pylon/cast(list/targets) + ..() + var/turf/spawn_place = pick(targets) + for(var/obj/structure/cult/pylon/P in spawn_place.contents) + if(P.isbroken) + P.repair(usr) + continue + return + +/spell/aoe_turf/conjure/forcewall/lesser + name = "Shield" + desc = "Allows you to pull up a shield to protect yourself and allies from incoming threats" + + charge_max = 300 + spell_flags = 0 + invocation = "none" + invocation_type = SpI_NONE + range = 0 + summon_type = list(/obj/effect/forcefield/cult) + duration = 200 + + hud_state = "const_juggwall" + +//Code for the Juggernaut construct's forcefield, that seemed like a good place to put it. +/obj/effect/forcefield/cult + desc = "That eerie looking obstacle seems to have been pulled from another dimension through sheer force" + name = "Juggerwall" + icon = 'icons/effects/effects.dmi' + icon_state = "m_shield_cult" + l_color = "#B40000" + luminosity = 2 + +/obj/effect/forcefield/cult/cultify() + return diff --git a/code/modules/spells/aoe_turf/conjure/forcewall.dm b/code/modules/spells/aoe_turf/conjure/forcewall.dm new file mode 100644 index 00000000000..0c5ada5bd17 --- /dev/null +++ b/code/modules/spells/aoe_turf/conjure/forcewall.dm @@ -0,0 +1,52 @@ +/spell/aoe_turf/conjure/forcewall + name = "Forcewall" + desc = "Create a wall of pure energy at your location." + summon_type = list(/obj/effect/forcefield) + duration = 300 + charge_max = 100 + spell_flags = 0 + range = 0 + cast_sound = null + + hud_state = "wiz_shield" + +/spell/aoe_turf/conjure/forcewall/mime + name = "Invisible wall" + desc = "Create an invisible wall on your location." + school = "mime" + panel = "Mime" + summon_type = list(/obj/effect/forcefield/mime) + invocation_type = SpI_EMOTE + invocation = "mimes placing their hands on a flat surfacing, and pushing against it." + charge_max = 300 + cast_sound = null + + override_base = "grey" + hud_state = "mime_wall" + +/obj/effect/forcefield + desc = "A space wizard's magic wall." + name = "FORCEWALL" + icon = 'icons/effects/effects.dmi' + icon_state = "m_shield" + anchored = 1.0 + opacity = 0 + density = 1 + unacidable = 1 + +/obj/effect/forcefield/bullet_act(var/obj/item/projectile/Proj, var/def_zone) + var/turf/T = get_turf(src.loc) + if(T) + for(var/mob/M in T) + Proj.on_hit(M,M.bullet_act(Proj, def_zone)) + return + +/obj/effect/forcefield/mime + icon_state = "empty" + name = "invisible wall" + desc = "You have a bad feeling about this." + +/obj/effect/forcefield/cultify() + new /obj/effect/forcefield/cult(get_turf(src)) + qdel(src) + return diff --git a/code/modules/spells/aoe_turf/disable_tech.dm b/code/modules/spells/aoe_turf/disable_tech.dm new file mode 100644 index 00000000000..5192ecb664a --- /dev/null +++ b/code/modules/spells/aoe_turf/disable_tech.dm @@ -0,0 +1,23 @@ +/spell/aoe_turf/disable_tech + name = "Disable Tech" + desc = "This spell disables all weapons, cameras and most other technology in range." + charge_max = 400 + spell_flags = NEEDSCLOTHES + invocation = "NEC CANTIO" + invocation_type = SpI_SHOUT + selection_type = "range" + range = 0 + inner_radius = -1 + + cooldown_min = 200 //50 deciseconds reduction per rank + + var/emp_heavy = 6 + var/emp_light = 10 + + hud_state = "wiz_tech" + +/spell/aoe_turf/disable_tech/cast(list/targets) + + for(var/turf/target in targets) + empulse(get_turf(target), emp_heavy, emp_light) + return \ No newline at end of file diff --git a/code/modules/spells/aoe_turf/knock.dm b/code/modules/spells/aoe_turf/knock.dm new file mode 100644 index 00000000000..3b3cae83d6c --- /dev/null +++ b/code/modules/spells/aoe_turf/knock.dm @@ -0,0 +1,44 @@ +/spell/aoe_turf/knock + name = "Knock" + desc = "This spell opens nearby doors and does not require wizard garb." + + school = "transmutation" + charge_max = 100 + spell_flags = 0 + invocation = "AULIE OXIN FIERA" + invocation_type = SpI_WHISPER + range = 3 + cooldown_min = 20 //20 deciseconds reduction per rank + + hud_state = "wiz_knock" + +/spell/aoe_turf/knock/cast(list/targets) + for(var/turf/T in targets) + for(var/obj/machinery/door/door in T.contents) + spawn(1) + if(istype(door,/obj/machinery/door/airlock)) + var/obj/machinery/door/airlock/AL = door //casting is important + AL.locked = 0 + door.open() + return + + +//Construct version +/spell/aoe_turf/knock/harvester + name = "Disintegrate Doors" + desc = "No door shall stop you." + + spell_flags = CONSTRUCT_CHECK + + charge_max = 100 + invocation = "" + invocation_type = "silent" + range = 5 + + hud_state = "const_knock" + +/spell/aoe_turf/knock/harvester/cast(list/targets) + for(var/turf/T in targets) + for(var/obj/machinery/door/door in T.contents) + spawn door.cultify() + return \ No newline at end of file diff --git a/code/modules/spells/aoe_turf/smoke.dm b/code/modules/spells/aoe_turf/smoke.dm new file mode 100644 index 00000000000..e055fc702f5 --- /dev/null +++ b/code/modules/spells/aoe_turf/smoke.dm @@ -0,0 +1,17 @@ +/spell/aoe_turf/smoke + name = "Smoke" + desc = "This spell spawns a cloud of choking smoke at your location and does not require wizard garb." + + school = "conjuration" + charge_max = 120 + spell_flags = 0 + invocation = "none" + invocation_type = SpI_NONE + range = 1 + inner_radius = -1 + cooldown_min = 20 //25 deciseconds reduction per rank + + smoke_spread = 2 + smoke_amt = 5 + + hud_state = "wiz_smoke" diff --git a/code/modules/spells/aoe_turf/summons.dm b/code/modules/spells/aoe_turf/summons.dm new file mode 100644 index 00000000000..f9f1242bc98 --- /dev/null +++ b/code/modules/spells/aoe_turf/summons.dm @@ -0,0 +1,41 @@ +/spell/aoe_turf/conjure/summonEdSwarm //test purposes + name = "Dispense Wizard Justice" + desc = "This spell dispenses wizard justice." + + summon_type = list(/obj/machinery/bot/secbot/ed209) + summon_amt = 10 + range = 3 + newVars = list("emagged" = 1,"name" = "Wizard's Justicebot") + + hud_state = "wiz_ed" + +/spell/aoe_turf/conjure/carp + name = "Summon Carp" + desc = "This spell conjures a simple carp." + + school = "conjuration" + charge_max = 1200 + spell_flags = NEEDSCLOTHES + invocation = "NOUK FHUNMM SACP RISSKA" + invocation_type = SpI_SHOUT + range = 1 + + summon_type = list(/mob/living/simple_animal/hostile/carp) + + hud_state = "wiz_carp" + +/spell/aoe_turf/conjure/creature + name = "Summon Creature Swarm" + desc = "This spell tears the fabric of reality, allowing horrific daemons to spill forth" + + school = "conjuration" + charge_max = 1200 + spell_flags = 0 + invocation = "IA IA" + invocation_type = SpI_SHOUT + summon_amt = 10 + range = 3 + + summon_type = list(/mob/living/simple_animal/hostile/creature) + + hud_state = "wiz_creature" \ No newline at end of file diff --git a/code/modules/spells/area_teleport.dm b/code/modules/spells/area_teleport.dm deleted file mode 100644 index 05a8e655edd..00000000000 --- a/code/modules/spells/area_teleport.dm +++ /dev/null @@ -1,82 +0,0 @@ -/obj/effect/proc_holder/spell/targeted/area_teleport - name = "Area teleport" - desc = "This spell teleports you to a type of area of your selection." - - var/randomise_selection = 0 //if it lets the usr choose the teleport loc or picks it from the list - var/invocation_area = 1 //if the invocation appends the selected area - -/obj/effect/proc_holder/spell/targeted/area_teleport/perform(list/targets, recharge = 1) - var/thearea = before_cast(targets) - if(!thearea || !cast_check(1)) - revert_cast() - return - invocation(thearea) - spawn(0) - if(charge_type == "recharge" && recharge) - start_recharge() - cast(targets,thearea) - after_cast(targets) - -/obj/effect/proc_holder/spell/targeted/area_teleport/before_cast(list/targets) - var/A = null - - if(!randomise_selection) - A = input("Area to teleport to", "Teleport", A) in teleportlocs - else - A = pick(teleportlocs) - - var/area/thearea = teleportlocs[A] - - return thearea - -/obj/effect/proc_holder/spell/targeted/area_teleport/cast(list/targets,area/thearea) - for(var/mob/living/target in targets) - var/list/L = list() - for(var/turf/T in get_area_turfs(thearea.type)) - if(!T.density) - var/clear = 1 - for(var/obj/O in T) - if(O.density) - clear = 0 - break - if(clear) - L+=T - - if(!L.len) - usr <<"The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry." - return - - if(target && target.buckled) - target.buckled.unbuckle_mob() - - var/list/tempL = L - var/attempt = null - var/success = 0 - while(tempL.len) - attempt = pick(tempL) - success = target.Move(attempt) - if(!success) - tempL.Remove(attempt) - else - break - - if(!success) - target.loc = pick(L) - - return - -/obj/effect/proc_holder/spell/targeted/area_teleport/invocation(area/chosenarea = null) - if(!invocation_area || !chosenarea) - ..() - else - switch(invocation_type) - if("shout") - usr.say("[invocation] [uppertext(chosenarea.name)]") - if(usr.gender==MALE) - playsound(usr.loc, pick('sound/misc/null.ogg','sound/misc/null.ogg'), 100, 1) - else - playsound(usr.loc, pick('sound/misc/null.ogg','sound/misc/null.ogg'), 100, 1) - if("whisper") - usr.whisper("[invocation] [uppertext(chosenarea.name)]") - - return \ No newline at end of file diff --git a/code/modules/spells/artifacts.dm b/code/modules/spells/artifacts.dm new file mode 100644 index 00000000000..0a96b6aa2ea --- /dev/null +++ b/code/modules/spells/artifacts.dm @@ -0,0 +1,19 @@ +//////////////////////Scrying orb////////////////////// + +/obj/item/weapon/scrying + name = "scrying orb" + desc = "An incandescent orb of otherworldly energy, staring into it gives you vision beyond mortal means." + icon = 'icons/obj/projectiles.dmi' + icon_state = "bluespace" + throw_speed = 3 + throw_range = 7 + throwforce = 10 + damtype = BURN + force = 10 + hitsound = 'sound/items/welder2.ogg' + +/obj/item/weapon/scrying/attack_self(mob/user as mob) + user << "You can see... everything!" + visible_message("[usr] stares into [src], their eyes glazing over.") + announce_ghost_joinleave(user.ghostize(1), 1, "You feel that they used a powerful artifact to [pick("invade","disturb","disrupt","infest","taint","spoil","blight")] this place with their presence.") + return diff --git a/code/modules/spells/conjure.dm b/code/modules/spells/conjure.dm deleted file mode 100644 index 2034bf931fe..00000000000 --- a/code/modules/spells/conjure.dm +++ /dev/null @@ -1,87 +0,0 @@ -/obj/effect/proc_holder/spell/aoe_turf/conjure - name = "Conjure" - desc = "This spell conjures objs of the specified types in range." - - var/list/summon_type = list() //determines what exactly will be summoned - //should be text, like list("/obj/machinery/bot/ed209") - - var/summon_lifespan = 0 // 0=permanent, any other time in deciseconds - var/summon_amt = 1 //amount of objects summoned - var/summon_ignore_density = 0 //if set to 1, adds dense tiles to possible spawn places - var/summon_ignore_prev_spawn_points = 0 //if set to 1, each new object is summoned on a new spawn point - - var/list/newVars = list() //vars of the summoned objects will be replaced with those where they meet - //should have format of list("emagged" = 1,"name" = "Wizard's Justicebot"), for example - var/delay = 1//Go Go Gadget Inheritance - -/obj/effect/proc_holder/spell/aoe_turf/conjure/cast(list/targets) - - for(var/turf/T in targets) - if(T.density && !summon_ignore_density) - targets -= T - playsound(src.loc, 'sound/items/welder.ogg', 50, 1) - - if(do_after(usr,delay)) - for(var/i=0,iSome strange aura is blocking the way!" - src.canmove = 0 - spawn(2) src.canmove = 1 - -/obj/effect/dummy/spell_jaunt/ex_act(blah) - return -/obj/effect/dummy/spell_jaunt/bullet_act(blah) - return \ No newline at end of file diff --git a/code/modules/spells/explosion.dm b/code/modules/spells/explosion.dm deleted file mode 100644 index b93667ab477..00000000000 --- a/code/modules/spells/explosion.dm +++ /dev/null @@ -1,15 +0,0 @@ -/obj/effect/proc_holder/spell/targeted/explosion - name = "Explosion" - desc = "This spell explodes an area." - - var/ex_severe = 1 - var/ex_heavy = 2 - var/ex_light = 3 - var/ex_flash = 4 - -/obj/effect/proc_holder/spell/targeted/explosion/cast(list/targets) - - for(var/mob/living/target in targets) - explosion(target.loc,ex_severe,ex_heavy,ex_light,ex_flash) - - return \ No newline at end of file diff --git a/code/modules/spells/general/area_teleport.dm b/code/modules/spells/general/area_teleport.dm new file mode 100644 index 00000000000..77e1ee47c43 --- /dev/null +++ b/code/modules/spells/general/area_teleport.dm @@ -0,0 +1,85 @@ +/spell/area_teleport + name = "Teleport" + desc = "This spell teleports you to a type of area of your selection." + + school = "abjuration" + charge_max = 600 + spell_flags = NEEDSCLOTHES + invocation = "SCYAR NILA" + invocation_type = SpI_SHOUT + cooldown_min = 200 //100 deciseconds reduction per rank + + smoke_spread = 1 + smoke_amt = 5 + + var/randomise_selection = 0 //if it lets the usr choose the teleport loc or picks it from the list + var/invocation_area = 1 //if the invocation appends the selected area + + cast_sound = 'sound/effects/teleport.ogg' + + hud_state = "wiz_tele" + +/spell/area_teleport/before_cast() + return + +/spell/area_teleport/choose_targets() + var/A = null + + if(!randomise_selection) + A = input("Area to teleport to", "Teleport", A) in teleportlocs + else + A = pick(teleportlocs) + + var/area/thearea = teleportlocs[A] + + return list(thearea) + +/spell/area_teleport/cast(area/thearea, mob/user) + if(!istype(thearea)) + if(istype(thearea, /list)) + thearea = thearea[1] + var/list/L = list() + for(var/turf/T in get_area_turfs(thearea.type)) + if(!T.density) + var/clear = 1 + for(var/obj/O in T) + if(O.density) + clear = 0 + break + if(clear) + L+=T + + if(!L.len) + user <<"The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry." + return + + if(user && user.buckled) + user.buckled = null + + var/attempt = null + var/success = 0 + while(L.len) + attempt = pick(L) + success = user.Move(attempt) + if(!success) + L.Remove(attempt) + else + break + + if(!success) + user.loc = pick(L) + + return + +/spell/area_teleport/after_cast() + return + +/spell/area_teleport/invocation(mob/user, area/chosenarea) + if(!istype(chosenarea)) + return //can't have that, can we + if(!invocation_area || !chosenarea) + ..() + else + invocation += "[uppertext(chosenarea.name)]" + ..() + return \ No newline at end of file diff --git a/code/modules/spells/general/rune_write.dm b/code/modules/spells/general/rune_write.dm new file mode 100644 index 00000000000..c110a76ac14 --- /dev/null +++ b/code/modules/spells/general/rune_write.dm @@ -0,0 +1,175 @@ +/spell/rune_write + name = "Scribe a Rune" + desc = "Let's you instantly manifest a working rune." + + school = "evocation" + charge_max = 100 + charge_type = Sp_RECHARGE + invocation_type = SpI_NONE + + spell_flags = CONSTRUCT_CHECK + + hud_state = "const_rune" + + smoke_amt = 1 + +/spell/rune_write/choose_targets(mob/user = usr) + return list(user) + +/spell/rune_write/cast(null, mob/user = usr) + if(!cultwords["travel"]) + runerandom() + var/list/runes = list("Teleport", "Teleport Other", "Spawn a Tome", "Change Construct Type", "Convert", "EMP", "Drain Blood", "See Invisible", "Resurrect", "Hide Runes", "Reveal Runes", "Astral Journey", "Manifest a Ghost", "Imbue Talisman", "Sacrifice", "Wall", "Free Cultist", "Summon Cultist", "Deafen", "Blind", "BloodBoil", "Communicate", "Stun") + var/r = input(user, "Choose a rune to scribe", "Rune Scribing") in runes //not cancellable. + var/obj/effect/rune/R = new /obj/effect/rune(user.loc) + if(istype(user.loc,/turf)) + var/area/A = get_area(user) + log_and_message_admins("created \an [r] rune at \the [A.name] - [user.loc.x]-[user.loc.y]-[user.loc.z].", user) + switch(r) + if("Teleport") + if(cast_check(1)) + var/beacon + if(user) + beacon = input(user, "Select the last rune", "Rune Scribing") in rnwords + R.word1=cultwords["travel"] + R.word2=cultwords["self"] + R.word3=beacon + R.check_icon() + if("Teleport Other") + if(cast_check(1)) + var/beacon + if(user) + beacon = input(user, "Select the last rune", "Rune Scribing") in rnwords + R.word1=cultwords["travel"] + R.word2=cultwords["other"] + R.word3=beacon + R.check_icon() + if("Spawn a Tome") + if(cast_check(1)) + R.word1=cultwords["see"] + R.word2=cultwords["blood"] + R.word3=cultwords["hell"] + R.check_icon() + if("Change Construct Type") + if(cast_check(1)) + R.word1=cultwords["hell"] + R.word2=cultwords["destroy"] + R.word3=cultwords["other"] + R.check_icon() + if("Convert") + if(cast_check(1)) + R.word1=cultwords["join"] + R.word2=cultwords["blood"] + R.word3=cultwords["self"] + R.check_icon() + if("EMP") + if(cast_check(1)) + R.word1=cultwords["destroy"] + R.word2=cultwords["see"] + R.word3=cultwords["technology"] + R.check_icon() + if("Drain Blood") + if(cast_check(1)) + R.word1=cultwords["travel"] + R.word2=cultwords["blood"] + R.word3=cultwords["self"] + R.check_icon() + if("See Invisible") + if(cast_check(1)) + R.word1=cultwords["see"] + R.word2=cultwords["hell"] + R.word3=cultwords["join"] + R.check_icon() + if("Resurrect") + if(cast_check(1)) + R.word1=cultwords["blood"] + R.word2=cultwords["join"] + R.word3=cultwords["hell"] + R.check_icon() + if("Hide Runes") + if(cast_check(1)) + R.word1=cultwords["hide"] + R.word2=cultwords["see"] + R.word3=cultwords["blood"] + R.check_icon() + if("Astral Journey") + if(cast_check(1)) + R.word1=cultwords["hell"] + R.word2=cultwords["travel"] + R.word3=cultwords["self"] + R.check_icon() + if("Manifest a Ghost") + if(cast_check(1)) + R.word1=cultwords["blood"] + R.word2=cultwords["see"] + R.word3=cultwords["travel"] + R.check_icon() + if("Imbue Talisman") + if(cast_check(1)) + R.word1=cultwords["hell"] + R.word2=cultwords["technology"] + R.word3=cultwords["join"] + R.check_icon() + if("Sacrifice") + if(cast_check(1)) + R.word1=cultwords["hell"] + R.word2=cultwords["blood"] + R.word3=cultwords["join"] + R.check_icon() + if("Reveal Runes") + if(cast_check(1)) + R.word1=cultwords["blood"] + R.word2=cultwords["see"] + R.word3=cultwords["hide"] + R.check_icon() + if("Wall") + if(cast_check(1)) + R.word1=cultwords["destroy"] + R.word2=cultwords["travel"] + R.word3=cultwords["self"] + R.check_icon() + if("Freedom") + if(cast_check(1)) + R.word1=cultwords["travel"] + R.word2=cultwords["technology"] + R.word3=cultwords["other"] + R.check_icon() + if("Cultsummon") + if(cast_check(1)) + R.word1=cultwords["join"] + R.word2=cultwords["other"] + R.word3=cultwords["self"] + R.check_icon() + if("Deafen") + if(cast_check(1)) + R.word1=cultwords["hide"] + R.word2=cultwords["other"] + R.word3=cultwords["see"] + R.check_icon() + if("Blind") + if(cast_check(1)) + R.word1=cultwords["destroy"] + R.word2=cultwords["see"] + R.word3=cultwords["other"] + R.check_icon() + if("BloodBoil") + if(cast_check(1)) + R.word1=cultwords["destroy"] + R.word2=cultwords["see"] + R.word3=cultwords["blood"] + R.check_icon() + if("Communicate") + if(cast_check(1)) + R.word1=cultwords["self"] + R.word2=cultwords["other"] + R.word3=cultwords["technology"] + R.check_icon() + if("Stun") + if(cast_check(1)) + R.word1=cultwords["join"] + R.word2=cultwords["hide"] + R.word3=cultwords["technology"] + R.check_icon() + else + user << " You do not have enough space to write a proper rune." + return diff --git a/code/modules/spells/genetic.dm b/code/modules/spells/genetic.dm deleted file mode 100644 index bcb7d042807..00000000000 --- a/code/modules/spells/genetic.dm +++ /dev/null @@ -1,31 +0,0 @@ -/obj/effect/proc_holder/spell/targeted/genetic - name = "Genetic" - desc = "This spell inflicts a set of mutations and disabilities upon the target." - - var/disabilities = 0 //bits - var/list/mutations = list() //mutation strings - var/duration = 100 //deciseconds - /* - Disabilities - 1st bit - ? - 2nd bit - ? - 3rd bit - ? - 4th bit - ? - 5th bit - ? - 6th bit - ? - */ - -/obj/effect/proc_holder/spell/targeted/genetic/cast(list/targets) - - for(var/mob/living/target in targets) - for(var/x in mutations) - target.mutations.Add(x) - target.disabilities |= disabilities - target.update_mutations() //update target's mutation overlays - spawn(duration) - for(var/x in mutations) - target.mutations.Remove(x) - target.disabilities &= ~disabilities - target.update_mutations() - - return \ No newline at end of file diff --git a/code/modules/spells/horsemask.dm b/code/modules/spells/horsemask.dm deleted file mode 100644 index 32e362f3468..00000000000 --- a/code/modules/spells/horsemask.dm +++ /dev/null @@ -1,50 +0,0 @@ -/obj/effect/proc_holder/spell/targeted/horsemask - name = "Curse of the Horseman" - desc = "This spell triggers a curse on a target, causing them to wield an unremovable horse head mask. They will speak like a horse! Any masks they are wearing will be disintegrated. This spell does not require robes." - school = "transmutation" - charge_type = "recharge" - charge_max = 150 - charge_counter = 0 - clothes_req = 0 - stat_allowed = 0 - invocation = "KN'A FTAGHU, PUCK 'BTHNK!" - invocation_type = "shout" - range = 7 - selection_type = "range" - var/list/compatible_mobs = list(/mob/living/carbon/human) - -/obj/effect/proc_holder/spell/targeted/horsemask/cast(list/targets, mob/user = usr) - if(!targets.len) - user << "No target found in range." - return - - var/mob/living/carbon/target = targets[1] - - if(!(target.type in compatible_mobs)) - user << "It'd be stupid to curse [target] with a horse's head!" - return - - if(!(target in oview(range)))//If they are not in overview after selection. - user << "They are too far away!" - return - - var/obj/item/clothing/mask/horsehead/magic/magichead = new /obj/item/clothing/mask/horsehead/magic - target.visible_message( "[target]'s face lights up in fire, and after the event a horse's head takes its place!", \ - "Your face burns up, and shortly after the fire you realise you have the face of a horse!") - target.equip_to_slot(magichead, slot_wear_mask) - - flick("e_flash", target.flash) - -//item used by the horsehead spell -/obj/item/clothing/mask/horsehead/magic - //flags_inv = null //so you can still see their face... no. How can you recognize someone when their face is completely different? - voicechange = 1 //NEEEEIIGHH - - dropped(mob/user as mob) - canremove = 1 - ..() - - equipped(var/mob/user, var/slot) - if (slot == slot_wear_mask) - canremove = 0 //curses! - ..() diff --git a/code/modules/spells/inflict_handler.dm b/code/modules/spells/inflict_handler.dm deleted file mode 100644 index 34b810d3093..00000000000 --- a/code/modules/spells/inflict_handler.dm +++ /dev/null @@ -1,59 +0,0 @@ -/obj/effect/proc_holder/spell/targeted/inflict_handler - name = "Inflict Handler" - desc = "This spell blinds and/or destroys/damages/heals and/or weakens/stuns the target." - - var/amt_weakened = 0 - var/amt_paralysis = 0 - var/amt_stunned = 0 - - //set to negatives for healing - var/amt_dam_fire = 0 - var/amt_dam_brute = 0 - var/amt_dam_oxy = 0 - var/amt_dam_tox = 0 - - var/amt_eye_blind = 0 - var/amt_eye_blurry = 0 - - var/destroys = "none" //can be "none", "gib" or "disintegrate" - -/obj/effect/proc_holder/spell/targeted/inflict_handler/cast(list/targets) - - for(var/mob/living/target in targets) - switch(destroys) - if("gib") - target.gib() - if("gib_brain") - if(ishuman(target) || issmall(target)) - var/mob/living/carbon/C = target - if(!C.has_brain()) // Their brain is already taken out - var/obj/item/organ/brain/B = new(C.loc) - B.transfer_identity(C) - target.gib() - if("disintegrate") - target.dust() - - if(!target) - continue - //damage - if(amt_dam_brute > 0) - if(amt_dam_fire >= 0) - target.take_overall_damage(amt_dam_brute,amt_dam_fire) - else if (amt_dam_fire < 0) - target.take_overall_damage(amt_dam_brute,0) - target.heal_overall_damage(0,amt_dam_fire) - else if(amt_dam_brute < 0) - if(amt_dam_fire > 0) - target.take_overall_damage(0,amt_dam_fire) - target.heal_overall_damage(amt_dam_brute,0) - else if (amt_dam_fire <= 0) - target.heal_overall_damage(amt_dam_brute,amt_dam_fire) - target.adjustToxLoss(amt_dam_tox) - target.oxyloss += amt_dam_oxy - //disabling - target.Weaken(amt_weakened) - target.Paralyse(amt_paralysis) - target.Stun(amt_stunned) - - target.eye_blind += amt_eye_blind - target.eye_blurry += amt_eye_blurry \ No newline at end of file diff --git a/code/modules/spells/knock.dm b/code/modules/spells/knock.dm deleted file mode 100644 index 9ebf6649420..00000000000 --- a/code/modules/spells/knock.dm +++ /dev/null @@ -1,20 +0,0 @@ -/obj/effect/proc_holder/spell/aoe_turf/knock - name = "Knock" - desc = "This spell opens nearby doors and does not require wizard garb." - - school = "transmutation" - charge_max = 100 - clothes_req = 0 - invocation = "AULIE OXIN FIERA" - invocation_type = "whisper" - range = 3 - -/obj/effect/proc_holder/spell/aoe_turf/knock/cast(list/targets) - for(var/turf/T in targets) - for(var/obj/machinery/door/door in T.contents) - spawn(1) - if(istype(door,/obj/machinery/door/airlock)) - var/obj/machinery/door/airlock/A = door - A.unlock(1) //forced because it's magic! - door.open() - return diff --git a/code/modules/spells/mind_transfer.dm b/code/modules/spells/mind_transfer.dm deleted file mode 100644 index a4f8258ff75..00000000000 --- a/code/modules/spells/mind_transfer.dm +++ /dev/null @@ -1,116 +0,0 @@ -/obj/effect/proc_holder/spell/targeted/mind_transfer - name = "Mind Transfer" - desc = "This spell allows the user to switch bodies with a target." - - school = "transmutation" - charge_max = 600 - clothes_req = 0 - invocation = "GIN'YU CAPAN" - invocation_type = "whisper" - range = 1 - var/list/protected_roles = list("Wizard","Changeling","Cultist") //which roles are immune to the spell - var/list/compatible_mobs = list(/mob/living/carbon/human) //which types of mobs are affected by the spell. NOTE: change at your own risk - var/base_spell_loss_chance = 20 //base probability of the wizard losing a spell in the process - var/spell_loss_chance_modifier = 7 //amount of probability of losing a spell added per spell (mind_transfer included) - var/spell_loss_amount = 1 //the maximum amount of spells possible to lose during a single transfer - var/msg_wait = 500 //how long in deciseconds it waits before telling that body doesn't feel right or mind swap robbed of a spell - var/paralysis_amount_caster = 20 //how much the caster is paralysed for after the spell - var/paralysis_amount_victim = 20 //how much the victim is paralysed for after the spell - -/* -Urist: I don't feel like figuring out how you store object spells so I'm leaving this for you to do. -Make sure spells that are removed from spell_list are actually removed and deleted when mind transfering. -Also, you never added distance checking after target is selected. I've went ahead and did that. -*/ -/obj/effect/proc_holder/spell/targeted/mind_transfer/cast(list/targets,mob/user = usr) - if(!targets.len) - user << "No mind found." - return - - if(targets.len > 1) - user << "Too many minds! You're not a hive damnit!"//Whaa...aat? - return - - var/mob/living/target = targets[1] - - if(!(target in oview(range)))//If they are not in overview after selection. Do note that !() is necessary for in to work because ! takes precedence over it. - user << "They are too far away!" - return - - if(!(target.type in compatible_mobs)) - user << "Their mind isn't compatible with yours." - return - - if(target.stat == DEAD) - user << "You didn't study necromancy back at the Space Wizard Federation academy." - return - - if(!target.key || !target.mind) - user << "They appear to be catatonic. Not even magic can affect their vacant mind." - return - - if(target.mind.special_role in protected_roles) - user << "Their mind is resisting your spell." - return - - var/mob/living/victim = target//The target of the spell whos body will be transferred to. - var/mob/caster = user//The wizard/whomever doing the body transferring. - - //SPELL LOSS BEGIN - admin_attack_log(caster, victim, "Used mind transfer on", "Had mind transfer used on him by", "used mind transfer on") - - //NOTE: The caster must ALWAYS keep mind transfer, even when other spells are lost. - var/obj/effect/proc_holder/spell/targeted/mind_transfer/m_transfer = locate() in user.spell_list//Find mind transfer directly. - var/list/checked_spells = user.spell_list - checked_spells -= m_transfer //Remove Mind Transfer from the list. - - if(caster.spell_list.len)//If they have any spells left over after mind transfer is taken out. If they don't, we don't need this. - for(var/i=spell_loss_amount,(i>0&&checked_spells.len),i--)//While spell loss amount is greater than zero and checked_spells has spells in it, run this proc. - for(var/j=checked_spells.len,(j>0&&checked_spells.len),j--)//While the spell list to check is greater than zero and has spells in it, run this proc. - if(prob(base_spell_loss_chance)) - checked_spells -= pick(checked_spells)//Pick a random spell to remove. - spawn(msg_wait) - victim << "The mind transfer has robbed you of a spell." - break//Spell lost. Break loop, going back to the previous for() statement. - else//Or keep checking, adding spell chance modifier to increase chance of losing a spell. - base_spell_loss_chance += spell_loss_chance_modifier - - checked_spells += m_transfer//Add back Mind Transfer. - user.spell_list = checked_spells//Set user spell list to whatever the new list is. - //SPELL LOSS END - - //MIND TRANSFER BEGIN - if(caster.mind.special_verbs.len)//If the caster had any special verbs, remove them from the mob verb list. - for(var/V in caster.mind.special_verbs)//Since the caster is using an object spell system, this is mostly moot. - caster.verbs -= V//But a safety nontheless. - - if(victim.mind.special_verbs.len)//Now remove all of the victim's verbs. - for(var/V in victim.mind.special_verbs) - victim.verbs -= V - - var/mob/dead/observer/ghost = victim.ghostize(0) - ghost.spell_list = victim.spell_list//If they have spells, transfer them. Now we basically have a backup mob. - - caster.mind.transfer_to(victim) - victim.spell_list = caster.spell_list//Now they are inside the victim's body. - - if(victim.mind.special_verbs.len)//To add all the special verbs for the original caster. - for(var/V in caster.mind.special_verbs)//Not too important but could come into play. - caster.verbs += V - - ghost.mind.transfer_to(caster) - caster.key = ghost.key //have to transfer the key since the mind was not active - caster.spell_list = ghost.spell_list - - if(caster.mind.special_verbs.len)//If they had any special verbs, we add them here. - for(var/V in caster.mind.special_verbs) - caster.verbs += V - //MIND TRANSFER END - - //Here we paralyze both mobs and knock them out for a time. - caster.Paralyse(paralysis_amount_caster) - victim.Paralyse(paralysis_amount_victim) - - //After a certain amount of time the victim gets a message about being in a different body. - spawn(msg_wait) - caster << "\red You feel woozy and lightheaded. Your body doesn't seem like your own." diff --git a/code/modules/spells/no_clothes.dm b/code/modules/spells/no_clothes.dm new file mode 100644 index 00000000000..782fe1909fe --- /dev/null +++ b/code/modules/spells/no_clothes.dm @@ -0,0 +1,5 @@ +/spell/noclothes + name = "No Clothes" + desc = "This is a placeholder for knowing if you dont need clothes for any spell." + + spell_flags = NO_BUTTON \ No newline at end of file diff --git a/code/modules/spells/projectile.dm b/code/modules/spells/projectile.dm deleted file mode 100644 index 24c79a0a1c8..00000000000 --- a/code/modules/spells/projectile.dm +++ /dev/null @@ -1,83 +0,0 @@ -/obj/effect/proc_holder/spell/targeted/projectile - name = "Projectile" - desc = "This spell summons projectiles which try to hit the targets." - - var/proj_icon = 'icons/obj/projectiles.dmi' - var/proj_icon_state = "spell" - var/proj_name = "a spell projectile" - - var/proj_trail = 0 //if it leaves a trail - var/proj_trail_lifespan = 0 //deciseconds - var/proj_trail_icon = 'icons/obj/wizard.dmi' - var/proj_trail_icon_state = "trail" - - var/proj_type = "/obj/effect/proc_holder/spell/targeted" //IMPORTANT use only subtypes of this - - var/proj_lingering = 0 //if it lingers or disappears upon hitting an obstacle - var/proj_homing = 1 //if it follows the target - var/proj_insubstantial = 0 //if it can pass through dense objects or not - var/proj_trigger_range = 0 //the range from target at which the projectile triggers cast(target) - - var/proj_lifespan = 15 //in deciseconds * proj_step_delay - var/proj_step_delay = 1 //lower = faster - -/obj/effect/proc_holder/spell/targeted/projectile/cast(list/targets, mob/user = usr) - - for(var/mob/living/target in targets) - spawn(0) - var/obj/effect/proc_holder/spell/targeted/projectile - if(istext(proj_type)) - var/projectile_type = text2path(proj_type) - projectile = new projectile_type(user) - if(istype(proj_type,/obj/effect/proc_holder/spell)) - projectile = new /obj/effect/proc_holder/spell/targeted/trigger(user) - projectile:linked_spells += proj_type - projectile.icon = proj_icon - projectile.icon_state = proj_icon_state - projectile.set_dir(get_dir(target,projectile)) - projectile.name = proj_name - - var/current_loc = usr.loc - - projectile.loc = current_loc - - for(var/i = 0,i < proj_lifespan,i++) - if(!projectile) - break - - if(proj_homing) - if(proj_insubstantial) - projectile.set_dir(get_dir(projectile,target)) - projectile.loc = get_step_to(projectile,target) - else - step_to(projectile,target) - else - if(proj_insubstantial) - projectile.loc = get_step(projectile,dir) - else - step(projectile,dir) - - if(!proj_lingering && projectile.loc == current_loc) //if it didn't move since last time - del(projectile) - break - - if(proj_trail && projectile) - spawn(0) - if(projectile) - var/obj/effect/overlay/trail = new /obj/effect/overlay(projectile.loc) - trail.icon = proj_trail_icon - trail.icon_state = proj_trail_icon_state - trail.density = 0 - spawn(proj_trail_lifespan) - del(trail) - - if(projectile.loc in range(target.loc,proj_trigger_range)) - projectile.perform(list(target)) - break - - current_loc = projectile.loc - - sleep(proj_step_delay) - - if(projectile) - del(projectile) \ No newline at end of file diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm deleted file mode 100644 index 2ae347ee4ae..00000000000 --- a/code/modules/spells/spell.dm +++ /dev/null @@ -1,302 +0,0 @@ -/client/proc/give_spell(mob/T as mob in mob_list) // -- Urist - set category = "Fun" - set name = "Give Spell" - set desc = "Gives a spell to a mob." - var/list/spell_names = list() - for(var/v in spells) - // "/obj/effect/proc_holder/spell/" 30 symbols ~Intercross21 - spell_names.Add(copytext("[v]", 31, 0)) - var/S = input("Choose the spell to give to that guy", "ABRAKADABRA") as null|anything in spell_names - if(!S) return - var/path = text2path("/obj/effect/proc_holder/spell/[S]") - T.spell_list += new path - feedback_add_details("admin_verb","GS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - log_admin("[key_name(usr)] gave [key_name(T)] the spell [S].") - message_admins("\blue [key_name_admin(usr)] gave [key_name(T)] the spell [S].", 1) - -/obj/effect/proc_holder - var/panel = "Debug"//What panel the proc holder needs to go on. - -var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin verb for now - -/obj/effect/proc_holder/spell - name = "Spell" - desc = "A wizard spell" - density = 0 - opacity = 0 - - var/school = "evocation" //not relevant at now, but may be important later if there are changes to how spells work. the ones I used for now will probably be changed... maybe spell presets? lacking flexibility but with some other benefit? - - var/charge_type = "recharge" //can be recharge or charges, see charge_max and charge_counter descriptions; can also be based on the holder's vars now, use "holder_var" for that - - var/charge_max = 100 //recharge time in deciseconds if charge_type = "recharge" or starting charges if charge_type = "charges" - var/charge_counter = 0 //can only cast spells if it equals recharge, ++ each decisecond if charge_type = "recharge" or -- each cast if charge_type = "charges" - - var/holder_var_type = "bruteloss" //only used if charge_type equals to "holder_var" - var/holder_var_amount = 20 //same. The amount adjusted with the mob's var when the spell is used - - var/clothes_req = 1 //see if it requires clothes - var/stat_allowed = 0 //see if it requires being conscious/alive, need to set to 1 for ghostpells - var/invocation = "HURP DURP" //what is uttered when the wizard casts the spell - var/invocation_type = "none" //can be none, whisper and shout - var/range = 7 //the range of the spell; outer radius for aoe spells - var/message = "" //whatever it says to the guy affected by it - var/selection_type = "view" //can be "range" or "view" - - var/overlay = 0 - var/overlay_icon = 'icons/obj/wizard.dmi' - var/overlay_icon_state = "spell" - var/overlay_lifespan = 0 - - var/sparks_spread = 0 - var/sparks_amt = 0 //cropped at 10 - var/smoke_spread = 0 //1 - harmless, 2 - harmful - var/smoke_amt = 0 //cropped at 10 - - var/critfailchance = 0 - var/centcomm_cancast = 1 //Whether or not the spell should be allowed on z2 - -/obj/effect/proc_holder/spell/proc/cast_check(skipcharge = 0,mob/user = usr) //checks if the spell can be cast based on its settings; skipcharge is used when an additional cast_check is called inside the spell - - if(!(src in usr.spell_list)) - usr << "\red You shouldn't have this spell! Something's wrong." - return 0 - - if(usr.z == 2 && !centcomm_cancast) //Certain spells are not allowed on the centcomm zlevel - return 0 - - if(!skipcharge) - switch(charge_type) - if("recharge") - if(charge_counter < charge_max) - usr << "[name] is still recharging." - return 0 - if("charges") - if(!charge_counter) - usr << "[name] has no charges left." - return 0 - - if(usr.stat && !stat_allowed) - usr << "Not when you're incapacitated." - return 0 - - if(ishuman(usr) || issmall(usr)) - if(istype(usr.wear_mask, /obj/item/clothing/mask/muzzle)) - usr << "Mmmf mrrfff!" - return 0 - - if(clothes_req) //clothes check - if(!istype(usr, /mob/living/carbon/human)) - usr << "You aren't a human, Why are you trying to cast a human spell, silly non-human? Casting human spells is for humans." - return 0 - if(!istype(usr:wear_suit, /obj/item/clothing/suit/wizrobe) && !istype(user:wear_suit, /obj/item/clothing/suit/space/void/wizard)) - usr << "I don't feel strong enough without my robe." - return 0 - if(!istype(usr:shoes, /obj/item/clothing/shoes/sandal)) - usr << "I don't feel strong enough without my sandals." - return 0 - if(!istype(usr:head, /obj/item/clothing/head/wizard) && !istype(user:head, /obj/item/clothing/head/helmet/space/void/wizard)) - usr << "I don't feel strong enough without my hat." - return 0 - - if(!skipcharge) - switch(charge_type) - if("recharge") - charge_counter = 0 //doesn't start recharging until the targets selecting ends - if("charges") - charge_counter-- //returns the charge if the targets selecting fails - if("holdervar") - adjust_var(user, holder_var_type, holder_var_amount) - - return 1 - -/obj/effect/proc_holder/spell/proc/invocation(mob/user = usr) //spelling the spell out and setting it on recharge/reducing charges amount - - switch(invocation_type) - if("shout") - if(prob(50))//Auto-mute? Fuck that noise - usr.say(invocation) - else - usr.say(replacetext(invocation," ","`")) - if(usr.gender==MALE) - playsound(usr.loc, pick('sound/misc/null.ogg','sound/misc/null.ogg'), 100, 1) - else - playsound(usr.loc, pick('sound/misc/null.ogg','sound/misc/null.ogg'), 100, 1) - if("whisper") - if(prob(50)) - usr.whisper(invocation) - else - usr.whisper(replacetext(invocation," ","`")) - -/obj/effect/proc_holder/spell/New() - ..() - - charge_counter = charge_max - -/obj/effect/proc_holder/spell/Click() - if(cast_check()) - choose_targets() - return 1 - -/obj/effect/proc_holder/spell/proc/choose_targets(mob/user = usr) //depends on subtype - /targeted or /aoe_turf - return - -/obj/effect/proc_holder/spell/proc/start_recharge() - while(charge_counter < charge_max) - sleep(1) - charge_counter++ - -/obj/effect/proc_holder/spell/proc/perform(list/targets, recharge = 1) //if recharge is started is important for the trigger spells - before_cast(targets) - invocation() - spawn(0) - if(charge_type == "recharge" && recharge) - start_recharge() - if(prob(critfailchance)) - critfail(targets) - else - cast(targets) - after_cast(targets) - -/obj/effect/proc_holder/spell/proc/before_cast(list/targets) - if(overlay) - for(var/atom/target in targets) - var/location - if(istype(target,/mob/living)) - location = target.loc - else if(istype(target,/turf)) - location = target - var/obj/effect/overlay/spell = new /obj/effect/overlay(location) - spell.icon = overlay_icon - spell.icon_state = overlay_icon_state - spell.anchored = 1 - spell.density = 0 - spawn(overlay_lifespan) - del(spell) - -/obj/effect/proc_holder/spell/proc/after_cast(list/targets) - for(var/atom/target in targets) - var/location - if(istype(target,/mob/living)) - location = target.loc - else if(istype(target,/turf)) - location = target - if(istype(target,/mob/living) && message) - target << text("[message]") - if(sparks_spread) - var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() - sparks.set_up(sparks_amt, 0, location) //no idea what the 0 is - sparks.start() - if(smoke_spread) - if(smoke_spread == 1) - var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread() - smoke.set_up(smoke_amt, 0, location) //no idea what the 0 is - smoke.start() - else if(smoke_spread == 2) - var/datum/effect/effect/system/smoke_spread/bad/smoke = new /datum/effect/effect/system/smoke_spread/bad() - smoke.set_up(smoke_amt, 0, location) //no idea what the 0 is - smoke.start() - -/obj/effect/proc_holder/spell/proc/cast(list/targets) - return - -/obj/effect/proc_holder/spell/proc/critfail(list/targets) - return - -/obj/effect/proc_holder/spell/proc/revert_cast(mob/user = usr) //resets recharge or readds a charge - switch(charge_type) - if("recharge") - charge_counter = charge_max - if("charges") - charge_counter++ - if("holdervar") - adjust_var(user, holder_var_type, -holder_var_amount) - - return - -/obj/effect/proc_holder/spell/proc/adjust_var(mob/living/target = usr, type, amount) //handles the adjustment of the var when the spell is used. has some hardcoded types - switch(type) - if("bruteloss") - target.adjustBruteLoss(amount) - if("fireloss") - target.adjustFireLoss(amount) - if("toxloss") - target.adjustToxLoss(amount) - if("oxyloss") - target.adjustOxyLoss(amount) - if("stunned") - target.AdjustStunned(amount) - if("weakened") - target.AdjustWeakened(amount) - if("paralysis") - target.AdjustParalysis(amount) - else - target.vars[type] += amount //I bear no responsibility for the runtimes that'll happen if you try to adjust non-numeric or even non-existant vars - return - -/obj/effect/proc_holder/spell/targeted //can mean aoe for mobs (limited/unlimited number) or one target mob - var/max_targets = 1 //leave 0 for unlimited targets in range, 1 for one selectable target in range, more for limited number of casts (can all target one guy, depends on target_ignore_prev) in range - var/target_ignore_prev = 1 //only important if max_targets > 1, affects if the spell can be cast multiple times at one person from one cast - var/include_user = 0 //if it includes usr in the target list - -/obj/effect/proc_holder/spell/aoe_turf //affects all turfs in view or range (depends) - var/inner_radius = -1 //for all your ring spell needs - -/obj/effect/proc_holder/spell/targeted/choose_targets(mob/user = usr) - var/list/targets = list() - - switch(max_targets) - if(0) //unlimited - for(var/mob/living/target in view_or_range(range, user, selection_type)) - targets += target - if(1) //single target can be picked - if(range < 0) - targets += user - else - var/possible_targets = list() - - for(var/mob/living/M in view_or_range(range, user, selection_type)) - if(!include_user && user == M) - continue - possible_targets += M - - targets += input("Choose the target for the spell.", "Targeting") as mob in possible_targets - else - var/list/possible_targets = list() - for(var/mob/living/target in view_or_range(range, user, selection_type)) - possible_targets += target - for(var/i=1,i<=max_targets,i++) - if(!possible_targets.len) - break - if(target_ignore_prev) - var/target = pick(possible_targets) - possible_targets -= target - targets += target - else - targets += pick(possible_targets) - - if(!include_user && (user in targets)) - targets -= user - - if(!targets.len) //doesn't waste the spell - revert_cast(user) - return - - perform(targets) - - return - -/obj/effect/proc_holder/spell/aoe_turf/choose_targets(mob/user = usr) - var/list/targets = list() - - for(var/turf/target in view_or_range(range,user,selection_type)) - if(!(target in view_or_range(inner_radius,user,selection_type))) - targets += target - - if(!targets.len) //doesn't waste the spell - revert_cast() - return - - perform(targets) - - return \ No newline at end of file diff --git a/code/modules/spells/spell_code.dm b/code/modules/spells/spell_code.dm new file mode 100644 index 00000000000..0a3078507a1 --- /dev/null +++ b/code/modules/spells/spell_code.dm @@ -0,0 +1,341 @@ +var/list/spells = typesof(/spell) //needed for the badmin verb for now + +/spell + name = "Spell" + desc = "A spell" + parent_type = /atom/movable + var/panel = "Spells"//What panel the proc holder needs to go on. + + var/school = "evocation" //not relevant at now, but may be important later if there are changes to how spells work. the ones I used for now will probably be changed... maybe spell presets? lacking flexibility but with some other benefit? + + var/charge_type = Sp_RECHARGE //can be recharge or charges, see charge_max and charge_counter descriptions; can also be based on the holder's vars now, use "holder_var" for that + + var/charge_max = 100 //recharge time in deciseconds if charge_type = Sp_RECHARGE or starting charges if charge_type = Sp_CHARGES + var/charge_counter = 0 //can only cast spells if it equals recharge, ++ each decisecond if charge_type = Sp_RECHARGE or -- each cast if charge_type = Sp_CHARGES + var/still_recharging_msg = "The spell is still recharging." + + var/silenced = 0 //not a binary - the length of time we can't cast this for + + var/holder_var_type = "bruteloss" //only used if charge_type equals to "holder_var" + var/holder_var_amount = 20 //same. The amount adjusted with the mob's var when the spell is used + + var/spell_flags = NEEDSCLOTHES + var/invocation = "HURP DURP" //what is uttered when the wizard casts the spell + var/invocation_type = SpI_NONE //can be none, whisper, shout, and emote + var/range = 7 //the range of the spell; outer radius for aoe spells + var/message = "" //whatever it says to the guy affected by it + var/selection_type = "view" //can be "range" or "view" + var/atom/movable/holder //where the spell is. Normally the user, can be a projectile + + var/duration = 0 //how long the spell lasts + + var/list/spell_levels = list(Sp_SPEED = 0, Sp_POWER = 0) //the current spell levels - total spell levels can be obtained by just adding the two values + var/list/level_max = list(Sp_TOTAL = 4, Sp_SPEED = 4, Sp_POWER = 0) //maximum possible levels in each category. Total does cover both. + var/cooldown_reduc = 0 //If set, defines how much charge_max drops by every speed upgrade + var/delay_reduc = 0 + var/cooldown_min = 0 //minimum possible cooldown for a charging spell + + var/overlay = 0 + var/overlay_icon = 'icons/obj/wizard.dmi' + var/overlay_icon_state = "spell" + var/overlay_lifespan = 0 + + var/sparks_spread = 0 + var/sparks_amt = 0 //cropped at 10 + var/smoke_spread = 0 //1 - harmless, 2 - harmful + var/smoke_amt = 0 //cropped at 10 + + var/critfailchance = 0 + + var/cast_delay = 1 + var/cast_sound = "" + + var/hud_state = "" //name of the icon used in generating the spell hud object + var/override_base = "" + +/////////////////////// +///SETUP AND PROCESS/// +/////////////////////// + +/spell/New() + ..() + + //still_recharging_msg = "[name] is still recharging." + charge_counter = charge_max + +/spell/proc/process() + spawn while(charge_counter < charge_max) + charge_counter++ + sleep(1) + return + +/spell/Click() + ..() + + perform(usr) + +///////////////// +/////CASTING///// +///////////////// + +/spell/proc/choose_targets(mob/user = usr) //depends on subtype - see targeted.dm, aoe_turf.dm, dumbfire.dm, or code in general folder + return + +/spell/proc/perform(mob/user = usr, skipcharge = 0) //if recharge is started is important for the trigger spells + if(!holder) + holder = user //just in case + if(!cast_check(skipcharge, user)) + return + if(cast_delay && !spell_do_after(user, cast_delay)) + return + var/list/targets = choose_targets(user) + if(targets && targets.len) + invocation(user, targets) + take_charge(user, skipcharge) + + before_cast(targets) //applies any overlays and effects + user.attack_log += text("\[[time_stamp()]\] [user.real_name] ([user.ckey]) cast the spell [name].") + if(prob(critfailchance)) + critfail(targets, user) + else + cast(targets, user) + after_cast(targets) //generates the sparks, smoke, target messages etc. + + +/spell/proc/cast(list/targets, mob/user) //the actual meat of the spell + return + +/spell/proc/critfail(list/targets, mob/user) //the wizman has fucked up somehow + return + +/spell/proc/adjust_var(mob/living/target = usr, type, amount) //handles the adjustment of the var when the spell is used. has some hardcoded types + switch(type) + if("bruteloss") + target.adjustBruteLoss(amount) + if("fireloss") + target.adjustFireLoss(amount) + if("toxloss") + target.adjustToxLoss(amount) + if("oxyloss") + target.adjustOxyLoss(amount) + if("stunned") + target.AdjustStunned(amount) + if("weakened") + target.AdjustWeakened(amount) + if("paralysis") + target.AdjustParalysis(amount) + else + target.vars[type] += amount //I bear no responsibility for the runtimes that'll happen if you try to adjust non-numeric or even non-existant vars + return + +/////////////////////////// +/////CASTING WRAPPERS////// +/////////////////////////// + +/spell/proc/before_cast(list/targets) + var/valid_targets[0] + for(var/atom/target in targets) + // Check range again (fixes long-range EI NATH) + if(!(target in view_or_range(range,usr,selection_type))) + continue + + valid_targets += target + + if(overlay) + var/location + if(istype(target,/mob/living)) + location = target.loc + else if(istype(target,/turf)) + location = target + var/obj/effect/overlay/spell = new /obj/effect/overlay(location) + spell.icon = overlay_icon + spell.icon_state = overlay_icon_state + spell.anchored = 1 + spell.density = 0 + spawn(overlay_lifespan) + del(spell) + return valid_targets + +/spell/proc/after_cast(list/targets) + for(var/atom/target in targets) + var/location = get_turf(target) + if(istype(target,/mob/living) && message) + target << text("[message]") + if(sparks_spread) + var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() + sparks.set_up(sparks_amt, 0, location) //no idea what the 0 is + sparks.start() + if(smoke_spread) + if(smoke_spread == 1) + var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread() + smoke.set_up(smoke_amt, 0, location) //no idea what the 0 is + smoke.start() + else if(smoke_spread == 2) + var/datum/effect/effect/system/smoke_spread/bad/smoke = new /datum/effect/effect/system/smoke_spread/bad() + smoke.set_up(smoke_amt, 0, location) //no idea what the 0 is + smoke.start() + +///////////////////// +////CASTING TOOLS//// +///////////////////// +/*Checkers, cost takers, message makers, etc*/ + +/spell/proc/cast_check(skipcharge = 0,mob/user = usr) //checks if the spell can be cast based on its settings; skipcharge is used when an additional cast_check is called inside the spell + + if(!(src in user.spell_list)) + user << "You shouldn't have this spell! Something's wrong." + return 0 + + if(silenced > 0) + return + + if(user.z == 2 && spell_flags & Z2NOCAST) //Certain spells are not allowed on the centcomm zlevel + return 0 + + if(spell_flags & CONSTRUCT_CHECK) + for(var/turf/T in range(holder, 1)) + if(findNullRod(T)) + return 0 + + if(istype(user, /mob/living/simple_animal)) + var/mob/living/simple_animal/SA = user + if(SA.purge) + SA << "The nullrod's power interferes with your own!" + return 0 + + if(!src.check_charge(skipcharge, user)) //sees if we can cast based on charges alone + return 0 + + if(!(spell_flags & GHOSTCAST)) + if(user.stat && !(spell_flags & STATALLOWED)) + usr << "Not when you're incapacitated." + return 0 + + if(ishuman(user) && !(invocation_type in list(SpI_EMOTE, SpI_NONE))) + if(istype(user.wear_mask, /obj/item/clothing/mask/muzzle)) + user << "Mmmf mrrfff!" + return 0 + + var/spell/noclothes/spell = locate() in user.spell_list + if((spell_flags & NEEDSCLOTHES) && !(spell && istype(spell)))//clothes check + if(!user.wearing_wiz_garb()) + return 0 + + return 1 + +/spell/proc/check_charge(var/skipcharge, mob/user) + if(!skipcharge) + switch(charge_type) + if(Sp_RECHARGE) + if(charge_counter < charge_max) + user << still_recharging_msg + return 0 + if(Sp_CHARGES) + if(!charge_counter) + user << "[name] has no charges left." + return 0 + return 1 + +/spell/proc/take_charge(mob/user = user, var/skipcharge) + if(!skipcharge) + switch(charge_type) + if(Sp_RECHARGE) + charge_counter = 0 //doesn't start recharging until the targets selecting ends + src.process() + return 1 + if(Sp_CHARGES) + charge_counter-- //returns the charge if the targets selecting fails + return 1 + if(Sp_HOLDVAR) + adjust_var(user, holder_var_type, holder_var_amount) + return 1 + return 0 + return 1 + +/spell/proc/invocation(mob/user = usr, var/list/targets) //spelling the spell out and setting it on recharge/reducing charges amount + + switch(invocation_type) + if(SpI_SHOUT) + if(prob(50))//Auto-mute? Fuck that noise + user.say(invocation) + else + user.say(replacetext(invocation," ","`")) + if(SpI_WHISPER) + if(prob(50)) + user.whisper(invocation) + else + user.whisper(replacetext(invocation," ","`")) + if(SpI_EMOTE) + user.emote("me", 1, invocation) //the 1 means it's for everyone in view, the me makes it an emote, and the invocation is written accordingly. + +///////////////////// +///UPGRADING PROCS/// +///////////////////// + +/spell/proc/can_improve(var/upgrade_type) + if(level_max[Sp_TOTAL] <= ( spell_levels[Sp_SPEED] + spell_levels[Sp_POWER] )) //too many levels, can't do it + return 0 + + if(upgrade_type && upgrade_type in spell_levels && upgrade_type in level_max) + if(spell_levels[upgrade_type] >= level_max[upgrade_type]) + return 0 + + return 1 + +/spell/proc/empower_spell() + return + +/spell/proc/quicken_spell() + if(!can_improve(Sp_SPEED)) + return 0 + + spell_levels[Sp_SPEED]++ + + if(delay_reduc && cast_delay) + cast_delay = max(0, cast_delay - delay_reduc) + else if(cast_delay) + cast_delay = round( max(0, initial(cast_delay) * ((level_max[Sp_SPEED] - spell_levels[Sp_SPEED]) / level_max[Sp_SPEED] ) ) ) + + if(charge_type == Sp_RECHARGE) + if(cooldown_reduc) + charge_max = max(cooldown_min, charge_max - cooldown_reduc) + else + charge_max = round( max(cooldown_min, initial(charge_max) * ((level_max[Sp_SPEED] - spell_levels[Sp_SPEED]) / level_max[Sp_SPEED] ) ) ) //the fraction of the way you are to max speed levels is the fraction you lose + if(charge_max < charge_counter) + charge_counter = charge_max + + var/temp = "" + name = initial(name) + switch(level_max[Sp_SPEED] - spell_levels[Sp_SPEED]) + if(3) + temp = "You have improved [name] into Efficient [name]." + name = "Efficient [name]" + if(2) + temp = "You have improved [name] into Quickened [name]." + name = "Quickened [name]" + if(1) + temp = "You have improved [name] into Free [name]." + name = "Free [name]" + if(0) + temp = "You have improved [name] into Instant [name]." + name = "Instant [name]" + + return temp + +/spell/proc/spell_do_after(var/mob/user as mob, delay as num, var/numticks = 5) + if(!user || isnull(user)) + return 0 + if(numticks == 0) + return 1 + + var/delayfraction = round(delay/numticks) + var/Location = user.loc + var/originalstat = user.stat + + for(var/i = 0, i= 1 && max_uses >=1) - uses-- - /* - */ - var/list/available_spells = list(magicmissile = "Magic Missile", fireball = "Fireball", disintegrate = "Disintegrate", disabletech = "Disable Tech", smoke = "Smoke", blind = "Blind", mindswap = "Mind Transfer", forcewall = "Forcewall", blink = "Blink", teleport = "Teleport", mutate = "Mutate", etherealjaunt = "Ethereal Jaunt", knock = "Knock", horseman = "Curse of the Horseman", summonguns = "Summon Guns", staffchange = "Staff of Change", mentalfocus = "Mental Focus", soulstone = "Six Soul Stone Shards and the spell Artificer", armor = "Mastercrafted Armor Set", staffanimate = "Staff of Animation") - var/already_knows = 0 - for(var/obj/effect/proc_holder/spell/aspell in H.spell_list) - if(available_spells[href_list["spell_choice"]] == aspell.name) - already_knows = 1 - temp = "You already know that spell." - uses++ - break - /* - */ - if(!already_knows) - switch(href_list["spell_choice"]) - if("magicmissile") - feedback_add_details("wizard_spell_learned","MM") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - H.spell_list += new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile(H) - temp = "This spell fires several, slow moving, magic projectiles at nearby targets. If a projectile hits a target, the target is stunned for some time." - if("fireball") - feedback_add_details("wizard_spell_learned","FB") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - H.spell_list += new /obj/effect/proc_holder/spell/dumbfire/fireball(H) - temp = "This spell fires a fireball in the direction you're facing and does not require wizard garb. Be careful not to fire it at people that are standing next to you." - if("disintegrate") - feedback_add_details("wizard_spell_learned","DG") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - H.spell_list += new /obj/effect/proc_holder/spell/targeted/inflict_handler/disintegrate(H) - temp = "This spell instantly kills somebody adjacent to you with the vilest of magick. It has a long cooldown." - if("disabletech") - feedback_add_details("wizard_spell_learned","DT") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - H.spell_list += new /obj/effect/proc_holder/spell/targeted/emplosion/disable_tech(H) - temp = "This spell releases an EMP from your person disabling most technology within range; computers, doors, prosthetics, etc." - if("smoke") - feedback_add_details("wizard_spell_learned","SM") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - H.spell_list += new /obj/effect/proc_holder/spell/targeted/smoke(H) - temp = "This spell spawns a cloud of vision obscuring smoke at your location and does not require wizard garb." - if("blind") - feedback_add_details("wizard_spell_learned","BD") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - H.spell_list += new /obj/effect/proc_holder/spell/targeted/trigger/blind(H) - temp = "This spell temporarly blinds a single person and does not require wizard garb." - if("mindswap") - feedback_add_details("wizard_spell_learned","MT") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - H.spell_list += new /obj/effect/proc_holder/spell/targeted/mind_transfer(H) - temp = "This spell allows the user to switch bodies with a target. Careful to not lose your memory in the process." - if("forcewall") - feedback_add_details("wizard_spell_learned","FW") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - H.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall(H) - temp = "This spell creates an unbreakable wall that lasts for 30 seconds and does not need wizard garb." - if("blink") - feedback_add_details("wizard_spell_learned","BL") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - H.spell_list += new /obj/effect/proc_holder/spell/targeted/turf_teleport/blink(H) - temp = "This spell randomly teleports you a short distance. Useful for evasion or getting into areas if you have patience." - if("teleport") - feedback_add_details("wizard_spell_learned","TP") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - H.spell_list += new /obj/effect/proc_holder/spell/targeted/area_teleport/teleport(H) - temp = "This spell teleports you to an area of your selection, and creates a cloud of smoke around you upon arrival. Very useful if you are in danger.." - if("mutate") - feedback_add_details("wizard_spell_learned","MU") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - H.spell_list += new /obj/effect/proc_holder/spell/targeted/genetic/mutate(H) - temp = "This spell causes you to turn into a hulk, gaining super strength and the ability to punch down walls! You also gain the ability to fire lasers from your eyes!" - if("etherealjaunt") - feedback_add_details("wizard_spell_learned","EJ") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - H.spell_list += new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt(H) - temp = "This spell creates your ethereal form, temporarily making you invisible and able to pass through walls." - if("knock") - feedback_add_details("wizard_spell_learned","KN") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - H.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/knock(H) - temp = "This spell opens nearby doors and does not require wizard garb." - if("horseman") - feedback_add_details("wizard_spell_learned","HH") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - H.spell_list += new /obj/effect/proc_holder/spell/targeted/horsemask(H) - temp = "This spell will curse a person to wear an unremovable horse mask (it has glue on the inside) and speak like a horse. It does not require a wizard garb. Do note the curse will disintegrate the target's current mask if they are wearing one." - if("summonguns") - feedback_add_details("wizard_spell_learned","SG") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - rightandwrong() - max_uses-- - temp = "Nothing could possibly go wrong with arming a crew of lunatics just itching for an excuse to kill eachother. Just be careful not to get hit in the crossfire!" - if("staffchange") - feedback_add_details("wizard_spell_learned","ST") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - new /obj/item/weapon/gun/energy/staff(get_turf(H)) - temp = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself" - max_uses-- - if("mentalfocus") - feedback_add_details("wizard_spell_learned","MF") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - new /obj/item/weapon/gun/energy/staff/focus(get_turf(H)) - temp = "An artefact that channels the will of the user into destructive bolts of force." - max_uses-- - if("soulstone") - feedback_add_details("wizard_spell_learned","SS") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - new /obj/item/weapon/storage/belt/soulstone/full(get_turf(H)) - H.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/conjure/construct(H) - temp = "Soul Stone Shards are ancient tools capable of capturing and harnessing the spirits of the dead and dying. The spell Artificer allows you to create arcane machines for the captured souls to pilot." - max_uses-- - if("armor") - feedback_add_details("wizard_spell_learned","HS") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - new /obj/item/clothing/shoes/sandal(get_turf(H)) //In case they've lost them. - new /obj/item/clothing/gloves/purple(get_turf(H))//To complete the outfit - new /obj/item/clothing/suit/space/void/wizard(get_turf(H)) - new /obj/item/clothing/head/helmet/space/void/wizard(get_turf(H)) - temp = "An artefact suit of armor that allows you to cast spells while providing more protection against attacks and the void of space." - max_uses-- - if("staffanimation") - feedback_add_details("wizard_spell_learned","SA") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - new /obj/item/weapon/gun/energy/staff/animate(get_turf(H)) - temp = "An artefact that spits bolts of life-force which causes objects which are hit by it to animate and come to life! This magic doesn't affect machines." - max_uses-- - if("scrying") - feedback_add_details("wizard_spell_learned","SO") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - new /obj/item/weapon/scrying(get_turf(H)) - if (!(XRAY in H.mutations)) - H.mutations.Add(XRAY) - H.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS) - H.see_in_dark = 8 - H.see_invisible = SEE_INVISIBLE_LEVEL_TWO - H << "The walls suddenly disappear." - temp = "You have purchased a scrying orb, and gained x-ray vision." - max_uses-- - else - if(href_list["temp"]) - temp = null - attack_self(H) - - return +/obj/item/weapon/spellbook + name = "spell book" + desc = "The legendary book of spells of the wizard." + icon = 'icons/obj/library.dmi' + icon_state ="spellbook" + throw_speed = 1 + throw_range = 5 + w_class = 1.0 + var/uses = 5 + var/temp = null + var/max_uses = 5 + var/op = 1 + +/obj/item/weapon/spellbook/attack_self(mob/user = usr) + if(!user) + return + user.set_machine(src) + var/dat + if(temp) + dat = "[temp]

        Clear" + else + + // AUTOFIXED BY fix_string_idiocy.py + dat = {"The Book of Spells:
        + Spells left to memorize: [uses]
        +
        + Memorize which spell:
        + The number after the spell name is the cooldown time.
        + Magic Missile (10)
        + This spell fires several, slow moving, magic projectiles at nearby targets. If they hit a target, it is paralyzed and takes minor damage.
        + Fireball (10)
        + This spell fires a fireball in the direction you're facing and does not require wizard garb. Be careful not to fire it at people that are standing next to you.
        + Disintegrate (60)
        + This spell instantly kills somebody adjacent to you with the vilest of magick. It has a long cooldown.
        + Disable Technology (60)
        + This spell disables all weapons, cameras and most other technology in range.
        + Smoke (10)
        + This spell spawns a cloud of choking smoke at your location and does not require wizard garb.
        + Blind (30)
        + This spell temporarly blinds a single person and does not require wizard garb.
        + Subjugation (30)
        + This spell temporarily subjugates a target's mind and does not require wizard garb.
        + Mind Transfer (60)
        + This spell allows the user to switch bodies with a target. Careful to not lose your memory in the process.
        + Forcewall (10)
        + This spell creates an unbreakable wall that lasts for 30 seconds and does not need wizard garb.
        + Blink (2)
        + This spell randomly teleports you a short distance. Useful for evasion or getting into areas if you have patience.
        + Teleport (60)
        + This spell teleports you to a type of area of your selection. Very useful if you are in danger, but has a decent cooldown, and is unpredictable.
        + Mutate (60)
        + This spell causes you to turn into a hulk and gain telekinesis for a short while.
        + Ethereal Jaunt (60)
        + This spell creates your ethereal form, temporarily making you invisible and able to pass through walls.
        + Knock (10)
        + This spell opens nearby doors and does not require wizard garb.
        + Curse of the Horseman (15)
        + This spell will curse a person to wear an unremovable horse mask (it has glue on the inside) and speak like a horse. It does not require wizard garb.
        + Flesh to Stone (60)
        + This spell will curse a person to immediately turn into an unmoving statue. The effect will eventually wear off if the statue is not destroyed.
        + Remove Clothes Requirement Warning: this takes away 2 spell choices.
        +
        + Artefacts:
        + Powerful items imbued with eldritch magics. Summoning one will count towards your maximum number of spells.
        + It is recommended that only experienced wizards attempt to wield such artefacts.
        +
        + Staff of Change
        + An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself.
        +
        + Mental Focus
        + An artefact that channels the will of the user into destructive bolts of force.
        +
        + Six Soul Stone Shards and the spell Artificer
        + Soul Stone Shards are ancient tools capable of capturing and harnessing the spirits of the dead and dying. The spell Artificer allows you to create arcane machines for the captured souls to pilot.
        +
        + Mastercrafted Armor Set
        + An artefact suit of armor that allows you to cast spells while providing more protection against attacks and the void of space.
        +
        + Staff of Animation
        + An arcane staff capable of shooting bolts of eldritch energy which cause inanimate objects to come to life. This magic doesn't affect machines.
        +
        + Scrying Orb
        + An incandescent orb of crackling energy, using it will allow you to ghost while alive, allowing you to spy upon the station with ease. In addition, buying it will permanently grant you x-ray vision.
        +
        "} + // END AUTOFIX + if(op) + dat += "Re-memorize Spells
        " + user << browse(dat, "window=radio") + onclose(user, "radio") + return + +/obj/item/weapon/spellbook/Topic(href, href_list) + ..() + var/mob/living/carbon/human/H = usr + + if(H.stat || H.restrained()) + return + if(!istype(H, /mob/living/carbon/human)) + return 1 + + if(H.mind.special_role == "apprentice") + temp = "If you got caught sneaking a peak from your teacher's spellbook, you'd likely be expelled from the Wizard Academy. Better not." + return + + if(loc == H || (in_range(src, H) && istype(loc, /turf))) + H.set_machine(src) + if(href_list["spell_choice"]) + if(href_list["spell_choice"] == "rememorize") + var/area/wizard_station/A = locate() + if(usr in A.contents) + uses = max_uses + H.spellremove() + temp = "All spells have been removed. You may now memorize a new set of spells." + feedback_add_details("wizard_spell_learned","UM") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + else + temp = "You may only re-memorize spells whilst located inside the wizard sanctuary." + else if(uses >= 1 && max_uses >=1) + if(href_list["spell_choice"] == "noclothes") + if(uses < 2) + return + uses-- + /* + */ + var/list/available_spells = list(magicmissile = "Magic Missile", fireball = "Fireball", disintegrate = "Disintegrate", disabletech = "Disable Tech", smoke = "Smoke", blind = "Blind", subjugation = "Subjugation", mindswap = "Mind Transfer", forcewall = "Forcewall", blink = "Blink", teleport = "Teleport", mutate = "Mutate", etherealjaunt = "Ethereal Jaunt", knock = "Knock", horseman = "Curse of the Horseman", staffchange = "Staff of Change", mentalfocus = "Mental Focus", soulstone = "Six Soul Stone Shards and the spell Artificer", armor = "Mastercrafted Armor Set", staffanimate = "Staff of Animation", noclothes = "No Clothes",fleshtostone = "Flesh to Stone") + var/already_knows = 0 + for(var/spell/aspell in H.spell_list) + if(available_spells[href_list["spell_choice"]] == initial(aspell.name)) + already_knows = 1 + if(!aspell.can_improve()) + temp = "This spell cannot be improved further." + uses++ + break + else + if(aspell.can_improve("speed") && aspell.can_improve("power")) + switch(alert(src, "Do you want to upgrade this spell's speed or power?", "Select Upgrade", "Speed", "Power", "Cancel")) + if("Speed") + temp = aspell.quicken_spell() + if("Power") + temp = aspell.empower_spell() + else + uses++ + break + else if (aspell.can_improve("speed")) + temp = aspell.quicken_spell() + else if (aspell.can_improve("power")) + temp = aspell.empower_spell() + /* + */ + if(!already_knows) + switch(href_list["spell_choice"]) + if("noclothes") + feedback_add_details("wizard_spell_learned","NC") + H.add_spell(new/spell/noclothes) + temp = "This teaches you how to use your spells without your magical garb, truely you are the wizardest." + uses-- + if("magicmissile") + feedback_add_details("wizard_spell_learned","MM") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + H.add_spell(new/spell/targeted/projectile/magic_missile) + temp = "You have learned magic missile." + if("fireball") + feedback_add_details("wizard_spell_learned","FB") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + H.add_spell(new/spell/targeted/projectile/dumbfire/fireball) + temp = "You have learned fireball." + if("disintegrate") + feedback_add_details("wizard_spell_learned","DG") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + H.add_spell(new/spell/targeted/disintegrate) + temp = "You have learned disintegrate." + if("disabletech") + feedback_add_details("wizard_spell_learned","DT") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + H.add_spell(new/spell/aoe_turf/disable_tech) + temp = "You have learned disable technology." + if("smoke") + feedback_add_details("wizard_spell_learned","SM") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + H.add_spell(new/spell/aoe_turf/smoke) + temp = "You have learned smoke." + if("blind") + feedback_add_details("wizard_spell_learned","BD") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + H.add_spell(new/spell/targeted/genetic/blind) + temp = "You have learned blind." + if("subjugation") + feedback_add_details("wizard_spell_learned","SJ") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + H.add_spell(new/spell/targeted/subjugation) + temp = "You have learned subjugate." + if("mindswap") + feedback_add_details("wizard_spell_learned","MT") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + H.add_spell(new/spell/targeted/mind_transfer) + temp = "You have learned mindswap." + if("forcewall") + feedback_add_details("wizard_spell_learned","FW") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + H.add_spell(new/spell/aoe_turf/conjure/forcewall) + temp = "You have learned forcewall." + if("blink") + feedback_add_details("wizard_spell_learned","BL") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + H.add_spell(new/spell/aoe_turf/blink) + temp = "You have learned blink." + if("teleport") + feedback_add_details("wizard_spell_learned","TP") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + H.add_spell(new/spell/area_teleport) + temp = "You have learned teleport." + if("mutate") + feedback_add_details("wizard_spell_learned","MU") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + H.add_spell(new/spell/targeted/genetic/mutate) + temp = "You have learned mutate." + if("etherealjaunt") + feedback_add_details("wizard_spell_learned","EJ") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + H.add_spell(new/spell/targeted/ethereal_jaunt) + temp = "You have learned ethereal jaunt." + if("knock") + feedback_add_details("wizard_spell_learned","KN") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + H.add_spell(new/spell/aoe_turf/knock) + temp = "You have learned knock." + if("horseman") + feedback_add_details("wizard_spell_learned","HH") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + H.add_spell(new/spell/targeted/horsemask) + temp = "You have learned curse of the horseman." + if("fleshtostone") + feedback_add_details("wizard_spell_learned","FS") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + H.add_spell(new/spell/targeted/flesh_to_stone) + temp = "You have learned flesh to stone." + if("staffchange") + feedback_add_details("wizard_spell_learned","ST") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + new /obj/item/weapon/gun/energy/staff(get_turf(H)) + temp = "You have purchased a staff of change." + max_uses-- + if("mentalfocus") + feedback_add_details("wizard_spell_learned","MF") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + new /obj/item/weapon/gun/energy/staff/focus(get_turf(H)) + temp = "An artefact that channels the will of the user into destructive bolts of force." + max_uses-- + if("soulstone") + feedback_add_details("wizard_spell_learned","SS") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + new /obj/item/weapon/storage/belt/soulstone/full(get_turf(H)) + H.add_spell(new/spell/aoe_turf/conjure/construct) + temp = "You have purchased a belt full of soulstones and have learned the artificer spell." + max_uses-- + if("armor") + feedback_add_details("wizard_spell_learned","HS") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + new /obj/item/clothing/shoes/sandal(get_turf(H)) //In case they've lost them. + new /obj/item/clothing/gloves/purple(get_turf(H))//To complete the outfit + new /obj/item/clothing/suit/space/void/wizard(get_turf(H)) + new /obj/item/clothing/head/helmet/space/void/wizard(get_turf(H)) + temp = "You have purchased a suit of wizard armor." + max_uses-- + if("staffanimation") + feedback_add_details("wizard_spell_learned","SA") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + new /obj/item/weapon/gun/energy/staff/animate(get_turf(H)) + temp = "You have purchased a staff of animation." + max_uses-- + if("scrying") + feedback_add_details("wizard_spell_learned","SO") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + new /obj/item/weapon/scrying(get_turf(H)) + if (!(XRAY in H.mutations)) + H.mutations.Add(XRAY) + H.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS) + H.see_in_dark = 8 + H.see_invisible = SEE_INVISIBLE_LEVEL_TWO + H << "\blue The walls suddenly disappear." + temp = "You have purchased a scrying orb, and gained x-ray vision." + max_uses-- + else + if(href_list["temp"]) + temp = null + attack_self() + + return + +//Single Use Spellbooks// + +/obj/item/weapon/spellbook/oneuse + var/spell = /spell/targeted/projectile/magic_missile //just a placeholder to avoid runtimes if someone spawned the generic + var/spellname = "sandbox" + var/used = 0 + name = "spellbook of " + uses = 1 + max_uses = 1 + desc = "This template spellbook was never meant for the eyes of man..." + +/obj/item/weapon/spellbook/oneuse/New() + ..() + name += spellname + +/obj/item/weapon/spellbook/oneuse/attack_self(mob/user as mob) + var/spell/S = new spell(user) + for(var/spell/knownspell in user.spell_list) + if(knownspell.type == S.type) + if(user.mind) + if(user.mind.special_role == "apprentice" || user.mind.special_role == "Wizard") + user <<"You're already far more versed in this spell than this flimsy how-to book can provide." + else + user <<"You've already read this one." + return + if(used) + recoil(user) + else + user.add_spell(S) + user <<"you rapidly read through the arcane book. Suddenly you realize you understand [spellname]!" + user.attack_log += text("\[[time_stamp()]\] [user.real_name] ([user.ckey]) learned the spell [spellname] ([S]).") + onlearned(user) + +/obj/item/weapon/spellbook/oneuse/proc/recoil(mob/user as mob) + user.visible_message("[src] glows in a black light!") + +/obj/item/weapon/spellbook/oneuse/proc/onlearned(mob/user as mob) + used = 1 + user.visible_message("[src] glows dark for a second!") + +/obj/item/weapon/spellbook/oneuse/attackby() + return + +/obj/item/weapon/spellbook/oneuse/fireball + spell = /spell/targeted/projectile/dumbfire/fireball + spellname = "fireball" + icon_state ="bookfireball" + desc = "This book feels warm to the touch." + +/obj/item/weapon/spellbook/oneuse/fireball/recoil(mob/user as mob) + ..() + explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2) + qdel(src) + +/obj/item/weapon/spellbook/oneuse/smoke + spell = /spell/aoe_turf/smoke + spellname = "smoke" + icon_state ="booksmoke" + desc = "This book is overflowing with the dank arts." + +/obj/item/weapon/spellbook/oneuse/smoke/recoil(mob/user as mob) + ..() + user <<"Your stomach rumbles..." + if(user.nutrition) + user.nutrition -= 200 + if(user.nutrition <= 0) + user.nutrition = 0 + +/obj/item/weapon/spellbook/oneuse/blind + spell = /spell/targeted/genetic/blind + spellname = "blind" + icon_state ="bookblind" + desc = "This book looks blurry, no matter how you look at it." + +/obj/item/weapon/spellbook/oneuse/blind/recoil(mob/user as mob) + ..() + user <<"You go blind!" + user.eye_blind = 10 + +/obj/item/weapon/spellbook/oneuse/mindswap + spell = /spell/targeted/mind_transfer + spellname = "mindswap" + icon_state ="bookmindswap" + desc = "This book's cover is pristine, though its pages look ragged and torn." + var/mob/stored_swap = null //Used in used book recoils to store an identity for mindswaps + +/obj/item/weapon/spellbook/oneuse/mindswap/onlearned() + spellname = pick("fireball","smoke","blind","forcewall","knock","horses","charge") + icon_state = "book[spellname]" + name = "spellbook of [spellname]" //Note, desc doesn't change by design + ..() + +/obj/item/weapon/spellbook/oneuse/mindswap/recoil(mob/user as mob) + ..() + if(stored_swap in dead_mob_list) + stored_swap = null + if(!stored_swap) + stored_swap = user + user <<"For a moment you feel like you don't even know who you are anymore." + return + if(stored_swap == user) + user <<"You stare at the book some more, but there doesn't seem to be anything else to learn..." + return + + if(user.mind.special_verbs.len) + for(var/V in user.mind.special_verbs) + user.verbs -= V + + if(stored_swap.mind.special_verbs.len) + for(var/V in stored_swap.mind.special_verbs) + stored_swap.verbs -= V + + var/mob/dead/observer/ghost = stored_swap.ghostize(0) + ghost.spell_list = stored_swap.spell_list + + user.mind.transfer_to(stored_swap) + stored_swap.spell_list = user.spell_list + + if(stored_swap.mind.special_verbs.len) + for(var/V in user.mind.special_verbs) + user.verbs += V + + ghost.mind.transfer_to(user) + user.key = ghost.key + user.spell_list = ghost.spell_list + + if(user.mind.special_verbs.len) + for(var/V in user.mind.special_verbs) + user.verbs += V + + stored_swap <<"You're suddenly somewhere else... and someone else?!" + user <<"Suddenly you're staring at [src] again... where are you, who are you?!" + stored_swap = null + +/obj/item/weapon/spellbook/oneuse/forcewall + spell = /spell/aoe_turf/conjure/forcewall + spellname = "forcewall" + icon_state ="bookforcewall" + desc = "This book has a dedication to mimes everywhere inside the front cover." + +/obj/item/weapon/spellbook/oneuse/forcewall/recoil(mob/user as mob) + ..() + user <<"You suddenly feel very solid!" + var/obj/structure/closet/statue/S = new /obj/structure/closet/statue(user.loc, user) + S.timer = 30 + user.drop_item() + + +/obj/item/weapon/spellbook/oneuse/knock + spell = /spell/aoe_turf/knock + spellname = "knock" + icon_state ="bookknock" + desc = "This book is hard to hold closed properly." + +/obj/item/weapon/spellbook/oneuse/knock/recoil(mob/user as mob) + ..() + user <<"You're knocked down!" + user.Weaken(20) + +/obj/item/weapon/spellbook/oneuse/horsemask + spell = /spell/targeted/horsemask + spellname = "horses" + icon_state ="bookhorses" + desc = "This book is more horse than your mind has room for." + +/obj/item/weapon/spellbook/oneuse/horsemask/recoil(mob/living/carbon/user as mob) + if(istype(user, /mob/living/carbon/human)) + user <<"HOR-SIE HAS RISEN" + var/obj/item/clothing/mask/horsehead/magichead = new /obj/item/clothing/mask/horsehead + magichead.canremove = 0 //curses! + magichead.flags_inv = null //so you can still see their face + magichead.voicechange = 1 //NEEEEIIGHH + user.drop_from_inventory(user.wear_mask) + user.equip_to_slot_if_possible(magichead, slot_wear_mask, 1, 1) + qdel(src) + else + user <<"I say thee neigh" + +/obj/item/weapon/spellbook/oneuse/charge + spell = /spell/aoe_turf/charge + spellname = "charging" + icon_state ="bookcharge" + desc = "This book is made of 100% post-consumer wizard." + +/obj/item/weapon/spellbook/oneuse/charge/recoil(mob/user as mob) + ..() + user <<"[src] suddenly feels very warm!" + empulse(src, 1, 1) diff --git a/code/modules/spells/spells.dm b/code/modules/spells/spells.dm new file mode 100644 index 00000000000..d20eea00dc8 --- /dev/null +++ b/code/modules/spells/spells.dm @@ -0,0 +1,64 @@ +/mob/Life() + ..() + if(spell_masters && spell_masters.len) + for(var/obj/screen/movable/spell_master/spell_master in spell_masters) + spell_master.update_spells(0, src) + +/mob/Stat() + ..() + if(spell_list && spell_list.len && statpanel("Spells")) + for(var/spell/S in spell_list) + switch(S.charge_type) + if(Sp_RECHARGE) + statpanel("Spells","[S.charge_counter/10.0]/[S.charge_max/10]",S) + if(Sp_CHARGES) + statpanel("Spells","[S.charge_counter]/[S.charge_max]",S) + if(Sp_HOLDVAR) + statpanel("Spells","[S.holder_var_type] [S.holder_var_amount]",S) + +/mob/proc/add_spell(var/spell/spell_to_add, var/spell_base = "wiz_spell_ready", var/master_type = /obj/screen/movable/spell_master) + if(!spell_masters) + spell_masters = list() + + if(spell_masters.len) + for(var/obj/screen/movable/spell_master/spell_master in spell_masters) + if(spell_master.type == master_type) + spell_list.Add(spell_to_add) + spell_master.add_spell(spell_to_add) + return 1 + + var/obj/screen/movable/spell_master/new_spell_master = new master_type //we're here because either we didn't find our type, or we have no spell masters to attach to + if(client) + src.client.screen += new_spell_master + new_spell_master.spell_holder = src + new_spell_master.add_spell(spell_to_add) + if(spell_base) + new_spell_master.icon_state = spell_base + spell_masters.Add(new_spell_master) + spell_list.Add(spell_to_add) + return 1 + +/mob/proc/remove_spell(var/spell/spell_to_remove) + if(!spell_to_remove || !istype(spell_to_remove)) + return + + if(!(spell_to_remove in spell_list)) + return + + if(!spell_masters || !spell_masters.len) + return + + spell_list.Remove(spell_to_remove) + for(var/obj/screen/movable/spell_master/spell_master in spell_masters) + spell_master.remove_spell(spell_to_remove) + return 1 + +/mob/proc/silence_spells(var/amount = 0) + if(!(amount >= 0)) + return + + if(!spell_masters || !spell_masters.len) + return + + for(var/obj/screen/movable/spell_master/spell_master in spell_masters) + spell_master.silence_spells(amount) diff --git a/code/modules/spells/targeted/disintegrate.dm b/code/modules/spells/targeted/disintegrate.dm new file mode 100644 index 00000000000..c3f0ee80e97 --- /dev/null +++ b/code/modules/spells/targeted/disintegrate.dm @@ -0,0 +1,27 @@ +/spell/targeted/disintegrate + name = "Disintegrate" + desc = "This spell instantly kills somebody adjacent to you with the vilest of magick." + + school = "evocation" + charge_max = 600 + spell_flags = NEEDSCLOTHES + invocation = "EI NATH" + invocation_type = SpI_SHOUT + range = 1 + cooldown_min = 200 //100 deciseconds reduction per rank + + sparks_spread = 1 + sparks_amt = 4 + + hud_state = "wiz_disint" + +/spell/targeted/disintegrate/cast(var/list/targets) + ..() + for(var/mob/living/target in targets) + if(ishuman(target)) + var/mob/living/carbon/C = target + if(!C.has_brain()) // Their brain is already taken out + var/obj/item/organ/brain/B = new(C.loc) + B.transfer_identity(C) + target.gib() + return \ No newline at end of file diff --git a/code/modules/spells/targeted/ethereal_jaunt.dm b/code/modules/spells/targeted/ethereal_jaunt.dm new file mode 100644 index 00000000000..2a0e52cc136 --- /dev/null +++ b/code/modules/spells/targeted/ethereal_jaunt.dm @@ -0,0 +1,98 @@ +/spell/targeted/ethereal_jaunt + name = "Ethereal Jaunt" + desc = "This spell creates your ethereal form, temporarily making you invisible and able to pass through walls." + + school = "transmutation" + charge_max = 300 + spell_flags = Z2NOCAST | NEEDSCLOTHES | INCLUDEUSER + invocation = "none" + invocation_type = SpI_NONE + range = -1 + max_targets = 1 + cooldown_min = 100 //50 deciseconds reduction per rank + duration = 50 //in deciseconds + + hud_state = "wiz_jaunt" + +/spell/targeted/ethereal_jaunt/cast(list/targets) //magnets, so mostly hardcoded + for(var/mob/living/target in targets) + target.monkeyizing = 1 //protects the mob from being transformed (replaced) midjaunt and getting stuck in bluespace + if(target.buckled) target.buckled = null + spawn(0) + var/mobloc = get_turf(target.loc) + var/obj/effect/dummy/spell_jaunt/holder = new /obj/effect/dummy/spell_jaunt( mobloc ) + var/atom/movable/overlay/animation = new /atom/movable/overlay( mobloc ) + animation.name = "water" + animation.density = 0 + animation.anchored = 1 + animation.icon = 'icons/mob/mob.dmi' + animation.layer = 5 + animation.master = holder + target.ExtinguishMob() + if(target.buckled) + target.buckled = null + jaunt_disappear(animation, target) + target.loc = holder + target.monkeyizing=0 //mob is safely inside holder now, no need for protection. + jaunt_steam(mobloc) + sleep(duration) + mobloc = get_turf(target.loc) + animation.loc = mobloc + jaunt_steam(mobloc) + target.canmove = 0 + holder.reappearing = 1 + sleep(20) + jaunt_reappear(animation, target) + sleep(5) + if(!target.forceMove(mobloc)) + for(var/direction in list(1,2,4,8,5,6,9,10)) + var/turf/T = get_step(mobloc, direction) + if(T) + if(target.forceMove(T)) + break + target.canmove = 1 + target.client.eye = target + del(animation) + del(holder) + +/spell/targeted/ethereal_jaunt/proc/jaunt_disappear(var/atom/movable/overlay/animation, var/mob/living/target) + animation.icon_state = "liquify" + flick("liquify",animation) + +/spell/targeted/ethereal_jaunt/proc/jaunt_reappear(var/atom/movable/overlay/animation, var/mob/living/target) + flick("reappear",animation) + +/spell/targeted/ethereal_jaunt/proc/jaunt_steam(var/mobloc) + var/datum/effect/effect/system/steam_spread/steam = new /datum/effect/effect/system/steam_spread() + steam.set_up(10, 0, mobloc) + steam.start() + +/obj/effect/dummy/spell_jaunt + name = "water" + icon = 'icons/effects/effects.dmi' + icon_state = "nothing" + var/canmove = 1 + var/reappearing = 0 + density = 0 + anchored = 1 + +/obj/effect/dummy/spell_jaunt/Destroy() + // Eject contents if deleted somehow + for(var/atom/movable/AM in src) + AM.loc = get_turf(src) + ..() + +/obj/effect/dummy/spell_jaunt/relaymove(var/mob/user, direction) + if (!src.canmove || reappearing) return + var/turf/newLoc = get_step(src,direction) + if(!(newLoc.flags & NOJAUNT)) + loc = newLoc + else + user << "Some strange aura is blocking the way!" + src.canmove = 0 + spawn(2) src.canmove = 1 + +/obj/effect/dummy/spell_jaunt/ex_act(blah) + return +/obj/effect/dummy/spell_jaunt/bullet_act(blah) + return \ No newline at end of file diff --git a/code/modules/spells/targeted/flesh_to_stone.dm b/code/modules/spells/targeted/flesh_to_stone.dm new file mode 100644 index 00000000000..e640fba5c65 --- /dev/null +++ b/code/modules/spells/targeted/flesh_to_stone.dm @@ -0,0 +1,21 @@ +/spell/targeted/flesh_to_stone + name = "Flesh to Stone" + desc = "This spell turns a single person into an inert statue for a long period of time." + + school = "transmutation" + charge_max = 600 + spell_flags = NEEDSCLOTHES + range = 3 + max_targets = 1 + invocation = "STAUN EI" + invocation_type = SpI_SHOUT + amt_stunned = 5//just exists to make sure the statue "catches" them + cooldown_min = 200 //100 deciseconds reduction per rank + + hud_state = "wiz_statue" + +/spell/targeted/flesh_to_stone/cast(var/list/targets, mob/user) + ..() + for(var/mob/living/target in targets) + new /obj/structure/closet/statue(target.loc, target) //makes the statue + return \ No newline at end of file diff --git a/code/modules/spells/targeted/genetic.dm b/code/modules/spells/targeted/genetic.dm new file mode 100644 index 00000000000..028cdafba0b --- /dev/null +++ b/code/modules/spells/targeted/genetic.dm @@ -0,0 +1,68 @@ +/* +Other mutation or disability spells can be found in +code\game\dna\genes\vg_powers.dm //hulk is in this file +code\game\dna\genes\goon_disabilities.dm +code\game\dna\genes\goon_powers.dm +*/ +/spell/targeted/genetic + name = "Genetic modifier" + desc = "This spell inflicts a set of mutations and disabilities upon the target." + + var/disabilities = 0 //bits + var/list/mutations = list() //mutation strings + duration = 100 //deciseconds + + +/spell/targeted/genetic/cast(list/targets) + ..() + for(var/mob/living/target in targets) + for(var/x in mutations) + target.mutations.Add(x) + target.disabilities |= disabilities + target.update_mutations() //update target's mutation overlays + spawn(duration) + for(var/x in mutations) + target.mutations.Remove(x) + target.disabilities &= ~disabilities + target.update_mutations() + return + +/spell/targeted/genetic/blind + name = "Blind" + disabilities = 1 + duration = 300 + + charge_max = 300 + + spell_flags = 0 + invocation = "STI KALY" + invocation_type = SpI_WHISPER + message = "Your eyes cry out in pain!" + cooldown_min = 50 + + range = 7 + max_targets = 0 + + amt_eye_blind = 10 + amt_eye_blurry = 20 + + hud_state = "wiz_blind" + +/spell/targeted/genetic/mutate + name = "Mutate" + desc = "This spell causes you to turn into a hulk and gain laser vision for a short while." + + school = "transmutation" + charge_max = 400 + spell_flags = Z2NOCAST | NEEDSCLOTHES | INCLUDEUSER + invocation = "BIRUZ BENNAR" + invocation_type = SpI_SHOUT + message = "\blue You feel strong! You feel a pressure building behind your eyes!" + range = 0 + max_targets = 1 + + mutations = list(LASER, HULK) + duration = 300 + cooldown_min = 300 //25 deciseconds reduction per rank + + hud_state = "wiz_hulk" diff --git a/code/modules/spells/targeted/harvest.dm b/code/modules/spells/targeted/harvest.dm new file mode 100644 index 00000000000..844f2237449 --- /dev/null +++ b/code/modules/spells/targeted/harvest.dm @@ -0,0 +1,36 @@ +/spell/targeted/harvest + name = "Harvest" + desc = "Back to where I come from, and you're coming with me." + + school = "transmutation" + charge_max = 200 + spell_flags = Z2NOCAST | CONSTRUCT_CHECK | INCLUDEUSER + invocation = "" + invocation_type = SpI_NONE + range = 0 + max_targets = 0 + + overlay = 1 + overlay_icon = 'icons/effects/effects.dmi' + overlay_icon_state = "rune_teleport" + overlay_lifespan = 0 + + hud_state = "const_harvest" + +/spell/targeted/harvest/cast(list/targets, mob/user)//because harvest is already a proc + ..() + + var/destination = null + for(var/obj/machinery/singularity/narsie/large/N in narsie_list) + destination = N.loc + break + if(destination) + var/prey = 0 + for(var/mob/living/M in targets) + if(!findNullRod(M)) + M.forceMove(destination) + if(M != user) + prey = 1 + user << "You warp back to Nar-Sie[prey ? " along with your prey":""]." + else + user << "...something's wrong!"//There shouldn't be an instance of Harvesters when Nar-Sie isn't in the world. diff --git a/code/modules/spells/targeted/horsemask.dm b/code/modules/spells/targeted/horsemask.dm new file mode 100644 index 00000000000..dad2032b721 --- /dev/null +++ b/code/modules/spells/targeted/horsemask.dm @@ -0,0 +1,35 @@ +/spell/targeted/horsemask + name = "Curse of the Horseman" + desc = "This spell triggers a curse on a target, causing them to wield an unremovable horse head mask. They will speak like a horse! Any masks they are wearing will be disintegrated. This spell does not require robes." + school = "transmutation" + charge_type = Sp_RECHARGE + charge_max = 150 + charge_counter = 0 + spell_flags = 0 + invocation = "KN'A FTAGHU, PUCK 'BTHNK!" + invocation_type = SpI_SHOUT + range = 7 + max_targets = 1 + cooldown_min = 30 //30 deciseconds reduction per rank + selection_type = "range" + + compatible_mobs = list(/mob/living/carbon/human) + + hud_state = "wiz_horse" + +/spell/targeted/horsemask/cast(list/targets, mob/user = usr) + ..() + for(var/mob/living/target in targets) + var/obj/item/clothing/mask/horsehead/magichead = new /obj/item/clothing/mask/horsehead + magichead.canremove = 0 //curses! + magichead.flags_inv = null //so you can still see their face + magichead.voicechange = 1 //NEEEEIIGHH + target.visible_message( "[target]'s face lights up in fire, and after the event a horse's head takes its place!", \ + "Your face burns up, and shortly after the fire you realise you have the face of a horse!") + var/obj/old_mask = target.wear_mask + if(old_mask) + target.drop_from_inventory(old_mask) + qdel(old_mask) //get rid of this shit + target.equip_to_slot_if_possible(magichead, slot_wear_mask, 1, 1) + + flick("e_flash", target.flash) \ No newline at end of file diff --git a/code/modules/spells/targeted/mind_transfer.dm b/code/modules/spells/targeted/mind_transfer.dm new file mode 100644 index 00000000000..6f4525b62c8 --- /dev/null +++ b/code/modules/spells/targeted/mind_transfer.dm @@ -0,0 +1,73 @@ +/spell/targeted/mind_transfer + name = "Mind Transfer" + desc = "This spell allows the user to switch bodies with a target." + + school = "transmutation" + charge_max = 600 + spell_flags = 0 + invocation = "GIN'YU CAPAN" + invocation_type = SpI_WHISPER + max_targets = 1 + range = 1 + cooldown_min = 200 //100 deciseconds reduction per rank + compatible_mobs = list(/mob/living/carbon/human) //which types of mobs are affected by the spell. NOTE: change at your own risk + + var/list/protected_roles = list("Wizard","Changeling","Cultist") //which roles are immune to the spell + var/msg_wait = 500 //how long in deciseconds it waits before telling that body doesn't feel right or mind swap robbed of a spell + amt_paralysis = 20 //how much the victim is paralysed for after the spell + + hud_state = "wiz_mindswap" + +/spell/targeted/mind_transfer/cast(list/targets, mob/user) + ..() + + for(var/mob/living/target in targets) + if(target.stat == DEAD) + user << "You didn't study necromancy back at the Space Wizard Federation academy." + continue + + if(!target.key || !target.mind) + user << "They appear to be catatonic. Not even magic can affect their vacant mind." + continue + + if(target.mind.special_role in protected_roles) + user << "Their mind is resisting your spell." + continue + + var/mob/living/victim = target//The target of the spell whos body will be transferred to. + var/mob/caster = user//The wizard/whomever doing the body transferring. + + //MIND TRANSFER BEGIN + if(caster.mind.special_verbs.len)//If the caster had any special verbs, remove them from the mob verb list. + for(var/V in caster.mind.special_verbs)//Since the caster is using an object spell system, this is mostly moot. + caster.verbs -= V//But a safety nontheless. + + if(victim.mind.special_verbs.len)//Now remove all of the victim's verbs. + for(var/V in victim.mind.special_verbs) + victim.verbs -= V + + var/mob/dead/observer/ghost = victim.ghostize(0) + ghost.spell_list = victim.spell_list//If they have spells, transfer them. Now we basically have a backup mob. + + caster.mind.transfer_to(victim) + victim.spell_list = caster.spell_list//Now they are inside the victim's body. + + if(victim.mind.special_verbs.len)//To add all the special verbs for the original caster. + for(var/V in caster.mind.special_verbs)//Not too important but could come into play. + caster.verbs += V + + ghost.mind.transfer_to(caster) + caster.key = ghost.key //have to transfer the key since the mind was not active + caster.spell_list = ghost.spell_list + + if(caster.mind.special_verbs.len)//If they had any special verbs, we add them here. + for(var/V in caster.mind.special_verbs) + caster.verbs += V + //MIND TRANSFER END + + //Target is handled in ..(), so we handle the caster here + caster.Paralyse(amt_paralysis) + + //After a certain amount of time the victim gets a message about being in a different body. + spawn(msg_wait) + caster << "\red You feel woozy and lightheaded. Your body doesn't seem like your own." diff --git a/code/modules/spells/targeted/projectile/dumbfire.dm b/code/modules/spells/targeted/projectile/dumbfire.dm new file mode 100644 index 00000000000..cd13f7169c8 --- /dev/null +++ b/code/modules/spells/targeted/projectile/dumbfire.dm @@ -0,0 +1,13 @@ +/spell/targeted/projectile/dumbfire + name = "dumbfire spell" + +/spell/targeted/projectile/dumbfire/choose_targets(mob/user = usr) + var/list/targets = list() + + var/starting_dir = user.dir //where are we facing at the time of casting? + var/turf/starting_turf = get_turf(user) + var/current_turf = starting_turf + for(var/i = 1; i <= src.range; i++) + current_turf = get_step(current_turf, starting_dir) + targets += current_turf + return targets \ No newline at end of file diff --git a/code/modules/spells/targeted/projectile/fireball.dm b/code/modules/spells/targeted/projectile/fireball.dm new file mode 100644 index 00000000000..ec48c4ab492 --- /dev/null +++ b/code/modules/spells/targeted/projectile/fireball.dm @@ -0,0 +1,39 @@ +/spell/targeted/projectile/dumbfire/fireball + name = "Fireball" + desc = "This spell fires a fireball at a target and does not require wizard garb." + + proj_type = /obj/item/projectile/spell_projectile/fireball + + school = "evocation" + charge_max = 100 + spell_flags = 0 + invocation = "ONI SOMA" + invocation_type = SpI_SHOUT + range = 20 + cooldown_min = 20 //10 deciseconds reduction per rank + + spell_flags = 0 + + duration = 20 + proj_step_delay = 1 + + amt_dam_brute = 20 + amt_dam_fire = 25 + + var/ex_severe = -1 + var/ex_heavy = 1 + var/ex_light = 2 + var/ex_flash = 5 + + hud_state = "wiz_fireball" + +/spell/targeted/projectile/dumbfire/fireball/prox_cast(var/list/targets, spell_holder) + for(var/mob/living/M in targets) + apply_spell_damage(M) + explosion(get_turf(spell_holder), ex_severe, ex_heavy, ex_light, ex_flash) + +//PROJECTILE + +/obj/item/projectile/spell_projectile/fireball + name = "fireball" + icon_state = "fireball" \ No newline at end of file diff --git a/code/modules/spells/targeted/projectile/magic_missile.dm b/code/modules/spells/targeted/projectile/magic_missile.dm new file mode 100644 index 00000000000..c3589ce94b2 --- /dev/null +++ b/code/modules/spells/targeted/projectile/magic_missile.dm @@ -0,0 +1,40 @@ +/spell/targeted/projectile/magic_missile + name = "Magic Missile" + desc = "This spell fires several, slow moving, magic projectiles at nearby targets." + + school = "evocation" + charge_max = 150 + spell_flags = NEEDSCLOTHES + invocation = "FORTI GY AMA" + invocation_type = SpI_SHOUT + range = 7 + cooldown_min = 90 //15 deciseconds reduction per rank + + max_targets = 0 + + proj_type = /obj/item/projectile/spell_projectile/seeking/magic_missile + duration = 10 + proj_step_delay = 5 + + hud_state = "wiz_mm" + + amt_paralysis = 3 + amt_stunned = 3 + + amt_dam_fire = 10 + +/spell/targeted/projectile/magic_missile/prox_cast(var/list/targets, atom/spell_holder) + spell_holder.visible_message("\The [spell_holder] pops with a flash!") + for(var/mob/living/M in targets) + apply_spell_damage(M) + return + +//PROJECTILE + +/obj/item/projectile/spell_projectile/seeking/magic_missile + name = "magic missile" + icon_state = "magicm" + + proj_trail = 1 + proj_trail_lifespan = 5 + proj_trail_icon_state = "magicmd" diff --git a/code/modules/spells/targeted/projectile/projectile.dm b/code/modules/spells/targeted/projectile/projectile.dm new file mode 100644 index 00000000000..a0c403b51a6 --- /dev/null +++ b/code/modules/spells/targeted/projectile/projectile.dm @@ -0,0 +1,53 @@ +/* +Projectile spells make special projectiles (obj/item/spell_projectile) and fire them at targets +Dumbfire projectile spells fire directly ahead of the user +spell_projectiles call their spell's (carried) prox_cast when they get in range of a target +If the spell_projectile is seeking, it will update its target every process and follow them +*/ + +/spell/targeted/projectile + name = "projectile spell" + + range = 7 + + var/proj_type = /obj/item/projectile/spell_projectile //use these. They are very nice + + var/proj_step_delay = 1 //lower = faster + var/cast_prox_range = 1 + +/spell/targeted/projectile/cast(list/targets, mob/user = usr) + + if(istext(proj_type)) + proj_type = text2path(proj_type) // sanity filters + + for(var/atom/target in targets) + var/obj/item/projectile/projectile = new proj_type(user.loc, user.dir) + + if(!projectile) + return + + projectile.original = target + projectile.starting = get_turf(user) + projectile.shot_from = user //fired from the user + projectile.current = projectile.original + projectile.yo = target.y - user.y + projectile.xo = target.x - user.x + projectile.kill_count = src.duration + projectile.hitscan = !proj_step_delay + projectile.step_delay = proj_step_delay + if(istype(projectile, /obj/item/projectile/spell_projectile)) + var/obj/item/projectile/spell_projectile/SP = projectile + SP.carried = src //casting is magical + spawn projectile.process() + return + +/spell/targeted/projectile/proc/choose_prox_targets(mob/user = usr, var/atom/movable/spell_holder) + var/list/targets = list() + for(var/mob/living/M in range(spell_holder, cast_prox_range)) + if(M == user && !(spell_flags & INCLUDEUSER)) + continue + targets += M + return targets + +/spell/targeted/projectile/proc/prox_cast(var/list/targets, var/atom/movable/spell_holder) + return targets \ No newline at end of file diff --git a/code/modules/spells/targeted/shift.dm b/code/modules/spells/targeted/shift.dm new file mode 100644 index 00000000000..8f8ef57e512 --- /dev/null +++ b/code/modules/spells/targeted/shift.dm @@ -0,0 +1,24 @@ +/spell/targeted/ethereal_jaunt/shift + name = "Phase Shift" + desc = "This spell allows you to pass through walls" + + charge_max = 200 + spell_flags = Z2NOCAST | INCLUDEUSER | CONSTRUCT_CHECK + invocation_type = SpI_NONE + range = -1 + duration = 50 //in deciseconds + + hud_state = "const_shift" + +/spell/targeted/ethereal_jaunt/shift/jaunt_disappear(var/atom/movable/overlay/animation, var/mob/living/target) + animation.icon_state = "phase_shift" + animation.dir = target.dir + flick("phase_shift",animation) + +/spell/targeted/ethereal_jaunt/shift/jaunt_reappear(var/atom/movable/overlay/animation, var/mob/living/target) + animation.icon_state = "phase_shift2" + animation.dir = target.dir + flick("phase_shift2",animation) + +/spell/targeted/ethereal_jaunt/shift/jaunt_steam(var/mobloc) + return \ No newline at end of file diff --git a/code/modules/spells/targeted/subjugate.dm b/code/modules/spells/targeted/subjugate.dm new file mode 100644 index 00000000000..76cbcea7777 --- /dev/null +++ b/code/modules/spells/targeted/subjugate.dm @@ -0,0 +1,20 @@ +/spell/targeted/subjugation + name = "Subjugation" + desc = "This spell temporarily subjugates a target's mind and does not require wizard garb." + + school = "transmutation" + charge_max = 300 + spell_flags = 0 + invocation = "DII ODA BAJI" + invocation_type = SpI_WHISPER + message = "You suddenly feel completely overwhelmed!" + + max_targets = 1 + + amt_dizziness = 300 + amt_confused = 300 + amt_stuttering = 300 + + compatible_mobs = list(/mob/living/carbon/human) + + hud_state = "wiz_subj" diff --git a/code/modules/spells/targeted/targeted.dm b/code/modules/spells/targeted/targeted.dm new file mode 100644 index 00000000000..96bbab9905f --- /dev/null +++ b/code/modules/spells/targeted/targeted.dm @@ -0,0 +1,145 @@ +/* +Targeted spells (with the exception of dumbfire) select from all the mobs in the defined range +Targeted spells have two useful flags: INCLUDEUSER and SELECTABLE. These are explained in setup.dm +*/ + + +/spell/targeted //can mean aoe for mobs (limited/unlimited number) or one target mob + var/max_targets = 1 //leave 0 for unlimited targets in range, more for limited number of casts (can all target one guy, depends on target_ignore_prev) in range + var/target_ignore_prev = 1 //only important if max_targets > 1, affects if the spell can be cast multiple times at one person from one cast + + + var/amt_weakened = 0 + var/amt_paralysis = 0 + var/amt_stunned = 0 + + var/amt_dizziness = 0 + var/amt_confused = 0 + var/amt_stuttering = 0 + + //set to negatives for healing + var/amt_dam_fire = 0 + var/amt_dam_brute = 0 + var/amt_dam_oxy = 0 + var/amt_dam_tox = 0 + + var/amt_eye_blind = 0 + var/amt_eye_blurry = 0 + + var/list/compatible_mobs = list() + + +/spell/targeted/choose_targets(mob/user = usr) + var/list/targets = list() + + if(max_targets == 0) //unlimited + if(range == -2) + targets = living_mob_list + else + for(var/mob/living/target in view_or_range(range, user, selection_type)) + targets += target + + else if(max_targets == 1) //single target can be picked + if((range == 0 || range == -1) && spell_flags & INCLUDEUSER) + targets += user + else + var/list/possible_targets = list() + var/list/starting_targets + if(range == -2) + starting_targets = living_mob_list + else + starting_targets = view_or_range(range, user, selection_type) + + for(var/mob/living/M in starting_targets) + if(!(spell_flags & INCLUDEUSER) && M == user) + continue + if(compatible_mobs && compatible_mobs.len) + if(!is_type_in_list(M, compatible_mobs)) continue + if(compatible_mobs && compatible_mobs.len && !is_type_in_list(M, compatible_mobs)) + continue + possible_targets += M + + if(possible_targets.len) + if(spell_flags & SELECTABLE) //if we are allowed to choose. see setup.dm for details + var/mob/temp_target = input(user, "Choose the target for the spell.", "Targeting") as null|mob in possible_targets + if(temp_target) + targets += temp_target + else + targets += pick(possible_targets) + //Adds a safety check post-input to make sure those targets are actually in range. + + + else + var/list/possible_targets = list() + var/list/starting_targets + + if(range == -2) + starting_targets = living_mob_list + else + starting_targets = view_or_range(range, user, selection_type) + + for(var/mob/living/target in starting_targets) + if(!(spell_flags & INCLUDEUSER) && target == user) + continue + if(compatible_mobs && !is_type_in_list(target, compatible_mobs)) + continue + possible_targets += target + + if(spell_flags & SELECTABLE) + for(var/i = 1; i<=max_targets, i++) + if(!possible_targets.len) + break + var/mob/M = input(user, "Choose the target for the spell.", "Targeting") as null|mob in possible_targets + if(!M) + break + if(range != -2) + if(!(M in view_or_range(range, user, selection_type))) + continue + targets += M + possible_targets -= M + else + for(var/i=1,i<=max_targets,i++) + if(!possible_targets.len) + break + if(target_ignore_prev) + var/target = pick(possible_targets) + possible_targets -= target + targets += target + else + targets += pick(possible_targets) + + if(!(spell_flags & INCLUDEUSER) && (user in targets)) + targets -= user + + if(compatible_mobs && compatible_mobs.len) + for(var/mob/living/target in targets) //filters out all the non-compatible mobs + if(!is_type_in_list(target, compatible_mobs)) + targets -= target + + return targets + +/spell/targeted/cast(var/list/targets, mob/user) + for(var/mob/living/target in targets) + if(range >= 0) + if(!(target in view_or_range(range, user, selection_type))) //filter at time of casting + targets -= target + continue + apply_spell_damage(target) + +/spell/targeted/proc/apply_spell_damage(mob/living/target) + target.adjustBruteLoss(amt_dam_brute) + target.adjustFireLoss(amt_dam_fire) + target.adjustToxLoss(amt_dam_tox) + target.adjustOxyLoss(amt_dam_oxy) + //disabling + target.Weaken(amt_weakened) + target.Paralyse(amt_paralysis) + target.Stun(amt_stunned) + if(amt_weakened || amt_paralysis || amt_stunned) + if(target.buckled) + target.buckled = null + target.eye_blind += amt_eye_blind + target.eye_blurry += amt_eye_blurry + target.dizziness += amt_dizziness + target.confused += amt_confused + target.stuttering += amt_stuttering \ No newline at end of file diff --git a/code/modules/spells/trigger.dm b/code/modules/spells/trigger.dm deleted file mode 100644 index 5e2ed8475f9..00000000000 --- a/code/modules/spells/trigger.dm +++ /dev/null @@ -1,28 +0,0 @@ -/obj/effect/proc_holder/spell/targeted/trigger - name = "Trigger" - desc = "This spell triggers another spell or a few." - - var/list/linked_spells = list() //those are just referenced by the trigger spell and are unaffected by it directly - var/list/starting_spells = list() //those are added on New() to contents from default spells and are deleted when the trigger spell is deleted to prevent memory leaks - -/obj/effect/proc_holder/spell/targeted/trigger/New() - ..() - - for(var/spell in starting_spells) - var/spell_to_add = text2path(spell) - new spell_to_add(src) //should result in adding to contents, needs testing - -/obj/effect/proc_holder/spell/targeted/trigger/Del() - for(var/spell in contents) - del(spell) - - ..() - -/obj/effect/proc_holder/spell/targeted/trigger/cast(list/targets) - for(var/mob/living/target in targets) - for(var/obj/effect/proc_holder/spell/spell in contents) - spell.perform(list(target),0) - for(var/obj/effect/proc_holder/spell/spell in linked_spells) - spell.perform(list(target),0) - - return \ No newline at end of file diff --git a/code/modules/spells/turf_teleport.dm b/code/modules/spells/turf_teleport.dm deleted file mode 100644 index d59bff313a1..00000000000 --- a/code/modules/spells/turf_teleport.dm +++ /dev/null @@ -1,34 +0,0 @@ -/obj/effect/proc_holder/spell/targeted/turf_teleport - name = "Turf Teleport" - desc = "This spell teleports the target to the turf in range." - - var/inner_tele_radius = 1 - var/outer_tele_radius = 2 - - var/include_space = 0 //whether it includes space tiles in possible teleport locations - var/include_dense = 0 //whether it includes dense tiles in possible teleport locations - -/obj/effect/proc_holder/spell/targeted/turf_teleport/cast(list/targets) - for(var/mob/living/target in targets) - var/list/turfs = new/list() - for(var/turf/T in range(target,outer_tele_radius)) - if(T in range(target,inner_tele_radius)) continue - if(istype(T,/turf/space) && !include_space) continue - if(T.density && !include_dense) continue - if(T.x>world.maxx-outer_tele_radius || T.xworld.maxy-outer_tele_radius || T.y[src] hums with power as [usr] deals a blow to reality itself!") - else - user << "\red The unearthly energies that powered the blade are now dormant" - -// Scrying orb // - -/obj/item/weapon/scrying - name = "scrying orb" - desc = "An incandescent orb of otherworldly energy, staring into it gives you vision beyond mortal means." - icon = 'icons/obj/projectiles.dmi' - icon_state = "bluespace" - throw_speed = 3 - throw_range = 7 - throwforce = 10 - damtype = BURN - force = 10 - hitsound = 'sound/items/welder2.ogg' - -/obj/item/weapon/scrying/attack_self(mob/user as mob) - user << "You can see... everything!" - visible_message("[usr] stares into [src], their eyes glazing over.") - announce_ghost_joinleave(user.ghostize(1), 1, "You feel that they used a powerful artifact to [pick("invade","disturb","disrupt","infest","taint","spoil","blight")] this place with their presence.") - return \ No newline at end of file diff --git a/code/modules/spells/wizard_spells.dm b/code/modules/spells/wizard_spells.dm deleted file mode 100644 index f5d7fe9a8e5..00000000000 --- a/code/modules/spells/wizard_spells.dm +++ /dev/null @@ -1,327 +0,0 @@ -/obj/effect/proc_holder/spell/targeted/projectile/magic_missile - name = "Magic Missile" - desc = "This spell fires several, slow moving, magic projectiles at nearby targets." - - school = "evocation" - charge_max = 150 - clothes_req = 1 - invocation = "FORTI GY AMA" - invocation_type = "shout" - range = 7 - - max_targets = 0 - - proj_icon_state = "magicm" - proj_name = "a magic missile" - proj_lingering = 1 - proj_type = "/obj/effect/proc_holder/spell/targeted/inflict_handler/magic_missile" - - proj_lifespan = 20 - proj_step_delay = 5 - - proj_trail = 1 - proj_trail_lifespan = 5 - proj_trail_icon_state = "magicmd" - -/obj/effect/proc_holder/spell/targeted/inflict_handler/magic_missile - amt_weakened = 5 - amt_dam_fire = 10 - -/obj/effect/proc_holder/spell/targeted/genetic/mutate - name = "Mutate" - desc = "This spell causes you to turn into a hulk and gain laser vision for a short while." - - school = "transmutation" - charge_max = 400 - clothes_req = 1 - invocation = "BIRUZ BENNAR" - invocation_type = "shout" - message = "\blue You feel strong! You feel a pressure building behind your eyes!" - range = -1 - include_user = 1 - - mutations = list(LASER, HULK) - duration = 300 - -/obj/effect/proc_holder/spell/targeted/inflict_handler/disintegrate - name = "Disintegrate" - desc = "This spell instantly kills somebody adjacent to you with the vilest of magick." - - school = "evocation" - charge_max = 600 - clothes_req = 1 - invocation = "EI NATH" - invocation_type = "shout" - range = 1 - - destroys = "gib_brain" - - sparks_spread = 1 - sparks_amt = 4 - -/obj/effect/proc_holder/spell/targeted/smoke - name = "Smoke" - desc = "This spell spawns a cloud of choking smoke at your location and does not require wizard garb." - - school = "conjuration" - charge_max = 120 - clothes_req = 0 - invocation = "none" - invocation_type = "none" - range = -1 - include_user = 1 - - smoke_spread = 2 - smoke_amt = 10 - -/obj/effect/proc_holder/spell/targeted/emplosion/disable_tech - name = "Disable Tech" - desc = "This spell disables all weapons, cameras and most other technology in range." - charge_max = 400 - clothes_req = 1 - invocation = "NEC CANTIO" - invocation_type = "shout" - range = -1 - include_user = 1 - - emp_heavy = 6 - emp_light = 10 - -/obj/effect/proc_holder/spell/targeted/turf_teleport/blink - name = "Blink" - desc = "This spell randomly teleports you a short distance." - - school = "abjuration" - charge_max = 20 - clothes_req = 1 - invocation = "none" - invocation_type = "none" - range = -1 - include_user = 1 - - smoke_spread = 1 - smoke_amt = 10 - - inner_tele_radius = 0 - outer_tele_radius = 6 - - centcomm_cancast = 0 //prevent people from getting to centcomm - -/obj/effect/proc_holder/spell/targeted/area_teleport/teleport - name = "Teleport" - desc = "This spell teleports you to a type of area of your selection." - - school = "abjuration" - charge_max = 600 - clothes_req = 1 - invocation = "SCYAR NILA" - invocation_type = "shout" - range = -1 - include_user = 1 - - smoke_spread = 1 - smoke_amt = 5 - -/obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall - name = "Forcewall" - desc = "This spell creates an unbreakable wall that lasts for 30 seconds and does not need wizard garb." - - school = "transmutation" - charge_max = 100 - clothes_req = 0 - invocation = "TARCOL MINTI ZHERI" - invocation_type = "whisper" - range = 0 - - summon_type = list("/obj/effect/forcefield") - summon_lifespan = 300 - - -/obj/effect/proc_holder/spell/aoe_turf/conjure/carp - name = "Summon Carp" - desc = "This spell conjures a simple carp." - - school = "conjuration" - charge_max = 1200 - clothes_req = 1 - invocation = "NOUK FHUNMM SACP RISSKA" - invocation_type = "shout" - range = 1 - - summon_type = list(/mob/living/simple_animal/hostile/carp) - - -/obj/effect/proc_holder/spell/aoe_turf/conjure/construct - name = "Artificer" - desc = "This spell conjures a construct which may be controlled by Shades" - - school = "conjuration" - charge_max = 600 - clothes_req = 0 - invocation = "none" - invocation_type = "none" - range = 0 - - summon_type = list(/obj/structure/constructshell) - - -/obj/effect/proc_holder/spell/aoe_turf/conjure/creature - name = "Summon Creature Swarm" - desc = "This spell tears the fabric of reality, allowing horrific daemons to spill forth" - - school = "conjuration" - charge_max = 1200 - clothes_req = 0 - invocation = "IA IA" - invocation_type = "shout" - summon_amt = 10 - range = 3 - - summon_type = list(/mob/living/simple_animal/hostile/creature) - -/obj/effect/proc_holder/spell/targeted/trigger/blind - name = "Blind" - desc = "This spell temporarily blinds a single person and does not require wizard garb." - - school = "transmutation" - charge_max = 300 - clothes_req = 0 - invocation = "STI KALY" - invocation_type = "whisper" - message = "\blue Your eyes cry out in pain!" - - starting_spells = list("/obj/effect/proc_holder/spell/targeted/inflict_handler/blind","/obj/effect/proc_holder/spell/targeted/genetic/blind") - -/obj/effect/proc_holder/spell/targeted/inflict_handler/blind - amt_eye_blind = 10 - amt_eye_blurry = 20 - -/obj/effect/proc_holder/spell/targeted/genetic/blind - disabilities = 1 - duration = 300 - -/obj/effect/proc_holder/spell/dumbfire/fireball - name = "Fireball" - desc = "This spell fires a fireball at a target and does not require wizard garb." - - school = "evocation" - charge_max = 100 - clothes_req = 0 - invocation = "ONI SOMA" - invocation_type = "shout" - range = 20 - - proj_icon_state = "fireball" - proj_name = "a fireball" - proj_type = "/obj/effect/proc_holder/spell/turf/fireball" - - proj_lifespan = 200 - proj_step_delay = 1 - -/obj/effect/proc_holder/spell/turf/fireball/cast(var/turf/T) - explosion(T, -1, 1, 2, 3) - - -/obj/effect/proc_holder/spell/targeted/inflict_handler/fireball - amt_dam_brute = 20 - amt_dam_fire = 25 - -/obj/effect/proc_holder/spell/targeted/explosion/fireball - ex_severe = -1 - ex_heavy = -1 - ex_light = 2 - ex_flash = 5 - - - - - - -//////////////////////////////Construct Spells///////////////////////// - -/obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser - charge_max = 1800 - -/obj/effect/proc_holder/spell/aoe_turf/conjure/floor - name = "Floor Construction" - desc = "This spell constructs a cult floor" - - school = "conjuration" - charge_max = 20 - clothes_req = 0 - invocation = "none" - invocation_type = "none" - range = 0 - summon_type = list(/turf/simulated/floor/engine/cult) - centcomm_cancast = 0 //Stop crashing the server by spawning turfs on transit tiles - -/obj/effect/proc_holder/spell/aoe_turf/conjure/wall - name = "Leser Construction" - desc = "This spell constructs a cult wall" - - school = "conjuration" - charge_max = 100 - clothes_req = 0 - invocation = "none" - invocation_type = "none" - range = 0 - summon_type = list(/turf/simulated/wall/cult) - centcomm_cancast = 0 //Stop crashing the server by spawning turfs on transit tiles - -/obj/effect/proc_holder/spell/aoe_turf/conjure/wall/reinforced - name = "Greater Construction" - desc = "This spell constructs a reinforced metal wall" - - school = "conjuration" - charge_max = 300 - clothes_req = 0 - invocation = "none" - invocation_type = "none" - range = 0 - centcomm_cancast = 0 //Stop crashing the server by spawning turfs on transit tiles - delay = 50 - - summon_type = list(/turf/simulated/wall/r_wall) - -/obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone - name = "Summon Soulstone" - desc = "This spell reaches into Nar-Sie's realm, summoning one of the legendary fragments across time and space" - - school = "conjuration" - charge_max = 3000 - clothes_req = 0 - invocation = "none" - invocation_type = "none" - range = 0 - - summon_type = list(/obj/item/device/soulstone) - - -/obj/effect/proc_holder/spell/aoe_turf/conjure/lesserforcewall - name = "Shield" - desc = "This spell creates a temporary forcefield to shield yourself and allies from incoming fire" - - school = "transmutation" - charge_max = 300 - clothes_req = 0 - invocation = "none" - invocation_type = "none" - range = 0 - summon_type = list(/obj/effect/forcefield) - summon_lifespan = 50 - - -/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift - name = "Phase Shift" - desc = "This spell allows you to pass through walls" - - school = "transmutation" - charge_max = 200 - clothes_req = 0 - invocation = "none" - invocation_type = "none" - range = -1 - include_user = 1 - phaseshift = 1 - jaunt_duration = 50 //in deciseconds - centcomm_cancast = 0 //Stop people from getting to centcomm \ No newline at end of file diff --git a/code/modules/supermatter/supermatter.dm b/code/modules/supermatter/supermatter.dm index 6cdf0c3e91d..587b5d93428 100644 --- a/code/modules/supermatter/supermatter.dm +++ b/code/modules/supermatter/supermatter.dm @@ -332,29 +332,7 @@ defer_powernet_rebuild = 1 // Let's just make this one loop. for(var/atom/X in orange(pull_radius,src)) - // Movable atoms only - if(istype(X, /atom/movable)) - if(is_type_in_list(X, uneatable)) continue - if(((X) && (!istype(X,/mob/living/carbon/human)))) - step_towards(X,src) - if(istype(X, /obj)) //unanchored objects pulled twice as fast - var/obj/O = X - if(!O.anchored) - step_towards(X,src) - else - step_towards(X,src) - if(istype(X, /obj/structure/window)) //shatter windows - var/obj/structure/window/W = X - W.ex_act(2.0) - else if(istype(X,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = X - if(istype(H.shoes,/obj/item/clothing/shoes/magboots)) - var/obj/item/clothing/shoes/magboots/M = H.shoes - if(M.magpulse) - step_towards(H,src) //step just once with magboots - continue - step_towards(H,src) //step twice - step_towards(H,src) + X.singularity_pull(src, STAGE_FIVE) if(defer_powernet_rebuild != 2) defer_powernet_rebuild = 0 diff --git a/code/modules/surgery/headreattach.dm b/code/modules/surgery/headreattach.dm index 9957ee8b78a..ad47b144293 100644 --- a/code/modules/surgery/headreattach.dm +++ b/code/modules/surgery/headreattach.dm @@ -1,5 +1,6 @@ //This is an uguu head restoration surgery TOTALLY not yoinked from chinsky's limb reattacher /datum/surgery_step/attach_head/ + priority = 3 // Must be higher than /datum/surgery_step/internal allowed_tools = list(/obj/item/organ/external/head = 100) can_infect = 0 @@ -7,20 +8,20 @@ max_duration = 100 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - if(..()) - var/obj/item/organ/external/head = target.get_organ(target_zone) - return !head && target_zone == "head" + var/obj/item/organ/external/head = target.get_organ(target_zone) + return isnull(head) && target_zone == "head" && !isnull(target.species.has_limbs["head"]) begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] starts attaching [tool] to [target]'s reshaped neck.", \ - "You start attaching [tool] to [target]'s reshaped neck.") + user.visible_message("[user] starts attaching [tool] to [target]'s neck.", \ + "You start attaching [tool] to [target]'s neck.") end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("\blue [user] has attached [target]'s head to the body.", \ "\blue You have attached [target]'s head to the body.") var/obj/item/organ/external/head = tool - head.loc = target + user.drop_from_inventory(head) head.replaced(target) + head.loc = target head.status = 0 target.update_body() target.updatehealth() diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm index 8f5d7155dd8..182c3eac2af 100644 --- a/code/modules/surgery/organs_internal.dm +++ b/code/modules/surgery/organs_internal.dm @@ -228,7 +228,7 @@ var/list/attached_organs = list() for(var/organ in target.internal_organs_by_name) var/obj/item/organ/I = target.internal_organs_by_name[organ] - if(!I.status && I.parent_organ == target_zone) + if(I && !I.status && I.parent_organ == target_zone) attached_organs |= organ var/organ_to_remove = input(user, "Which organ do you want to prepare for removal?") as null|anything in attached_organs @@ -347,7 +347,7 @@ return 0 else if(target.species.has_organ[O.organ_tag]) - if(O.is_damaged()) + if(O.damage > (O.max_damage * 0.75)) user << "\red \The [O.organ_tag] [o_is] in no state to be transplanted." return 2 @@ -410,7 +410,7 @@ var/list/removable_organs = list() for(var/organ in target.internal_organs_by_name) var/obj/item/organ/I = target.internal_organs_by_name[organ] - if(I.status & ORGAN_CUT_AWAY && I.parent_organ == target_zone) + if(I && I.status & ORGAN_CUT_AWAY && I.parent_organ == target_zone) removable_organs |= organ var/organ_to_replace = input(user, "Which organ do you want to reattach?") as null|anything in removable_organs diff --git a/code/modules/surgery/robolimbs.dm b/code/modules/surgery/robolimbs.dm index e845d8bb7b7..578833e4184 100644 --- a/code/modules/surgery/robolimbs.dm +++ b/code/modules/surgery/robolimbs.dm @@ -41,7 +41,7 @@ for(var/part_name in L.part) if(!isnull(target.get_organ(part_name))) continue - var/list/organ_data = target.species.has_limbs["[target_zone]"] + var/list/organ_data = target.species.has_limbs["[part_name]"] if(!organ_data) continue var/new_limb_type = organ_data["path"] diff --git a/code/setup.dm b/code/setup.dm index 29ea83aeafb..38836d54d52 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -255,7 +255,7 @@ #define slot_legs 21 #define slot_tie 22 -// Mob sprite sheets. These need to be strings as numbers +// Mob sprite sheets. These need to be strings as numbers // cannot be used as associative list keys. #define icon_l_hand "slot_l_hand" #define icon_r_hand "slot_r_hand" @@ -756,6 +756,7 @@ var/list/be_special_flags = list( #define MAX_MESSAGE_LEN 1024 #define MAX_PAPER_MESSAGE_LEN 3072 #define MAX_BOOK_MESSAGE_LEN 9216 +#define MAX_LNAME_LEN 64 #define MAX_NAME_LEN 26 // Event defines. @@ -778,8 +779,6 @@ var/list/be_special_flags = list( //General-purpose life speed define for plants. #define HYDRO_SPEED_MULTIPLIER 1 -#define NANO_IGNORE_DISTANCE 1 - // Robot AI notifications #define ROBOT_NOTIFICATION_NEW_UNIT 1 #define ROBOT_NOTIFICATION_NEW_NAME 2 @@ -863,3 +862,58 @@ var/list/be_special_flags = list( #define DROPLIMB_EDGE 0 #define DROPLIMB_BLUNT 1 #define DROPLIMB_BURN 2 + +// Custom layer definitions, supplementing the default TURF_LAYER, MOB_LAYER, etc. +#define DOOR_OPEN_LAYER 2.7 //Under all objects if opened. 2.7 due to tables being at 2.6 +#define DOOR_CLOSED_LAYER 3.1 //Above most items if closed +#define OBFUSCATION_LAYER 14 //Where images covering the view for eyes are put +#define SCREEN_LAYER 17 //Mob HUD/effects layer + + +///////////////// +////WIZARD ////// +///////////////// + +/* WIZARD SPELL FLAGS */ +#define GHOSTCAST 1 //can a ghost cast it? +#define NEEDSCLOTHES 2 //does it need the wizard garb to cast? Nonwizard spells should not have this +#define NEEDSHUMAN 4 //does it require the caster to be human? +#define Z2NOCAST 8 //if this is added, the spell can't be cast at centcomm +#define STATALLOWED 16 //if set, the user doesn't have to be conscious to cast. Required for ghost spells +#define IGNOREPREV 32 //if set, each new target does not overlap with the previous one +//The following flags only affect different types of spell, and therefore overlap +//Targeted spells +#define INCLUDEUSER 64 //does the spell include the caster in its target selection? +#define SELECTABLE 128 //can you select each target for the spell? +//AOE spells +#define IGNOREDENSE 64 //are dense turfs ignored in selection? +#define IGNORESPACE 128 //are space turfs ignored in selection? +//End split flags +#define CONSTRUCT_CHECK 256 //used by construct spells - checks for nullrods +#define NO_BUTTON 512 //spell won't show up in the HUD with this + +//invocation +#define SpI_SHOUT "shout" +#define SpI_WHISPER "whisper" +#define SpI_EMOTE "emote" +#define SpI_NONE "none" + +//upgrading +#define Sp_SPEED "speed" +#define Sp_POWER "power" +#define Sp_TOTAL "total" + +//casting costs +#define Sp_RECHARGE "recharge" +#define Sp_CHARGES "charges" +#define Sp_HOLDVAR "holdervar" + +///////WIZ END///////// + +//singularity defines +#define STAGE_ONE 1 +#define STAGE_TWO 3 +#define STAGE_THREE 5 +#define STAGE_FOUR 7 +#define STAGE_FIVE 9 +#define STAGE_SUPER 11 diff --git a/html/changelog.html b/html/changelog.html index 11ccdbedceb..22483bd7090 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,15 @@ should be listed in the changelog upon commit though. Thanks. --> +
        +

        7 April 2015

        +

        RavingManiac updated:

        +
          +
        • You can now pay vending machines and EFTPOS scanners without removing your ID from your PDA or wallet. Clicking on the vending machine with your ID/PDA/wallet/cash also brings up the menu now instead of attacking the vending machine.
        • +
        +
        + +

        24 February 2015

        Zuhayr updated:

        diff --git a/icons/effects/352x352.dmi b/icons/effects/352x352.dmi new file mode 100644 index 00000000000..de15d61dd9b Binary files /dev/null and b/icons/effects/352x352.dmi differ diff --git a/icons/effects/cameravis.dmi b/icons/effects/cameravis.dmi index 3ecc9eb80ac..2b819836fc3 100644 Binary files a/icons/effects/cameravis.dmi and b/icons/effects/cameravis.dmi differ diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 67a1c2ce29a..416f2b5d6cd 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/mob/bats.dmi b/icons/mob/bats.dmi new file mode 100644 index 00000000000..74466935077 Binary files /dev/null and b/icons/mob/bats.dmi differ diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index 6623ca98fae..bfee242faae 100644 Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ diff --git a/icons/mob/robots.dmi b/icons/mob/robots.dmi index 777f68c62e6..5237308264d 100644 Binary files a/icons/mob/robots.dmi and b/icons/mob/robots.dmi differ diff --git a/icons/mob/screen1_construct.dmi b/icons/mob/screen1_construct.dmi new file mode 100644 index 00000000000..67a37ccd738 Binary files /dev/null and b/icons/mob/screen1_construct.dmi differ diff --git a/icons/mob/screen_spells.dmi b/icons/mob/screen_spells.dmi new file mode 100644 index 00000000000..db693428d07 Binary files /dev/null and b/icons/mob/screen_spells.dmi differ diff --git a/icons/obj/barsigns.dmi b/icons/obj/barsigns.dmi index a46f12357a8..6c96827f4b6 100644 Binary files a/icons/obj/barsigns.dmi and b/icons/obj/barsigns.dmi differ diff --git a/icons/obj/card.dmi b/icons/obj/card.dmi index 4a8c1d3b462..f4c1cb10860 100644 Binary files a/icons/obj/card.dmi and b/icons/obj/card.dmi differ diff --git a/icons/obj/clothing/glasses.dmi b/icons/obj/clothing/glasses.dmi index ac7af620b1b..79fc6c98abc 100644 Binary files a/icons/obj/clothing/glasses.dmi and b/icons/obj/clothing/glasses.dmi differ diff --git a/icons/obj/cryogenics.dmi b/icons/obj/cryogenics.dmi index b731ec3c675..9b33a5ba8b3 100644 Binary files a/icons/obj/cryogenics.dmi and b/icons/obj/cryogenics.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index c141d0dad14..4297bbb9927 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index 21a0022aab4..7e8957d0adc 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/icons/obj/magic_terror.dmi b/icons/obj/magic_terror.dmi deleted file mode 100644 index 025e164ccd3..00000000000 Binary files a/icons/obj/magic_terror.dmi and /dev/null differ diff --git a/icons/obj/narsie.dmi b/icons/obj/narsie.dmi index 940b0941762..73df7c31d18 100644 Binary files a/icons/obj/narsie.dmi and b/icons/obj/narsie.dmi differ diff --git a/icons/obj/rift.dmi b/icons/obj/rift.dmi new file mode 100644 index 00000000000..85b7510386c Binary files /dev/null and b/icons/obj/rift.dmi differ diff --git a/icons/obj/stationobjs.dmi b/icons/obj/stationobjs.dmi index c172c160b67..2813c5d7f8b 100755 Binary files a/icons/obj/stationobjs.dmi and b/icons/obj/stationobjs.dmi differ diff --git a/icons/obj/statue.dmi b/icons/obj/statue.dmi new file mode 100644 index 00000000000..a577e8da3ed Binary files /dev/null and b/icons/obj/statue.dmi differ diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index a02adb87f0a..c3fdbcdb333 100644 Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index 77e1f1d7de0..1dfa3999931 100644 Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ diff --git a/icons/obj/wizard.dmi b/icons/obj/wizard.dmi index 1d6bad4c507..b7d095f87ad 100644 Binary files a/icons/obj/wizard.dmi and b/icons/obj/wizard.dmi differ diff --git a/icons/obj/xenoarchaeology.dmi b/icons/obj/xenoarchaeology.dmi index ab6cd5a97de..4ec3da1adc2 100644 Binary files a/icons/obj/xenoarchaeology.dmi and b/icons/obj/xenoarchaeology.dmi differ diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index 3c2d77e20a3..67b9a671558 100644 Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ diff --git a/icons/turf/space.dmi b/icons/turf/space.dmi index 9f15fbbe63a..30d0d1428a5 100644 Binary files a/icons/turf/space.dmi and b/icons/turf/space.dmi differ diff --git a/icons/turf/walls.dmi b/icons/turf/walls.dmi index db3ac690da3..bc3b9e68fc8 100644 Binary files a/icons/turf/walls.dmi and b/icons/turf/walls.dmi differ diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index e2bff065ccf..a673afae2ba 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -25,7 +25,7 @@ "aay" = (/turf/simulated/wall,/area/security/range) "aaz" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/solar/fore) "aaA" = (/obj/structure/sign/securearea,/turf/simulated/wall,/area/space) -"aaB" = (/obj/machinery/camera{c_tag = "Armory Exterior"; dir = 4},/turf/space,/area/space) +"aaB" = (/obj/machinery/camera/network/security{c_tag = "Armory Exterior"; dir = 4},/turf/space,/area/space) "aaC" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/security/range) "aaD" = (/obj/structure/target_stake,/turf/simulated/floor{icon_state = "delivery"},/area/security/range) "aaE" = (/turf/simulated/floor,/area/security/range) @@ -62,7 +62,7 @@ "abj" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/energy/laser/practice,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor,/area/security/range) "abk" = (/turf/space,/area/skipjack_station/northeast_solars) "abl" = (/obj/structure/table/reinforced,/obj/machinery/recharger,/turf/simulated/floor,/area/security/range) -"abm" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/security{name = "Riot Control"; req_access = list(2)},/turf/simulated/floor,/area/security/brig) +"abm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/turf/simulated/floor,/area/security/brig) "abn" = (/obj/structure/closet/crate,/obj/item/clothing/glasses/meson/prescription,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/security_starboard) "abo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/security_starboard) "abp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) @@ -82,7 +82,7 @@ "abD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/range) "abE" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/security/range) "abF" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/security/range) -"abG" = (/obj/machinery/camera{c_tag = "Security Medical Station"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/security/range) +"abG" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/security{name = "Riot Control"; req_access = list(2)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/security/brig) "abH" = (/obj/machinery/light,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/security/range) "abI" = (/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; frequency = 1475; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = 22},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor,/area/security/range) "abJ" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/security/range) @@ -126,14 +126,14 @@ "acv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/maintenance/foresolar) "acw" = (/obj/machinery/power/solar_control{id = "auxsolarnorth"; name = "Fore Solar Control"; track = 0},/obj/structure/cable/yellow,/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/maintenance/foresolar) "acx" = (/turf/simulated/floor/plating,/area/maintenance/foresolar) -"acy" = (/obj/machinery/camera{c_tag = "Fore Solar Control"; dir = 1},/obj/structure/cable,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/foresolar) -"acz" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera{c_tag = "Fore Solar Access"; dir = 8},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/maintenance/security_port) +"acy" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/camera/network/security{c_tag = "Security - Forensic Office Fore"; dir = 2},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) +"acz" = (/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor/plating,/area/maintenance/security_port) "acA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/tactical) "acB" = (/obj/machinery/door/airlock/glass_security{id_tag = "prisonexit"; name = "Brig Exit"; req_access = list(2)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison) "acC" = (/obj/machinery/door/window/brigdoor{dir = 1; id = "Cell 3"; name = "Cell 3"; req_access = list(2)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/security/brig) "acD" = (/obj/machinery/door_control{id = "Cell 3"; name = "Cell 3 Door"; pixel_x = -1; pixel_y = -28; req_access = list(2)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/security/brig) "acE" = (/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{icon_state = "dark"},/area/security/warden) -"acF" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) +"acF" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/plating,/area/security/brig) "acG" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/screwdriver{pixel_y = 15},/obj/machinery/light{dir = 8},/turf/simulated/floor,/area/security/main) "acH" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor,/area/security/main) "acI" = (/obj/structure/disposalpipe/segment,/obj/structure/table,/obj/machinery/recharger,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/main) @@ -152,7 +152,7 @@ "acV" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/security_port) "acW" = (/obj/machinery/door/airlock/maintenance{name = "Firefighting equipment"; req_access = list(12)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/security_starboard) "acX" = (/turf/simulated/floor{icon_state = "dark"},/area/security/warden) -"acY" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) +"acY" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/turf/simulated/floor/plating,/area/security/brig) "acZ" = (/obj/structure/table,/obj/machinery/recharger,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/main) "ada" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/security/main) "adb" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/security/main) @@ -168,24 +168,24 @@ "adl" = (/turf/simulated/floor/plating,/area/maintenance/security_starboard) "adm" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'VACUUM'"; icon_state = "space"; layer = 4; name = "VACUUM"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/security_starboard) "adn" = (/obj/structure/bed/roller,/obj/item/device/radio/intercom{pixel_y = 25},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/security/main) -"ado" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) -"adp" = (/obj/structure/table,/obj/machinery/recharger,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) +"ado" = (/obj/machinery/computer/area_atmos/area,/turf/simulated/floor/plating,/area/security/brig) +"adp" = (/obj/machinery/meter,/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/turf/simulated/floor/plating,/area/security/brig) "adq" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/main) "adr" = (/obj/machinery/door/airlock/maintenance{name = "Firefighting equipment"; req_access = list(12)},/turf/simulated/floor/plating,/area/maintenance/security_port) -"ads" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/chemimp{pixel_x = 4; pixel_y = 3},/obj/item/weapon/storage/box/trackimp,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) -"adt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/security/warden) -"adu" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) +"ads" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/machinery/camera/network/security{c_tag = "Security - Brig Center"; dir = 1},/turf/simulated/floor,/area/security/brig) +"adt" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/computer/guestpass{pixel_y = -29},/obj/machinery/camera/network/security{c_tag = "Security - Brig East"; dir = 1},/turf/simulated/floor,/area/security/brig) +"adu" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/camera/network/security{c_tag = "Security - Equipment South"; dir = 4},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/main) "adv" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/main) "adw" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) "adx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/security/main) "ady" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/main) -"adz" = (/obj/structure/table/rack,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/weapon/storage/box/emps{pixel_x = 3; pixel_y = 2},/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/storage/box/flashbangs{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) +"adz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/flora/pottedplant,/obj/machinery/newscaster/security_unit{pixel_x = -30},/obj/machinery/camera/network/security{c_tag = "Security - HoS' Office"; dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "adA" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/noticeboard{pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) "adB" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/security_starboard) "adC" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/security{name = "Interrogation"; req_access = list(63)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/security/brig) "adD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/security_port) "adE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/security_port) -"adF" = (/obj/structure/table/rack,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/reagent_containers/spray/pepper,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) +"adF" = (/obj/structure/table,/obj/item/weapon/folder/red{pixel_x = 2; pixel_y = 4},/obj/item/weapon/pen,/obj/item/weapon/hand_labeler,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/camera/network/security{c_tag = "Security - Evidence Storage"; dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "adG" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/security{name = "Interrogation Observation"; req_access = list(63)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/security/brig) "adH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/main) "adI" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/security/main) @@ -202,8 +202,8 @@ "adT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/security_port) "adU" = (/obj/structure/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/security/main) "adV" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/main) -"adW" = (/obj/machinery/flasher/portable,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) -"adX" = (/obj/machinery/light,/obj/machinery/flasher/portable,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) +"adW" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/machinery/camera/network/security{c_tag = "Security - Processing"; dir = 4},/turf/simulated/floor,/area/security/brig) +"adX" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera/network/security{c_tag = "Security - Interrogation Observation"; dir = 4},/turf/simulated/floor,/area/security/brig) "adY" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Warden's Office"; req_access = list(3)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "adZ" = (/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) "aea" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/main) @@ -222,18 +222,18 @@ "aen" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) "aeo" = (/obj/item/weapon/hand_labeler,/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{dir = 4; name = "Warden's Desk"; req_access = list(3)},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "aep" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/main) -"aeq" = (/obj/structure/table/woodentable,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/device/flashlight/lamp/green{dir = 2; pixel_x = 10; pixel_y = 12},/obj/machinery/door_control{id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = -4; pixel_y = 7; req_access = list(2)},/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/heads/hos) +"aeq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/armoury) "aer" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/main) "aes" = (/obj/structure/table,/obj/item/weapon/book/manual/security_space_law,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/security/main) "aet" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/security/main) -"aeu" = (/obj/machinery/camera{c_tag = "Security Office South"; dir = 8; network = list("SS13")},/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; frequency = 1475; listening = 1; name = "Station Intercom (Security)"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) -"aev" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/floor/plating,/area/maintenance/security_starboard) +"aeu" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1449; listening = 0; pixel_x = 0; pixel_y = 25},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/camera/network/security{c_tag = "Security - Interrogation"},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) +"aev" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "visit_blast"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/security/prison) "aew" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/security_port) "aex" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/weapon/shard,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/security_port) "aey" = (/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor/plating,/area/maintenance/security_port) "aez" = (/obj/machinery/door/airlock/security{name = "Evidence Storage"; req_access = list(1)},/turf/simulated/floor,/area/security/brig) "aeA" = (/obj/machinery/deployable/barrier,/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) -"aeB" = (/obj/machinery/camera{c_tag = "Armoury"},/obj/machinery/deployable/barrier,/obj/structure/sign/securearea{name = "\improper ARMORY"; pixel_y = 32},/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) +"aeB" = (/obj/structure/closet/secure_closet/brig{id = "Cell 2"; name = "Cell 2 Locker"},/obj/machinery/camera/network/prison{c_tag = "Security - Brig Cell 1"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison) "aeC" = (/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{dir = 1; icon_state = "warning"},/area/security/warden) "aeD" = (/obj/structure/closet/l3closet/security,/obj/structure/sign/securearea{name = "\improper ARMORY"; pixel_y = 32},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/warden) "aeE" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/closet/bombclosetsecurity,/obj/machinery/firealarm{pixel_y = 27},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/warden) @@ -249,7 +249,7 @@ "aeO" = (/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"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) "aeP" = (/obj/item/device/eftpos{eftpos_name = "Brig EFTPOS scanner"},/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{dir = 8; name = "Warden's Desk"; req_access = list(3)},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "aeQ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/security_starboard) -"aeR" = (/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/floor/plating,/area/maintenance/security_starboard) +"aeR" = (/obj/machinery/computer/secure_data,/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) "aeS" = (/turf/simulated/wall/r_wall,/area/maintenance/security_starboard) "aeT" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/lattice,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/turf/space,/area/space) "aeU" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/security_port) @@ -258,7 +258,7 @@ "aeX" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/warden) "aeY" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/warden) "aeZ" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor,/area/security/warden) -"afa" = (/obj/machinery/camera{c_tag = "Security Equipment North"; dir = 4; network = list("SS13")},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/security/main) +"afa" = (/obj/item/weapon/stool,/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/camera/network/security{c_tag = "Security - Solitary Confinement South"},/turf/simulated/floor/plating,/area/security/brig) "afb" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "red"},/area/security/main) "afc" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 1; name = "Security"; sortType = "Security"},/turf/simulated/floor{icon_state = "red"},/area/security/main) "afd" = (/turf/simulated/floor{icon_state = "red"},/area/security/main) @@ -270,7 +270,7 @@ "afj" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor,/area/security/main) "afk" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/security_starboard) "afl" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/storage/belt/utility,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/maintenance/security_starboard) -"afm" = (/obj/machinery/light/small{dir = 1},/obj/structure/closet/emcloset,/obj/machinery/camera/xray{c_tag = "Security Escape Pod"},/turf/simulated/floor/plating,/area/maintenance/security_starboard) +"afm" = (/obj/machinery/light/small{dir = 1},/obj/structure/closet/emcloset,/obj/machinery/camera/xray/security{c_tag = "Security Escape Pod"},/turf/simulated/floor/plating,/area/maintenance/security_starboard) "afn" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 4},/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/shuttle/escape_pod3/station) "afo" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/escape_pod3/station) "afp" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/escape_pod3/station) @@ -314,7 +314,7 @@ "agb" = (/turf/simulated/floor/plating,/area/maintenance/security_port) "agc" = (/obj/effect/decal/cleanable/spiderling_remains,/turf/simulated/floor/plating,/area/maintenance/security_port) "agd" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/seccarts{pixel_x = 3; pixel_y = 2},/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/storage/box/flashbangs{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/warden) -"age" = (/obj/structure/table/rack,/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/warden) +"age" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/hand_labeler,/obj/item/weapon/pen,/obj/structure/cable/green,/obj/machinery/camera/network/security{c_tag = "Security - IA Office"; dir = 1},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) "agf" = (/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,/area/security/warden) "agg" = (/obj/machinery/door_control{id = "Cell 1"; name = "Cell 1 Door"; pixel_x = 30; pixel_y = 1; req_access = list(2)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/brig) "agh" = (/obj/structure/bed/chair{dir = 4},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station) @@ -326,11 +326,11 @@ "agn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table,/obj/structure/reagent_dispensers/peppertank{pixel_x = 30},/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) "ago" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/wall,/area/crew_quarters/heads/hos) "agp" = (/turf/simulated/wall,/area/crew_quarters/heads/hos) -"agq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/crew_quarters/heads/hos) -"agr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/goldenplaque,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/crew_quarters/heads/hos) +"agq" = (/obj/structure/grille,/obj/structure/sign/goldenplaque,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/heads/hos) +"agr" = (/obj/structure/grille,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized,/turf/simulated/floor/plating,/area/crew_quarters/heads/hos) "ags" = (/obj/machinery/door/airlock{id_tag = "visitdoor"; name = "Visitation Area"; req_access = list(63)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/security/lobby) -"agt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/crew_quarters/heads/hos) -"agu" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/crew_quarters/heads/hos) +"agt" = (/obj/structure/grille,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized,/turf/simulated/floor/plating,/area/crew_quarters/heads/hos) +"agu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/command{id_tag = "HoSdoor"; name = "Head of Security"; req_access = list(30)},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "agv" = (/turf/simulated/wall/r_wall,/area/crew_quarters/heads/hos) "agw" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/security_starboard) "agx" = (/obj/machinery/door/airlock{name = "Visitation Area"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) @@ -370,14 +370,14 @@ "ahf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor,/area/security/brig) "ahg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/warden) "ahh" = (/obj/machinery/photocopier,/obj/machinery/newscaster/security_unit{pixel_x = -30; pixel_y = 30},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) -"ahi" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/camera{c_tag = "Security Warden Office"; dir = 2; network = list("SS13")},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) +"ahi" = (/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/camera/network/security{c_tag = "Security - Brig West"; dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/brig) "ahj" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "ahk" = (/obj/structure/table/reinforced,/obj/machinery/photocopier/faxmachine{department = "Warden's Office"},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "ahl" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/item/weapon/stamp/denied{pixel_x = 5},/obj/item/weapon/stamp,/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "ahm" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/clipboard,/obj/item/weapon/folder/red,/obj/item/weapon/pen,/obj/item/weapon/paper{info = "\[center]\[Large]\[b]NSS Exodus\[/b]\[/large]\[br] \[small]Armoury Inventory\[/small]\[/center] \[hr] \[hr] \[br] \[b]Weaponry\[/b]\[br] \[field] Energy Gun(s)\[br] \[field] Laser Gun(s)\[br] \[field] Ion Rifle(s)\[br] \[field] Combat Shotgun(s) \[hr] \[b]Armour\[/b]\[br] \[field] Bulletproof Vest(s)\[br] \[field] Abalative Vest(s)\[br] \[field] Biohazard Suit(s)\[br] \[field] Bomb Suit(s) \[hr] \[b]Auxiliary Equipment\[/b]\[br] \[field] Gasmask(s)\[br] \[field] box(es) of Flashbangs\[br] \[field] box(es) of Handcuffs\[br] \[field] box(es) of R.O.B.U.S.T. Cartridges \[hr] \[b]Riot Equipment\[/b]\[br] \[field] Stun Baton(s)\[br] \[field] Riot Suit(s)\[br] \[field] Riot Shield(s) \[hr] \[b]Tactical Equipment\[/b]\[br] \[field] Tactical Armour(s)\[br] \[field] Tactical Helmet(s)\[br] \[field] Tactical Jumpsuit(s)\[br] \[field] Green Balaclava(s)\[br] \[field] Tactical HUD(s)\[br] \[field] Combat Belt(s)\[br] \[field] Black Glove(s)\[br] \[field] Jackboot(s) \[hr] \[b]Implants\[/b]\[br] \[field] Tracking Implant Box(es)\[br] \[field] Chemical Implant Box(es) \[hr] \[b]Defense Systems\[/b]\[br] \[field] Deployable Barrier(s)\[br] \[field] Portable Flasher(s) \[hr] \[b]Other\[/b]\[br] \[field] Holobadge Box(es) \[hr] \[b]\[center]Warden's's Signature:\[/b] \[field]\[/center] \[hr]"; name = "Armory Inventory"},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "ahn" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/main) "aho" = (/obj/structure/flora/pottedplant{tag = "icon-plant-22"; icon_state = "plant-22"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) -"ahp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/crew_quarters/heads/hos) +"ahp" = (/obj/structure/grille,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/heads/hos) "ahq" = (/obj/structure/table/woodentable,/obj/item/device/megaphone,/obj/item/device/radio/off,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "ahr" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "ahs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/heads/hos) @@ -394,7 +394,7 @@ "ahD" = (/obj/structure/table,/obj/item/stack/medical/ointment,/obj/item/weapon/folder/red,/obj/item/stack/medical/bruise_pack{pixel_x = 10; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/security/brig) "ahE" = (/obj/structure/window/reinforced/tinted{dir = 1},/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"},/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"},/obj/structure/grille,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/brig) "ahF" = (/turf/simulated/floor{icon_state = "dark"},/area/security/brig) -"ahG" = (/obj/machinery/camera{c_tag = "Interrogation"; network = list("SS13","Interrogation")},/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1449; listening = 0; pixel_x = 0; pixel_y = 25},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) +"ahG" = (/obj/structure/closet/secure_closet/brig{id = "Cell 2"; name = "Cell 2 Locker"},/obj/machinery/camera/network/prison{c_tag = "Security - Brig Cell 2"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison) "ahH" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "ahI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "ahJ" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "dorm_airlock"; name = "Dormitory Airlock Console"; pixel_x = 25; pixel_y = 0; req_one_access = list(1,5,11,18,24); tag_airpump = "dorm_pump"; tag_chamber_sensor = "dorm_sensor"; tag_exterior_door = "dorm_outer"; tag_interior_door = "dorm_inner"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/dormitory) @@ -408,7 +408,7 @@ "ahR" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/maintenance{name = "Detective Maintenance"; req_access = list(4)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/security/detectives_office) "ahS" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/security/main) "ahT" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/vending/coffee,/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) -"ahU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/crew_quarters/heads/hos) +"ahU" = (/obj/structure/grille,/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/heads/hos) "ahV" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/flask/barflask{pixel_x = -4; pixel_y = 8},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "ahW" = (/obj/machinery/hologram/holopad,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "ahX" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/window/brigdoor{dir = 4; id = "Cell 2"; name = "Cell 2"; req_access = list(2)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/security/brig) @@ -420,15 +420,15 @@ "aid" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire/firefighter,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/glasses/meson,/turf/simulated/floor/plating,/area/maintenance/security_port) "aie" = (/obj/structure/closet,/obj/item/clothing/head/ushanka,/turf/simulated/floor/plating,/area/maintenance/security_port) "aif" = (/obj/structure/table,/obj/item/device/t_scanner,/turf/simulated/floor/plating,/area/maintenance/security_port) -"aig" = (/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/floor/plating,/area/maintenance/security_port) -"aih" = (/obj/machinery/camera{c_tag = "Interrogation Observation"; dir = 4; network = list("SS13")},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor,/area/security/brig) +"aig" = (/obj/machinery/light,/obj/structure/table,/obj/item/device/mass_spectrometer,/obj/item/device/reagent_scanner,/obj/machinery/camera/network/security{c_tag = "Security - Forensic Office Aft"; dir = 1},/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) +"aih" = (/obj/item/weapon/stool,/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/camera/network/security{c_tag = "Security - Solitary Confinement North"},/turf/simulated/floor/plating,/area/security/brig) "aii" = (/obj/structure/bed/chair,/turf/simulated/floor,/area/security/brig) "aij" = (/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"},/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"},/obj/structure/grille,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/security/brig) "aik" = (/obj/structure/bed/chair/office/dark{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "ail" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/obj/item/device/taperecorder,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "aim" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/computer/security/telescreen{layer = 4; name = "Observation Screen"; network = list("Interrogation"); pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "ain" = (/obj/structure/filingcabinet/filingcabinet,/turf/simulated/floor{icon_state = "dark"},/area/security/brig) -"aio" = (/obj/machinery/camera{c_tag = "Security Processing"; dir = 4; network = list("SS13")},/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/turf/simulated/floor,/area/security/brig) +"aio" = (/obj/machinery/computer/arcade,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/camera/network/prison{c_tag = "Security - Common Brig Northwest"},/turf/simulated/floor,/area/security/prison) "aip" = (/obj/structure/bed/chair{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "aiq" = (/obj/structure/table,/turf/simulated/floor,/area/security/brig) "air" = (/obj/machinery/computer/secure_data,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) @@ -437,7 +437,7 @@ "aiu" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/recharger{pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "aiv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/solar/auxport) "aiw" = (/obj/machinery/vending/security,/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) -"aix" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/obj/structure/cable/green,/turf/simulated/floor/plating,/area/crew_quarters/heads/hos) +"aix" = (/obj/structure/grille,/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green,/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/heads/hos) "aiy" = (/obj/structure/table/woodentable,/obj/item/device/taperecorder{pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "aiz" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor,/area/security/brig) "aiA" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/folder/red,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) @@ -451,7 +451,7 @@ "aiI" = (/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{dir = 10},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "aiJ" = (/obj/structure/closet{name = "Evidence Closet"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "aiK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/security/brig) -"aiL" = (/obj/machinery/camera{c_tag = "Evidence Storage"; dir = 8; network = list("SS13")},/obj/structure/table,/obj/item/weapon/folder/red{pixel_x = 2; pixel_y = 4},/obj/item/weapon/pen,/obj/item/weapon/hand_labeler,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) +"aiL" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/table,/obj/item/weapon/book/manual/security_space_law{pixel_y = 6},/obj/machinery/camera/network/security{c_tag = "Security - Lobby"; dir = 4},/turf/simulated/floor,/area/security/lobby) "aiM" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1475; listening = 0; name = "Station Intercom (Security)"; pixel_x = -30; pixel_y = 0},/obj/item/weapon/hand_labeler,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/security/brig) "aiN" = (/obj/structure/table,/obj/item/weapon/storage/box/evidence,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/security/brig) "aiO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/security/brig) @@ -462,15 +462,15 @@ "aiT" = (/obj/machinery/computer/prisoner,/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "aiU" = (/obj/structure/table/rack,/obj/item/weapon/crowbar,/obj/item/device/radio/off,/obj/item/weapon/wrench,/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "aiV" = (/obj/structure/closet/secure_closet/warden,/obj/item/device/megaphone,/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; frequency = 1475; listening = 1; name = "Station Intercom (Security)"; pixel_x = 30; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) -"aiW" = (/obj/structure/table,/obj/machinery/camera{c_tag = "Security Equipment South"; dir = 4; network = list("SS13")},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/main) +"aiW" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/wall,/area/security/brig) "aiX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/main) "aiY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/main) "aiZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) -"aja" = (/obj/machinery/camera{c_tag = "Brig East"; dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/computer/guestpass{pixel_y = -29},/turf/simulated/floor,/area/security/brig) +"aja" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/prison) "ajb" = (/obj/machinery/light{dir = 1},/obj/machinery/firealarm{pixel_y = 24},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) "ajc" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/wall,/area/crew_quarters/heads/hos) -"ajd" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/camera{c_tag = "HoS Office South"; dir = 1},/obj/structure/flora/pottedplant,/obj/machinery/newscaster/security_unit{pixel_x = -30},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) -"aje" = (/obj/structure/bed/chair/comfy/black{dir = 1},/obj/effect/landmark/start{name = "Head of Security"},/obj/machinery/door_control{id = "HoSdoor"; name = "Office Door"; normaldoorcontrol = 1; pixel_x = -36; pixel_y = 29},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) +"ajd" = (/obj/machinery/door/blast/regular{dir = 1; id = "Cell 3"; name = "Cell Door"},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/security/prison) +"aje" = (/obj/structure/table/woodentable,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/device/flashlight/lamp/green{dir = 2; pixel_x = 10; pixel_y = 12},/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/heads/hos) "ajf" = (/obj/machinery/computer/security,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "ajg" = (/obj/machinery/computer/secure_data,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "ajh" = (/obj/structure/filingcabinet,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) @@ -528,7 +528,7 @@ "akh" = (/obj/structure/table/rack,/obj/item/weapon/storage/briefcase{pixel_x = -2; pixel_y = -5},/obj/item/weapon/storage/briefcase{pixel_x = 3; pixel_y = 0},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "aki" = (/obj/structure/disposalpipe/segment,/obj/structure/closet{name = "Evidence Closet"},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "akj" = (/obj/structure/noticeboard{pixel_y = 30},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) -"akk" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) +"akk" = (/obj/machinery/computer/security/wooden_tv,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "akl" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "akm" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/machinery/computer/security/wooden_tv,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "akn" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/flora/pottedplant{tag = "icon-plant-21"; icon_state = "plant-21"},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) @@ -549,7 +549,7 @@ "akC" = (/obj/machinery/light,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/brig) "akD" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/security/brig) "akE" = (/obj/structure/table,/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = -28},/obj/item/clothing/accessory/holobadge,/obj/item/clothing/accessory/holobadge,/obj/item/clothing/accessory/holobadge/cord,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) -"akF" = (/obj/machinery/camera{c_tag = "Brig Center"; dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor,/area/security/brig) +"akF" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/brig) "akG" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/security/brig) "akH" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor,/area/security/brig) "akI" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor,/area/security/brig) @@ -574,8 +574,8 @@ "alb" = (/obj/item/weapon/stool,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/carpet,/area/security/detectives_office) "alc" = (/obj/machinery/atmospherics/pipe/tank/nitrous_oxide{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/security/brig) "ald" = (/obj/machinery/atmospherics/valve{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/security/brig) -"ale" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/obj/machinery/meter,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/security/brig) -"alf" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/obj/machinery/computer/area_atmos/area,/turf/simulated/floor/plating,/area/security/brig) +"ale" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/door_timer/cell_6{id = "Cell 2"; name = "Cell 2"; pixel_x = 32},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/brig) +"alf" = (/obj/structure/closet/secure_closet/brig{id = "Cell 3"; name = "Cell 3 Locker"},/obj/machinery/camera/network/prison{c_tag = "Security - Brig Cell 3"; dir = 8},/turf/simulated/floor{icon_state = "red"},/area/security/prison) "alg" = (/obj/machinery/light{dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/brig) "alh" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "ali" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) @@ -583,17 +583,17 @@ "alk" = (/turf/simulated/floor/plating/airless,/area/solar/auxport) "all" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/airless,/area/solar/auxport) "alm" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/prison) -"aln" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"; req_access = list(3)},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Armoury - Secure"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) +"aln" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/security{c_tag = "Security - Prison Observation"; dir = 1},/turf/simulated/floor,/area/security/brig) "alo" = (/obj/machinery/door/blast/regular{id = "Cell 1"; name = "Cell Door"},/turf/simulated/floor,/area/security/prison) "alp" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/computer/secure_data,/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/brig) -"alq" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"; req_access = list(3)},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) +"alq" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/engineering{c_tag = "Solar Maintenance Fore Access"; dir = 8},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/maintenance/security_port) "alr" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Briefing Room"; req_access = list(63)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/security/main) "als" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/computer/security,/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/brig) "alt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/security/brig) "alu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/security/brig) -"alv" = (/obj/machinery/door_control{id = "Armoury"; name = "Armoury Access"; pixel_x = -1; pixel_y = -28; req_access = list(3)},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) +"alv" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/camera/network/security{c_tag = "Security - Brig Toxin Control"; dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/security/brig) "alw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/security/brig) -"alx" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access = list(3)},/obj/random/projectile,/obj/random/projectile,/obj/random/projectile,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) +"alx" = (/obj/effect/decal/cleanable/generic,/obj/structure/bed/chair/office/dark{dir = 1},/turf/simulated/floor/plating,/area/security/brig) "aly" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/solar/auxport) "alz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/solar/auxport) "alA" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/solar/auxport) @@ -609,10 +609,10 @@ "alK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/brig) "alL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "visit_blast"; name = "Privacy Shutters"; opacity = 0},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/lobby) "alM" = (/turf/simulated/floor/plating,/area/security/brig) -"alN" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/security/brig) +"alN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/brig) "alO" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/security_starboard) -"alP" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access = list(3)},/obj/structure/window/reinforced{dir = 8},/obj/random/energy,/obj/random/energy,/obj/random/energy,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) -"alQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/security/brig) +"alP" = (/obj/structure/closet/secure_closet/brig,/obj/machinery/camera/network/security{c_tag = "Security - Prison Processing"; dir = 1},/turf/simulated/floor,/area/security/brig) +"alQ" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/security/armoury) "alR" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/brig) "alS" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/security/brig) "alT" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/security/prison) @@ -621,7 +621,7 @@ "alW" = (/turf/simulated/wall,/area/security/prison) "alX" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor,/area/security/prison) "alY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison) -"alZ" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/light{dir = 1},/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access = list(3)},/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/flashshells,/obj/item/weapon/storage/box/stunshells,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) +"alZ" = (/obj/machinery/door/blast/regular{id = "Armoury"; name = "Emergency Access"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/security/armoury) "ama" = (/obj/structure/table,/obj/item/device/t_scanner,/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/maintenance/security_starboard) "amb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/brig) "amc" = (/obj/structure/disposalpipe/segment,/obj/item/weapon/stool,/turf/simulated/floor/carpet,/area/security/detectives_office) @@ -640,30 +640,30 @@ "amp" = (/obj/structure/table/woodentable,/obj/item/ashtray/bronze,/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,/obj/item/device/flash,/obj/item/weapon/handcuffs,/turf/simulated/floor/carpet,/area/security/detectives_office) "amq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/security/detectives_office) "amr" = (/obj/item/weapon/storage/secure/safe{pixel_x = 35; pixel_y = 5},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) -"ams" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/security/brig) -"amt" = (/obj/structure/table/rack,/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access = list(3)},/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/gun/energy/ionrifle,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) -"amu" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"; req_access = list(3)},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) +"ams" = (/obj/structure/grille,/obj/structure/disposalpipe/segment,/obj/structure/cable/green,/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/heads/hos) +"amt" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/chemimp{pixel_x = 4; pixel_y = 3},/obj/item/weapon/storage/box/trackimp,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/armoury) +"amu" = (/obj/structure/table/rack,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/weapon/storage/box/emps{pixel_x = 3; pixel_y = 2},/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/storage/box/flashbangs{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/armoury) "amv" = (/obj/machinery/light/small{dir = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/power/sensor{name = "Powernet Sensor - Security Subgrid"; name_tag = "Security Subgrid"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/maintenance/substation/security) "amw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/substation/security) -"amx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access = list(1)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/security/range) +"amx" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access = list(1)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/security/range) "amy" = (/obj/machinery/door/airlock/engineering{name = "Fore Solar Access"; req_access = list(10)},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/foresolar) "amz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/hallway/primary/fore) -"amA" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/camera{c_tag = "Brig Toxin Control"; dir = 4; network = list("SS13")},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/security/brig) +"amA" = (/obj/structure/table/rack,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/reagent_containers/spray/pepper,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/armoury) "amB" = (/obj/machinery/atmospherics/valve{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/security/brig) "amC" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/machinery/portable_atmospherics/powered/scrubber,/obj/item/weapon/wrench,/turf/simulated/floor/plating,/area/security/brig) -"amD" = (/obj/effect/decal/cleanable/generic,/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor/plating,/area/security/brig) -"amE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/brig) -"amF" = (/obj/machinery/camera{c_tag = "Prison Wing Processing"; dir = 1},/obj/structure/closet/secure_closet/brig,/turf/simulated/floor,/area/security/brig) +"amD" = (/obj/structure/table,/obj/machinery/recharger,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/armoury) +"amE" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/armoury) +"amF" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"; req_access = list(3)},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/obj/machinery/light{dir = 8},/obj/machinery/camera/network/security{c_tag = "Armoury - Secure"; dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/armoury) "amG" = (/obj/structure/flora/pottedplant{tag = "icon-plant-10"; icon_state = "plant-10"},/turf/simulated/floor,/area/security/brig) "amH" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "brig_solar_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "brig_solar_airlock"; layer = 3.3; pixel_x = 0; pixel_y = -25; req_access = list(13); tag_airpump = "brig_solar_pump"; tag_chamber_sensor = "brig_solar_sensor"; tag_exterior_door = "brig_solar_outer"; tag_interior_door = "brig_solar_inner"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "brig_solar_sensor"; layer = 3.3; pixel_x = 12; pixel_y = -25},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes,/turf/simulated/floor/plating,/area/maintenance/foresolar) "amI" = (/turf/simulated/floor{icon_state = "red"},/area/security/prison) -"amJ" = (/obj/structure/closet/secure_closet/brig{id = "Cell 3"; name = "Cell 3 Locker"},/obj/machinery/camera{c_tag = "Brig Cell 3"; dir = 8; network = list("SS13","Prison")},/turf/simulated/floor{icon_state = "red"},/area/security/prison) +"amJ" = (/turf/simulated/wall/r_wall,/area/security/armoury) "amK" = (/obj/machinery/flasher{id = "permentryflash"; name = "Floor mounted flash"; pixel_x = 0},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/prison) "amL" = (/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/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison) "amM" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "brig_solar_outer"; locked = 1; name = "Engineering External Access"; req_access = list(10,13)},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/foresolar) "amN" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/machinery/door_control{desc = "A remote control switch for the brig foyer."; id = "BrigFoyer"; name = "Brig Foyer Doors"; normaldoorcontrol = 1; pixel_x = 28; pixel_y = -15},/turf/simulated/floor,/area/security/brig) -"amO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Big Brother is watching."; name = "Brig Monitor"; network = list("Prison"); pixel_x = 3; pixel_y = -33},/turf/simulated/floor,/area/security/brig) -"amP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera{c_tag = "Prison Wing Observation"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/security/brig) +"amO" = (/obj/machinery/computer/station_alert/security,/turf/simulated/floor,/area/security/main) +"amP" = (/turf/simulated/floor{icon_state = "dark"},/area/security/armoury) "amQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Big Brother is watching."; name = "Brig Monitor"; network = list("Prison"); pixel_x = -3; pixel_y = -33},/turf/simulated/floor,/area/security/brig) "amR" = (/obj/machinery/flasher{id = "Cell 3"; pixel_x = -28; pixel_y = 0},/obj/structure/bed,/turf/simulated/floor{icon_state = "red"},/area/security/prison) "amS" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/window/southright{dir = 4},/obj/structure/table/reinforced,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/security/lobby) @@ -673,7 +673,7 @@ "amW" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "brig_solar_inner"; locked = 1; name = "Engineering External Access"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/foresolar) "amX" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) "amY" = (/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) -"amZ" = (/obj/machinery/computer/security/wooden_tv,/obj/machinery/camera{c_tag = "Forensic Office"; dir = 4; pixel_x = 0; pixel_y = -22},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) +"amZ" = (/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{icon_state = "dark"},/area/security/armoury) "ana" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/security/brig) "anb" = (/obj/item/device/radio/intercom{pixel_x = 29; pixel_y = -1},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "anc" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/maintenance/security_starboard) @@ -685,11 +685,11 @@ "ani" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) "anj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) "ank" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/highsecurity{name = "Tactical Equipment"; req_access = list(3)},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/security/tactical) -"anl" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/simulated/wall,/area/security/brig) -"anm" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/wall,/area/security/brig) -"ann" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/brig) -"ano" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/door_timer/cell_6{id = "Cell 2"; name = "Cell 2"; pixel_x = 32},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/brig) -"anp" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/prison) +"anl" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"; req_access = list(3)},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/armoury) +"anm" = (/obj/machinery/door_control{id = "Armoury"; name = "Armoury Access"; pixel_x = -1; pixel_y = -28; req_access = list(3)},/turf/simulated/floor{icon_state = "dark"},/area/security/armoury) +"ann" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access = list(3)},/obj/random/projectile,/obj/random/projectile,/obj/random/projectile,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/armoury) +"ano" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access = list(3)},/obj/structure/window/reinforced{dir = 8},/obj/random/energy,/obj/random/energy,/obj/random/energy,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/armoury) +"anp" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/security/armoury) "anq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) "anr" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/disposaloutlet,/turf/simulated/wall,/area/security/prison) "ans" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) @@ -733,9 +733,9 @@ "aoe" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; layer = 3.3; master_tag = "brig_solar_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access = list(13)},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/solar/fore) "aof" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor,/area/security/range) "aog" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/security/prison) -"aoh" = (/obj/machinery/camera{c_tag = "Brig Cell 2"; dir = 2; network = list("SS13","Prison")},/obj/structure/closet/secure_closet/brig{id = "Cell 2"; name = "Cell 2 Locker"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison) +"aoh" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/light{dir = 1},/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access = list(3)},/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/flashshells,/obj/item/weapon/storage/box/stunshells,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/armoury) "aoi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/prison) -"aoj" = (/obj/machinery/camera{c_tag = "Armoury - Tactical Equipment "; dir = 2; network = list("SS13")},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access = list(3)},/obj/structure/table/rack,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/tactical) +"aoj" = (/obj/structure/table/rack,/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access = list(3)},/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/gun/energy/ionrifle,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/armoury) "aok" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/prison) "aol" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/security/prison) "aom" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/southleft,/turf/simulated/floor,/area/security/prison) @@ -744,8 +744,8 @@ "aop" = (/obj/item/device/radio/intercom{desc = "Talk... listen through this."; name = "Station Intercom (Brig Radio)"; pixel_x = 0; pixel_y = 26; wires = 7},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "aoq" = (/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/security/prison) "aor" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) -"aos" = (/obj/machinery/camera{c_tag = "Firing Range"; dir = 8; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/security/range) -"aot" = (/obj/machinery/camera{c_tag = "Security Lobby"; dir = 4; pixel_x = 0; pixel_y = -22},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/table,/obj/item/weapon/book/manual/security_space_law{pixel_y = 6},/turf/simulated/floor,/area/security/lobby) +"aos" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"; req_access = list(3)},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/armoury) +"aot" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor{icon_state = "dark"},/area/security/armoury) "aou" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/lobby) "aov" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/lobby) "aow" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/lobby) @@ -767,7 +767,7 @@ "aoM" = (/obj/machinery/door/blast/regular{id = "Cell 2"; name = "Cell Door"},/turf/simulated/floor,/area/security/prison) "aoN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/prison) "aoO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/prison) -"aoP" = (/obj/machinery/door/blast/regular{dir = 1; id = "Cell 3"; name = "Cell Door"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor,/area/security/prison) +"aoP" = (/obj/machinery/camera/network/security{c_tag = "Security - Medical Station"; dir = 1},/turf/simulated/floor,/area/security/range) "aoQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/prison) "aoR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/prison) "aoS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "brigobs"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/prison) @@ -777,7 +777,7 @@ "aoW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "lawyer_blast"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/lawoffice) "aoX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/solar/auxport) "aoY" = (/obj/structure/cable/yellow,/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) -"aoZ" = (/obj/machinery/door/blast/regular{id = "Armoury"; name = "Emergency Access"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/security/warden) +"aoZ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access = list(3)},/obj/structure/table/rack,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/obj/machinery/camera/network/security{c_tag = "Armoury - Tactical Equipment"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/tactical) "apa" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/evahallway) "apb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/evahallway) "apc" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating,/area/security/brig) @@ -807,7 +807,7 @@ "apA" = (/obj/machinery/requests_console{pixel_x = 30},/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) "apB" = (/obj/structure/disposalpipe/segment,/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"},/turf/simulated/floor/plating,/area/maintenance/dormitory) "apC" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/wood,/area/maintenance/dormitory) -"apD" = (/obj/item/weapon/stool,/obj/effect/decal/cleanable/dirt,/obj/machinery/camera{c_tag = "Solitary Confinement North"; dir = 2; network = list("SS13","Prison")},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/plating,/area/security/brig) +"apD" = (/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera/network/security{c_tag = "Security - Firing Range"; dir = 8},/turf/simulated/floor,/area/security/range) "apE" = (/obj/machinery/light{dir = 8},/obj/structure/bed/chair{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/lobby) "apF" = (/turf/simulated/floor/wood,/area/maintenance/dormitory) "apG" = (/obj/structure/bed/chair/wood/wings,/turf/simulated/floor/wood,/area/maintenance/dormitory) @@ -858,7 +858,7 @@ "aqz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/evahallway) "aqA" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet/crate,/obj/item/weapon/reagent_containers/food/drinks/bottle/wine,/turf/simulated/floor/plating,/area/maintenance/evahallway) "aqB" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/evahallway) -"aqC" = (/obj/machinery/camera{c_tag = "Brig West"; dir = 4; network = list("SS13")},/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/brig) +"aqC" = (/obj/structure/filingcabinet/chestdrawer,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/network/security{c_tag = "Security - Warden's Office"},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "aqD" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/machinery/librarycomp{pixel_y = 0},/obj/structure/table,/turf/simulated/floor,/area/security/prison) "aqE" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/security/prison) "aqF" = (/obj/structure/table,/obj/item/device/taperecorder{pixel_x = -4; pixel_y = 2},/turf/simulated/floor,/area/security/prison) @@ -879,10 +879,10 @@ "aqU" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) "aqV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) "aqW" = (/obj/structure/disposalpipe/segment,/obj/structure/bed/chair/office/light{dir = 8},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) -"aqX" = (/obj/machinery/camera{c_tag = "Detective South"; dir = 1},/obj/machinery/computer/secure_data,/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) +"aqX" = (/obj/structure/cable,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/camera/network/engineering{c_tag = "Solar Maintenance Fore"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/foresolar) "aqY" = (/obj/structure/disposalpipe/segment,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -30},/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) "aqZ" = (/obj/structure/closet{name = "Evidence Closet"},/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/storage/box/evidence,/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) -"ara" = (/obj/machinery/light,/obj/structure/table,/obj/item/device/mass_spectrometer,/obj/item/device/reagent_scanner,/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) +"ara" = (/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor/plating,/area/maintenance/security_starboard) "arb" = (/obj/structure/table,/obj/machinery/newscaster{pixel_y = -32},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/hand_labeler,/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) "arc" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/item/weapon/folder/blue,/obj/item/weapon/pen/blue{pixel_x = 4; pixel_y = 4},/obj/item/weapon/pen/red,/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) "ard" = (/obj/machinery/computer/security,/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) @@ -891,12 +891,12 @@ "arg" = (/obj/structure/table,/obj/item/weapon/dice/d20,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/wood,/area/maintenance/dormitory) "arh" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "dorm_pump"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/maintenance/dormitory) "ari" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/dormitory) -"arj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_command{id_tag = "HoSdoor"; name = "Head of Security"; req_access = list(58)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) +"arj" = (/obj/structure/bed/chair/comfy/black{dir = 1},/obj/effect/landmark/start{name = "Head of Security"},/obj/machinery/door_control{id = "HoSdoor"; name = "Office Door"; normaldoorcontrol = 1; pixel_x = -36; pixel_y = 29},/obj/machinery/button/windowtint{pixel_x = -26; pixel_y = 30},/obj/machinery/door_control{id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = -36; pixel_y = 39; req_access = list(2)},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "ark" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/evahallway) "arl" = (/obj/structure/bed/chair/office/light,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) "arm" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/brig) "arn" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/table/rack,/obj/machinery/door/window/brigdoor{dir = 1; name = "Weapons locker"; req_access = list(3)},/obj/random/handgun,/obj/random/handgun,/obj/random/handgun,/obj/random/handgun,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/warden) -"aro" = (/obj/structure/closet/secure_closet/brig{id = "Cell 2"; name = "Cell 2 Locker"},/obj/machinery/camera{c_tag = "Brig Cell 1"; dir = 2; network = list("SS13","Prison")},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison) +"aro" = (/obj/structure/table/rack,/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/warden) "arp" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/prison) "arq" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/security/prison) "arr" = (/obj/structure/table,/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor,/area/security/prison) @@ -904,7 +904,7 @@ "art" = (/obj/structure/table,/obj/item/weapon/newspaper,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/security/prison) "aru" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor,/area/security/prison) "arv" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/window/brigdoor{dir = 1; name = "Weapons locker"; req_access = list(3)},/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/item/clothing/suit/storage/vest/heavy/officer,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/warden) -"arw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/security/prison) +"arw" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor/plating,/area/maintenance/security_starboard) "arx" = (/turf/simulated/wall/r_wall,/area/security/lobby) "ary" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plating,/area/maintenance/security_starboard) "arz" = (/obj/structure/closet/crate/secure{name = "FOR DISPOSAL"; req_access = list(58)},/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/balaclava,/obj/effect/decal/cleanable/cobweb2,/obj/item/clothing/mask/muzzle,/obj/item/weapon/reagent_containers/ld50_syringe/choral,/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/security_port) @@ -915,7 +915,7 @@ "arE" = (/turf/simulated/wall,/area/hallway/primary/fore) "arF" = (/obj/structure/closet{name = "Evidence Closet"},/obj/machinery/door_control{id = "lawyer_blast"; name = "Privacy Shutters"; pixel_y = -25},/obj/item/device/taperecorder{pixel_x = -4; pixel_y = 2},/obj/item/device/camera{pixel_x = 3; pixel_y = -4},/obj/item/device/flash,/obj/item/device/flash,/obj/item/weapon/storage/secure/briefcase,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) "arG" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) -"arH" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/hand_labeler,/obj/item/weapon/pen,/obj/structure/cable/green,/obj/machinery/camera{c_tag = "Internal Affairs Office"; dir = 1},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) +"arH" = (/obj/machinery/deployable/barrier,/obj/structure/sign/securearea{name = "\improper ARMORY"; pixel_y = 32},/obj/machinery/camera/network/security{c_tag = "Armoury"},/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) "arI" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/security/detectives_office) "arJ" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/dormitory) "arK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/dormitory) @@ -923,17 +923,17 @@ "arM" = (/obj/structure/bed/chair{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/lobby) "arN" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/wood,/area/maintenance/dormitory) "arO" = (/obj/structure/table,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/weapon/storage/box/donut,/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) -"arP" = (/obj/structure/table/rack,/obj/structure/window/reinforced,/obj/machinery/door/window/brigdoor{dir = 1; name = "Weapons locker"; req_access = list(3)},/obj/structure/window/reinforced{dir = 4},/obj/item/clothing/suit/armor/laserproof{pixel_x = 2; pixel_y = 2},/obj/item/clothing/suit/armor/laserproof{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) +"arP" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/camera/network/security{c_tag = "Security - Equipment North"; dir = 4},/turf/simulated/floor,/area/security/main) "arQ" = (/obj/structure/bed/chair/office/dark,/obj/effect/landmark/start{name = "Internal Affairs Agent"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) "arR" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/security/brig) -"arS" = (/obj/structure/table/rack,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor{dir = 1; name = "Weapons locker"; req_access = list(3)},/obj/item/clothing/suit/armor/bulletproof{pixel_x = 2; pixel_y = 2},/obj/item/clothing/suit/armor/bulletproof{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) +"arS" = (/obj/structure/table/rack,/obj/structure/window/reinforced,/obj/machinery/door/window/brigdoor{dir = 1; name = "Weapons locker"; req_access = list(3)},/obj/structure/window/reinforced{dir = 4},/obj/item/clothing/suit/armor/laserproof{pixel_x = 2; pixel_y = 2},/obj/item/clothing/suit/armor/laserproof{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/armoury) "arT" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor,/area/security/brig) "arU" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/security/brig) "arV" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/status_display{density = 0; layer = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/hallway/primary/central_one) "arW" = (/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison) "arX" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/hallway/primary/central_one) "arY" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/prison) -"arZ" = (/obj/item/weapon/stool,/obj/effect/decal/cleanable/dirt,/obj/machinery/camera{c_tag = "Solitary Confinement South"; dir = 2; network = list("SS13","Prison")},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/plating,/area/security/brig) +"arZ" = (/obj/structure/table/rack,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor{dir = 1; name = "Weapons locker"; req_access = list(3)},/obj/item/clothing/suit/armor/bulletproof{pixel_x = 2; pixel_y = 2},/obj/item/clothing/suit/armor/bulletproof{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/armoury) "asa" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 1},/turf/simulated/floor/wood,/area/maintenance/dormitory) "asb" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/plating,/area/maintenance/evahallway) "asc" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor,/area/security/prison) @@ -986,7 +986,7 @@ "asX" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/port) "asY" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/hallway/primary/port) "asZ" = (/turf/simulated/wall/r_wall,/area/maintenance/dormitory) -"ata" = (/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/floor/plating,/area/maintenance/dormitory) +"ata" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/camera/network/civilian_west{c_tag = "Tool Storage - Auxiliary"},/turf/simulated/floor,/area/storage/tools) "atb" = (/obj/structure/table/rack{dir = 1},/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/dormitory) "atc" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/mask/gas,/obj/item/clothing/glasses/meson,/turf/simulated/floor/plating,/area/maintenance/dormitory) "atd" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor/plating,/area/maintenance/dormitory) @@ -1020,15 +1020,15 @@ "atF" = (/turf/simulated/wall/r_wall,/area/crew_quarters/sleep/cryo) "atG" = (/obj/structure/cryofeed/right,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep/cryo) "atH" = (/obj/machinery/cryopod/right,/obj/machinery/light{dir = 1},/obj/machinery/requests_console{department = "Crew Quarters"; pixel_y = 30},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep/cryo) -"atI" = (/obj/machinery/camera{c_tag = "Cryogenic Storage"},/obj/machinery/alarm{pixel_y = 23},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/landmark{name = "JoinLateCryo"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep/cryo) -"atJ" = (/obj/machinery/computer/cryopod{density = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep/cryo) +"atI" = (/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced{dir = 8},/obj/machinery/alarm{pixel_y = 22},/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) +"atJ" = (/obj/machinery/light{dir = 1},/obj/structure/sign/directions/evac{dir = 4; icon_state = "direction_evac"; pixel_y = 24; tag = "icon-direction_evac (EAST)"},/obj/structure/sign/directions/security{dir = 1; icon_state = "direction_sec"; pixel_y = 40; tag = "icon-direction_sec (NORTH)"},/obj/structure/sign/directions/medical{dir = 4; icon_state = "direction_med"; pixel_y = 32; tag = "icon-direction_med (EAST)"},/obj/machinery/camera/network/exodus{c_tag = "Primary Hallway Central - North"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central_one) "atK" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/effect/landmark{name = "JoinLateCryo"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep/cryo) "atL" = (/obj/machinery/cryopod,/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep/cryo) "atM" = (/obj/structure/cryofeed,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep/cryo) "atN" = (/turf/simulated/wall/r_wall,/area/crew_quarters/fitness) "atO" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/crew_quarters/fitness) "atP" = (/turf/simulated/wall,/area/crew_quarters/fitness) -"atQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera{c_tag = "Holodeck North"; dir = 2; network = list("SS13"); pixel_y = -6},/turf/simulated/floor/plating,/area/crew_quarters/fitness) +"atQ" = (/obj/structure/dispenser/oxygen,/obj/machinery/camera/network/security{c_tag = "EVA South"; dir = 1},/turf/simulated/floor,/area/ai_monitored/storage/eva) "atR" = (/turf/simulated/floor/engine{name = "Holodeck Projector Floor"},/area/holodeck/alphadeck) "atS" = (/turf/simulated/wall/r_wall,/area/hallway/secondary/entry/fore) "atT" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/escape_pod1/station) @@ -1059,7 +1059,7 @@ "aus" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore) "aut" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/security/prison) "auu" = (/obj/machinery/door/window/northright{base_state = "right"; dir = 8; icon_state = "right"; name = "Library Desk Door"; req_access = list(37)},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/library) -"auv" = (/obj/structure/bed,/obj/item/weapon/bedsheet/orange,/obj/machinery/camera{c_tag = "Bedroom"; dir = 6; network = list("SS13","Prison")},/turf/simulated/floor,/area/security/prison) +"auv" = (/obj/machinery/light,/obj/machinery/flasher/portable,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/armoury) "auw" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) "aux" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "neutral"; dir = 9},/area/crew_quarters/sleep) "auy" = (/obj/machinery/alarm{pixel_y = 23},/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor{icon_state = "neutral"; dir = 5},/area/crew_quarters/sleep) @@ -1082,7 +1082,7 @@ "auP" = (/obj/machinery/light{dir = 1},/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/crew_quarters/fitness) "auQ" = (/turf/simulated/wall,/area/maintenance/arrivals) "auR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/arrivals) -"auS" = (/obj/machinery/door/airlock/external{frequency = 1331; icon_state = "door_locked"; id_tag = "nuke_shuttle_dock_outer"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) +"auS" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "dark"},/area/security/armoury) "auT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/maintenance/arrivals) "auU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/arrivals) "auV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/arrivals) @@ -1091,7 +1091,7 @@ "auY" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor{icon_state = "freezerfloor"},/area/security/prison) "auZ" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "freezerfloor"},/area/security/prison) "ava" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 30},/turf/simulated/floor{icon_state = "freezerfloor"},/area/security/prison) -"avb" = (/obj/structure/table,/obj/item/weapon/paper_bin,/obj/machinery/camera{c_tag = "Common Brig Southwest"; dir = 4; network = list("SS13")},/obj/item/weapon/pen,/turf/simulated/floor,/area/security/prison) +"avb" = (/obj/machinery/light,/obj/machinery/flasher/portable,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/armoury) "avc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness) "avd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/security/prison) "ave" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/security/prison) @@ -1118,7 +1118,7 @@ "avz" = (/obj/item/weapon/stool,/turf/simulated/floor,/area/security/prison) "avA" = (/obj/structure/bed,/obj/item/weapon/bedsheet/mime,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor/wood,/area/crew_quarters/sleep/bedrooms) "avB" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/escape_pod1/station) -"avC" = (/obj/machinery/door/airlock/external{frequency = 1331; icon_state = "door_locked"; id_tag = "nuke_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) +"avC" = (/obj/machinery/flasher/portable,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/armoury) "avD" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/escape_pod1/station) "avE" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/escape_pod2/station) "avF" = (/obj/machinery/door/morgue{dir = 2; name = "Private Study"; req_access = list(37)},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/library) @@ -1135,8 +1135,8 @@ "avQ" = (/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) "avR" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/cobweb,/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating,/area/maintenance/locker) "avS" = (/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eva_sensor"; pixel_x = 0; pixel_y = 25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "eva_pump"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/maintenance/evahallway) -"avT" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1331; id_tag = "nuke_shuttle_dock_airlock"; pixel_x = 0; pixel_y = 30; req_access = list(0); req_one_access = list(13); tag_airpump = "nuke_shuttle_dock_pump"; tag_chamber_sensor = "nuke_shuttle_dock_sensor"; tag_exterior_door = "nuke_shuttle_dock_outer"; tag_interior_door = "nuke_shuttle_dock_inner"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry/port) -"avU" = (/obj/machinery/door/airlock/external{frequency = 1331; icon_state = "door_locked"; id_tag = "nuke_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) +"avT" = (/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; frequency = 1475; listening = 1; name = "Station Intercom (Security)"; pixel_x = 30; pixel_y = 0},/obj/machinery/camera/network/security{c_tag = "Security - Briefing"; dir = 8},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) +"avU" = (/obj/machinery/door/airlock/external{frequency = 1331; icon_state = "door_locked"; id_tag = "nuke_shuttle_dock_outer"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) "avV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/fitness) "avW" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/evahallway) "avX" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/evahallway) @@ -1150,7 +1150,7 @@ "awf" = (/obj/item/weapon/stool,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/crew_quarters/fitness) "awg" = (/obj/structure/table,/obj/structure/bedsheetbin,/turf/simulated/floor,/area/security/prison) "awh" = (/obj/structure/closet{name = "Prisoner's Locker"},/obj/item/clothing/head/soft/orange,/obj/item/clothing/shoes/sandal,/turf/simulated/floor,/area/security/prison) -"awi" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "nuke_shuttle_dock_airlock"; name = "interior access button"; pixel_x = -28; pixel_y = 25; req_one_access = list(13)},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry/port) +"awi" = (/obj/machinery/door/airlock/external{frequency = 1331; icon_state = "door_locked"; id_tag = "nuke_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) "awj" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/bedrooms) "awk" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Auxiliary Tool Storage"; req_access = list(12)},/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,/area/hallway/primary/port) "awl" = (/obj/structure/closet{name = "Prisoner's Locker"},/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe,/obj/item/clothing/suit/apron/overalls,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) @@ -1163,7 +1163,7 @@ "aws" = (/obj/machinery/door/airlock/glass{name = "Cryogenic Storage"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/crew_quarters/sleep/cryo) "awt" = (/obj/machinery/door/airlock/glass{name = "Cryogenic Storage"},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/crew_quarters/sleep/cryo) "awu" = (/obj/machinery/door/airlock/glass{name = "Cryogenic Storage"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/crew_quarters/sleep/cryo) -"awv" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/structure/disposalpipe/segment,/obj/machinery/camera{c_tag = "Fitness Room West"; dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/fitness) +"awv" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/camera/network/civilian_east{c_tag = "Hydroponics Pasture West"; dir = 4},/turf/simulated/floor{dir = 9; icon_state = "green"},/area/hydroponics) "aww" = (/turf/simulated/floor{dir = 6; icon_state = "whitehall"},/area/crew_quarters/fitness) "awx" = (/obj/machinery/light,/obj/structure/bed,/obj/item/weapon/bedsheet/orange,/turf/simulated/floor,/area/security/prison) "awy" = (/obj/structure/bed,/obj/item/weapon/bedsheet/orange,/turf/simulated/floor,/area/security/prison) @@ -1185,7 +1185,7 @@ "awO" = (/obj/structure/table/reinforced,/obj/machinery/door/blast/shutters{dir = 2; id = "bar"; layer = 3.1; name = "Bar Shutters"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "awP" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating/airless,/area/maintenance/evahallway) "awQ" = (/obj/machinery/light/small,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/maintenance/evahallway) -"awR" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "eva_pump"},/obj/machinery/camera{c_tag = "EVA Airlock"; dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/evahallway) +"awR" = (/obj/item/device/radio/intercom{pixel_x = 25},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/camera/network/civilian_east{c_tag = "Hydroponics Pasture East"; dir = 8},/turf/simulated/floor{dir = 5; icon_state = "green"},/area/hydroponics) "awS" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/blood/oil,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/evahallway) "awT" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/evahallway) "awU" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/carpet{tag = "icon-carpet3-0"; icon_state = "carpet3-0"},/area/crew_quarters/sleep/bedrooms) @@ -1197,7 +1197,7 @@ "axa" = (/obj/machinery/door/airlock{id_tag = "Dormitory 1"; name = "Dorm"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/wood,/area/crew_quarters/sleep) "axb" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/sleep) "axc" = (/obj/machinery/atm{pixel_y = 28},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/sleep) -"axd" = (/obj/machinery/camera{c_tag = "Dormitories"},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/sleep) +"axd" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/network/exodus{c_tag = "Primary Hallway Central - Northeast"},/turf/simulated/floor,/area/hallway/primary/central_two) "axe" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/sleep) "axf" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/sleep) "axg" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/sleep) @@ -1214,13 +1214,13 @@ "axr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/crew_quarters/fitness) "axs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/crew_quarters/fitness) "axt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor,/area/crew_quarters/fitness) -"axu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera{c_tag = "Fitness Room East"; dir = 1},/turf/simulated/floor,/area/crew_quarters/fitness) +"axu" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/network/exodus{c_tag = "Primary Hallway Central - Northwest"},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/primary/central_one) "axv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/fitness) "axw" = (/obj/machinery/door/window/eastright{name = "Hydroponics Delivery"; icon_state = "right"; dir = 2; req_access = list(35)},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics) "axx" = (/obj/structure/sign/pods,/turf/simulated/wall,/area/hallway/secondary/entry/fore) "axy" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/central_one) "axz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/power/apc/high{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry/port) -"axA" = (/obj/machinery/camera{c_tag = "Arrivals East"; dir = 8; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry/port) +"axA" = (/obj/structure/flora/pottedplant{tag = "icon-plant-22"; icon_state = "plant-22"},/obj/machinery/camera/network/civilian_east{c_tag = "Bar East"},/turf/simulated/floor/wood,/area/crew_quarters/bar) "axB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "axC" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "E.V.A."; req_one_access = list(1,11,18,24)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central_one) "axD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/evahallway) @@ -1262,7 +1262,7 @@ "ayn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) "ayo" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry/fore) "ayp" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{frequency = 1380; id_tag = "escape_pod_1_berth"; pixel_x = -25; pixel_y = 30; tag_door = "escape_pod_1_berth_hatch"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry/fore) -"ayq" = (/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/light{dir = 1},/obj/machinery/camera/xray{c_tag = "Arrivals Escape Pods"},/turf/simulated/floor,/area/hallway/secondary/entry/fore) +"ayq" = (/obj/machinery/camera/network/exodus{c_tag = "Arrivals Southwest"},/turf/simulated/floor,/area/hallway/secondary/entry/port) "ayr" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{frequency = 1380; id_tag = "escape_pod_2_berth"; pixel_x = -25; pixel_y = 30; tag_door = "escape_pod_2_berth_hatch"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry/fore) "ays" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry/fore) "ayt" = (/obj/machinery/light{dir = 1},/obj/machinery/power/apc/high{dir = 1; name = "north bump"; pixel_y = 24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry/fore) @@ -1286,11 +1286,11 @@ "ayL" = (/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva) "ayM" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva) "ayN" = (/obj/structure/closet/coffin,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "chapel"; name = "Privacy Shutters"; opacity = 0},/obj/machinery/door/window/eastleft{dir = 8; name = "Coffin Storage"; req_access = list(22)},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) -"ayO" = (/obj/machinery/camera{c_tag = "Fore Primary Hallway"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) +"ayO" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/camera/network/civilian_west{c_tag = "Vacant Office"; dir = 1},/turf/simulated/floor,/area/security/vacantoffice) "ayP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/fore) "ayQ" = (/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore) "ayR" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/sleep) -"ayS" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/camera{c_tag = "Dormitory Bedroom Fore"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/carpet{tag = "icon-carpet2-0"; icon_state = "carpet2-0"},/area/crew_quarters/sleep/bedrooms) +"ayS" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/effect/landmark{name = "blobstart"},/obj/machinery/camera/network/command{c_tag = "Bridge Conference Room"},/turf/simulated/floor/wood,/area/bridge/meeting_room) "ayT" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/crew_quarters/sleep) "ayU" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/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/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/sleep) "ayV" = (/obj/structure/closet/lasertag/blue,/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) @@ -1367,7 +1367,7 @@ "aAo" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_x = -2; pixel_y = -28},/turf/simulated/floor{dir = 10; icon_state = "neutral"},/area/crew_quarters/fitness) "aAp" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/crew_quarters/fitness) "aAq" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/crew_quarters/fitness) -"aAr" = (/obj/machinery/camera{c_tag = "Fore Starboard Solars"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Fore Starboard"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) +"aAr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Big Brother is watching."; name = "Brig Monitor"; network = list("Prison"); pixel_x = 3; pixel_y = -33},/obj/machinery/computer/station_alert/security,/turf/simulated/floor,/area/security/brig) "aAs" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Fore Port"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "aAt" = (/obj/structure/bed,/obj/item/weapon/bedsheet/mime,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/sleep/bedrooms) "aAu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) @@ -1402,9 +1402,9 @@ "aAX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "aAY" = (/turf/simulated/floor/carpet{tag = "icon-carpet3-0"; icon_state = "carpet3-0"},/area/crew_quarters/sleep/bedrooms) "aAZ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/fitness) -"aBa" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera{c_tag = "Holodeck South"; dir = 1; pixel_y = 6},/turf/simulated/floor/plating,/area/crew_quarters/fitness) +"aBa" = (/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) "aBb" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{id_tag = "Dormitory 2"; name = "Dorm"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep) -"aBc" = (/obj/machinery/camera{c_tag = "Dormitory Bedroom Aft"; dir = 1},/turf/simulated/floor/carpet{tag = "icon-carpet1-0"; icon_state = "carpet1-0"},/area/crew_quarters/sleep/bedrooms) +"aBc" = (/obj/structure/table,/obj/machinery/camera/network/exodus{c_tag = "Primary Hallway Port - East"; dir = 1},/turf/simulated/floor,/area/hallway/primary/port) "aBd" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 2},/area/crew_quarters/sleep) "aBe" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/flora/pottedplant{tag = "icon-plant-22"; icon_state = "plant-22"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/sleep) "aBf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness) @@ -1432,7 +1432,7 @@ "aBB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) "aBC" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry/fore) "aBD" = (/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry/fore) -"aBE" = (/obj/machinery/camera{c_tag = "Arrivals North"; dir = 1},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry/fore) +"aBE" = (/obj/structure/extinguisher_cabinet{pixel_x = -24},/obj/machinery/camera/network/exodus{c_tag = "Arrivals Southeast"; dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry/port) "aBF" = (/obj/machinery/vending/coffee,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/entry/fore) "aBG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) "aBH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) @@ -1442,9 +1442,9 @@ "aBL" = (/turf/simulated/wall,/area/hallway/secondary/entry/port) "aBM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/security/checkpoint2) "aBN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint2) -"aBO" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 6; icon_state = "intact"; tag = "icon-intact-f (SOUTHEAST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/arrivals) +"aBO" = (/obj/structure/bed/chair{dir = 8},/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/evahallway) "aBP" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/maintenance/arrivals) -"aBQ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera{c_tag = "Fore Starboard Solar Access"; dir = 1},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/maintenance/library) +"aBQ" = (/obj/machinery/camera/network/exodus{c_tag = "Bridge East Entrance"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central_two) "aBR" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "aBS" = (/obj/machinery/power/terminal,/obj/machinery/light/small{dir = 4},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "aBT" = (/obj/item/weapon/extinguisher,/obj/effect/decal/cleanable/generic,/turf/simulated/floor/plating,/area/maintenance/evahallway) @@ -1458,11 +1458,11 @@ "aCb" = (/obj/machinery/gateway/centerstation,/turf/simulated/floor{icon_state = "dark"},/area/gateway) "aCc" = (/obj/machinery/gateway{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/gateway) "aCd" = (/obj/machinery/light/small{dir = 4},/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/evahallway) -"aCe" = (/obj/machinery/requests_console{department = "EVA"; pixel_x = -32; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/table/reinforced,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/device/multitool,/obj/machinery/camera{c_tag = "EVA North"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aCe" = (/obj/item/device/radio/beacon,/obj/machinery/camera/network/exodus{c_tag = "Arrivals South"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry/port) "aCf" = (/turf/simulated/floor,/area/ai_monitored/storage/eva) "aCg" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aCh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) -"aCi" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/table/reinforced,/obj/item/stack/sheet/glass/reinforced{amount = 50},/obj/item/stack/rods{amount = 50},/obj/machinery/camera{c_tag = "EVA East"; dir = 8},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aCi" = (/obj/machinery/light,/obj/machinery/camera/network/exodus{c_tag = "Bridge West Entrance"; dir = 1},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/hallway/primary/central_one) "aCj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "aCk" = (/obj/machinery/suit_cycler/security,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) "aCl" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore) @@ -1487,9 +1487,9 @@ "aCE" = (/turf/simulated/wall,/area/security/checkpoint2) "aCF" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/obj/machinery/meter,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/maintenance/arrivals) "aCG" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/arrivals) -"aCH" = (/obj/machinery/camera{c_tag = "Fore Port Solar Control"; dir = 1},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) +"aCH" = (/obj/machinery/camera/network/exodus{c_tag = "Departures East"; dir = 8},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit) "aCI" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) -"aCJ" = (/obj/machinery/camera{c_tag = "Fore Port Solar Access"},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/arrivals) +"aCJ" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Bridge"; departmentType = 5; name = "Bridge RC"; pixel_y = -30},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/network/command{c_tag = "Bridge Center"; dir = 1},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "aCK" = (/turf/simulated/wall,/area/storage/primary) "aCL" = (/obj/structure/table/reinforced,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/chemical_dispenser/bar_soft/full,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aCM" = (/turf/simulated/wall/r_wall,/area/storage/primary) @@ -1519,7 +1519,7 @@ "aDk" = (/obj/structure/urinal{pixel_y = 32},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aDl" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/item/weapon/bikehorn/rubberducky,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aDm" = (/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/crew_quarters/bar) -"aDn" = (/obj/machinery/camera{c_tag = "Bar Storage"},/obj/structure/table/woodentable,/obj/machinery/reagentgrinder,/obj/item/weapon/packageWrap,/turf/simulated/floor/wood,/area/crew_quarters/bar) +"aDn" = (/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/port) "aDo" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/item/weapon/gun/projectile/shotgun/doublebarrel,/obj/item/weapon/paper{info = "This permit signifies that the Bartender is permitted to posess this firearm in the bar, and ONLY the bar. Failure to adhere to this permit will result in confiscation of the weapon and possibly arrest."; name = "Shotgun permit"},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/bar) "aDp" = (/turf/simulated/wall,/area/crew_quarters/bar) "aDq" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/bar) @@ -1562,7 +1562,7 @@ "aEb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/storage/primary) "aEc" = (/obj/structure/table,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/storage/primary) "aEd" = (/obj/structure/table,/obj/machinery/alarm{pixel_y = 23},/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/storage/primary) -"aEe" = (/obj/structure/table,/obj/machinery/camera{c_tag = "Primary Tool Storage"},/obj/machinery/requests_console{department = "Tool Storage"; departmentType = 0; pixel_y = 30},/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/storage/primary) +"aEe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/security/brig) "aEf" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/storage/primary) "aEg" = (/obj/structure/table,/obj/machinery/light_switch{pixel_y = 28},/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/storage/primary) "aEh" = (/obj/structure/table,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/storage/primary) @@ -1586,7 +1586,7 @@ "aEz" = (/obj/structure/table/reinforced{icon_state = "table"},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 6},/obj/item/weapon/storage/briefcase/inflatable{pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = -3},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) "aEA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "aEB" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/clothing/shoes/magboots,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) -"aEC" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) +"aEC" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1331; id_tag = "nuke_shuttle_dock_pump"},/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "nuke_shuttle_dock_sensor"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/entry/port) "aED" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/hallway/primary/central_one) "aEE" = (/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/hallway/primary/central_one) "aEF" = (/obj/structure/table/woodentable,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/weapon/tape_roll,/turf/simulated/floor/wood,/area/library) @@ -1605,7 +1605,7 @@ "aES" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donut,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/crew_quarters/captain) "aET" = (/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j1s"; sortType = "Bar"; name = "Bar"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/bar) "aEU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_east) -"aEV" = (/obj/machinery/camera{c_tag = "Dormitory South"; c_tag_order = 999; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/sleep) +"aEV" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/camera/network/exodus{c_tag = "Primary Hallway Port - West"; dir = 1},/turf/simulated/floor,/area/hallway/primary/port) "aEW" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/library) "aEX" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aEY" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) @@ -1617,7 +1617,7 @@ "aFe" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/library) "aFf" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor/plating,/area/maintenance/library) "aFg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/library) -"aFh" = (/obj/effect/decal/cleanable/generic,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/library) +"aFh" = (/obj/effect/decal/cleanable/generic,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/library) "aFi" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/maintenance/library) "aFj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "dark"},/area/maintenance/library) "aFk" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/shuttle/arrival/station) @@ -1644,7 +1644,7 @@ "aFF" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/entry/port) "aFG" = (/obj/machinery/light/small{dir = 1},/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{frequency = 1380; id_tag = "escape_dock_south_airlock"; master_tag = "escape_dock"; pixel_y = -30; req_one_access = list(13); tag_airlock_mech_sensor = "escape_dock_south_mech"; tag_airpump = "escape_dock_south_pump"; tag_chamber_sensor = "escape_dock_south_sensor"; tag_exterior_door = "escape_dock_south_outer"; tag_interior_door = "escape_dock_south_inner"; tag_shuttle_mech_sensor = "shuttle_dock_south_mech"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "escape_dock_south_pump"},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "aFH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/substation/civilian_west) -"aFI" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_south_mech"; pixel_y = 19},/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"aFI" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1331; id_tag = "nuke_shuttle_dock_pump"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry/port) "aFJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/storage/primary) "aFK" = (/obj/effect/landmark/start{name = "Assistant"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/storage/primary) "aFL" = (/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) @@ -1654,25 +1654,25 @@ "aFP" = (/obj/item/weapon/stool,/turf/simulated/floor,/area/gateway) "aFQ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "vault"},/area/security/nuke_storage) "aFR" = (/obj/item/weapon/coin/silver{pixel_x = 7; pixel_y = 12},/obj/item/weapon/coin/silver{pixel_x = 12; pixel_y = 7},/obj/item/weapon/coin/silver{pixel_x = 4; pixel_y = 8},/obj/item/weapon/coin/silver{pixel_x = -6; pixel_y = 5},/obj/item/weapon/coin/silver{pixel_x = 5; pixel_y = -8},/obj/structure/closet/crate{name = "Silver Crate"},/turf/simulated/floor{icon_state = "vault"; dir = 4},/area/security/nuke_storage) -"aFS" = (/obj/machinery/camera{c_tag = "Gateway"; dir = 4; network = list("SS13")},/obj/machinery/vending/coffee,/turf/simulated/floor,/area/gateway) +"aFS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) "aFT" = (/turf/simulated/floor,/area/gateway) "aFU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/gateway) "aFV" = (/obj/structure/sign/biohazard{pixel_x = 32},/obj/structure/closet/wardrobe/xenos,/turf/simulated/floor,/area/gateway) "aFW" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/evahallway) "aFX" = (/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/table/reinforced,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "aFY" = (/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) -"aFZ" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "escape_dock_south_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = -25; req_one_access = list(13)},/turf/simulated/floor,/area/hallway/secondary/exit) +"aFZ" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1331; id_tag = "nuke_shuttle_dock_airlock"; pixel_x = 0; pixel_y = 30; req_access = list(0); req_one_access = list(13); tag_airpump = "nuke_shuttle_dock_pump"; tag_chamber_sensor = "nuke_shuttle_dock_sensor"; tag_exterior_door = "nuke_shuttle_dock_outer"; tag_interior_door = "nuke_shuttle_dock_inner"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry/port) "aGa" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aGb" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) "aGc" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/fore) "aGd" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore) "aGe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/machinery/door/firedoor/border_only,/turf/simulated/wall,/area/hallway/secondary/entry/port) -"aGf" = (/obj/machinery/camera{c_tag = "Arrivals West"},/turf/simulated/floor,/area/hallway/secondary/entry/port) +"aGf" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/camera/network/exodus{c_tag = "Arrivals Hallway"; dir = 8},/turf/simulated/floor,/area/hallway/secondary/entry/starboard) "aGg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) "aGh" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/entry/port) "aGi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) "aGj" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/sleep) -"aGk" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1331; master_tag = "nuke_shuttle_dock_airlock"; name = "exterior access button"; pixel_x = -5; pixel_y = 32; req_one_access = list(13)},/turf/space,/area/space) +"aGk" = (/obj/machinery/door/airlock/external{frequency = 1331; icon_state = "door_locked"; id_tag = "nuke_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) "aGl" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aGm" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aGn" = (/obj/structure/sign/poster{pixel_x = 0; pixel_y = 0},/turf/simulated/wall,/area/crew_quarters/toilet) @@ -1685,7 +1685,7 @@ "aGu" = (/obj/item/weapon/cigbutt,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/dormitory) "aGv" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_east) "aGw" = (/obj/effect/decal/cleanable/dirt,/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/bar) -"aGx" = (/obj/structure/table,/obj/machinery/camera{c_tag = "Bridge East"; dir = 2},/obj/item/weapon/storage/box/donut,/obj/structure/noticeboard{pixel_y = 27},/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/bridge) +"aGx" = (/obj/machinery/vending/dinnerware,/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/camera/network/civilian_east{c_tag = "Kitchen"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "aGy" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/auxsolarstarboard) "aGz" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/sleep) "aGA" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/library) @@ -1703,13 +1703,13 @@ "aGM" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/shuttle/arrival/station) "aGN" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 8},/turf/space,/area/shuttle/arrival/station) "aGO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) -"aGP" = (/obj/machinery/camera{c_tag = "Security Checkpoint"; dir = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/checkpoint2) +"aGP" = (/obj/structure/flora/ausbushes/brflowers,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera/network/civilian_east{c_tag = "Hydroponics Pasture South"; dir = 8},/turf/simulated/floor/grass,/area/hydroponics/garden) "aGQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_west) "aGR" = (/obj/structure/table/reinforced,/obj/machinery/computer/skills{icon_state = "medlaptop"},/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2) "aGS" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2) "aGT" = (/obj/machinery/recharger{pixel_y = 4},/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2) "aGU" = (/obj/item/weapon/crowbar,/obj/item/device/flash,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/checkpoint2) -"aGV" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_north_mech"; pixel_y = -19},/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"aGV" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "nuke_shuttle_dock_airlock"; name = "interior access button"; pixel_x = -28; pixel_y = 25; req_one_access = list(13)},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry/port) "aGW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/terminal,/turf/simulated/floor/plating,/area/maintenance/substation/civilian_west) "aGX" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/secondary/entry/starboard) "aGY" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/hallway/secondary/entry/port) @@ -1748,7 +1748,7 @@ "aHF" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 8},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aHG" = (/obj/machinery/light/small{dir = 8},/obj/machinery/recharge_station,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aHH" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar) -"aHI" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "escape_dock_north_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_one_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor,/area/hallway/secondary/exit) +"aHI" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/maintenance/locker) "aHJ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_north_mech"; pixel_y = -19},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "aHK" = (/obj/structure/disposalpipe/segment{dir = 4},/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"},/turf/simulated/floor/plating,/area/maintenance/bar) "aHL" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j1"; dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/bar) @@ -1776,7 +1776,7 @@ "aIh" = (/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/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "aIi" = (/obj/structure/closet/wardrobe/chaplain_black,/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "aIj" = (/obj/machinery/light/small{dir = 1},/obj/machinery/requests_console{department = "Chapel"; departmentType = 2; pixel_y = 30},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) -"aIk" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/camera{c_tag = "Chapel Office"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) +"aIk" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/camera/network/civilian_east{c_tag = "Chapel South"; dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "aIl" = (/obj/machinery/door_control{id = "chapel"; name = "Privacy Shutters"; pixel_y = 25},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "aIm" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/rag,/obj/structure/noticeboard{pixel_x = -30; pixel_y = 0},/obj/machinery/door/blast/shutters{dir = 2; id = "bar"; layer = 3.1; name = "Bar Shutters"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aIn" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "centcom_shuttle_dock_airlock"; name = "interior access button"; pixel_x = -30; pixel_y = 25; req_one_access = list(13)},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/turf/simulated/floor,/area/hallway/secondary/entry/aft) @@ -1791,11 +1791,11 @@ "aIw" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/arrival/station) "aIx" = (/obj/effect/landmark{name = "Observer-Start"},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "aIy" = (/obj/machinery/hologram/holopad,/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) -"aIz" = (/obj/machinery/camera{c_tag = "Arrivals Lounge"; dir = 2},/obj/machinery/light{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/secondary/entry/starboard) +"aIz" = (/obj/machinery/camera/network/civilian_east{c_tag = "Library Central"; dir = 8},/turf/simulated/floor/wood,/area/library) "aIA" = (/turf/simulated/wall,/area/hallway/secondary/entry/starboard) "aIB" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/secondary/entry/starboard) "aIC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/starboard) -"aID" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "centcom_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) +"aID" = (/obj/effect/landmark{name = "blobstart"},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plating,/area/maintenance/locker) "aIE" = (/obj/structure/sign/double/map/left,/turf/simulated/wall,/area/hallway/secondary/entry/starboard) "aIF" = (/obj/structure/sign/double/map/right,/turf/simulated/wall,/area/hallway/secondary/entry/starboard) "aIG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/secondary/entry/starboard) @@ -1827,7 +1827,7 @@ "aJg" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/central_one) "aJh" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central_one) "aJi" = (/turf/simulated/wall/r_wall,/area/hallway/primary/central_two) -"aJj" = (/obj/structure/bed/chair/office/dark,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/camera{c_tag = "Library North"; dir = 2; network = list("SS13")},/turf/simulated/floor/wood,/area/library) +"aJj" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera/network/civilian_east{c_tag = "Chapel Crematorium"; dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "aJk" = (/obj/structure/bed/chair/office/dark,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/library) "aJl" = (/turf/simulated/wall,/area/hallway/primary/central_two) "aJm" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) @@ -1903,7 +1903,7 @@ "aKE" = (/obj/machinery/suit_cycler/mining,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) "aKF" = (/obj/structure/reagent_dispensers/fueltank,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "aKG" = (/obj/structure/reagent_dispensers/watertank,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/ai_monitored/storage/eva) -"aKH" = (/obj/machinery/camera{c_tag = "EVA South"; dir = 1},/obj/structure/dispenser/oxygen,/turf/simulated/floor,/area/ai_monitored/storage/eva) +"aKH" = (/obj/item/device/radio/intercom{pixel_x = -25},/obj/machinery/camera/network/exodus{c_tag = "Departures West"; dir = 4},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit) "aKI" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) "aKJ" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "aKK" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) @@ -1911,7 +1911,7 @@ "aKM" = (/obj/machinery/door/airlock/glass_command{id_tag = "sbridgedoor"; name = "Bridge"; req_access = list(19)},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/bridge) "aKN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/central_one) "aKO" = (/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/primary/central_one) -"aKP" = (/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Central Hallway North"; dir = 2},/obj/structure/sign/directions/evac{dir = 4; icon_state = "direction_evac"; pixel_y = 24; tag = "icon-direction_evac (EAST)"},/obj/structure/sign/directions/security{dir = 1; icon_state = "direction_sec"; pixel_y = 40; tag = "icon-direction_sec (NORTH)"},/obj/structure/sign/directions/medical{dir = 4; icon_state = "direction_med"; pixel_y = 32; tag = "icon-direction_med (EAST)"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central_one) +"aKP" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/civilian_east{c_tag = "Dormitory Fitness Room West"; dir = 4},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/fitness) "aKQ" = (/obj/machinery/door/airlock/glass_command{id_tag = "sbridgedoor"; name = "Bridge"; req_access = list(19)},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge) "aKR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/central_one) "aKS" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central_two) @@ -1925,7 +1925,7 @@ "aLa" = (/obj/structure/sink/kitchen{pixel_y = 28},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aLb" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aLc" = (/obj/structure/closet/chefcloset,/obj/machinery/light/small{dir = 1},/obj/item/device/eftpos{eftpos_name = "Kitchen EFTPOS scanner"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) -"aLd" = (/obj/machinery/camera{c_tag = "Kitchen Cold Room"},/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"; pixel_x = -5},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) +"aLd" = (/obj/machinery/light{dir = 8},/obj/machinery/camera/network/civilian_east{c_tag = "Chapel North"; dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "aLe" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_2_hatch"; locked = 1; name = "Escape Pod Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod2/station) "aLf" = (/turf/simulated/wall,/area/hydroponics) "aLg" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Hydroponics"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) @@ -1995,7 +1995,7 @@ "aMs" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/light{dir = 1},/obj/machinery/smartfridge/drinks,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aMt" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aMu" = (/obj/structure/reagent_dispensers/beerkeg,/obj/machinery/requests_console{announcementConsole = 0; department = "Bar"; departmentType = 2; name = "Bar RC"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) -"aMv" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/camera{c_tag = "Bar North"; dir = 2},/obj/machinery/vending/boozeomat,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) +"aMv" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/vending/boozeomat,/obj/machinery/camera/network/civilian_east{c_tag = "Bar North"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aMw" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eva_inner"; locked = 1; name = "EVA Internal Access"; req_access = list(13)},/turf/simulated/floor/plating,/area/maintenance/evahallway) "aMx" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) "aMy" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/crew_quarters/bar) @@ -2005,7 +2005,7 @@ "aMC" = (/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aMD" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aME" = (/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore) -"aMF" = (/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced{dir = 8},/obj/machinery/alarm{pixel_y = 22},/obj/machinery/camera{c_tag = "Hydroponics Pasture"},/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) +"aMF" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "eva_pump"},/obj/machinery/camera/network/security{c_tag = "Security Airlock Access"; dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/evahallway) "aMG" = (/obj/structure/sink/kitchen{pixel_y = 28},/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) "aMH" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) "aMI" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) @@ -2021,14 +2021,14 @@ "aMS" = (/obj/structure/table/woodentable,/obj/structure/disposalpipe/segment,/obj/item/weapon/deck,/turf/simulated/floor/wood,/area/library) "aMT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 1},/area/hallway/primary/central_two) "aMU" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/wood,/area/library) -"aMV" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera{c_tag = "Chapel Crematorium"; dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) +"aMV" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"; pixel_x = -5},/obj/structure/window/reinforced{dir = 4},/obj/machinery/camera/network/civilian_east{c_tag = "Kitchen Cold Room"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aMW" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "aMX" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_chapel_outer"; locked = 1; name = "Engineering External Access"; req_access = list(10,13)},/obj/effect/decal/cleanable/dirt,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aMY" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "aMZ" = (/obj/structure/bed/chair/comfy/brown{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/crew_quarters/bar) "aNa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "aNb" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) -"aNc" = (/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Chapel North"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) +"aNc" = (/obj/machinery/light{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/network/exodus{c_tag = "Arrivals Lounge"},/turf/simulated/floor,/area/hallway/secondary/entry/starboard) "aNd" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/bar) "aNe" = (/obj/structure/table,/obj/machinery/light/small,/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) "aNf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/chapel/main) @@ -2052,7 +2052,7 @@ "aNx" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/port) "aNy" = (/obj/machinery/light{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/hallway/primary/port) "aNz" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/port) -"aNA" = (/obj/machinery/camera{c_tag = "Port Hallway 2"; dir = 2},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/port) +"aNA" = (/obj/machinery/camera/network/exodus{c_tag = "Primary Hallway Port - Central"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/port) "aNB" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/port) "aNC" = (/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{dir = 1; icon_state = "warning"},/area/hallway/primary/port) "aND" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/hallway/primary/port) @@ -2067,7 +2067,7 @@ "aNM" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/central_one) "aNN" = (/obj/machinery/light{dir = 1},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/central_one) "aNO" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = 30},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/central_one) -"aNP" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/camera{c_tag = "Central Hallway North-West"; dir = 2},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/primary/central_one) +"aNP" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/camera/network/civilian_east{c_tag = "Dormitories Central"},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/sleep) "aNQ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central_one) "aNR" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central_one) "aNS" = (/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central_one) @@ -2075,7 +2075,7 @@ "aNU" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/hallway/primary/central_one) "aNV" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "L1"},/area/hallway/primary/central_one) "aNW" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor{icon_state = "L3"},/area/hallway/primary/central_one) -"aNX" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1331; id_tag = "nuke_shuttle_dock_pump"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry/port) +"aNX" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/locker) "aNY" = (/turf/simulated/floor{icon_state = "L7"},/area/hallway/primary/central_one) "aNZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "L9"},/area/hallway/primary/central_one) "aOa" = (/turf/simulated/floor{icon_state = "L11"},/area/hallway/primary/central_one) @@ -2086,7 +2086,7 @@ "aOf" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/library) "aOg" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/chips,/obj/random/single{icon = 'icons/obj/drinks.dmi'; icon_state = "cola"; name = "randomly spawned cola"; spawn_nothing_percentage = 50; spawn_object = /obj/item/weapon/reagent_containers/food/drinks/cans/cola},/turf/simulated/floor/carpet,/area/hallway/secondary/entry/starboard) "aOh" = (/obj/machinery/newscaster{pixel_y = 32},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 1},/area/hallway/primary/central_two) -"aOi" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/camera{c_tag = "Central Hallway North-East"; dir = 2},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/central_two) +"aOi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera/network/civilian_east{c_tag = "Dormitory Fitness Room East"; dir = 1},/turf/simulated/floor,/area/crew_quarters/fitness) "aOj" = (/obj/machinery/light{dir = 1},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/central_two) "aOk" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/central_two) "aOl" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = 30},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/central_two) @@ -2106,7 +2106,7 @@ "aOz" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aOA" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aOB" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) -"aOC" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "green"},/area/hydroponics) +"aOC" = (/obj/machinery/camera/network/exodus{c_tag = "Primary Hallway Fore"; dir = 4},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) "aOD" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{dir = 1; icon_state = "green"},/area/hydroponics) "aOE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "green"},/area/hydroponics) "aOF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{dir = 1; icon_state = "green"},/area/hydroponics) @@ -2116,7 +2116,7 @@ "aOJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "green"},/area/hydroponics) "aOK" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "green"},/area/hydroponics) "aOL" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{dir = 1; icon_state = "green"},/area/hydroponics) -"aOM" = (/obj/machinery/camera/autoname{dir = 8},/obj/item/device/radio/intercom{pixel_x = 25},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 5; icon_state = "green"},/area/hydroponics) +"aOM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera/network/civilian_east{c_tag = "Dormitory Holodeck North"; pixel_y = -6},/turf/simulated/floor/plating,/area/crew_quarters/fitness) "aON" = (/turf/simulated/floor/wood,/area/library) "aOO" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/library) "aOP" = (/obj/machinery/seed_storage/garden,/turf/simulated/floor{icon_state = "green"; dir = 8},/area/hydroponics) @@ -2212,12 +2212,12 @@ "aQB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) "aQC" = (/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) "aQD" = (/obj/machinery/vending/snack,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry/port) -"aQE" = (/obj/item/device/radio/beacon,/obj/machinery/camera{c_tag = "Arrivals South"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry/port) +"aQE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera/network/exodus{c_tag = "Arrivals Auxiliary Docking North"; dir = 8},/turf/simulated/floor,/area/hallway/secondary/entry/aft) "aQF" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry/port) "aQG" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry/port) "aQH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) "aQI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) -"aQJ" = (/obj/machinery/camera{c_tag = "Arrivals Center"; dir = 4; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry/port) +"aQJ" = (/obj/machinery/camera/network/exodus{c_tag = "Primary Hallway Starboard - Central West"},/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard) "aQK" = (/obj/machinery/light/small,/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; pixel_x = 25},/obj/structure/bed/chair{dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "aQL" = (/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/hallway/secondary/entry/starboard) "aQM" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "dark"},/area/hallway/secondary/entry/starboard) @@ -2227,7 +2227,7 @@ "aQQ" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/turf/simulated/floor,/area/hallway/primary/port) "aQR" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/hallway/primary/port) "aQS" = (/obj/machinery/light,/turf/simulated/floor,/area/hallway/primary/port) -"aQT" = (/obj/machinery/camera{c_tag = "Port Hallway 3"; dir = 1},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor,/area/hallway/primary/port) +"aQT" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/light/small,/obj/machinery/camera/network/civilian_east{c_tag = "Library South"; dir = 1},/turf/simulated/floor/wood,/area/library) "aQU" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/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,/area/hallway/primary/port) "aQV" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/port) "aQW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/hallway/primary/port) @@ -2235,7 +2235,7 @@ "aQY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/hallway/primary/port) "aQZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/primary/port) "aRa" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/port) -"aRb" = (/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/camera{c_tag = "Port Hallway"; dir = 1},/turf/simulated/floor,/area/hallway/primary/port) +"aRb" = (/obj/machinery/camera/network/civilian_east{c_tag = "Bar South"; dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar) "aRc" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/port) "aRd" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/hallway/primary/port) "aRe" = (/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,/area/hallway/primary/port) @@ -2306,7 +2306,7 @@ "aSr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/primary/port) "aSs" = (/obj/machinery/door/airlock/glass{name = "Art Storage"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/port) "aSt" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/dormitory) -"aSu" = (/obj/structure/table,/turf/simulated/floor,/area/hallway/primary/port) +"aSu" = (/obj/machinery/ai_slipper{icon_state = "motion0"},/obj/effect/landmark{name = "lightsout"},/obj/machinery/camera/all/command{c_tag = "AI Chamber"; dir = 1},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aSv" = (/obj/structure/table,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/hallway/primary/port) "aSw" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/closet/emcloset,/turf/simulated/floor,/area/hallway/primary/port) "aSx" = (/obj/structure/closet/emcloset,/turf/simulated/floor,/area/hallway/primary/port) @@ -2320,7 +2320,7 @@ "aSF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/blast/shutters{dir = 8; id = "office_shutter"; layer = 3.1; name = "Office Shutters"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "aSG" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/blast/shutters{dir = 2; id = "kitchen"; layer = 3.3; name = "Kitchen Shutters"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/hallway/primary/starboard) "aSH" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/window/brigdoor{name = "Visitation Window"; req_access = list(63)},/turf/simulated/floor,/area/security/prison) -"aSI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "heads_meeting"; name = "Meeting Room Window Shutters"; opacity = 0},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/hallway/primary/central_one) +"aSI" = (/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor/plating,/area/maintenance/dormitory) "aSJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/central_two) "aSK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/central_two) "aSL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/central_two) @@ -2332,7 +2332,7 @@ "aSR" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/crew_quarters/bar) "aSS" = (/turf/simulated/floor/wood,/area/crew_quarters/bar) "aST" = (/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/bar) -"aSU" = (/obj/machinery/camera{c_tag = "Bar East"; network = list("SS13")},/obj/structure/flora/pottedplant{tag = "icon-plant-22"; icon_state = "plant-22"},/turf/simulated/floor/wood,/area/crew_quarters/bar) +"aSU" = (/obj/machinery/camera/network/exodus{c_tag = "Primary Hallway Starboard - East"},/turf/simulated/floor,/area/hallway/primary/starboard) "aSV" = (/obj/structure/table/reinforced,/obj/machinery/light/small{dir = 1},/obj/item/clothing/head/cakehat,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aSW" = (/obj/machinery/disposal,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aSX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/kitchen) @@ -2430,7 +2430,7 @@ "aUL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/kitchen) "aUM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "aUN" = (/obj/structure/sink/kitchen{pixel_y = 28},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) -"aUO" = (/obj/machinery/vending/dinnerware,/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/camera{c_tag = "Kitchen"; dir = 2},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) +"aUO" = (/obj/structure/table,/obj/item/device/multitool,/obj/machinery/camera/network/command{c_tag = "Bridge West"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/bridge) "aUP" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "aUQ" = (/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "aUR" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) @@ -2446,20 +2446,20 @@ "aVb" = (/obj/structure/flora/ausbushes/brflowers,/obj/structure/sink/kitchen{pixel_y = 28},/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/grass,/area/hydroponics/garden) "aVc" = (/obj/structure/bookcase{name = "bookcase (Fiction)"},/turf/simulated/floor/wood,/area/library) "aVd" = (/obj/structure/bookcase{name = "bookcase (Non-Fiction)"},/turf/simulated/floor/wood,/area/library) -"aVe" = (/obj/machinery/camera{c_tag = "Library South"; dir = 8; network = list("SS13")},/turf/simulated/floor/wood,/area/library) +"aVe" = (/obj/structure/table,/obj/item/weapon/storage/box/donut,/obj/structure/noticeboard{pixel_y = 27},/obj/machinery/camera/network/command{c_tag = "Bridge East"},/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/bridge) "aVf" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "arrivals_pump"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "arrivals_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "arrivals_pump"; tag_exterior_door = "arrivals_outer"; frequency = 1379; id_tag = "arrivals_airlock"; tag_interior_door = "arrivals_inner"; pixel_x = 25; req_access = list(13); tag_chamber_sensor = "arrivals_sensor"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/arrivals) "aVg" = (/obj/machinery/light{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "aVh" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) "aVi" = (/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/chapel/main) "aVj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) -"aVk" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/camera{c_tag = "Chapel South"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) +"aVk" = (/obj/structure/table,/obj/item/weapon/storage/fancy/crayons,/obj/item/weapon/storage/fancy/crayons,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/light/small,/obj/machinery/camera/network/civilian_west{c_tag = "Art Supply Storage"; dir = 1},/turf/simulated/floor,/area/storage/art) "aVl" = (/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor{dir = 1; icon_state = "escape"},/area/hallway/secondary/exit) "aVm" = (/turf/simulated/floor{dir = 1; icon_state = "escape"},/area/hallway/secondary/exit) "aVn" = (/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor{dir = 1; icon_state = "escape"},/area/hallway/secondary/exit) "aVo" = (/turf/simulated/floor,/area/hallway/secondary/exit) "aVp" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit) "aVq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/exit) -"aVr" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1331; id_tag = "nuke_shuttle_dock_pump"},/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "nuke_shuttle_dock_sensor"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/entry/port) +"aVr" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/locker) "aVs" = (/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry/port) "aVt" = (/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry/port) "aVu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/secondary/entry/port) @@ -2467,7 +2467,7 @@ "aVw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/hallway/secondary/entry/starboard) "aVx" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -30},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/secondary/entry/starboard) "aVy" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/firealarm{dir = 2; pixel_y = -24},/turf/simulated/floor,/area/hallway/secondary/entry/starboard) -"aVz" = (/obj/machinery/camera{c_tag = "Arrivals Hallway"; dir = 8; network = list("SS13")},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/hallway/secondary/entry/starboard) +"aVz" = (/obj/machinery/atm{pixel_x = -25},/obj/machinery/camera/network/civilian_east{c_tag = "Bar West"; dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar) "aVA" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/locker) "aVB" = (/obj/structure/closet/wardrobe/mixed,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/turf/simulated/floor,/area/crew_quarters/locker) "aVC" = (/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor,/area/crew_quarters/locker) @@ -2479,7 +2479,7 @@ "aVI" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "arrivals_inner"; locked = 1; name = "Engineering External Access"; req_access = list(13)},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/arrivals) "aVJ" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/research_port) "aVK" = (/turf/simulated/floor/plating,/area/storage/emergency2) -"aVL" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/camera{c_tag = "Auxiliary Tool Storage"; dir = 2},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor,/area/storage/tools) +"aVL" = (/obj/machinery/computer/cryopod{density = 0; pixel_y = 32},/obj/machinery/camera/network/civilian_east{c_tag = "Dormitory Cryo Storage"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep/cryo) "aVM" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor,/area/storage/tools) "aVN" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/storage/tools) "aVO" = (/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor,/area/storage/tools) @@ -2530,7 +2530,7 @@ "aWH" = (/obj/structure/table/woodentable,/obj/machinery/librarycomp{pixel_y = 0},/obj/machinery/light/small{dir = 4},/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor/wood,/area/library) "aWI" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "aWJ" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) -"aWK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "heads_meeting"; name = "Meeting Room Window Shutters"; opacity = 0},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/hallway/primary/central_one) +"aWK" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/landmark{name = "JoinLateCryo"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep/cryo) "aWL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "aWM" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge) "aWN" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/sign/securearea{pixel_x = 32; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge) @@ -2557,9 +2557,9 @@ "aXi" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/turf/simulated/floor,/area/crew_quarters/locker) "aXj" = (/obj/structure/table,/turf/simulated/floor,/area/crew_quarters/locker) "aXk" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/structure/disposalpipe/segment,/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,/area/crew_quarters/locker) -"aXl" = (/obj/structure/closet/secure_closet/personal,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Locker Room East"; dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4},/turf/simulated/floor,/area/crew_quarters/locker) +"aXl" = (/obj/structure/closet/secure_closet/personal,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light{dir = 4},/obj/machinery/camera/network/civilian_west{c_tag = "Locker Room East"; dir = 8},/turf/simulated/floor,/area/crew_quarters/locker) "aXm" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/turf/simulated/floor,/area/storage/art) -"aXn" = (/obj/structure/table,/obj/item/weapon/storage/fancy/crayons,/obj/item/weapon/storage/fancy/crayons,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/camera{c_tag = "Art Storage"; dir = 1},/obj/machinery/light/small,/turf/simulated/floor,/area/storage/art) +"aXn" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/camera/network/civilian_east{c_tag = "Dormitory Bedroom Fore"},/turf/simulated/floor/carpet{tag = "icon-carpet2-0"; icon_state = "carpet2-0"},/area/crew_quarters/sleep/bedrooms) "aXo" = (/obj/structure/table,/obj/item/device/camera_film,/obj/item/device/camera,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor,/area/storage/art) "aXp" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plating,/area/storage/emergency2) "aXq" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plating,/area/maintenance/research_port) @@ -2571,7 +2571,7 @@ "aXw" = (/obj/structure/table,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/machinery/cell_charger,/turf/simulated/floor,/area/storage/tools) "aXx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/primary/central_one) "aXy" = (/turf/simulated/wall,/area/bridge) -"aXz" = (/obj/machinery/camera{c_tag = "Bridge West"; dir = 2},/obj/structure/table,/obj/item/device/multitool,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/bridge) +"aXz" = (/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/light{dir = 1},/obj/machinery/camera/xray/security{c_tag = "Arrivals Escape Pods"},/turf/simulated/floor,/area/hallway/secondary/entry/fore) "aXA" = (/obj/machinery/computer/shuttle_control/research,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/bridge) "aXB" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/computer/crew,/turf/simulated/floor{icon_state = "whitehall"; dir = 5},/area/bridge) "aXC" = (/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/bridge) @@ -2585,7 +2585,7 @@ "aXK" = (/turf/simulated/wall,/area/maintenance/substation/medical) "aXL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/central_two) "aXM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/central_two) -"aXN" = (/obj/machinery/camera{c_tag = "Bar West"; dir = 4; network = list("SS13")},/obj/machinery/atm{pixel_x = -25},/turf/simulated/floor/wood,/area/crew_quarters/bar) +"aXN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/exodus{c_tag = "Arrivals East"; dir = 8},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry/port) "aXO" = (/obj/structure/table/woodentable,/obj/item/weapon/kitchen/utensil/fork,/turf/simulated/floor/wood,/area/crew_quarters/bar) "aXP" = (/obj/structure/disposalpipe/segment,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/crew_quarters/bar) "aXQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/woodentable,/obj/item/weapon/deck{pixel_y = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar) @@ -2663,7 +2663,7 @@ "aZk" = (/obj/structure/bed/chair/office/light{dir = 8},/turf/simulated/floor,/area/security/vacantoffice) "aZl" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/hallway/primary/central_two) "aZm" = (/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central_two) -"aZn" = (/obj/machinery/camera{c_tag = "Bridge East Entrance"; dir = 2},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central_two) +"aZn" = (/obj/structure/table,/obj/machinery/requests_console{department = "Tool Storage"; departmentType = 0; pixel_y = 30},/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/machinery/camera/network/civilian_west{c_tag = "Tool Storage - Primary"},/turf/simulated/floor,/area/storage/primary) "aZo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/crew_quarters/bar) "aZp" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -2; pixel_y = 4},/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 2; pixel_y = 6},/turf/simulated/floor/wood,/area/crew_quarters/bar) "aZq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/kitchen) @@ -2715,7 +2715,7 @@ "bak" = (/obj/structure/closet/wardrobe/black,/turf/simulated/floor,/area/crew_quarters/locker) "bal" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/crew_quarters/locker) "bam" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor,/area/crew_quarters/locker) -"ban" = (/obj/machinery/camera{c_tag = "Locker Room West"; dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/crew_quarters/locker) +"ban" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera/network/civilian_west{c_tag = "Locker Room West"; dir = 1},/turf/simulated/floor,/area/crew_quarters/locker) "bao" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/crew_quarters/locker) "bap" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/crew_quarters/locker) "baq" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 1; name = "Locker Room"; sortType = "Locker Room"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/locker) @@ -2730,7 +2730,7 @@ "baz" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall,/area/maintenance/substation/civilian_west) "baA" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall,/area/maintenance/substation/medical) "baB" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/structure/table/reinforced,/obj/item/weapon/storage/box/lights/mixed,/obj/item/device/flashlight,/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/bridge) -"baC" = (/obj/item/clothing/gloves/rainbow,/obj/item/clothing/shoes/rainbow,/obj/item/clothing/head/soft/rainbow,/obj/item/clothing/under/rainbow,/turf/simulated/floor/plating,/area/maintenance/locker) +"baC" = (/obj/structure/filingcabinet,/turf/simulated/floor,/area/security/vacantoffice) "baD" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/storage/tools) "baE" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/storage/tools) "baF" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/machinery/light,/obj/random/tech_supply,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/storage/tools) @@ -2750,7 +2750,7 @@ "baT" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "baU" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "baV" = (/obj/machinery/light,/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) -"baW" = (/obj/machinery/camera{c_tag = "Bridge Center"; dir = 1},/obj/machinery/requests_console{announcementConsole = 1; department = "Bridge"; departmentType = 5; name = "Bridge RC"; pixel_y = -30},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) +"baW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera/network/engineering{c_tag = "Solar Maintenance Fore Starboard Access"; dir = 1},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/maintenance/library) "baX" = (/obj/structure/closet/fireaxecabinet{pixel_y = -32},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "baY" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_east) "baZ" = (/obj/machinery/light,/obj/machinery/newscaster{pixel_y = -28},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) @@ -2783,7 +2783,7 @@ "bbA" = (/obj/structure/table/reinforced,/obj/item/weapon/hatchet,/obj/item/weapon/minihoe,/turf/simulated/floor{icon_state = "grimy"},/area/hydroponics/garden) "bbB" = (/turf/simulated/floor{icon_state = "green"; dir = 8},/area/hydroponics/garden) "bbC" = (/obj/structure/flora/ausbushes/fernybush,/turf/simulated/floor/grass,/area/hydroponics/garden) -"bbD" = (/obj/structure/flora/ausbushes/brflowers,/obj/machinery/camera/autoname{dir = 8},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/grass,/area/hydroponics/garden) +"bbD" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera/network/engineering{c_tag = "Solar Maintenance Fore Port Access"},/turf/simulated/floor/plating,/area/maintenance/arrivals) "bbE" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/wood,/area/library) "bbF" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard) "bbG" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Library"},/turf/simulated/floor/carpet,/area/hallway/primary/starboard) @@ -2791,7 +2791,7 @@ "bbI" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/library) "bbJ" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "bbK" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) -"bbL" = (/obj/item/device/radio/intercom{pixel_x = -25},/obj/machinery/camera/autoname{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit) +"bbL" = (/obj/machinery/vending/coffee,/obj/machinery/camera/network/civilian_west{c_tag = "Gateway Arrival Area"; dir = 4},/turf/simulated/floor,/area/gateway) "bbM" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/hallway/secondary/exit) "bbN" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/exit) "bbO" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/exit) @@ -2826,7 +2826,7 @@ "bcr" = (/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -27},/turf/simulated/floor,/area/hallway/primary/central_one) "bcs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/primary/central_one) "bct" = (/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central_one) -"bcu" = (/obj/machinery/light,/obj/machinery/camera{c_tag = "Bridge West Entrance"; dir = 1},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/hallway/primary/central_one) +"bcu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/camera/network/civilian_east{c_tag = "Dormitories South"; dir = 4},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/sleep) "bcv" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/hallway/primary/central_one) "bcw" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/hallway/primary/central_one) "bcx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/bridge) @@ -2877,7 +2877,7 @@ "bdq" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass{name = "Chapel"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "bdr" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit) "bds" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/hallway/secondary/exit) -"bdt" = (/obj/machinery/camera/autoname{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit) +"bdt" = (/obj/machinery/requests_console{department = "EVA"; pixel_x = -32; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/table/reinforced,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/device/multitool,/obj/machinery/camera/network/security{c_tag = "EVA Northwest"; dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "bdu" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "bdv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "bdw" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry/aft) @@ -2894,7 +2894,7 @@ "bdH" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/crew_quarters/locker) "bdI" = (/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/crew_quarters/locker) "bdJ" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/closet/wardrobe/suit,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/crew_quarters/locker) -"bdK" = (/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) +"bdK" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/table/reinforced,/obj/item/stack/sheet/glass/reinforced{amount = 50},/obj/item/stack/rods{amount = 50},/obj/machinery/camera/network/security{c_tag = "EVA Northeast"; dir = 8},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) "bdL" = (/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) "bdM" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/crew_quarters/locker) "bdN" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/disposalpipe/segment,/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/crew_quarters/locker) @@ -2920,7 +2920,7 @@ "beh" = (/obj/machinery/light,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bei" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bej" = (/obj/machinery/light,/turf/simulated/floor/wood,/area/crew_quarters/bar) -"bek" = (/obj/machinery/camera{c_tag = "Bar South"; dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar) +"bek" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/camera/network/security{c_tag = "Security - Arrival Checkpoint"; dir = 1},/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/checkpoint2) "bel" = (/obj/item/device/radio/intercom{pixel_y = -30},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bem" = (/obj/machinery/light/small,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/bar) "ben" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/bar) @@ -2937,7 +2937,7 @@ "bey" = (/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/library) "bez" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "beA" = (/obj/structure/table/woodentable,/obj/item/weapon/pen,/turf/simulated/floor/wood,/area/library) -"beB" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/light/small,/turf/simulated/floor/wood,/area/library) +"beB" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/camera/network/civilian_east{c_tag = "Chapel Office"},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "beC" = (/obj/structure/bed/chair/comfy/brown{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/crew_quarters/captain) "beD" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/wood,/area/library) "beE" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/crew_quarters/captain) @@ -2953,12 +2953,12 @@ "beO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "beP" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry/aft) "beQ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry/aft) -"beR" = (/obj/machinery/camera{c_tag = "Arrivals Auxiliary Docking North"; dir = 8; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/secondary/entry/aft) +"beR" = (/obj/structure/bed/chair/office/dark,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/camera/network/civilian_east{c_tag = "Library North"},/turf/simulated/floor/wood,/area/library) "beS" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating/airless,/area/solar/auxport) "beT" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/turf/simulated/floor,/area/security/vacantoffice) "beU" = (/obj/machinery/firealarm{dir = 2; pixel_y = -24},/obj/machinery/light,/turf/simulated/floor,/area/security/vacantoffice) -"beV" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/camera{c_tag = "Vacant Office"; dir = 1},/turf/simulated/floor,/area/security/vacantoffice) -"beW" = (/obj/structure/filingcabinet/medical{pixel_y = 0},/turf/simulated/floor,/area/security/vacantoffice) +"beV" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Fore Starboard"},/obj/machinery/camera/network/engineering{c_tag = "Solar Maintenance Fore Starboard"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) +"beW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "heads_meeting"; name = "Meeting Room Window Shutters"; opacity = 0},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/bridge/meeting_room) "beX" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 4},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/locker) "beY" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/locker) "beZ" = (/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) @@ -2978,7 +2978,7 @@ "bfn" = (/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/bridge/meeting_room) "bfo" = (/obj/machinery/door_control{id = "heads_meeting"; name = "Security Shutters"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/wood,/area/bridge/meeting_room) "bfp" = (/obj/machinery/newscaster{pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor/wood,/area/bridge/meeting_room) -"bfq" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/camera{c_tag = "Conference Room"; dir = 2},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/wood,/area/bridge/meeting_room) +"bfq" = (/obj/machinery/camera/network/civilian_east{c_tag = "Dormitory Bedroom Aft"; dir = 1},/turf/simulated/floor/carpet{tag = "icon-carpet1-0"; icon_state = "carpet1-0"},/area/crew_quarters/sleep/bedrooms) "bfr" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/wood,/area/bridge/meeting_room) "bfs" = (/obj/machinery/light_switch{pixel_y = 28},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/bridge/meeting_room) "bft" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/bridge/meeting_room) @@ -3010,7 +3010,7 @@ "bfT" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard) "bfU" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard) "bfV" = (/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard) -"bfW" = (/obj/machinery/camera{c_tag = "Starboard Primary Hallway 2"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard) +"bfW" = (/obj/machinery/camera/network/exodus{c_tag = "Arrivals North"; dir = 1},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry/fore) "bfX" = (/obj/machinery/computer/guestpass{pixel_y = 28},/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard) "bfY" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/starboard) "bfZ" = (/obj/machinery/door/airlock/glass{name = "Garden"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/starboard) @@ -3063,7 +3063,7 @@ "bgU" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bgV" = (/obj/structure/cable/cyan{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "bgW" = (/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"bgX" = (/obj/machinery/ai_slipper{icon_state = "motion0"},/obj/effect/landmark{name = "lightsout"},/obj/machinery/camera/all{c_tag = "AI Chamber"; dir = 1; pixel_x = 12},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"bgX" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/camera/network/engineering{c_tag = "Solar Maintenance Fore Port"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "bgY" = (/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "bgZ" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/captain) "bha" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/captain) @@ -3094,7 +3094,7 @@ "bhz" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/hallway/primary/starboard) "bhA" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor,/area/hallway/primary/starboard) "bhB" = (/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor,/area/hallway/primary/starboard) -"bhC" = (/obj/machinery/camera{c_tag = "Starboard Primary Hallway 5"; dir = 2; network = list("SS13")},/turf/simulated/floor,/area/hallway/primary/starboard) +"bhC" = (/obj/structure/table/woodentable,/obj/machinery/reagentgrinder,/obj/item/weapon/packageWrap,/obj/machinery/camera/network/civilian_east{c_tag = "Bar Backroom"},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bhD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/starboard) "bhE" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/hallway/primary/starboard) "bhF" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/hallway/primary/starboard) @@ -3109,19 +3109,19 @@ "bhO" = (/turf/space,/area/shuttle/specops/station) "bhP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "bhQ" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry/aft) -"bhR" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/secondary/entry/aft) +"bhR" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/wall,/area/maintenance/locker) "bhS" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/crew_quarters/fitness) -"bhT" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/locker) -"bhU" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/locker) -"bhV" = (/obj/effect/landmark{name = "blobstart"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plating,/area/maintenance/locker) -"bhW" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor/plating,/area/maintenance/locker) -"bhX" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/wall,/area/maintenance/locker) +"bhT" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) +"bhU" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/secondary/entry/aft) +"bhV" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_south_mech"; pixel_y = 19},/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"bhW" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "escape_dock_south_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = -25; req_one_access = list(13)},/turf/simulated/floor,/area/hallway/secondary/exit) +"bhX" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1331; master_tag = "nuke_shuttle_dock_airlock"; name = "exterior access button"; pixel_x = -5; pixel_y = 32; req_one_access = list(13)},/turf/space,/area/space) "bhY" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/locker) "bhZ" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/remains/robot,/turf/simulated/floor/plating,/area/maintenance/locker) "bia" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bib" = (/obj/machinery/portable_atmospherics/powered/scrubber,/obj/machinery/light,/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) "bic" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/crew_quarters/locker) -"bid" = (/obj/machinery/camera{c_tag = "Locker Room South"; dir = 8; network = list("SS13")},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/crew_quarters/locker) +"bid" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/civilian_west{c_tag = "Locker Room South"; dir = 8},/turf/simulated/floor,/area/crew_quarters/locker) "bie" = (/obj/item/weapon/cigbutt,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/locker) "bif" = (/obj/structure/disposalpipe/sortjunction/wildcard,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/locker) "big" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) @@ -3190,15 +3190,15 @@ "bjr" = (/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/plating,/area/maintenance/locker) "bjs" = (/obj/machinery/door/airlock{name = "Unit 3"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bjt" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) -"bju" = (/obj/item/latexballon,/turf/simulated/floor/plating,/area/maintenance/locker) -"bjv" = (/obj/effect/landmark{name = "blobstart"},/obj/item/latexballon,/turf/simulated/floor/plating,/area/maintenance/locker) +"bju" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "heads_meeting"; name = "Meeting Room Window Shutters"; opacity = 0},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/bridge/meeting_room) +"bjv" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera/network/civilian_east{c_tag = "Dormitory Holodeck South"; dir = 1; pixel_y = 6},/turf/simulated/floor/plating,/area/crew_quarters/fitness) "bjw" = (/obj/machinery/meter,/obj/machinery/door_control{id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -25; pixel_y = 5; req_access = list(7)},/obj/machinery/button/ignition{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"},/area/rnd/mixing) "bjx" = (/obj/structure/disposalpipe/tagger/partial{name = "Sorting Office"; sort_tag = "Sorting Office"},/turf/simulated/floor/plating,/area/maintenance/locker) "bjy" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) "bjz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) "bjA" = (/obj/item/stack/sheet/cardboard,/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) -"bjB" = (/obj/machinery/camera{c_tag = "Cargo Bay Storage"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) -"bjC" = (/obj/machinery/camera{c_tag = "Cargo Delivery Office"; dir = 4; network = list("SS13")},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office) +"bjB" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/camera/network/medbay{c_tag = "Medbay Patient Hallway - Starboard"; dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) +"bjC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "heads_meeting"; name = "Meeting Room Window Shutters"; opacity = 0},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/bridge/meeting_room) "bjD" = (/obj/structure/filingcabinet/filingcabinet,/turf/simulated/floor{icon_state = "arrival"; dir = 4},/area/quartermaster/office) "bjE" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central_one) "bjF" = (/obj/machinery/door/blast/regular{id = "chapelgun"; name = "Chapel Launcher Door"},/turf/simulated/floor/plating,/area/chapel/main) @@ -3220,8 +3220,8 @@ "bjV" = (/obj/machinery/light{dir = 1},/obj/item/weapon/stool,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/reception) "bjW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/captain) "bjX" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/captain) -"bjY" = (/obj/structure/table/woodentable,/obj/machinery/recharger{pixel_y = 4},/obj/machinery/camera{c_tag = "Captain's Office"; dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/wood,/area/crew_quarters/captain) -"bjZ" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 2},/obj/machinery/camera{c_tag = "Central Hallway East"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central_two) +"bjY" = (/obj/machinery/camera/network/medbay{c_tag = "Medbay Patient Hallway - Port"; dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) +"bjZ" = (/obj/machinery/door_control{id = "scanhide"; name = "Diagnostics Room Separation Shutters"; pixel_x = -6; pixel_y = 25; req_access = list(5)},/obj/machinery/atmospherics/unary/freezer{dir = 8; icon_state = "freezer"},/obj/machinery/door_control{id = "scanhideside"; name = "Diagnostics Room Privacy Shutters"; pixel_x = 6; pixel_y = 25; req_access = list(5)},/turf/simulated/floor{icon_state = "delivery"},/area/medical/sleeper) "bka" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=Stbd"; location = "HOP"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/hallway/primary/central_two) "bkb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor,/area/hallway/primary/central_two) "bkc" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central_two) @@ -3232,7 +3232,7 @@ "bkh" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/hallway/primary/starboard) "bki" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/hallway/primary/starboard) "bkj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor,/area/hallway/primary/starboard) -"bkk" = (/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/camera{c_tag = "Starboard Primary Hallway"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/starboard) +"bkk" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera/network/research{c_tag = "Research Division South"; dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bkl" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/hallway/primary/starboard) "bkm" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/hallway/primary/starboard) "bkn" = (/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/hallway/primary/starboard) @@ -3245,21 +3245,21 @@ "bku" = (/turf/simulated/floor{dir = 8; icon_state = "whitecorner"},/area/hallway/primary/starboard) "bkv" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/hallway/primary/starboard) "bkw" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor,/area/hallway/primary/starboard) -"bkx" = (/obj/machinery/camera{c_tag = "Starboard Primary Hallway 3"; dir = 1},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor,/area/hallway/primary/starboard) +"bkx" = (/obj/machinery/disposal,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/camera/network/research{c_tag = "Research - Miscellaneous"; dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bky" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/starboard) "bkz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/starboard) -"bkA" = (/obj/machinery/camera{c_tag = "Starboard Primary Hallway 4"; dir = 1},/turf/simulated/floor,/area/hallway/primary/starboard) +"bkA" = (/obj/structure/table,/obj/structure/disposalpipe/segment,/obj/machinery/camera/network/medbay{c_tag = "Medbay Lounge"},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay4) "bkB" = (/obj/machinery/light,/turf/simulated/floor,/area/hallway/primary/starboard) "bkC" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/secondary/exit) "bkD" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/secondary/exit) "bkE" = (/obj/machinery/newscaster{pixel_y = -32},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/secondary/exit) "bkF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/secondary/exit) "bkG" = (/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/secondary/exit) -"bkH" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Mental Health"},/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{icon_state = "white"},/area/medical/medbay4) +"bkH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera/network/medbay{c_tag = "Medbay Surgery Observation"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/surgeryobs) "bkI" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/exit) "bkJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "bkK" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Sub-Acute C"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_c) -"bkL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Secondary Storage"; req_access = list(5)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "dark"},/area/medical/medbay2) +"bkL" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/blue,/obj/item/weapon/stamp/captain,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/crew_quarters/captain) "bkM" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Medbay Diagnostics Maintenance Access"; req_access = list(5)},/turf/simulated/floor/plating,/area/medical/sleeper) "bkN" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Patient Ward"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) "bkO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/power/apc/high{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green,/turf/simulated/floor,/area/hallway/secondary/entry/aft) @@ -3273,7 +3273,7 @@ "bkW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/locker) "bkX" = (/obj/machinery/door/airlock/engineering{name = "Engineering Supplies"; req_one_access = list(10,24,5)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/engineering/break_room) "bkY" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/cargo) -"bkZ" = (/obj/machinery/camera{c_tag = "Locker Room Toilets"; dir = 8; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) +"bkZ" = (/obj/machinery/door/airlock/research{id_tag = "researchdoor"; name = "Research Division Access"; req_access = list(47)},/turf/simulated/floor{icon_state = "white"},/area/hallway/primary/starboard) "bla" = (/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/locker) "blb" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/locker) "blc" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/locker) @@ -3301,12 +3301,12 @@ "bly" = (/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/bridge/meeting_room) "blz" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "blA" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"blB" = (/obj/machinery/camera{c_tag = "Medbay Lobby Port"; network = list("SS13")},/obj/item/weapon/stool,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/reception) +"blB" = (/obj/machinery/light{dir = 4},/obj/machinery/camera/network/research{c_tag = "Research Toxins Test Chamber East"; dir = 8; network = list("Research","Toxins Test Area")},/turf/simulated/floor/airless,/area/rnd/test_area) "blC" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Sub-Acute B"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) "blD" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"blE" = (/obj/machinery/camera{c_tag = "Medbay Lobby Starboard"; network = list("SS13")},/obj/item/weapon/stool,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/reception) +"blE" = (/obj/machinery/light,/obj/machinery/camera/network/research{c_tag = "Research - Toxins Test Chamber South"; dir = 1; network = list("Research","Toxins Test Area")},/turf/simulated/floor/airless,/area/rnd/test_area) "blF" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = -30; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/item/device/megaphone,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/captain) -"blG" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/blue,/obj/item/weapon/stamp/captain,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/crew_quarters/captain) +"blG" = (/obj/structure/closet/secure_closet/cargotech,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/camera/network/civilian_west{c_tag = "Cargo Bay North"},/turf/simulated/floor,/area/quartermaster/storage) "blH" = (/obj/structure/table/woodentable,/obj/machinery/computer/skills{icon_state = "medlaptop"},/obj/item/weapon/hand_tele,/turf/simulated/floor/wood,/area/crew_quarters/captain) "blI" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green,/turf/simulated/floor/wood,/area/crew_quarters/captain) "blJ" = (/obj/machinery/hologram/holopad,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/crew_quarters/captain) @@ -3337,7 +3337,7 @@ "bmi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) "bmj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/locker) "bmk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/locker) -"bml" = (/obj/machinery/door_control{id = "scanhide"; name = "Diagnostics Room Separation Shutters"; pixel_x = -6; pixel_y = 25; req_access = list(5)},/obj/machinery/camera{c_tag = "Medbay Scanning"; network = list("SS13")},/obj/machinery/atmospherics/unary/freezer{dir = 8; icon_state = "freezer"},/obj/machinery/door_control{id = "scanhideside"; name = "Diagnostics Room Privacy Shutters"; pixel_x = 6; pixel_y = 25; req_access = list(5)},/turf/simulated/floor{icon_state = "delivery"},/area/medical/sleeper) +"bml" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "eng_eva_pump"},/obj/machinery/camera/network/security{c_tag = "Engineering Airlock Access"; dir = 1},/turf/simulated/floor{dir = 6; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) "bmm" = (/obj/machinery/door/airlock{name = "Unit 4"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bmn" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bmo" = (/obj/item/stack/sheet/glass/reinforced,/obj/effect/decal/cleanable/cobweb,/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating,/area/maintenance/locker) @@ -3357,7 +3357,7 @@ "bmC" = (/obj/item/weapon/stool,/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/reception) "bmD" = (/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "arrival"; dir = 4},/area/quartermaster/office) "bmE" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plating,/area/maintenance/cargo) -"bmF" = (/obj/machinery/camera{c_tag = "Central Hallway West"; dir = 8},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central_one) +"bmF" = (/obj/item/device/radio/intercom{layer = 4; name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/network/engineering{c_tag = "Engineering - CE's Office"; dir = 1},/turf/simulated/floor,/area/crew_quarters/heads/chief) "bmG" = (/turf/simulated/wall/r_wall,/area/maintenance/substation/command) "bmH" = (/obj/machinery/door/airlock/glass_research{autoclose = 0; frequency = 1379; glass = 1; icon_state = "door_locked"; id_tag = "tox_airlock_exterior"; locked = 1; name = "Mixing Room Exterior Airlock"; req_access = list(8)},/turf/simulated/floor/engine,/area/rnd/mixing) "bmI" = (/obj/machinery/light/small{dir = 8},/obj/machinery/porta_turret{dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) @@ -3365,7 +3365,7 @@ "bmK" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bmL" = (/obj/machinery/ai_slipper{icon_state = "motion0"},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "bmM" = (/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) -"bmN" = (/obj/item/weapon/stool,/obj/machinery/camera{c_tag = "Medbay Examination Room"; network = list("SS13")},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/exam_room) +"bmN" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/camera/network/medbay{c_tag = "Medbay Surgery Access"; dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) "bmO" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Captain's Desk"; departmentType = 5; name = "Captain RC"; pixel_x = -30; pixel_y = 0},/obj/structure/filingcabinet,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bmP" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/bed/chair/wheelchair,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/exam_room) "bmQ" = (/obj/machinery/computer/communications,/turf/simulated/floor/wood,/area/crew_quarters/captain) @@ -3373,7 +3373,7 @@ "bmS" = (/obj/structure/table/woodentable,/obj/item/weapon/melee/chainofcommand,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bmT" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/dropper,/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bmU" = (/obj/machinery/door/airlock/glass_research{autoclose = 0; frequency = 1379; glass = 1; icon_state = "door_locked"; id_tag = "tox_airlock_interior"; locked = 1; name = "Mixing Room Interior Airlock"; req_access = list(8)},/turf/simulated/floor/engine,/area/rnd/mixing) -"bmV" = (/obj/machinery/camera{c_tag = "Chemistry"; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/obj/machinery/chem_master,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) +"bmV" = (/obj/machinery/washing_machine,/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/camera/network/medbay{c_tag = "Medbay Break Room"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) "bmW" = (/obj/structure/table/reinforced,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bmX" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "chemcounter"; name = "Pharmacy Counter Lockdown Control"; pixel_y = 25},/obj/machinery/reagentgrinder,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bmY" = (/obj/structure/sign/chemistry,/turf/simulated/wall/r_wall,/area/medical/chemistry) @@ -3396,7 +3396,7 @@ "bnp" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/morgue) "bnq" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/morgue) "bnr" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/morgue) -"bns" = (/obj/machinery/camera{c_tag = "Morgue"; network = list("SS13")},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/morgue) +"bns" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/camera/network/medbay{c_tag = "Medbay Starboard Corridor"; dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) "bnt" = (/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/morgue) "bnu" = (/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/medical/morgue) "bnv" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) @@ -3419,7 +3419,7 @@ "bnM" = (/turf/simulated/wall,/area/storage/emergency) "bnN" = (/obj/machinery/door_control{id = "misclab"; name = "Test Chamber Blast Doors"; pixel_x = 6; pixel_y = 30; req_access = list(47)},/obj/item/weapon/stool,/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bnO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) -"bnP" = (/obj/structure/closet/emcloset,/obj/machinery/camera{c_tag = "Arrivals Auxiliary Docking South"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry/aft) +"bnP" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/camera/network/research{c_tag = "Research Division Central"; dir = 4},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/rnd/research) "bnQ" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/hallway/secondary/entry/aft) "bnR" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/structure/sign/vacuum{pixel_x = -32},/turf/simulated/floor/plating,/area/maintenance/disposal) "bnS" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/research{name = "Miscellaneous Reseach Room"; req_access = list(47)},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) @@ -3500,7 +3500,7 @@ "bpp" = (/turf/simulated/wall,/area/assembly/robotics) "bpq" = (/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) "bpr" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyerStar"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = 6; pixel_y = 28},/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/medical/reception) -"bps" = (/obj/machinery/camera{c_tag = "Robotics"; dir = 2; network = list("SS13","Research"); pixel_x = 22},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 4; icon_state = "whiteredcorner"},/area/assembly/robotics) +"bps" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera/network/research{c_tag = "Research - Toxins Storage"; dir = 4},/turf/simulated/floor,/area/rnd/storage) "bpt" = (/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/assembly/robotics) "bpu" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/exam_room) "bpv" = (/obj/item/weapon/stool,/obj/effect/landmark/start{name = "Roboticist"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/assembly/robotics) @@ -3509,7 +3509,7 @@ "bpy" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 50; pixel_x = 3; pixel_y = 3},/obj/item/stack/sheet/metal{amount = 50},/obj/item/clothing/glasses/welding,/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/rnd/lab) "bpz" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/firealarm{pixel_y = 27},/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/quartermaster/office) "bpA" = (/obj/structure/table,/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/rnd/lab) -"bpB" = (/obj/machinery/camera{c_tag = "Research and Development Lab"; dir = 2; network = list("SS13","Research")},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/rnd/lab) +"bpB" = (/obj/machinery/light{dir = 1},/obj/machinery/camera/network/research{c_tag = "Research - Toxins Test Chamber North"; network = list("Research","Toxins Test Area")},/turf/simulated/floor/airless,/area/rnd/test_area) "bpC" = (/turf/simulated/floor{icon_state = "white"},/area/rnd/lab) "bpD" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "white"},/area/rnd/lab) "bpE" = (/obj/machinery/light/small{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/storage/emergency) @@ -3536,7 +3536,7 @@ "bpZ" = (/obj/structure/table,/obj/item/clothing/head/soft,/obj/item/weapon/stamp{pixel_x = -3; pixel_y = 3},/obj/item/clothing/head/soft,/turf/simulated/floor,/area/quartermaster/storage) "bqa" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_x = 0; pixel_y = 30},/obj/item/weapon/stamp{pixel_x = -3; pixel_y = 3},/obj/item/weapon/hand_labeler,/turf/simulated/floor,/area/quartermaster/storage) "bqb" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor,/area/quartermaster/storage) -"bqc" = (/obj/machinery/camera{c_tag = "Cargo Bay North"},/obj/structure/closet/secure_closet/cargotech,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/quartermaster/storage) +"bqc" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/medical/morgue) "bqd" = (/obj/structure/closet/secure_closet/cargotech,/turf/simulated/floor,/area/quartermaster/storage) "bqe" = (/obj/machinery/light{dir = 1},/obj/machinery/alarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/quartermaster/storage) "bqf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/quartermaster/storage) @@ -3553,7 +3553,7 @@ "bqq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/extinguisher,/obj/item/weapon/extinguisher,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating,/area/maintenance/substation/command) "bqr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/substation/command) "bqs" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor,/area/hallway/primary/central_three) -"bqt" = (/obj/structure/table,/obj/item/weapon/aiModule/reset,/obj/machinery/camera{c_tag = "AI Upload Chamber"; dir = 4; network = list("SS13")},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) +"bqt" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/generic,/obj/machinery/camera/network/engineering{c_tag = "Solar Maintenance Aft Starboard Access"; dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/research_starboard) "bqu" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless,/area/rnd/xenobiology) "bqv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/plating,/area/maintenance/substation/command) "bqw" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green,/turf/simulated/floor/carpet,/area/crew_quarters/captain) @@ -3570,7 +3570,7 @@ "bqH" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bqI" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bqJ" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) -"bqK" = (/obj/machinery/camera{c_tag = "Common Brig Northwest"; dir = 4; network = list("SS13","Prison")},/obj/machinery/computer/arcade,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/prison) +"bqK" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_north_mech"; pixel_y = -19},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "bqL" = (/turf/simulated/wall/r_wall,/area/medical/chemistry) "bqM" = (/obj/structure/bed,/obj/item/weapon/bedsheet/captain,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/carpet,/area/crew_quarters/captain) "bqN" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/reception) @@ -3596,7 +3596,7 @@ "brh" = (/turf/simulated/wall/r_wall,/area/assembly/robotics) "bri" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "warnwhite"},/area/rnd/research) "brj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) -"brk" = (/obj/machinery/camera{c_tag = "Research Division Access"; dir = 2; network = list("SS13","Research")},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/rnd/research) +"brk" = (/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/storage/box/lights/mixed,/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/camera/network/security{c_tag = "Custodial Closet"},/turf/simulated/floor,/area/janitor) "brl" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = -30; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/lab) "brm" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/lab) "brn" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/rnd/lab) @@ -3609,13 +3609,13 @@ "bru" = (/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/ward) "brv" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/machinery/holosign/surgery,/obj/machinery/door/airlock/glass_medical{id_tag = "Surgery"; name = "Pre-Op Prep Room"; req_access = list(5)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) "brw" = (/obj/machinery/door/firedoor,/obj/machinery/holosign/surgery,/obj/machinery/door/airlock/glass_medical{id_tag = "Surgery"; name = "Pre-Op Prep Room"; req_access = list(5)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) -"brx" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry/aft) -"bry" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry/aft) +"brx" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "escape_dock_north_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_one_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/hallway/secondary/exit) +"bry" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "centcom_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "brz" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor,/area/hallway/secondary/entry/aft) "brA" = (/turf/simulated/floor,/area/hallway/secondary/entry/aft) "brB" = (/obj/machinery/sparker{dir = 2; id = "mixingsparker"; pixel_x = 25},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; external_pressure_bound_default = 0; icon_state = "map_vent_in"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; use_power = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0},/turf/simulated/floor/engine/vacuum,/area/rnd/mixing) "brC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal) -"brD" = (/obj/machinery/camera{c_tag = "Disposals"; dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal) +"brD" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/structure/bed/roller,/obj/machinery/camera/network/medbay{c_tag = "Medbay Scanning"; dir = 1},/turf/simulated/floor,/area/medical/sleeper) "brE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/locker) "brF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/locker) "brG" = (/turf/simulated/wall/r_wall,/area/maintenance/locker) @@ -3662,7 +3662,7 @@ "bsv" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 0; name = "Diagnostics Room"; req_access = list(5)},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/medbay4) "bsw" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/reception) "bsx" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/storage/box/cups,/obj/item/weapon/storage/box/cups{pixel_x = 2; pixel_y = 5},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/medical/reception) -"bsy" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_command{name = "Chief Engineer"; req_access = list(56)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/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/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/crew_quarters/heads/chief) +"bsy" = (/obj/structure/disposaloutlet{dir = 8},/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/disposal) "bsz" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/machinery/computer/med_data/laptop,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/reception) "bsA" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/item/weapon/paper_bin,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/reception) "bsB" = (/obj/machinery/door/airlock/external{name = "Toxins Test Chamber"},/turf/simulated/floor/plating/airless,/area/rnd/test_area) @@ -3739,7 +3739,7 @@ "btU" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 28},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/captain) "btV" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor/plating,/area/crew_quarters/captain) "btW" = (/obj/structure/disposalpipe/segment,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/hallway/primary/central_two) -"btX" = (/obj/machinery/camera{c_tag = "Central Hallway East South-East"; dir = 8; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/hallway/primary/central_two) +"btX" = (/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 0},/obj/machinery/camera/network/medbay{c_tag = "Medbay Patient Room C"; dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/patient_c) "btY" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/dropper,/obj/machinery/light{dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "btZ" = (/obj/machinery/chem_master,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bua" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) @@ -3750,13 +3750,13 @@ "buf" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/computer/crew,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/reception) "bug" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/office) "buh" = (/obj/structure/table,/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 1; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Reception Emergency Phone"},/turf/simulated/floor,/area/medical/reception) -"bui" = (/obj/item/weapon/shard,/turf/simulated/floor/plating,/area/maintenance/research_port) +"bui" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 6; icon_state = "intact"; tag = "icon-intact-f (SOUTHEAST)"},/mob/living/simple_animal/mouse,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/arrivals) "buj" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "hop_office_desk"; name = "Desk Privacy Shutter"; pixel_x = 16; pixel_y = 28},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/crew_quarters/heads/hop) "buk" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/filingcabinet/medical{pixel_y = 0},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/reception) "bul" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/reception) "bum" = (/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"; pixel_x = 32},/turf/simulated/floor{tag = "icon-whiteblue (SOUTHEAST)"; icon_state = "whiteblue"; dir = 6},/area/medical/reception) "bun" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/exam_room) -"buo" = (/obj/structure/bed/chair/comfy/brown{dir = 4},/obj/machinery/camera{c_tag = "Captain's Quarters"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/carpet,/area/crew_quarters/captain) +"buo" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera/network/engineering{c_tag = "Engineering Break Room"; dir = 8},/turf/simulated/floor/carpet,/area/engineering/break_room) "bup" = (/obj/structure/table,/obj/machinery/computer/med_data/laptop,/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/exam_room) "buq" = (/obj/structure/morgue,/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/medical/morgue) "bur" = (/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/medical/morgue) @@ -3765,7 +3765,7 @@ "buu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/medical/morgue) "buv" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/medical/morgue) "buw" = (/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/medical/morgue) -"bux" = (/obj/machinery/camera{c_tag = "Mech Bay"; dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor,/area/assembly/chargebay) +"bux" = (/obj/machinery/camera/network/research{c_tag = "Research - Miscellaneous Test Chamber"; network = list("Research","Miscellaneous Reseach")},/turf/simulated/floor/engine,/area/rnd/misc_lab) "buy" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/assembly/chargebay) "buz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/assembly/robotics) "buA" = (/obj/structure/table,/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/stack/cable_coil,/obj/item/device/flash,/obj/item/device/flash,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/assembly/robotics) @@ -3787,13 +3787,13 @@ "buQ" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/research/station) "buR" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/research/station) "buS" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/research/station) -"buT" = (/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 0},/obj/machinery/camera{c_tag = "Medbay Patient C"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/patient_c) +"buT" = (/obj/machinery/door_control{id = "acutesep"; name = "Acute Separation Shutters"; pixel_y = -25; req_access = list(5)},/obj/item/weapon/stool{pixel_y = 8},/obj/effect/landmark/start{name = "Paramedic"},/obj/machinery/camera/network/medbay{c_tag = "Medbay EMT Storage"; dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "buU" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Break Room"; req_one_access = list(10,24,5)},/turf/simulated/floor,/area/engineering/break_room) "buV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "buW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "buX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "buY" = (/obj/machinery/mass_driver{id = "trash"},/turf/simulated/floor/plating/airless,/area/maintenance/disposal) -"buZ" = (/obj/structure/disposaloutlet{dir = 8},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) +"buZ" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/camera/network/security{c_tag = "Engineering - Technical Storage"},/turf/simulated/floor/plating,/area/storage/tech) "bva" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/maintenance/disposal) "bvb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/maintenance/disposal) "bvc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) @@ -3810,7 +3810,7 @@ "bvn" = (/obj/item/weapon/stamp{pixel_x = -3; pixel_y = 3},/obj/item/weapon/stamp/denied{pixel_x = 4; pixel_y = -2},/obj/structure/table,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/quartermaster/office) "bvo" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/clipboard,/obj/item/weapon/pen/red{pixel_x = 2; pixel_y = 6},/obj/structure/table,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor,/area/quartermaster/office) "bvp" = (/obj/machinery/computer/ordercomp,/turf/simulated/floor,/area/quartermaster/office) -"bvq" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor,/area/quartermaster/office) +"bvq" = (/obj/machinery/door/airlock/research{id_tag = "researchdoor"; name = "Research Division Access"; req_access = list(47)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bvr" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/substation/medical) "bvs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/primary/central_three) "bvt" = (/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central_three) @@ -3859,7 +3859,7 @@ "bwk" = (/turf/simulated/wall,/area/medical/medbay2) "bwl" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eng_eva_airlock"; name = "exterior access button"; pixel_x = 0; pixel_y = 25; req_access = list(13)},/turf/simulated/floor/plating/airless,/area/maintenance/atmos_control) "bwm" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/medbay2) -"bwn" = (/obj/machinery/door/airlock/glass_mining{name = "Quartermaster"; req_access = list(41)},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/qm) +"bwn" = (/obj/machinery/portable_atmospherics/powered/pump/filled,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/rnd/mixing) "bwo" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/assembly/chargebay) "bwp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/assembly/chargebay) "bwq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/assembly/robotics) @@ -3923,7 +3923,7 @@ "bxw" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central_two) "bxx" = (/obj/structure/table,/obj/item/weapon/packageWrap,/obj/item/weapon/hand_labeler,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{dir = 1; icon_state = "whiteyellowcorner"},/area/medical/chemistry) "bxy" = (/obj/structure/closet/secure_closet/medical1,/turf/simulated/floor{dir = 1; icon_state = "whiteyellow"},/area/medical/chemistry) -"bxz" = (/obj/machinery/camera{c_tag = "Medbay Drug Storage"; dir = 2; network = list("SS13")},/obj/machinery/light{dir = 1},/obj/structure/closet/secure_closet/chemical,/obj/item/weapon/storage/box/pillbottles,/obj/item/device/radio/headset/headset_med,/turf/simulated/floor{dir = 1; icon_state = "whiteyellow"},/area/medical/chemistry) +"bxz" = (/obj/structure/table,/obj/item/weapon/cartridge/signal/science,/obj/item/weapon/cartridge/signal/science{pixel_x = -4; pixel_y = 2},/obj/item/weapon/cartridge/signal/science{pixel_x = 4; pixel_y = 6},/obj/item/clothing/glasses/welding/superior,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/camera/network/research{c_tag = "Research - RD's Office"; dir = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) "bxA" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bxB" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bxC" = (/turf/simulated/wall,/area/medical/medbay) @@ -3931,14 +3931,14 @@ "bxE" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/medical/medbay) "bxF" = (/turf/simulated/wall,/area/medical/medbay3) "bxG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/medbay3) -"bxH" = (/obj/machinery/camera{c_tag = "EMT Storage"; dir = 1; network = list("SS13")},/obj/machinery/door_control{id = "acutesep"; name = "Acute Separation Shutters"; pixel_y = -25; req_access = list(5)},/obj/item/weapon/stool{pixel_y = 8},/obj/effect/landmark/start{name = "Paramedic"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) +"bxH" = (/obj/structure/disposalpipe/segment,/obj/machinery/camera/network/civilian_west{c_tag = "Cargo - Quartermaster's Office"; dir = 8},/turf/simulated/floor,/area/quartermaster/qm) "bxI" = (/obj/machinery/light/small{dir = 4; pixel_y = 8},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "mining_dock_airlock"; pixel_x = 25; pixel_y = -5; req_one_access = list(13,48); tag_airpump = "mining_dock_pump"; tag_chamber_sensor = "mining_dock_sensor"; tag_exterior_door = "mining_dock_outer"; tag_interior_door = "mining_dock_inner"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "mining_dock_sensor"; pixel_x = 25; pixel_y = 8},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/quartermaster/miningdock) "bxJ" = (/obj/machinery/door/firedoor,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/medical/medbay2) "bxK" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-white_ex"; icon_state = "white_ex"; dir = 2},/area/medical/medbay2) "bxL" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bxM" = (/obj/machinery/photocopier,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bxN" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) -"bxO" = (/obj/machinery/camera{c_tag = "Medbay Fore Starboard"; network = list("SS13")},/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) +"bxO" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/camera/network/research{c_tag = "Research - Toxins Launch Room Access"; dir = 1},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/rnd/mixing) "bxP" = (/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/medical/medbay2) "bxQ" = (/obj/structure/disposalpipe/segment,/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{dir = 1; icon_state = "whitehall_m"; tag = "icon-whitehall_m"},/area/medical/medbay2) "bxR" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/medical/medbay2) @@ -4035,13 +4035,13 @@ "bzE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/rnd/research) "bzF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/rnd/research) "bzG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/rnd/research) -"bzH" = (/obj/machinery/door/airlock/glass_command{name = "Research Director"; req_access = list(30)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/rnd/research) +"bzH" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/quartermaster/office) "bzI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/rnd/research) "bzJ" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/window/westleft{dir = 8; name = "Server Room"; opacity = 1; req_access = list(30)},/obj/machinery/door/window/westleft{dir = 4; name = "Server Room"; opacity = 1; req_access = list(30)},/turf/simulated/floor{icon_state = "dark"},/area/server) "bzK" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/docking) "bzL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/docking) "bzM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/docking) -"bzN" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/wall,/area/rnd/docking) +"bzN" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/rnd/docking) "bzO" = (/obj/machinery/door_control{id = "acute1"; name = "EMT Storage Privacy Shutters"; pixel_x = 26; pixel_y = 25; req_access = list(5)},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bzP" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{id_tag = "cmodoor"; name = "CMO's Office"; req_access = list(40)},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) "bzQ" = (/turf/simulated/floor/plating,/area/quartermaster/storage) @@ -4049,7 +4049,7 @@ "bzS" = (/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) "bzT" = (/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/storage) "bzU" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #1"},/obj/machinery/bot/mulebot{beacon_freq = 1400; home_destination = "QM #1"; suffix = "#1"},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) -"bzV" = (/obj/structure/table,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_x = -30; pixel_y = 0},/obj/machinery/camera{c_tag = "Cargo Office"; dir = 4; network = list("SS13")},/obj/item/stack/sheet/glass{amount = 50; pixel_x = 3; pixel_y = 3},/obj/item/stack/sheet/metal{amount = 50},/obj/item/device/multitool,/turf/simulated/floor,/area/quartermaster/office) +"bzV" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/rnd/docking) "bzW" = (/obj/structure/filingcabinet/filingcabinet,/turf/simulated/floor,/area/quartermaster/office) "bzX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/quartermaster/office) "bzY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/office) @@ -4068,13 +4068,13 @@ "bAl" = (/obj/machinery/light{dir = 1},/obj/structure/table,/obj/item/weapon/hand_tele,/turf/simulated/floor,/area/teleporter) "bAm" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/structure/closet/crate,/obj/item/weapon/crowbar,/turf/simulated/floor,/area/teleporter) "bAn" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/teleporter) -"bAo" = (/obj/machinery/camera{c_tag = "Teleporter"},/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor,/area/teleporter) +"bAo" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 8; name = "hazard door west"},/turf/simulated/floor,/area/hallway/primary/central_three) "bAp" = (/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/teleporter) "bAq" = (/obj/machinery/light_switch{pixel_x = 27},/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,/area/teleporter) "bAr" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/hallway/primary/central_two) "bAs" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 5; pixel_y = 5},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/random/firstaid,/turf/simulated/floor{dir = 8; icon_state = "whiteyellowcorner"},/area/medical/chemistry) -"bAt" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/camera/autoname{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/rnd/docking) -"bAu" = (/obj/structure/bed/chair{dir = 8},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -35},/obj/machinery/light,/turf/simulated/floor,/area/quartermaster/office) +"bAt" = (/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/rnd/docking) +"bAu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/shuttle/plating,/area/rnd/docking) "bAv" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bAw" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bAx" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 1; name = "EMT Storage"; req_access = list(5)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/medbay) @@ -4091,7 +4091,7 @@ "bAI" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bAJ" = (/obj/machinery/door/firedoor,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bAK" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) -"bAL" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Head of Personnel"},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "hop_office_desk"; name = "Desk Privacy Shutter"; pixel_x = 26; pixel_y = 17},/obj/machinery/button/windowtint{pixel_x = 36; pixel_y = 18},/turf/simulated/floor,/area/crew_quarters/heads/hop) +"bAL" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "cargo_bay"; name = "cargo bay hatch controller"; pixel_x = -30; pixel_y = 0; req_one_access = list(13,31); tag_door = "cargo_bay_door"},/obj/machinery/camera/network/civilian_west{c_tag = "Cargo Recieving Dock"; dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/quartermaster/storage) "bAM" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/medical/medbay2) "bAN" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/medbay2) "bAO" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/medical/medbay2) @@ -4101,7 +4101,7 @@ "bAS" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whiteredcorner"},/area/medical/patient_wing) "bAT" = (/obj/machinery/hologram/holopad,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 2; icon_state = "whitered_c"; tag = "icon-whitered_c (WEST)"},/area/medical/patient_wing) "bAU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) -"bAV" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/camera{c_tag = "Medbay Patient Hallway - Starboard"; dir = 1; network = list("SS13")},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) +"bAV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/primary/central_three) "bAW" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor,/area/crew_quarters/heads/hop) "bAX" = (/obj/machinery/door/airlock/engineering{name = "Tech Storage"; req_access = list(23)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/aft) "bAY" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/assembly/chargebay) @@ -4124,12 +4124,12 @@ "bBp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/rnd/xenobiology/xenoflora) "bBq" = (/obj/structure/sign/securearea{pixel_x = -32},/obj/structure/sign/securearea{pixel_x = -32},/obj/structure/sign/securearea{pixel_x = -32},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/rnd/mixing) "bBr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) -"bBs" = (/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Research Shuttle Maintainance"; dir = 2},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) -"bBt" = (/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 0},/obj/machinery/camera{c_tag = "Medbay Patient A"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/patient_a) +"bBs" = (/obj/structure/sign/nosmoking_2{pixel_x = -32},/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 6},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/research{c_tag = "Research - Toxins Lab"; dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) +"bBt" = (/obj/machinery/computer/security/mining,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/machinery/camera/network/civilian_west{c_tag = "Cargo Mining Dock"; dir = 4},/turf/simulated/floor,/area/quartermaster/miningdock) "bBu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/rnd/xenobiology/xenoflora_storage) "bBv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/rnd/docking) -"bBw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/rnd/docking) -"bBx" = (/obj/structure/closet/emcloset,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/rnd/docking) +"bBw" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_mining{id_tag = "cargodoor"; name = "Cargo Office"; req_access = list(50)},/turf/simulated/floor,/area/quartermaster/office) +"bBx" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/command{name = "Teleport Access"; req_access = list(17)},/turf/simulated/floor,/area/teleporter) "bBy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/shuttle/plating,/area/rnd/docking) "bBz" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/shuttle/research/station) "bBA" = (/obj/machinery/door_control{id = "scanhide"; name = "Diagnostics Room Separation Shutters"; pixel_x = -6; pixel_y = -25; req_access = list(5)},/obj/machinery/door_control{id = "acute2"; name = "Acute Treatment Privacy Shutters"; pixel_x = 6; pixel_y = -25; req_access = list(5)},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) @@ -4141,8 +4141,8 @@ "bBG" = (/obj/structure/table,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/weapon/folder/yellow,/obj/item/device/eftpos{eftpos_name = "Cargo Bay EFTPOS scanner"},/turf/simulated/floor,/area/quartermaster/office) "bBH" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/quartermaster/office) "bBI" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/office) -"bBJ" = (/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 0},/obj/machinery/camera{c_tag = "Medbay Patient B"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/patient_b) -"bBK" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/clothing/accessory/stethoscope,/obj/item/clothing/accessory/stethoscope,/obj/item/clothing/accessory/stethoscope,/obj/item/clothing/accessory/stethoscope,/obj/machinery/camera{c_tag = "Medbay Equipment Storage"; dir = 1},/obj/item/clothing/accessory/stethoscope,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = -22},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3) +"bBJ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera/network/exodus{c_tag = "Primary Hallway Aft"; dir = 8},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) +"bBK" = (/obj/machinery/button/driver{dir = 2; id = "toxinsdriver"; pixel_y = 24},/obj/machinery/camera/network/research{c_tag = "Research - Toxins Launch Room"},/turf/simulated/floor,/area/rnd/mixing) "bBL" = (/obj/structure/closet/secure_closet/hop2,/turf/simulated/floor,/area/crew_quarters/heads/hop) "bBM" = (/turf/simulated/floor,/area/crew_quarters/heads/hop) "bBN" = (/obj/structure/table,/obj/item/weapon/pen,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/device/megaphone,/turf/simulated/floor,/area/crew_quarters/heads/hop) @@ -4171,7 +4171,7 @@ "bCk" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/storage/box/syringes{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/syringes,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 28},/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/medbay3) "bCl" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) "bCm" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) -"bCn" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "CMO's Office"; req_access = list(40)},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) +"bCn" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable,/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) "bCo" = (/obj/machinery/door/window/southright{dir = 1; name = "Test Chamber"; req_access = list(47)},/obj/machinery/door/window/southright{name = "Test Chamber"; req_access = list(47)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bCp" = (/turf/simulated/wall,/area/medical/genetics) "bCq" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) @@ -4180,19 +4180,19 @@ "bCt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/rnd/research) "bCu" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bCv" = (/turf/simulated/floor{dir = 9; icon_state = "whitehall"},/area/rnd/research) -"bCw" = (/obj/machinery/camera{c_tag = "Research Division North"; dir = 1; network = list("SS13","Research")},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) +"bCw" = (/obj/structure/table,/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/device/multitool,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/engine,/area/rnd/misc_lab) "bCx" = (/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bCy" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bCz" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) -"bCA" = (/turf/simulated/floor{dir = 2; icon_state = "cmo"},/area/rnd/docking) +"bCA" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/rnd/docking) "bCB" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Research Division"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor{icon_state = "bot"},/area/rnd/research) "bCC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) "bCD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) -"bCE" = (/obj/structure/sign/nosmoking_2{pixel_x = -32},/obj/machinery/camera{c_tag = "Toxins Lab"; dir = 4; network = list("SS13","Research")},/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 6},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) +"bCE" = (/obj/machinery/light_switch{pixel_x = -22; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) "bCF" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay3) "bCG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) -"bCH" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) -"bCI" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1380; id_tag = "research_dock_pump"},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","Supermatter","Atmospherics")},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/rnd/docking) +"bCH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/shuttle/plating,/area/rnd/docking) +"bCI" = (/obj/structure/bed/chair{dir = 8},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -28},/obj/machinery/light,/turf/simulated/floor,/area/quartermaster/office) "bCJ" = (/turf/simulated/wall,/area/rnd/docking) "bCK" = (/obj/machinery/door/airlock/maintenance{name = "Firefighting equipment"; req_access = list(12)},/turf/simulated/floor/plating,/area/maintenance/engineering) "bCL" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "mining_dock_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = 25; req_one_access = list(13,48)},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/miningdock) @@ -4208,13 +4208,13 @@ "bCV" = (/obj/machinery/keycard_auth{pixel_x = -24; pixel_y = 0},/obj/machinery/account_database,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/crew_quarters/heads/hop) "bCW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bCX" = (/obj/structure/table,/obj/item/weapon/folder/blue,/obj/item/weapon/stamp/hop,/obj/item/device/eftpos{eftpos_name = "HoP EFTPOS scanner"},/turf/simulated/floor,/area/crew_quarters/heads/hop) -"bCY" = (/obj/structure/bed/chair/office/light{dir = 8},/obj/effect/landmark/start{name = "Research Director"},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) +"bCY" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Head of Personnel"},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "hop_office_desk"; name = "Desk Privacy Shutter"; pixel_x = 26; pixel_y = 17},/obj/machinery/button/windowtint{pixel_x = 36; pixel_y = 18},/obj/machinery/door_control{desc = "A remote control-switch for the office door."; id = "hopdoor"; name = "Office Door Control"; normaldoorcontrol = 1; pixel_x = 26; pixel_y = -17; req_access = list(57)},/turf/simulated/floor,/area/crew_quarters/heads/hop) "bCZ" = (/obj/machinery/computer/message_monitor,/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_server_room) "bDa" = (/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_server_room) "bDb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_server_room) "bDc" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "mining_dock_inner"; locked = 1; name = "Mining Dock Airlock"; req_access = list(13)},/turf/simulated/floor,/area/quartermaster/miningdock) "bDd" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; name = "Private AI Channel"; pixel_x = -12; pixel_y = 20},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/turretid/stun{control_area = "\improper AI Upload Chamber"; name = "AI Upload turret control"; pixel_x = 6; pixel_y = 24},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload_foyer) -"bDe" = (/obj/structure/bed/chair/office/dark,/obj/effect/landmark/start{name = "Quartermaster"},/turf/simulated/floor,/area/quartermaster/qm) +"bDe" = (/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized,/turf/simulated/floor/plating,/area/rnd/research) "bDf" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "mining_dock_outer"; locked = 1; name = "Mining Dock Airlock"; req_access = list(13)},/turf/simulated/floor/plating,/area/quartermaster/miningdock) "bDg" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "mining_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/shuttle/mining/station) "bDh" = (/obj/effect/landmark/start{name = "Cyborg"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_cyborg_station) @@ -4244,9 +4244,9 @@ "bDF" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bDG" = (/obj/machinery/atmospherics/unary/cryo_cell,/turf/simulated/floor{dir = 9; icon_state = "whitered"},/area/medical/cryo) "bDH" = (/obj/machinery/atmospherics/unary/cryo_cell,/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/medical/cryo) -"bDI" = (/obj/structure/table,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/camera{c_tag = "Medbay Cryogenics"; network = list("SS13")},/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/item/weapon/wrench,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 7; pixel_y = 1},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/turf/simulated/floor{dir = 5; icon_state = "whitered"},/area/medical/cryo) +"bDI" = (/obj/machinery/camera/network/research{c_tag = "Research Division North"; dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bDJ" = (/turf/simulated/wall,/area/medical/cryo) -"bDK" = (/obj/machinery/camera{c_tag = "Medbay Cloning"; network = list("SS13")},/obj/structure/closet/wardrobe/medic_white,/turf/simulated/floor{icon_state = "white"},/area/medical/genetics_cloning) +"bDK" = (/obj/machinery/light/small{dir = 1},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/camera/network/research{c_tag = "Research Shuttle Dock Maintainance"},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) "bDL" = (/turf/simulated/floor{icon_state = "white"},/area/medical/genetics_cloning) "bDM" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics_cloning) "bDN" = (/obj/item/apc_frame,/obj/effect/decal/cleanable/dirt,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/medical/genetics) @@ -4260,7 +4260,7 @@ "bDV" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/medical/medbay3) "bDW" = (/obj/machinery/light{dir = 1},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 8; name = "hazard door west"},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/rnd/research) "bDX" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) -"bDY" = (/obj/machinery/camera{c_tag = "Research Division West"; dir = 2; network = list("SS13","Research")},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) +"bDY" = (/obj/machinery/light{dir = 1},/obj/structure/closet/secure_closet/chemical,/obj/item/weapon/storage/box/pillbottles,/obj/item/device/radio/headset/headset_med,/obj/machinery/camera/network/medbay{c_tag = "Medbay Drug Storage"},/turf/simulated/floor{dir = 1; icon_state = "whiteyellow"},/area/medical/chemistry) "bDZ" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bEa" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bEb" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) @@ -4270,27 +4270,27 @@ "bEf" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whiteredcorner"},/area/rnd/research) "bEg" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/rnd/research) "bEh" = (/obj/machinery/hologram/holopad,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) -"bEi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/research) -"bEj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/research) -"bEk" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/research) +"bEi" = (/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized{dir = 8},/turf/simulated/floor/plating,/area/rnd/research) +"bEj" = (/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 4},/turf/simulated/floor/plating,/area/rnd/research) +"bEk" = (/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 0},/obj/machinery/camera/network/medbay{c_tag = "Medbay Patient A"; dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/patient_a) "bEl" = (/obj/structure/bed/chair/office/dark,/obj/effect/landmark/start{name = "Geneticist"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics_cloning) "bEm" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/effect/landmark/start{name = "Shaft Miner"},/turf/simulated/floor,/area/quartermaster/miningdock) "bEn" = (/turf/simulated/wall,/area/maintenance/research_shuttle) "bEo" = (/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) -"bEp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/rnd/docking) +"bEp" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "research_dock_airlock"; name = "exterior access button"; pixel_x = -40; pixel_y = 8; req_one_access = list(13,65)},/obj/structure/lattice,/turf/space,/area/space) "bEq" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/medical/sleeper) "bEr" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 0; name = "Acute Treatment"; req_access = list(5)},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/medbay) -"bEs" = (/obj/structure/table,/obj/item/weapon/paper{desc = "A few notes scratched out by the last CMO before they departed the station."; info = "\[i]\[center]To the incoming CMO of Exodus:\[/i]\[/center]\[br]\[br]I wish you and your crew well. Do take note:\[br]\[br]\[br]The Medical Emergency Red Phone system has proven itself well. Take care to keep the phones in their designated places as they have been optimised for broadcast. The two handheld green radios (I have left one in this office, and one near the Emergency Entrance) are free to be used. The system has proven effective at alerting Medbay of important details, especially during power outages.\[br]\[br]I think I may have left the toilet cubicle doors shut. It might be a good idea to open them so the staff and patients know they are not engaged.\[br]\[br]The new syringe gun has been stored in secondary storage. I tend to prefer it stored in my office, but 'guidelines' are 'guidelines'.\[br]\[br]Also in secondary storage is the grenade equipment crate. I've just realised I've left it open - you may wish to shut it.\[br]\[br]There were a few problems with their installation, but the Medbay Quarantine shutters should now be working again - they lock down the Emergency and Main entrances to prevent travel in and out. Pray you shan't have to use them.\[br]\[br]The new version of the Medical Diagnostics Manual arrived. I distributed them to the shelf in the staff break room, and one on the table in the corner of this room.\[br]\[br]The exam/triage room has the walking canes in it. I'm not sure why we'd need them - but there you have it.\[br]\[br]Emergency Cryo bags are beside the emergency entrance, along with a kit.\[br]\[br]Spare paper cups for the reception are on the left side of the reception desk.\[br]\[br]I've fed Runtime. She should be fine.\[br]\[br]\[br]\[center]That should be all. Good luck!\[/center]"; name = "Outgoing CMO's Notes"},/obj/item/device/radio{frequency = 1487; name = "Medbay Emergency Radio Link"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) +"bEs" = (/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 0},/obj/machinery/camera/network/medbay{c_tag = "Medbay Patient Room B"; dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/patient_b) "bEt" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/sign/poster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/medical/sleeper) -"bEu" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/rnd/docking) +"bEu" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/obj/machinery/camera/network/civilian_west{c_tag = "Cargo Bay South"; dir = 1},/turf/simulated/floor,/area/quartermaster/storage) "bEv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/rnd/docking) -"bEw" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/camera{c_tag = "Medbay Acute"; network = list("SS13")},/obj/machinery/door_control{id = "acutesep"; name = "Acute Separation Shutters"; pixel_y = 25; req_access = list(5)},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) +"bEw" = (/obj/machinery/door/airlock/maintenance{name = "Mining Maintenance"; req_access = list(48)},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/quartermaster/miningdock) "bEx" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage) "bEy" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/status_display/supply_display{pixel_y = -32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/quartermaster/storage) "bEz" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/light,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -35},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/quartermaster/storage) "bEA" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/quartermaster/storage) "bEB" = (/obj/machinery/light,/turf/simulated/floor{dir = 8; icon_state = "loadingarea"},/area/quartermaster/storage) -"bEC" = (/obj/machinery/camera{c_tag = "Cargo Bay South"; dir = 1},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/turf/simulated/floor,/area/quartermaster/storage) +"bEC" = (/obj/structure/grille,/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 1},/turf/simulated/floor/plating,/area/quartermaster/qm) "bED" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/quartermaster/storage) "bEE" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #4"},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) "bEF" = (/obj/structure/table,/obj/machinery/newscaster{pixel_x = -27; pixel_y = 1},/obj/item/weapon/tape_roll,/obj/item/weapon/storage/firstaid/regular{pixel_x = 6; pixel_y = -5},/turf/simulated/floor,/area/quartermaster/office) @@ -4298,23 +4298,23 @@ "bEH" = (/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/computer/guestpass{pixel_y = -28},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "browncorner"},/area/quartermaster/office) "bEI" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/office) "bEJ" = (/obj/structure/noticeboard{pixel_y = -27},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/quartermaster/office) -"bEK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office) -"bEL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/quartermaster/office) -"bEM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/quartermaster/office) +"bEK" = (/obj/machinery/status_display/supply_display,/turf/simulated/wall,/area/quartermaster/qm) +"bEL" = (/obj/structure/grille,/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 4},/obj/structure/window/reinforced/polarized{dir = 1},/turf/simulated/floor/plating,/area/quartermaster/qm) +"bEM" = (/obj/structure/grille,/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 1},/turf/simulated/floor/plating,/area/quartermaster/qm) "bEN" = (/obj/machinery/atm{pixel_x = -28},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central_three) "bEO" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central_three) "bEP" = (/turf/simulated/floor{dir = 4; icon_state = "loadingarea"},/area/hallway/primary/central_three) "bEQ" = (/obj/structure/filingcabinet/chestdrawer,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/crew_quarters/heads/hop) -"bER" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Personnel's Desk"; departmentType = 5; name = "Head of Personnel RC"; pixel_y = -30},/obj/machinery/camera{c_tag = "Head of Personnel's Office"; dir = 1},/turf/simulated/floor,/area/crew_quarters/heads/hop) +"bER" = (/obj/structure/disposalpipe/segment,/obj/machinery/light_switch{pixel_x = 22; pixel_y = -9},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/camera/network/medbay{c_tag = "Medbay Port Corridor"; dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay) "bES" = (/obj/structure/table,/obj/machinery/photocopier/faxmachine{department = "Head of Personnel's Office"},/turf/simulated/floor,/area/crew_quarters/heads/hop) "bET" = (/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/crew_quarters/heads/hop) "bEU" = (/obj/machinery/blackbox_recorder,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_server_room) "bEV" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_server_room) -"bEW" = (/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/camera{c_tag = "Messaging Server"; dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_server_room) -"bEX" = (/obj/machinery/camera{c_tag = "AI Upload Access"; dir = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/light,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload_foyer) +"bEW" = (/obj/machinery/light_switch{pixel_x = -22; pixel_y = -9},/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Medical Officer's Desk"; departmentType = 5; name = "Chief Medical Officer RC"; pixel_x = -34; pixel_y = 2},/obj/machinery/camera/network/medbay{c_tag = "Medbay - CMO's Office"; dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/crew_quarters/heads/cmo) +"bEX" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/door_control{id = "acutesep"; name = "Acute Separation Shutters"; pixel_y = 25; req_access = list(5)},/obj/machinery/camera/network/medbay{c_tag = "Medbay Acute"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bEY" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload_foyer) -"bEZ" = (/obj/machinery/door/airlock/maintenance{name = "Mining Maintenance"; req_access = list(48)},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/quartermaster/miningdock) -"bFa" = (/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/camera{c_tag = "Cyborg Station"; dir = 1},/obj/structure/closet/crate{name = "Camera Assembly Crate"},/obj/item/weapon/camera_assembly,/obj/item/weapon/camera_assembly,/obj/item/weapon/camera_assembly,/obj/item/weapon/camera_assembly,/obj/item/weapon/camera_assembly,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_cyborg_station) +"bEZ" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Toxins Launch Room"; req_access = list(8)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/rnd/mixing) +"bFa" = (/obj/machinery/camera/network/security{c_tag = "Engineering - Secure Technical Storage"},/turf/simulated/floor,/area/storage/tech) "bFb" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/recharge_station,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_cyborg_station) "bFc" = (/obj/machinery/recharge_station,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_cyborg_station) "bFd" = (/obj/machinery/computer/teleporter,/turf/simulated/floor/plating,/area/teleporter) @@ -4328,10 +4328,10 @@ "bFl" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bFm" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bFn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) -"bFo" = (/obj/machinery/camera{c_tag = "Medbay Emergency Entrance"; dir = 2; network = list("SS13")},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) +"bFo" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/machinery/camera/network/civilian_west{c_tag = "Cargo Mining Dock Airlock"; dir = 8},/turf/simulated/floor{icon_state = "warning"},/area/quartermaster/miningdock) "bFp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bFq" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/medbay) -"bFr" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Toxins Launch Room"; req_access = list(8)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/rnd/mixing) +"bFr" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Toxins Launch Room Access"; req_access = list(8)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bFs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) "bFt" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bFu" = (/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/medbay2) @@ -4345,7 +4345,7 @@ "bFC" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/plating,/area/medical/genetics) "bFD" = (/turf/simulated/floor/plating,/area/medical/genetics) "bFE" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating,/area/medical/genetics) -"bFF" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Toxins Launch Room Access"; req_access = list(8)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) +"bFF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bFG" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; external_pressure_bound_default = 0; icon_state = "map_vent_in"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; use_power = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/server) "bFH" = (/obj/machinery/computer/mech_bay_power_console,/obj/machinery/light{dir = 1},/turf/simulated/floor/bluegrid,/area/medical/sleeper) "bFI" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay) @@ -4361,7 +4361,7 @@ "bFS" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bFT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/research) "bFU" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/stamp/rd{pixel_x = 3; pixel_y = -2},/obj/item/weapon/paper/monitorkey,/obj/item/device/megaphone,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) -"bFV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) +"bFV" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bFW" = (/obj/machinery/computer/aifixer,/obj/machinery/requests_console{announcementConsole = 1; department = "Research Director's Desk"; departmentType = 5; name = "Research Director RC"; pixel_x = -2; pixel_y = 30},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) "bFX" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"},/area/crew_quarters/heads/hor) "bFY" = (/obj/structure/lamarr,/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/hor) @@ -4371,12 +4371,12 @@ "bGc" = (/turf/simulated/floor/plating,/area/maintenance/research_shuttle) "bGd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/research_shuttle) "bGe" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) -"bGf" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/rnd/docking) -"bGg" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 2; icon_state = "cmo"},/area/rnd/docking) -"bGh" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor{dir = 2; icon_state = "cmo"},/area/rnd/docking) -"bGi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/shuttle/plating,/area/rnd/docking) -"bGj" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "research_dock_sensor"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/rnd/docking) -"bGk" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) +"bGf" = (/obj/structure/bed,/obj/item/weapon/bedsheet/orange,/obj/machinery/camera/network/prison{c_tag = "Security - Brig Bedroom"; dir = 6},/turf/simulated/floor,/area/security/prison) +"bGg" = (/obj/structure/table,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/machinery/camera/network/prison{c_tag = "Security - Common Brig Southwest"; dir = 4},/turf/simulated/floor,/area/security/prison) +"bGh" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/weapon/rig/ce/equipped,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/crew_quarters/heads/chief) +"bGi" = (/obj/structure/bed/chair/office/light,/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/server) +"bGj" = (/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized{dir = 4},/turf/simulated/floor/plating,/area/rnd/research) +"bGk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bGl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "bGm" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "bGn" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) @@ -4386,17 +4386,17 @@ "bGr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "bGs" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "bGt" = (/turf/simulated/wall,/area/quartermaster/miningdock) -"bGu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) +"bGu" = (/obj/effect/landmark/start{name = "Scientist"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bGv" = (/turf/simulated/wall,/area/quartermaster/qm) "bGw" = (/obj/structure/filingcabinet,/turf/simulated/floor,/area/quartermaster/qm) "bGx" = (/obj/machinery/computer/supplycomp,/turf/simulated/floor,/area/quartermaster/qm) "bGy" = (/obj/machinery/computer/security/mining,/turf/simulated/floor,/area/quartermaster/qm) "bGz" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor,/area/quartermaster/qm) -"bGA" = (/obj/structure/disposalpipe/segment,/obj/machinery/camera{c_tag = "Cargo Bay Entrance"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/primary/central_three) +"bGA" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/camera/network/command{c_tag = "Bridge - Teleporter"},/turf/simulated/floor,/area/teleporter) "bGB" = (/obj/machinery/status_display,/turf/simulated/wall,/area/hallway/primary/central_three) -"bGC" = (/obj/effect/landmark/start{name = "Scientist"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) -"bGD" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) -"bGE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) +"bGC" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) +"bGD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) +"bGE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bGF" = (/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bGG" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bGH" = (/obj/machinery/vending/medical,/turf/simulated/wall,/area/medical/medbay) @@ -4414,11 +4414,11 @@ "bGT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whiteredcorner"},/area/medical/cryo) "bGU" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/cryo) "bGV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/cryo) -"bGW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) +"bGW" = (/obj/machinery/door/airlock/glass_research{name = "Toxins Lab"; req_access = list(8)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bGX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics_cloning) "bGY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/hologram/holopad,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics_cloning) "bGZ" = (/obj/structure/disposalpipe/junction{dir = 8},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics_cloning) -"bHa" = (/obj/machinery/door/airlock/glass_research{name = "Toxins Lab"; req_access = list(8)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) +"bHa" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Chief Medical Officer"},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "cmooffice"; name = "CMO Privacy Shutters"; pixel_x = 38; pixel_y = 21},/obj/machinery/door_control{desc = "A remote control switch for the CMO's office."; id = "cmodoor"; name = "CMO Office Door Control"; normaldoorcontrol = 1; pixel_x = 28; pixel_y = 21},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "virologyquar"; name = "Virology Emergency Lockdown Control"; pixel_x = -15; pixel_y = 38; req_access = list(5)},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "medbayquar"; name = "Medbay Emergency Lockdown Control"; pixel_x = -15; pixel_y = 30; req_access = list(5)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) "bHb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/medical/genetics) "bHc" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/medical/genetics) "bHd" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/medical/genetics) @@ -4426,11 +4426,11 @@ "bHf" = (/obj/item/light_fixture_frame,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor{icon_state = "floorgrime"},/area/medical/genetics) "bHg" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay2) "bHh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; dir = 0; icon_state = "shutter0"; id = "staffroom"; name = "Staff Room Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/cryo) -"bHi" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Chief Medical Officer"},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "cmooffice"; name = "CMO Privacy Shutters"; pixel_x = 38; pixel_y = 21},/obj/machinery/door_control{desc = "A remote control switch for the CMO's office."; id = "cmodoor"; name = "CMO Office Door Control"; normaldoorcontrol = 1; pixel_x = 28; pixel_y = 21},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "virologyquar"; name = "Virology Emergency Lockdown Control"; pixel_x = -15; pixel_y = 38; req_access = list(5)},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "medbayquar"; name = "Medbay Emergency Lockdown Control"; pixel_x = -15; pixel_y = 30; req_access = list(5)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) -"bHj" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/bed/roller,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = -32},/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/structure/closet/secure_closet/medical_wall{name = "O- Blood Locker"; pixel_x = -32},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/sleeper) +"bHi" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/bed/roller,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = -32},/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/structure/closet/secure_closet/medical_wall{name = "O- Blood Locker"; pixel_x = -32},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/sleeper) +"bHj" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access = list(29,47)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bHk" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) -"bHl" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access = list(29,47)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) -"bHm" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Research Division Delivery"; req_access = list(47)},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor{icon_state = "delivery"},/area/rnd/research) +"bHl" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Research Division Delivery"; req_access = list(47)},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor{icon_state = "delivery"},/area/rnd/research) +"bHm" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/maintenance{req_one_access = list(5,12,47)},/turf/simulated/floor/plating,/area/maintenance/research_port) "bHn" = (/obj/machinery/computer/robotics,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) "bHo" = (/turf/simulated/floor{dir = 10; icon_state = "warnwhite"},/area/crew_quarters/heads/hor) "bHp" = (/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/crew_quarters/heads/hor) @@ -4456,26 +4456,26 @@ "bHJ" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central_three) "bHK" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central_three) "bHL" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central_three) -"bHM" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/camera{c_tag = "Central Primary Hallway South South-West"; dir = 2},/turf/simulated/floor,/area/hallway/primary/central_three) +"bHM" = (/obj/structure/table,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_x = -30; pixel_y = 0},/obj/item/stack/sheet/glass{amount = 50; pixel_x = 3; pixel_y = 3},/obj/item/stack/sheet/metal{amount = 50},/obj/item/device/multitool,/obj/machinery/camera/network/civilian_west{c_tag = "Cargo Office"; dir = 4},/turf/simulated/floor,/area/quartermaster/office) "bHN" = (/obj/machinery/ai_status_display{pixel_y = 32},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central_three) "bHO" = (/obj/structure/sign/securearea{pixel_y = 32},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central_three) -"bHP" = (/obj/structure/bed/chair/office/light,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor{icon_state = "dark"},/area/server) +"bHP" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/server) "bHQ" = (/obj/structure/sign/securearea{pixel_y = 32},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/hallway/primary/central_three) "bHR" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/hallway/primary/central_three) -"bHS" = (/obj/machinery/camera{c_tag = "Central Primary Hallway South South-East"; dir = 2},/turf/simulated/floor,/area/hallway/primary/central_three) +"bHS" = (/obj/structure/table,/obj/item/weapon/aiModule/reset,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera/network/command{c_tag = "AI Upload"; dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bHT" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor,/area/hallway/primary/central_three) -"bHU" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/primary/central_two) -"bHV" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "hazard door west"},/turf/simulated/floor,/area/hallway/primary/central_two) +"bHU" = (/obj/structure/bed/chair/comfy/brown{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/camera/network/command{c_tag = "Bridge - Captain's Quarters"; dir = 1},/turf/simulated/floor/carpet,/area/crew_quarters/captain) +"bHV" = (/obj/structure/sign/goldenplaque{desc = "Done No Harm."; name = "Best Doctor 2552"; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera/network/medbay{c_tag = "Medbay Equipment Storage Hallway"; dir = 1},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3) "bHW" = (/obj/machinery/atm{pixel_y = 32},/turf/simulated/floor,/area/hallway/primary/central_two) "bHX" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = 28},/turf/simulated/floor,/area/hallway/primary/central_two) "bHY" = (/obj/machinery/newscaster{pixel_y = 32},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/hallway/primary/central_two) -"bHZ" = (/obj/machinery/camera{c_tag = "Central Hallway South-East"; dir = 2},/turf/simulated/floor,/area/hallway/primary/central_two) +"bHZ" = (/obj/machinery/camera/network/exodus{c_tag = "Primary Hallway Central - South Southeast"},/turf/simulated/floor,/area/hallway/primary/central_three) "bIa" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "staffroom"; name = "Staff Room Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay2) "bIb" = (/obj/machinery/light_switch{pixel_x = -22; pixel_y = 11},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bIc" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 2; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay) "bId" = (/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay) "bIe" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3) -"bIf" = (/obj/structure/sign/goldenplaque{desc = "Done No Harm."; name = "Best Doctor 2552"; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera{c_tag = "Medbay Equipment Storage Hallway"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3) +"bIf" = (/obj/machinery/camera/network/civilian_west{c_tag = "Cargo Warehouse"; dir = 8},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) "bIg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "white_cmo"; tag = "icon-whitehall_m"},/area/medical/medbay3) "bIh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3) "bIi" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) @@ -4484,22 +4484,22 @@ "bIl" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor{dir = 10; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/cryo) "bIm" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/cryo) "bIn" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/cryo) -"bIo" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/maintenance{req_one_access = list(5,12,47)},/turf/simulated/floor/plating,/area/maintenance/research_port) +"bIo" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Genetics Laboratory"; req_access = list(9)},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bIp" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics_cloning) "bIq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/genetics) "bIr" = (/obj/item/light_fixture_frame,/turf/simulated/floor/plating,/area/medical/genetics) "bIs" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/medical/genetics) "bIt" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "floorgrime"},/area/medical/genetics) "bIu" = (/obj/item/weapon/table_parts,/turf/simulated/floor{icon_state = "floorgrime"},/area/medical/genetics) -"bIv" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Genetics Laboratory"; req_access = list(9)},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) +"bIv" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Cloning Laboratory"; req_access = list(5)},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bIw" = (/turf/simulated/wall/r_wall,/area/maintenance/research_port) "bIx" = (/turf/simulated/wall/r_wall,/area/server) "bIy" = (/obj/machinery/r_n_d/server/robotics,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/server) "bIz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; dir = 0; icon_state = "shutter0"; id = "staffroom"; name = "Staff Room Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/cryo) -"bIA" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/server) -"bIB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor/plating,/area/server) +"bIA" = (/obj/structure/table/rack,/obj/item/weapon/rig/hazmat/equipped,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) +"bIB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/server) "bIC" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "dark"},/area/server) -"bID" = (/obj/machinery/camera{c_tag = "Research Division Server Room"; dir = 2; network = list("SS13","Research"); pixel_x = 0},/obj/machinery/power/apc/high{dir = 1; name = "north bump"; pixel_y = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "dark"},/area/server) +"bID" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/camera/network/medbay{c_tag = "Medbay Fore Starboard Corridor"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bIE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "staffroom"; name = "Staff Room Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay2) "bIF" = (/turf/simulated/wall/r_wall,/area/rnd/storage) "bIG" = (/obj/machinery/computer/area_atmos,/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{icon_state = "bot"},/area/rnd/storage) @@ -4508,7 +4508,7 @@ "bIJ" = (/turf/simulated/wall,/area/rnd/storage) "bIK" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/rnd/research) "bIL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/research) -"bIM" = (/obj/structure/table/rack,/obj/item/weapon/rig/hazmat/equipped,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) +"bIM" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/rnd/docking) "bIN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) "bIO" = (/obj/machinery/computer/mecha,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) "bIP" = (/obj/machinery/computer/area_atmos,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) @@ -4516,14 +4516,14 @@ "bIR" = (/obj/structure/table,/obj/item/device/taperecorder{pixel_x = -3},/obj/item/device/paicard{pixel_x = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/item/weapon/circuitboard/teleporter,/obj/item/weapon/circuitboard/aicore{pixel_x = -2; pixel_y = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) "bIS" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/research_shuttle) "bIT" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_x = -30; pixel_y = 0},/turf/simulated/floor,/area/quartermaster/miningdock) -"bIU" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Cloning Laboratory"; req_access = list(5)},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) +"bIU" = (/obj/machinery/door/airlock/research{name = "Research Shuttle Dock"; req_access = list(65)},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) "bIV" = (/obj/structure/disposalpipe/segment,/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,/area/quartermaster/miningdock) "bIW" = (/obj/structure/table/rack{dir = 1},/obj/item/weapon/pickaxe{pixel_x = 5},/obj/item/weapon/shovel{pixel_x = -5},/turf/simulated/floor,/area/quartermaster/miningdock) -"bIX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/quartermaster/qm) +"bIX" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "research_dock_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = -25; req_one_access = list(13,65)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/rnd/docking) "bIY" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/device/megaphone,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/qm) "bIZ" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen{pixel_x = 4; pixel_y = 4},/obj/item/weapon/pen/red{pixel_x = 2; pixel_y = 6},/turf/simulated/floor,/area/quartermaster/qm) "bJa" = (/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/stamp{name = "Quartermaster's stamp"; pixel_x = 0; pixel_y = 0},/turf/simulated/floor,/area/quartermaster/qm) -"bJb" = (/obj/structure/disposalpipe/segment,/obj/machinery/camera{c_tag = "Quartermaster's Office"; dir = 8},/turf/simulated/floor,/area/quartermaster/qm) +"bJb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/camera/network/exodus{c_tag = "Primary Hallway Central - South Southwest"},/turf/simulated/floor,/area/hallway/primary/central_three) "bJc" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=AIW"; location = "QM"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor,/area/hallway/primary/central_three) "bJd" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/hallway/primary/central_three) "bJe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/central_three) @@ -4538,8 +4538,8 @@ "bJn" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=CHE"; location = "AIE"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/central_three) "bJo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/central_three) "bJp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor,/area/hallway/primary/central_three) -"bJq" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/central_two) -"bJr" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "hazard door west"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/central_two) +"bJq" = (/obj/structure/disposalpipe/segment,/obj/machinery/camera/network/exodus{c_tag = "Primary Hallway Central - Southwest"; dir = 8},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/primary/central_three) +"bJr" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/obj/machinery/camera/network/research{c_tag = "Research Shuttle Dock Airlock"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/rnd/docking) "bJs" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/central_two) "bJt" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/central_two) "bJu" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/central_two) @@ -4551,7 +4551,7 @@ "bJA" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay) "bJB" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay) "bJC" = (/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor,/area/rnd/storage) -"bJD" = (/obj/machinery/door/airlock/research{name = "Research Shuttle Dock"; req_access = list(65)},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) +"bJD" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_dock_outer"; locked = 1; name = "Shuttle Airlock"; req_access = list(13)},/turf/simulated/floor/plating,/area/rnd/docking) "bJE" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/medical/medbay4) "bJF" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay4) "bJG" = (/obj/structure/disposalpipe/segment,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) @@ -4569,7 +4569,7 @@ "bJS" = (/obj/machinery/alarm/server{dir = 4; pixel_x = -22; pixel_y = 0},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/server) "bJT" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/server) "bJU" = (/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/server) -"bJV" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_dock_outer"; locked = 1; name = "Shuttle Airlock"; req_access = list(13)},/turf/simulated/floor/plating,/area/rnd/docking) +"bJV" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/command{name = "Conference Room"; req_access = list(19)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/bridge/meeting_room) "bJW" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/turf/simulated/floor{icon_state = "dark"},/area/server) "bJX" = (/obj/item/weapon/stool{pixel_y = 8},/obj/effect/landmark/start{name = "Paramedic"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bJY" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor{icon_state = "dark"},/area/server) @@ -4579,7 +4579,7 @@ "bKc" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/rnd/research) "bKd" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bKe" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "whitehall"},/area/rnd/research) -"bKf" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "research_dock_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = 8; req_one_access = list(13,65)},/turf/space,/area/space) +"bKf" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "research_dock_pump"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/rnd/docking) "bKg" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) "bKh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) "bKi" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hop) @@ -4588,7 +4588,7 @@ "bKl" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/research_shuttle) "bKm" = (/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,/turf/simulated/floor/plating,/area/maintenance/research_shuttle) "bKn" = (/obj/structure/table/rack,/obj/item/weapon/extinguisher,/obj/item/weapon/storage/belt/utility,/obj/item/clothing/mask/gas,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/research_shuttle) -"bKo" = (/obj/structure/table/rack,/obj/item/weapon/extinguisher,/obj/item/weapon/storage/belt/utility,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/research_shuttle) +"bKo" = (/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "medbayquar"; name = "Medbay Emergency Quarantine Shutters"; opacity = 0},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/medical/sleeper) "bKp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/rnd/test_area) "bKq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/rnd/test_area) "bKr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/rnd/test_area) @@ -4599,9 +4599,9 @@ "bKw" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/mining/station) "bKx" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/mining/station) "bKy" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/mining/station) -"bKz" = (/obj/machinery/computer/security/mining,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/machinery/camera{c_tag = "Mining Dock"; dir = 4; network = list("SS13")},/turf/simulated/floor,/area/quartermaster/miningdock) +"bKz" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/mining{id_tag = "cargodoor"; name = "Mining Dock"; req_access = list(48)},/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,/area/quartermaster/miningdock) "bKA" = (/turf/simulated/floor,/area/quartermaster/miningdock) -"bKB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/qm) +"bKB" = (/obj/machinery/door/airlock/command{id_tag = "hopdoor"; name = "Head of Personnel"; req_access = list(57)},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/crew_quarters/heads/hop) "bKC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/qm) "bKD" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/quartermaster/qm) "bKE" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/qm) @@ -4620,13 +4620,13 @@ "bKR" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light,/turf/simulated/floor,/area/hallway/primary/central_three) "bKS" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 8; sortType = "Janitor Closet"; name = "Janitor Closet"},/turf/simulated/floor,/area/hallway/primary/central_three) "bKT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/hallway/primary/central_three) -"bKU" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/primary/central_two) -"bKV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 8; name = "hazard door west"},/turf/simulated/floor,/area/hallway/primary/central_two) +"bKU" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera/network/medbay{c_tag = "Medbay Emergency Entrance"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) +"bKV" = (/obj/machinery/light_switch{pixel_y = -25},/obj/structure/closet/crate{name = "Camera Assembly Crate"},/obj/item/weapon/camera_assembly,/obj/item/weapon/camera_assembly,/obj/item/weapon/camera_assembly,/obj/item/weapon/camera_assembly,/obj/item/weapon/camera_assembly,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/camera/network/command{c_tag = "AI - Cyborg Station"; dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_cyborg_station) "bKW" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor,/area/hallway/primary/central_two) "bKX" = (/obj/machinery/light,/turf/simulated/floor,/area/hallway/primary/central_two) "bKY" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor,/area/hallway/primary/central_two) "bKZ" = (/obj/structure/closet/secure_closet/medical1,/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; freerange = 0; frequency = 1485; listening = 1; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -31},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/random/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) -"bLa" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/command{name = "Teleport Access"; req_access = list(17)},/turf/simulated/floor,/area/hallway/primary/central_two) +"bLa" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload"; req_access = list(16)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bLb" = (/obj/machinery/sleep_console,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bLc" = (/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "scanhide"; name = "Diagnostics Room Separation Shutters"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) "bLd" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/closet/fireaxecabinet{pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) @@ -4639,7 +4639,7 @@ "bLk" = (/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "scanhide"; name = "Diagnostics Room Separation Shutters"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) "bLl" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay4) "bLm" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay4) -"bLn" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload"; req_access = list(16)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) +"bLn" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload Access"; req_access = list(16)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "vault"},/area/turret_protected/ai_upload_foyer) "bLo" = (/turf/simulated/wall,/area/medical/genetics_cloning) "bLp" = (/obj/structure/computerframe,/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor{icon_state = "floorgrime"},/area/medical/genetics) "bLq" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/constructable_frame/machine_frame,/turf/simulated/floor/plating,/area/medical/genetics) @@ -4649,9 +4649,9 @@ "bLu" = (/obj/structure/disposalpipe/segment,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/research_port) "bLv" = (/obj/structure/reagent_dispensers/watertank,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/research_port) "bLw" = (/obj/machinery/r_n_d/server/core,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/server) -"bLx" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_mining{name = "Cargo Office"; req_access = list(50)},/turf/simulated/floor,/area/quartermaster/office) +"bLx" = (/obj/structure/table,/obj/machinery/computer/skills{icon_state = "medlaptop"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) "bLy" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/server) -"bLz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor/plating,/area/server) +"bLz" = (/obj/machinery/power/apc/high{dir = 1; name = "north bump"; pixel_y = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/camera/network/research{c_tag = "Research - Server Room"},/turf/simulated/floor{icon_state = "dark"},/area/server) "bLA" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor{icon_state = "dark"},/area/server) "bLB" = (/obj/machinery/computer/rdservercontrol,/turf/simulated/floor{icon_state = "dark"},/area/server) "bLC" = (/obj/machinery/computer/message_monitor,/turf/simulated/floor{icon_state = "dark"},/area/server) @@ -4660,7 +4660,7 @@ "bLF" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bLG" = (/obj/machinery/light_switch{pixel_y = -23},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) "bLH" = (/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = -24},/obj/machinery/light,/obj/structure/table,/obj/machinery/photocopier/faxmachine{department = "Research Director's Office"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hop) -"bLI" = (/obj/structure/table,/obj/item/weapon/cartridge/signal/science,/obj/item/weapon/cartridge/signal/science{pixel_x = -4; pixel_y = 2},/obj/item/weapon/cartridge/signal/science{pixel_x = 4; pixel_y = 6},/obj/machinery/camera{c_tag = "Research Director's Office"; dir = 1; network = list("SS13","Research")},/obj/item/clothing/glasses/welding/superior,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) +"bLI" = (/obj/structure/bed/chair/office/light{dir = 8},/obj/effect/landmark/start{name = "Research Director"},/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/door_control{id = "Biohazard"; name = "Biohazard Shutter Control"; pixel_x = -38; pixel_y = 13; req_access = list(47)},/obj/machinery/button/windowtint{pixel_x = -26; pixel_y = 21},/obj/machinery/door_control{desc = "A remote control-switch for the cargo doors."; id = "researchdoor"; name = "Research door control"; normaldoorcontrol = 1; pixel_x = -27; pixel_y = 13; req_access = list(30)},/obj/machinery/computer/security/telescreen{desc = "Used for watching the RD's goons from the safety of his office."; name = "Research Monitor"; network = list("Research","Toxins Test Area","Robots","Anomaly Isolation","Research Outpost"); pixel_x = 0; pixel_y = 34},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) "bLJ" = (/obj/structure/closet/secure_closet/RD,/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) "bLK" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) "bLL" = (/obj/structure/window/reinforced,/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) @@ -4676,7 +4676,7 @@ "bLV" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/mining/station) "bLW" = (/obj/structure/table,/turf/simulated/shuttle/floor,/area/shuttle/mining/station) "bLX" = (/obj/machinery/computer/shuttle_control/mining,/turf/simulated/shuttle/floor,/area/shuttle/mining/station) -"bLY" = (/obj/machinery/camera{c_tag = "Cargo Recieving Dock"; dir = 4},/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "cargo_bay"; name = "cargo bay hatch controller"; pixel_x = -30; pixel_y = 0; req_one_access = list(13,31); tag_door = "cargo_bay_door"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/quartermaster/storage) +"bLY" = (/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access = list(47)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) "bLZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) "bMa" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/floor/plating,/area/quartermaster/miningdock) "bMb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) @@ -4685,16 +4685,16 @@ "bMe" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/miningdock) "bMf" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/miningdock) "bMg" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/miningdock) -"bMh" = (/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access = list(47)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) -"bMi" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor,/area/quartermaster/qm) +"bMh" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medical Equipment"; req_access = list(5)},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) +"bMi" = (/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "research_dock_sensor"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "admin_shuttle_dock_pump"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/rnd/docking) "bMj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/qm) "bMk" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/quartermaster/qm) -"bMl" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medical Equipment"; req_access = list(5)},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) +"bMl" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medicine Storage"; req_access = list(5)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bMm" = (/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/central_three) "bMn" = (/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central_three) "bMo" = (/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/junction,/turf/simulated/floor,/area/hallway/primary/central_three) -"bMp" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medicine Storage"; req_access = list(5)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) -"bMq" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medical Equipment"; req_access = list(5)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) +"bMp" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medical Equipment"; req_access = list(5)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) +"bMq" = (/obj/machinery/door/airlock{name = "Medbay Substation"; req_access = list(5)},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/substation/medical) "bMr" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central_two) "bMs" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/mining/station) "bMt" = (/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acutesep"; name = "Acute Separation Shutters"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) @@ -4706,12 +4706,12 @@ "bMz" = (/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) "bMA" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) "bMB" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/closet/secure_closet/CMO,/obj/item/clothing/mask/gas,/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/crew_quarters/heads/cmo) -"bMC" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) +"bMC" = (/obj/structure/table,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) "bMD" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 2},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/light_switch{pixel_x = 22; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bME" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/medical/medbay2) "bMF" = (/obj/machinery/light{dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/door_control{id = "staffroom"; name = "Staff Room Shutters Control"; pixel_x = -26; pixel_y = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) "bMG" = (/obj/structure/reagent_dispensers/water_cooler,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) -"bMH" = (/obj/machinery/camera{c_tag = "Medbay Break Room"; network = list("SS13")},/obj/machinery/washing_machine,/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) +"bMH" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/clothing/accessory/stethoscope,/obj/item/clothing/accessory/stethoscope,/obj/item/clothing/accessory/stethoscope,/obj/item/clothing/accessory/stethoscope,/obj/item/clothing/accessory/stethoscope,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = -22},/obj/machinery/camera/network/medbay{c_tag = "Medbay Equipment Storage"; dir = 1},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3) "bMI" = (/obj/structure/noticeboard{pixel_y = 28},/obj/structure/table/woodentable,/obj/item/weapon/book/manual/medical_diagnostics_manual{pixel_y = 7},/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 4; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Break Room Emergency Phone"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) "bMJ" = (/obj/machinery/light{dir = 1},/obj/structure/bookcase/manuals/medical,/obj/item/weapon/book/manual/stasis,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) "bMK" = (/turf/simulated/wall,/area/crew_quarters/medbreak) @@ -4719,10 +4719,10 @@ "bMM" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor{icon_state = "floorgrime"},/area/medical/genetics) "bMN" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/research_port) "bMO" = (/turf/simulated/wall/r_wall,/area/rnd/misc_lab) -"bMP" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera{c_tag = "Toxins Storage"; dir = 4; network = list("SS13","Research")},/turf/simulated/floor,/area/rnd/storage) +"bMP" = (/obj/structure/closet/wardrobe/medic_white,/obj/machinery/camera/network/medbay{c_tag = "Medbay Cloning"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics_cloning) "bMQ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/mob/living/simple_animal/mouse/white,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/storage) "bMR" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/rnd/storage) -"bMS" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/rnd/research) +"bMS" = (/obj/machinery/light/small{dir = 4},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "research_dock_airlock"; pixel_x = 25; pixel_y = 0; req_one_access = list(13,65); tag_airpump = "research_dock_pump"; tag_chamber_sensor = "research_dock_sensor"; tag_exterior_door = "research_dock_outer"; tag_interior_door = "research_dock_inner"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/rnd/docking) "bMT" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bMU" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/turf/simulated/floor{dir = 9; icon_state = "whitehall"},/area/rnd/research) "bMV" = (/turf/simulated/wall/r_wall,/area/rnd/mixing) @@ -4733,20 +4733,20 @@ "bNa" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/research_shuttle) "bNb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/research_shuttle) "bNc" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) -"bNd" = (/obj/machinery/door/airlock{name = "Medbay Substation"; req_access = list(5)},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/substation/medical) +"bNd" = (/obj/machinery/door/airlock/research{name = "Research Shuttle Dock"; req_access = list(65)},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) "bNe" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating/airless,/area/rnd/test_area) -"bNf" = (/obj/machinery/camera{c_tag = "Toxins Test Chamber North"; network = list("Toxins Test Area")},/obj/machinery/light{dir = 1},/turf/simulated/floor/airless,/area/rnd/test_area) +"bNf" = (/obj/structure/table,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/item/weapon/wrench,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 7; pixel_y = 1},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/machinery/camera/network/medbay{c_tag = "Medbay Cryogenics"},/turf/simulated/floor{dir = 5; icon_state = "whitered"},/area/medical/cryo) "bNg" = (/turf/simulated/shuttle/floor,/area/shuttle/mining/station) "bNh" = (/obj/machinery/light_switch{pixel_x = 22; pixel_y = 0},/obj/structure/bed,/obj/item/weapon/bedsheet/blue,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) "bNi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) "bNj" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "mining_dock_pump"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/quartermaster/miningdock) -"bNk" = (/obj/machinery/door/airlock/research{name = "Research Shuttle Dock"; req_access = list(65)},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) +"bNk" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/shuttle/research/station) "bNl" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/wall,/area/quartermaster/miningdock) "bNm" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/miningdock) "bNn" = (/obj/effect/landmark/start{name = "Shaft Miner"},/turf/simulated/floor,/area/quartermaster/miningdock) "bNo" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/quartermaster/miningdock) "bNp" = (/obj/structure/disposalpipe/segment,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/quartermaster/miningdock) -"bNq" = (/obj/structure/closet,/obj/machinery/light_switch{pixel_x = -27},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/quartermaster/qm) +"bNq" = (/obj/structure/bed/chair/office/dark,/obj/effect/landmark/start{name = "Quartermaster"},/obj/machinery/button/windowtint{pixel_x = 24; pixel_y = -24},/obj/machinery/door_control{desc = "A remote control-switch for the office door."; id = "qmdoor"; name = "Office Door Control"; normaldoorcontrol = 1; pixel_x = 15; pixel_y = -25; req_access = list(20)},/obj/machinery/door_control{desc = "A remote control-switch for the cargo doors."; id = "cargodoor"; name = "Cargo door control"; normaldoorcontrol = 1; pixel_x = 15; pixel_y = -34; req_access = list(41)},/turf/simulated/floor,/area/quartermaster/qm) "bNr" = (/obj/structure/closet/secure_closet/quartermaster,/turf/simulated/floor,/area/quartermaster/qm) "bNs" = (/obj/structure/table,/obj/item/weapon/coin/silver{pixel_x = -3; pixel_y = 3},/obj/item/weapon/coin/silver,/obj/item/device/eftpos{eftpos_name = "Quartermaster EFTPOS scanner"},/turf/simulated/floor,/area/quartermaster/qm) "bNt" = (/obj/structure/table,/obj/item/weapon/cartridge/quartermaster{pixel_x = 6; pixel_y = 5},/obj/item/weapon/cartridge/quartermaster,/obj/item/weapon/cartridge/quartermaster{pixel_x = -4; pixel_y = 7},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor,/area/quartermaster/qm) @@ -4757,7 +4757,7 @@ "bNy" = (/turf/simulated/wall,/area/storage/tech) "bNz" = (/obj/structure/table,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/device/flash,/obj/item/device/flash,/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating,/area/storage/tech) "bNA" = (/obj/machinery/light/small{dir = 1},/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plating,/area/storage/tech) -"bNB" = (/obj/machinery/camera{c_tag = "Tech Storage"; dir = 2},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/storage/tech) +"bNB" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/light,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/camera/network/command{c_tag = "AI Upload Access"; dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload_foyer) "bNC" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/matter_bin,/obj/item/weapon/stock_parts/matter_bin,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/capacitor,/turf/simulated/floor/plating,/area/storage/tech) "bND" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/unary_atmos/heater,/obj/item/weapon/circuitboard/unary_atmos/cooler{pixel_x = 3; pixel_y = -3},/turf/simulated/floor/plating,/area/storage/tech) "bNE" = (/obj/machinery/vending/assist,/turf/simulated/floor/plating,/area/storage/tech) @@ -4767,41 +4767,41 @@ "bNI" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) "bNJ" = (/obj/structure/closet/jcloset,/turf/simulated/floor,/area/janitor) "bNK" = (/obj/structure/closet/l3closet/janitor,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor,/area/janitor) -"bNL" = (/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/storage/box/lights/mixed,/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/camera{c_tag = "Custodial Closet"},/turf/simulated/floor,/area/janitor) +"bNL" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/machinery/camera/network/research{c_tag = "Research Division West"},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bNM" = (/obj/machinery/newscaster{pixel_y = 30},/turf/simulated/floor,/area/janitor) "bNN" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/janitor) "bNO" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor,/area/janitor) "bNP" = (/turf/simulated/floor,/area/janitor) -"bNQ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/shuttle/research/station) +"bNQ" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access = list(13)},/turf/simulated/floor/plating,/area/quartermaster/storage) "bNR" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Janitor"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "bot"},/area/janitor) "bNS" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/engineering) "bNT" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/engineering) "bNU" = (/turf/simulated/wall,/area/maintenance/engineering) -"bNV" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access = list(13)},/turf/simulated/floor/plating,/area/quartermaster/storage) +"bNV" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyerPort"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = -24; pixel_y = 26},/obj/machinery/computer/guestpass{pixel_x = -28},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/medbay) "bNW" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bNX" = (/obj/item/weapon/camera_assembly,/turf/simulated/floor/plating,/area/medical/genetics) "bNY" = (/obj/item/weapon/stool,/obj/effect/landmark/start{name = "Janitor"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/janitor) -"bNZ" = (/obj/machinery/hologram/holopad,/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) +"bNZ" = (/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 4},/turf/simulated/floor/plating,/area/rnd/research) "bOa" = (/obj/structure/disposalpipe/segment,/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{icon_state = "white"},/area/medical/medbay) -"bOb" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyerPort"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = -24; pixel_y = 26},/obj/machinery/computer/guestpass{pixel_x = -28},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/medbay) +"bOb" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_research{name = "Research and Development"; req_access = list(7)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bOc" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/machinery/sleeper,/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/sleeper) -"bOd" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_research{name = "Research and Development"; req_access = list(7)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) +"bOd" = (/obj/machinery/door/airlock{name = "Starboard Emergency Storage"; req_one_access = list(12,47)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/storage/emergency) "bOe" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) -"bOf" = (/obj/machinery/door/airlock{name = "Starboard Emergency Storage"; req_one_access = list(12,47)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/storage/emergency) +"bOf" = (/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"; pixel_x = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{name = "Medbay Substation"; req_one_access = list(11,24,5)},/turf/simulated/floor/plating,/area/maintenance/substation/medical) "bOg" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bOh" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) -"bOi" = (/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"; pixel_x = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{name = "Medbay Substation"; req_one_access = list(11,24,5)},/turf/simulated/floor/plating,/area/maintenance/substation/medical) +"bOi" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock{name = "Starboard Emergency Storage"; req_access = list(29)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/assembly/chargebay) "bOj" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) -"bOk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock{name = "Starboard Emergency Storage"; req_access = list(29)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/assembly/chargebay) +"bOk" = (/obj/structure/table,/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "research_shuttle"; pixel_x = -8; pixel_y = -25; req_one_access = list(13,65); tag_door = "research_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/research/station) "bOl" = (/obj/item/weapon/stool,/obj/effect/landmark/start{name = "Medical Doctor"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) "bOm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) "bOn" = (/obj/item/weapon/stool,/obj/effect/landmark/start{name = "Geneticist"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) "bOo" = (/obj/machinery/light,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/medical/genetics) -"bOp" = (/obj/machinery/button/driver{dir = 2; id = "toxinsdriver"; pixel_y = 24},/turf/simulated/floor,/area/rnd/mixing) +"bOp" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/shuttle/plating,/area/rnd/docking) "bOq" = (/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/engine,/area/rnd/misc_lab) "bOr" = (/obj/machinery/portable_atmospherics/canister,/obj/machinery/light{dir = 1},/turf/simulated/floor/engine,/area/rnd/misc_lab) "bOs" = (/turf/simulated/floor/engine,/area/rnd/misc_lab) -"bOt" = (/obj/machinery/camera{c_tag = "Miscellaneous Reseach Test Chamber"; dir = 2; network = list("SS13","Research","Miscellaneous Reseach"); pixel_x = 0},/turf/simulated/floor/engine,/area/rnd/misc_lab) +"bOt" = (/obj/structure/closet/emcloset,/obj/machinery/camera/network/exodus{c_tag = "Arrivals Auxiliary Docking South"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry/aft) "bOu" = (/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor/engine,/area/rnd/misc_lab) "bOv" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/engine,/area/rnd/misc_lab) "bOw" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/light{dir = 1},/turf/simulated/floor/engine,/area/rnd/misc_lab) @@ -4816,19 +4816,19 @@ "bOF" = (/obj/machinery/portable_atmospherics/canister,/obj/structure/window/reinforced{dir = 8},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{dir = 10; icon_state = "whitepurple"},/area/rnd/mixing) "bOG" = (/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/rnd/mixing) "bOH" = (/obj/machinery/portable_atmospherics/powered/scrubber,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/rnd/mixing) -"bOI" = (/obj/machinery/portable_atmospherics/powered/pump,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/rnd/mixing) +"bOI" = (/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/camera/network/exodus{c_tag = "Primary Hallway Starboard - West"; dir = 1},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/starboard) "bOJ" = (/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor{dir = 6; icon_state = "whitepurple"},/area/rnd/mixing) "bOK" = (/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor{dir = 9; icon_state = "warnwhite"},/area/rnd/mixing) "bOL" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "warnwhite"; dir = 1},/area/rnd/mixing) "bOM" = (/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/rnd/mixing) -"bON" = (/obj/structure/table,/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "research_shuttle"; pixel_x = -8; pixel_y = -25; req_one_access = list(13,65); tag_door = "research_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/research/station) +"bON" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access = list(13)},/turf/simulated/floor/plating,/area/quartermaster/storage) "bOO" = (/turf/simulated/wall,/area/rnd/mixing) "bOP" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'BOMB RANGE"; name = "BOMB RANGE"},/turf/simulated/wall,/area/rnd/test_area) -"bOQ" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access = list(13)},/turf/simulated/floor/plating,/area/quartermaster/storage) -"bOR" = (/obj/machinery/door/airlock/maintenance{name = "Teleporter Maintenance"; req_access = list(17)},/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor/plating,/area/teleporter) +"bOQ" = (/obj/machinery/door/airlock/maintenance{name = "Teleporter Maintenance"; req_access = list(17)},/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor/plating,/area/teleporter) +"bOR" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/multi_tile/glass{id_tag = "MedbayFoyerPort"; req_access = list(5)},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/medical/medbay) "bOS" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/quartermaster/miningdock) -"bOT" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/multi_tile/glass{id_tag = "MedbayFoyerPort"; req_access = list(5)},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/medical/medbay) -"bOU" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medbay Reception"; req_access = list(5)},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/medbay3) +"bOT" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medbay Reception"; req_access = list(5)},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/medbay3) +"bOU" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/multi_tile/glass{id_tag = "MedbayFoyerStar"; req_access = list(5)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/medical/medbay2) "bOV" = (/obj/structure/disposalpipe/segment,/obj/effect/landmark/start{name = "Shaft Miner"},/turf/simulated/floor,/area/quartermaster/miningdock) "bOW" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/miningdock) "bOX" = (/obj/item/weapon/cigbutt,/turf/simulated/floor/plating,/area/maintenance/cargo) @@ -4855,19 +4855,19 @@ "bPs" = (/obj/structure/mopbucket,/obj/item/weapon/mop,/turf/simulated/floor,/area/janitor) "bPt" = (/turf/simulated/wall,/area/janitor) "bPu" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/engineering) -"bPv" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/multi_tile/glass{id_tag = "MedbayFoyerStar"; req_access = list(5)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/medical/medbay2) +"bPv" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/window/westleft{name = "Cargo Desk"; req_access = list(50)},/obj/structure/noticeboard{pixel_y = 27},/turf/simulated/floor,/area/quartermaster/office) "bPw" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/engineering) "bPx" = (/turf/simulated/floor/plating,/area/maintenance/engineering) "bPy" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire/firefighter,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/glasses/meson,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/engineering) -"bPz" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/window/westleft{name = "Cargo Desk"; req_access = list(50)},/obj/structure/noticeboard{pixel_y = 27},/turf/simulated/floor,/area/quartermaster/office) +"bPz" = (/obj/structure/table/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/noticeboard{pixel_y = 27},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "hop_office_desk"; name = "HoP Office Privacy Shutters"; opacity = 0},/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "Reception Window"},/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 4; icon_state = "rightsecure"; name = "Head of Personnel's Desk"; req_access = list(57)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/crew_quarters/heads/hop) "bPA" = (/obj/machinery/door/firedoor,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acute2"; name = "Acute Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/medbay) -"bPB" = (/obj/structure/table/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/noticeboard{pixel_y = 27},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "hop_office_desk"; name = "HoP Office Privacy Shutters"; opacity = 0},/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "Reception Window"},/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 4; icon_state = "rightsecure"; name = "Head of Personnel's Desk"; req_access = list(57)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/crew_quarters/heads/hop) -"bPC" = (/obj/machinery/camera{c_tag = "Medbay Port Corridor"; dir = 8; network = list("SS13")},/obj/structure/disposalpipe/segment,/obj/machinery/light_switch{pixel_x = 22; pixel_y = -9},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay) -"bPD" = (/obj/machinery/camera{c_tag = "Medbay CMO Office"; dir = 4; network = list("SS13")},/obj/machinery/light_switch{pixel_x = -22; pixel_y = -9},/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Medical Officer's Desk"; departmentType = 5; name = "Chief Medical Officer RC"; pixel_x = -34; pixel_y = 2},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/crew_quarters/heads/cmo) +"bPB" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 1; icon_state = "left"; name = "Shower"},/obj/machinery/shower{icon_state = "shower"; dir = 4},/obj/item/weapon/soap/deluxe,/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/captain) +"bPC" = (/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/camera/network/command{c_tag = "AI - Messaging Server"; dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_server_room) +"bPD" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera/network/research{c_tag = "Research Shuttle Dock"; dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/rnd/docking) "bPE" = (/obj/structure/table,/obj/machinery/computer/skills{pixel_y = 4},/obj/item/device/megaphone,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) -"bPF" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 1; icon_state = "left"; name = "Shower"},/obj/machinery/shower{icon_state = "shower"; dir = 4},/obj/item/weapon/soap/deluxe,/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/captain) +"bPF" = (/obj/structure/table,/obj/item/weapon/paper{desc = "A few notes scratched out by the last CMO before they departed the station."; info = "\[i]\[center]To the incoming CMO of Exodus:\[/i]\[/center]\[br]\[br]I wish you and your crew well. Do take note:\[br]\[br]\[br]The Medical Emergency Red Phone system has proven itself well. Take care to keep the phones in their designated places as they have been optimised for broadcast. The two handheld green radios (I have left one in this office, and one near the Emergency Entrance) are free to be used. The system has proven effective at alerting Medbay of important details, especially during power outages.\[br]\[br]I think I may have left the toilet cubicle doors shut. It might be a good idea to open them so the staff and patients know they are not engaged.\[br]\[br]The new syringe gun has been stored in secondary storage. I tend to prefer it stored in my office, but 'guidelines' are 'guidelines'.\[br]\[br]Also in secondary storage is the grenade equipment crate. I've just realised I've left it open - you may wish to shut it.\[br]\[br]There were a few problems with their installation, but the Medbay Quarantine shutters should now be working again - they lock down the Emergency and Main entrances to prevent travel in and out. Pray you shan't have to use them.\[br]\[br]The new version of the Medical Diagnostics Manual arrived. I distributed them to the shelf in the staff break room, and one on the table in the corner of this room.\[br]\[br]The exam/triage room has the walking canes in it. I'm not sure why we'd need them - but there you have it.\[br]\[br]Emergency Cryo bags are beside the emergency entrance, along with a kit.\[br]\[br]Spare paper cups for the reception are on the left side of the reception desk.\[br]\[br]I've fed Runtime. She should be fine.\[br]\[br]\[br]\[center]That should be all. Good luck!\[/center]"; name = "Outgoing CMO's Notes"},/obj/item/device/radio{frequency = 1487; name = "Medbay Emergency Radio Link"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) "bPG" = (/obj/structure/table,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/computer/med_data/laptop{pixel_x = 3; pixel_y = 4},/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/crew_quarters/heads/cmo) -"bPH" = (/obj/machinery/camera{c_tag = "Medbay Starboard Corridor"; dir = 4; network = list("SS13")},/obj/machinery/light_switch{pixel_x = -22; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) +"bPH" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/camera/network/research{c_tag = "Research - Robotics"},/turf/simulated/floor{dir = 4; icon_state = "whiteredcorner"},/area/assembly/robotics) "bPI" = (/obj/structure/disposalpipe/segment,/obj/machinery/newscaster{pixel_x = 30},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bPJ" = (/mob/living/simple_animal/cat/fluff/Runtime,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) "bPK" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) @@ -4878,7 +4878,7 @@ "bPP" = (/obj/machinery/sparker{id = "Xenobio"; pixel_x = -25},/turf/simulated/floor/engine,/area/rnd/misc_lab) "bPQ" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/engine,/area/rnd/misc_lab) "bPR" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor/engine,/area/rnd/misc_lab) -"bPS" = (/obj/machinery/camera{c_tag = "Telescience Chamber"; dir = 8; network = list("Telesci Test Area")},/obj/structure/table,/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/device/multitool,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/engine,/area/rnd/misc_lab) +"bPS" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/camera/network/research{c_tag = "Research - R&D Lab"},/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/rnd/lab) "bPT" = (/obj/item/weapon/cigbutt,/turf/simulated/floor{icon_state = "floorgrime"},/area/rnd/storage) "bPU" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/rnd/storage) "bPV" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) @@ -4901,7 +4901,7 @@ "bQm" = (/turf/simulated/floor/airless{icon_state = "warning"; dir = 1},/area/rnd/test_area) "bQn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) "bQo" = (/obj/item/weapon/ore/silver,/obj/item/weapon/ore/silver,/obj/item/weapon/ore/iron,/obj/structure/closet/crate,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "mining_dock_pump"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/quartermaster/miningdock) -"bQp" = (/obj/machinery/camera{c_tag = "Mining Dock External"; dir = 8},/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor{icon_state = "warning"},/area/quartermaster/miningdock) +"bQp" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/shuttle/plating,/area/rnd/docking) "bQq" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/simulated/wall,/area/quartermaster/miningdock) "bQr" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor{dir = 10; icon_state = "brown"},/area/quartermaster/miningdock) "bQs" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/quartermaster/miningdock) @@ -4913,13 +4913,13 @@ "bQy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/maintenance/cargo) "bQz" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/storage/tech) "bQA" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/borgupload{pixel_x = -1; pixel_y = 1},/obj/item/weapon/circuitboard/aiupload{pixel_x = 2; pixel_y = -2},/turf/simulated/floor,/area/storage/tech) -"bQB" = (/obj/machinery/camera{c_tag = "Secure Tech Storage"; dir = 2},/turf/simulated/floor,/area/storage/tech) +"bQB" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera/network/exodus{c_tag = "Primary Hallway Central - West"; dir = 8},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central_one) "bQC" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall/r_wall,/area/storage/tech) "bQD" = (/obj/structure/table,/obj/item/device/aicard,/obj/item/weapon/aiModule/reset,/turf/simulated/floor/plating,/area/storage/tech) "bQE" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/pandemic{pixel_x = -3; pixel_y = 3},/obj/item/weapon/circuitboard/rdconsole,/obj/item/weapon/circuitboard/destructive_analyzer,/obj/item/weapon/circuitboard/protolathe,/obj/item/weapon/circuitboard/rdserver{pixel_x = 3; pixel_y = -3},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/storage/tech) "bQF" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/arcade,/obj/item/weapon/circuitboard/message_monitor{pixel_x = 3; pixel_y = -3},/turf/simulated/floor/plating,/area/storage/tech) "bQG" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/security/mining,/obj/item/weapon/circuitboard/autolathe{pixel_x = 3; pixel_y = -3},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/storage/tech) -"bQH" = (/obj/structure/disposalpipe/segment,/obj/machinery/camera{c_tag = "Aft Primary Hallway"; dir = 8; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) +"bQH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera/network/civilian_west{c_tag = "Locker Room Toilets"; dir = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bQI" = (/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -27},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) "bQJ" = (/turf/simulated/floor,/area/hallway/primary/aft) "bQK" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) @@ -4941,7 +4941,7 @@ "bRa" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/airlock/command{name = "Server Room"; req_access = list(30)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/rnd/research) "bRb" = (/obj/structure/table/rack,/obj/item/clothing/accessory/stethoscope,/obj/item/clothing/glasses/hud/health,/obj/item/device/flashlight/pen,/obj/item/weapon/storage/belt/medical,/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = -24},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = -38},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/crew_quarters/heads/cmo) "bRc" = (/obj/structure/table,/obj/item/weapon/folder/white{pixel_y = 10},/obj/item/weapon/clipboard,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/item/weapon/stamp/cmo,/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/crew_quarters/heads/cmo) -"bRd" = (/obj/structure/table,/obj/machinery/door_control{id = "Biohazard"; name = "Biohazard Shutter Control"; pixel_x = 5; pixel_y = 15; req_access = list(47)},/obj/machinery/computer/skills{icon_state = "medlaptop"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) +"bRd" = (/obj/structure/grille,/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized{dir = 4},/obj/structure/window/reinforced/polarized{dir = 1},/turf/simulated/floor/plating,/area/quartermaster/qm) "bRe" = (/obj/machinery/door/airlock/multi_tile/glass{autoclose = 1; dir = 2; req_access = list(5)},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/medical/sleeper) "bRf" = (/obj/machinery/computer/crew,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) "bRg" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor{dir = 9; icon_state = "whitered"},/area/medical/patient_a) @@ -4962,10 +4962,10 @@ "bRv" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Genetics Laboratory"; req_access = list(9)},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) "bRw" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bRx" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Cloning Laboratory"; req_access = list(5)},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/cryo) -"bRy" = (/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = list(57)},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central_three) -"bRz" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload Access"; req_access = list(16)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "vault"},/area/hallway/primary/central_three) -"bRA" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/mining{name = "Mining Dock"; req_access = list(48)},/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,/area/quartermaster/miningdock) -"bRB" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "research_dock_pump"},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "research_dock_airlock"; pixel_x = 25; pixel_y = 0; req_one_access = list(13,65); tag_airpump = "research_dock_pump"; tag_chamber_sensor = "research_dock_sensor"; tag_exterior_door = "research_dock_outer"; tag_interior_door = "research_dock_inner"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/rnd/docking) +"bRy" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera/network/civilian_west{c_tag = "Cargo Delivery Office"; dir = 4},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office) +"bRz" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/command{name = "Research Director"; req_access = list(30)},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/rnd/research) +"bRA" = (/obj/machinery/camera/network/exodus{c_tag = "Primary Hallway Starboard - Central East"; dir = 1},/turf/simulated/floor,/area/hallway/primary/starboard) +"bRB" = (/obj/structure/grille,/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 4},/turf/simulated/floor/plating,/area/quartermaster/qm) "bRC" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay) "bRD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/rnd/mixing) "bRE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor{icon_state = "floorgrime"},/area/rnd/mixing) @@ -4992,7 +4992,7 @@ "bRZ" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/storage/tech) "bSa" = (/obj/effect/landmark{name = "blobstart"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/storage/tech) "bSb" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/storage/tech) -"bSc" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the RD's goons from the safety of his office."; name = "Research Monitor"; network = list("Research","Toxins Test Area","Robots","Anomaly Isolation","Research Outpost"); pixel_x = 0; pixel_y = 2},/obj/structure/table,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) +"bSc" = (/obj/item/weapon/stool,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/camera/network/medbay{c_tag = "Medbay Examination Room"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/exam_room) "bSd" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) "bSe" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/hallway/primary/aft) "bSf" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Genetics Research"; req_access = list(9)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) @@ -5010,9 +5010,9 @@ "bSr" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access = list(13)},/turf/simulated/floor/plating,/area/quartermaster/storage) "bSs" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) "bSt" = (/obj/machinery/computer/crew,/obj/machinery/light,/turf/simulated/floor{dir = 6; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/crew_quarters/heads/cmo) -"bSu" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_dock_inner"; locked = 1; name = "Shuttle Airlock"; req_access = list(13)},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) +"bSu" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/floor,/area/quartermaster/qm) "bSv" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) -"bSw" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "research_dock_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = -25; req_one_access = list(13,65)},/turf/simulated/floor{dir = 2; icon_state = "cmo"},/area/rnd/docking) +"bSw" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bSx" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/light,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) "bSy" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bSz" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching the test chamber."; layer = 4; name = "Test Chamber Telescreen"; network = list("Toxins Test Area"); pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/rnd/mixing) @@ -5038,7 +5038,7 @@ "bST" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/aft) "bSU" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) "bSV" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medicine Storage"; req_access = list(5)},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) -"bSW" = (/obj/machinery/camera{c_tag = "Toxins Launch Room Access"; dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/rnd/mixing) +"bSW" = (/obj/item/weapon/stool,/obj/machinery/camera/network/mining{c_tag = "Medbay Lobby Starboard"},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/reception) "bSX" = (/obj/machinery/disposal,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -30; pixel_y = 0},/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "warningcorner"; dir = 2},/area/rnd/mixing) "bSY" = (/turf/simulated/floor{icon_state = "warning"},/area/rnd/mixing) "bSZ" = (/turf/simulated/wall,/area/engineering/break_room) @@ -5142,7 +5142,7 @@ "bUT" = (/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) "bUU" = (/obj/structure/disposalpipe/segment,/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{dir = 4; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay4) "bUV" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/mixing) -"bUW" = (/obj/machinery/camera{c_tag = "Medbay Lounge"; network = list("SS13")},/obj/structure/table,/obj/structure/disposalpipe/segment,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay4) +"bUW" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/camera/network/medbay{c_tag = "Medbay Morgue"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/morgue) "bUX" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/carpet,/area/engineering/break_room) "bUY" = (/obj/machinery/vending/coffee,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay4) "bUZ" = (/obj/machinery/light{dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay4) @@ -5155,7 +5155,7 @@ "bVg" = (/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/patient_wing) "bVh" = (/obj/machinery/iv_drip,/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/patient_wing) "bVi" = (/turf/simulated/wall,/area/medical/patient_wing) -"bVj" = (/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "medbayquar"; name = "Medbay Emergency Quarantine Shutters"; opacity = 0},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/hallway/primary/central_two) +"bVj" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_dock_inner"; locked = 1; name = "Shuttle Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) "bVk" = (/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central_one) "bVl" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 2; sortType = "RD Office"; name = "RD Office"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bVm" = (/obj/machinery/door/window/eastleft{name = "Mail"; req_access = list(50)},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office) @@ -5167,7 +5167,7 @@ "bVs" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bVt" = (/obj/structure/table/reinforced,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bVu" = (/obj/machinery/computer/security/telescreen{desc = "Used to monitor the proceedings inside the test chamber."; name = "Test Chamber Monitor"; network = list("Miscellaneous Reseach"); pixel_x = 32; pixel_y = 0},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) -"bVv" = (/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access = list(47)},/turf/simulated/floor{icon_state = "white"},/area/hallway/primary/starboard) +"bVv" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/light_switch{pixel_x = -24; pixel_y = -24},/turf/simulated/floor,/area/quartermaster/qm) "bVw" = (/obj/machinery/vending/cigarette{pixel_x = 0; pixel_y = 2},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bVx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/research) "bVy" = (/obj/structure/filingcabinet/chestdrawer,/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/assembly/robotics) @@ -5186,7 +5186,7 @@ "bVL" = (/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"; pixel_x = -32},/obj/structure/disposalpipe/sortjunction/flipped{dir = 2; sortType = "Research"; name = "Research"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bVM" = (/obj/machinery/light/small{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bVN" = (/obj/item/device/radio/beacon,/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/airless{icon_state = "bot"},/area/rnd/test_area) -"bVO" = (/obj/machinery/camera{c_tag = "Toxins Test Chamber East"; dir = 8; network = list("Toxins Test Area")},/obj/machinery/light{dir = 4},/turf/simulated/floor/airless,/area/rnd/test_area) +"bVO" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/obj/machinery/chem_master,/obj/machinery/camera/network/medbay{c_tag = "Medbay - Chemistry"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bVP" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/shuttle/escape_pod5/station) "bVQ" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/escape_pod5/station) "bVR" = (/obj/structure/shuttle/engine/propulsion/burst{dir = 8},/turf/simulated/wall,/area/shuttle/escape_pod5/station) @@ -5212,7 +5212,7 @@ "bWl" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/medical/sleeper) "bWm" = (/obj/structure/bed/chair/comfy/brown{dir = 4},/obj/effect/landmark/start{name = "Captain"},/obj/machinery/door_control{desc = "A remote control-switch for the office door."; id = "captaindoor"; name = "Office Door Control"; normaldoorcontrol = 1; pixel_x = 15; pixel_y = 30; req_access = list(20)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door_control{desc = "A remote control-switch for the starboard bridge doors."; id = "sbridgedoor"; name = "Bridge Door Control"; normaldoorcontrol = 1; pixel_x = 15; pixel_y = 39; req_access = list(20)},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bWn" = (/obj/structure/bed/chair{dir = 8},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod5/station) -"bWo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/medical/sleeper) +"bWo" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/mining{id_tag = "qmdoor"; name = "Quartermaster"; req_access = list(41)},/turf/simulated/floor,/area/quartermaster/qm) "bWp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor,/area/medical/sleeper) "bWq" = (/obj/machinery/door/blast/shutters{dir = 2; id = "qm_warehouse"; name = "Warehouse Shutters"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/quartermaster/storage) "bWr" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) @@ -5236,7 +5236,7 @@ "bWJ" = (/obj/structure/bed/chair/comfy/beige,/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor/carpet,/area/engineering/break_room) "bWK" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor{dir = 1; icon_state = "whitered_b"; tag = "icon-whitered_b (WEST)"},/area/medical/patient_wing) "bWL" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "whiteredcorner"},/area/medical/patient_wing) -"bWM" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/command{name = "Conference Room"; req_access = list(19)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/maintenance/substation/command) +"bWM" = (/obj/structure/table/rack,/obj/item/weapon/extinguisher,/obj/item/weapon/storage/belt/utility,/obj/item/clothing/mask/gas,/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/research_shuttle) "bWN" = (/obj/effect/landmark/start{name = "Scientist"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bWO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bWP" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/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"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) @@ -5274,7 +5274,7 @@ "bXv" = (/obj/structure/sign/fire{pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/engine,/area/rnd/mixing) "bXw" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "specops_dock_airlock"; pixel_x = 0; pixel_y = 30; req_one_access = list(13); tag_airpump = "specops_dock_pump"; tag_chamber_sensor = "specops_dock_sensor"; tag_exterior_door = "specops_dock_outer"; tag_interior_door = "specops_dock_inner"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "specops_dock_sensor"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "specops_dock_pump"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "bXx" = (/obj/machinery/atm{pixel_y = 28},/turf/simulated/floor{dir = 4; icon_state = "yellowpatch"},/area/engineering/foyer) -"bXy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) +"bXy" = (/obj/item/weapon/stool,/obj/machinery/camera/network/mining{c_tag = "Medbay Lobby Port"},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/reception) "bXz" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/foyer) "bXA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/foyer) "bXB" = (/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"; pixel_x = 32},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/engineering) @@ -5321,7 +5321,7 @@ "bYq" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bYr" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bYs" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) -"bYt" = (/obj/machinery/camera{c_tag = "Research Division South"; dir = 1; network = list("SS13","Research"); pixel_x = 0},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) +"bYt" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Personnel's Desk"; departmentType = 5; name = "Head of Personnel RC"; pixel_y = -30},/obj/machinery/camera/network/command{c_tag = "Bridge - HoP's Office"; dir = 1},/turf/simulated/floor,/area/crew_quarters/heads/hop) "bYu" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bYv" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bYw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/locker) @@ -5340,7 +5340,7 @@ "bYJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) "bYK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) "bYL" = (/obj/machinery/computer/atmos_alert,/turf/simulated/floor,/area/crew_quarters/heads/chief) -"bYM" = (/obj/machinery/computer/station_alert,/obj/machinery/computer/security/telescreen{desc = "Used to monitor the engine room."; layer = 3.3; name = "Engine Monitor"; network = list("Supermatter"); pixel_x = 0; pixel_y = 28},/turf/simulated/floor,/area/crew_quarters/heads/chief) +"bYM" = (/obj/structure/table/woodentable,/obj/machinery/recharger{pixel_y = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/camera/network/command{c_tag = "Bridge - Captain's Office"; dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bYN" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 1},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 27},/obj/machinery/computer/skills{icon_state = "medlaptop"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "bYO" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "bYP" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/crew_quarters/heads/chief) @@ -5353,10 +5353,10 @@ "bYW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = -20; pixel_y = 22},/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/crew_quarters/sleep/engi_wash) "bYX" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/crew_quarters/sleep/engi_wash) "bYY" = (/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"},/area/crew_quarters/sleep/engi_wash) -"bYZ" = (/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "psych"; name = "Mental Health Privacy Shutters"; opacity = 0},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized{dir = 1},/turf/simulated/floor/plating,/area/medical/medbay4) -"bZa" = (/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "psych"; name = "Mental Health Privacy Shutters"; opacity = 0},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized{dir = 4},/turf/simulated/floor/plating,/area/medical/medbay4) +"bYZ" = (/obj/structure/closet,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/quartermaster/qm) +"bZa" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bZb" = (/obj/structure/grille,/obj/structure/window/reinforced/polarized{id = "isoC_window_tint"},/obj/structure/window/reinforced/polarized{dir = 4; id = "isoC_window_tint"},/obj/structure/window/reinforced/polarized{dir = 1; id = "isoC_window_tint"},/obj/structure/window/reinforced/polarized{dir = 8; id = "isoC_window_tint"},/turf/simulated/floor/plating,/area/medical/patient_c) -"bZc" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) +"bZc" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/quartermaster/miningdock) "bZd" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -29},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bZe" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/wall/r_wall,/area/rnd/mixing) "bZf" = (/turf/simulated/wall/r_wall,/area/maintenance/atmos_control) @@ -5375,7 +5375,7 @@ "bZs" = (/obj/machinery/door/window{dir = 2; name = "AI Core Door"; req_access = list(109)},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/flasher{id = "AI"; pixel_x = 22; pixel_y = 24},/obj/machinery/turretid/stun{check_synth = 1; name = "AI Chamber turret control"; pixel_x = 36; pixel_y = 24},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bZt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/hallway/primary/starboard) "bZu" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Morgue"; req_access = list(6)},/turf/simulated/floor,/area/hallway/primary/starboard) -"bZv" = (/obj/machinery/camera{c_tag = "Medbay Patient Hallway - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) +"bZv" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 2},/obj/machinery/camera/network/exodus{c_tag = "Primary Hallway Central - East"; dir = 4},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central_two) "bZw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/research_port) "bZx" = (/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) "bZy" = (/turf/simulated/wall,/area/medical/biostorage) @@ -5388,7 +5388,7 @@ "bZF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/research_port) "bZG" = (/obj/structure/sign/securearea{pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "bZH" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/maintenance/atmos_control) -"bZI" = (/obj/machinery/disposal,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/camera{c_tag = "Telescience Control Room"; dir = 1; network = list("SS13","Research"); pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) +"bZI" = (/obj/machinery/computer/station_alert,/obj/machinery/computer/security/telescreen{desc = "Used to monitor the engine room."; layer = 3.3; name = "Engine Monitor"; network = list("Engine"); pixel_x = 0; pixel_y = 28},/turf/simulated/floor,/area/crew_quarters/heads/chief) "bZJ" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/closet/bombcloset,/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bZK" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/light,/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bZL" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/crew_quarters/locker) @@ -5402,7 +5402,7 @@ "bZT" = (/obj/machinery/space_heater,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) "bZU" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) "bZV" = (/obj/machinery/button/driver{id = "enginecore"; name = "Emergency Core Eject"; pixel_x = -20; pixel_y = 0},/obj/structure/window/basic{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/heads/chief) -"bZW" = (/obj/structure/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Chief Engineer"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/crew_quarters/heads/chief) +"bZW" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/camera/network/exodus{c_tag = "Primary Hallway Starboard - Central"; dir = 1},/turf/simulated/floor,/area/hallway/primary/starboard) "bZX" = (/obj/structure/bed/chair{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "bZY" = (/obj/structure/table/reinforced,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/crew_quarters/heads/chief) "bZZ" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/crew_quarters/heads/chief) @@ -5420,7 +5420,7 @@ "cal" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/chips,/turf/simulated/floor/carpet,/area/engineering/break_room) "cam" = (/obj/machinery/newscaster{pixel_x = 28; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/engineering/break_room) "can" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/iv_drip,/turf/simulated/floor,/area/medical/sleeper) -"cao" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/structure/bed/roller,/turf/simulated/floor,/area/medical/sleeper) +"cao" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/camera/network/civilian_west{c_tag = "Cargo Lobby"},/turf/simulated/floor,/area/quartermaster/office) "cap" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/structure/bed/chair/comfy/teal{tag = "icon-comfychair (EAST)"; icon_state = "comfychair"; dir = 4},/turf/simulated/floor{dir = 9; icon_state = "whitered"},/area/medical/ward) "caq" = (/turf/simulated/wall,/area/crew_quarters/sleep/engi_wash) "car" = (/obj/item/weapon/cigbutt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/engineering) @@ -5475,7 +5475,7 @@ "cbo" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_dock_outer"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "cbp" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) "cbq" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) -"cbr" = (/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access = list(47)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) +"cbr" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/camera/network/exodus{c_tag = "Primary Hallway Central - East Southwest"; dir = 8},/turf/simulated/floor,/area/hallway/primary/central_two) "cbs" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "cbt" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Medical Reception"; req_access = list(5)},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/medical/reception) "cbu" = (/obj/structure/table/reinforced,/obj/machinery/photocopier/faxmachine{department = "Chief Engineer's Office"},/turf/simulated/floor,/area/crew_quarters/heads/chief) @@ -5483,25 +5483,25 @@ "cbw" = (/obj/machinery/hologram/holopad,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "cbx" = (/obj/structure/disposalpipe/segment,/obj/machinery/firealarm{dir = 4; layer = 3.3; pixel_x = 26},/turf/simulated/floor,/area/crew_quarters/heads/chief) "cby" = (/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/engineering/foyer) -"cbz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) +"cbz" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "cbA" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) "cbB" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Chemistry Laboratory"; req_access = list(33)},/obj/structure/sign/chemistry{pixel_x = 32},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "cbC" = (/obj/structure/bed/chair/comfy/beige{tag = "icon-comfychair (NORTH)"; icon_state = "comfychair"; dir = 1},/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor/carpet,/area/engineering/break_room) "cbD" = (/obj/structure/bed/chair/comfy/beige{tag = "icon-comfychair (NORTH)"; icon_state = "comfychair"; dir = 1},/obj/effect/landmark/start{name = "Atmospheric Technician"},/turf/simulated/floor/carpet,/area/engineering/break_room) -"cbE" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera{c_tag = "Engineering Break Room"; dir = 8; network = list("SS13")},/turf/simulated/floor/carpet,/area/engineering/break_room) +"cbE" = (/obj/machinery/camera/network/exodus{c_tag = "Primary Hallway Central - Southeast"},/turf/simulated/floor,/area/hallway/primary/central_two) "cbF" = (/obj/structure/mirror{pixel_y = 32},/obj/structure/sink{pixel_y = 16},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) "cbG" = (/obj/structure/mirror{pixel_y = 32},/obj/structure/sink{pixel_y = 16},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) "cbH" = (/obj/structure/urinal{pixel_y = 32},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) "cbI" = (/turf/simulated/wall,/area/medical/surgeryobs) -"cbJ" = (/obj/machinery/camera{c_tag = "Medbay Surgery Access"; dir = 4; network = list("SS13")},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) +"cbJ" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/camera/network/research{c_tag = "Research - Mech Bay"; dir = 4},/turf/simulated/floor,/area/assembly/chargebay) "cbK" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) "cbL" = (/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{pixel_x = -26},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/ward) "cbM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/ward) "cbN" = (/turf/simulated/floor{icon_state = "white"},/area/medical/ward) "cbO" = (/obj/machinery/door/airlock/medical{name = "Morgue"; req_access = list(6,5)},/obj/structure/disposalpipe/segment,/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,/area/medical/medbay2) "cbP" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/wood,/area/medical/psych) -"cbQ" = (/obj/structure/table/woodentable,/obj/machinery/light_switch{pixel_x = -4},/obj/machinery/button/windowtint{pixel_x = 3},/turf/simulated/floor/wood,/area/medical/psych) -"cbR" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/medical/psych) +"cbQ" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) +"cbR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/medical/sleeper) "cbS" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) "cbT" = (/obj/structure/closet/crate{icon_state = "crateopen"; name = "Grenade Crate"; opened = 1},/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) "cbU" = (/obj/structure/bed/roller,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) @@ -5542,26 +5542,26 @@ "ccD" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "ccE" = (/obj/machinery/light/small,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor/plating,/area/maintenance/research_starboard) "ccF" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_mining{name = "Delivery Office"; req_access = list(50)},/turf/simulated/floor,/area/quartermaster/office) -"ccG" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/weapon/rig/ce/equipped,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/crew_quarters/heads/chief) +"ccG" = (/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) "ccH" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "ccI" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "ccJ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "ccK" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "ccL" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Engineer's Desk"; departmentType = 6; name = "Chief Engineer RC"; pixel_x = 0; pixel_y = -34},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/crew_quarters/heads/chief) -"ccM" = (/obj/machinery/camera{c_tag = "Chief Engineer's Office"; dir = 1; network = list("SS13")},/obj/item/device/radio/intercom{layer = 4; name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/crew_quarters/heads/chief) +"ccM" = (/obj/machinery/camera/network/civilian_west{c_tag = "Waste Disposal"; dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal) "ccN" = (/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "ccO" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor,/area/crew_quarters/heads/chief) "ccP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 9},/turf/simulated/floor/plating,/area/maintenance/research_starboard) "ccQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor/plating,/area/maintenance/research_starboard) "ccR" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyerPort"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = -16; pixel_y = 28},/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/medical/reception) "ccS" = (/turf/simulated/floor/plating/airless,/area/maintenance/atmos_control) -"ccT" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "eng_eva_pump"},/obj/machinery/camera{c_tag = "Engineering EVA Airlock"; dir = 1},/turf/simulated/floor{dir = 6; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) +"ccT" = (/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/engineering) "ccU" = (/obj/machinery/light/small,/turf/simulated/floor{dir = 10; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) "ccV" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) "ccW" = (/obj/structure/disposalpipe/segment,/obj/structure/extinguisher_cabinet{pixel_x = 25},/turf/simulated/floor/plating,/area/maintenance/atmos_control) "ccX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) "ccY" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/engineering/foyer) -"ccZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) +"ccZ" = (/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "psych"; name = "Mental Health Privacy Shutters"; opacity = 0},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized{dir = 1},/turf/simulated/floor/plating,/area/medical/psych) "cda" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer) "cdb" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor,/area/engineering/foyer) "cdc" = (/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = -20; pixel_y = -21},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) @@ -5571,7 +5571,7 @@ "cdg" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/medical/surgeryobs) "cdh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/surgeryobs) "cdi" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/surgeryobs) -"cdj" = (/obj/machinery/camera{c_tag = "Medbay Surgery Observation"; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/surgeryobs) +"cdj" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/toolbox/electrical,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/camera/network/engineering{c_tag = "Engineering Drone Fabrication"; dir = 8},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) "cdk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/surgeryobs) "cdl" = (/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 22},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/medical/surgeryobs) "cdm" = (/obj/structure/table,/obj/machinery/door_control{id = "medbayrecquar"; name = "Medbay Entrance Lockdown Shutters Control"; pixel_x = 6; pixel_y = 8; req_access = list(5)},/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 1; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Reception Emergency Phone"; pixel_x = -5},/turf/simulated/floor,/area/medical/reception) @@ -5601,7 +5601,7 @@ "cdK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/research_port) "cdL" = (/turf/simulated/wall/r_wall,/area/rnd/xenobiology/xenoflora_storage) "cdM" = (/obj/machinery/door/firedoor,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "medbayquar"; name = "Medbay Emergency Quarantine Shutters"; opacity = 0},/turf/simulated/floor{dir = 5; icon_state = "whiteblue"},/area/hallway/primary/starboard) -"cdN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "heads_meeting"; name = "Meeting Room Window Shutters"; opacity = 0},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/hallway/primary/central_one) +"cdN" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{id_tag = "mentaldoor"; name = "Mental Health"},/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{icon_state = "white"},/area/medical/psych) "cdO" = (/turf/simulated/wall/r_wall,/area/rnd/xenobiology) "cdP" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light/small,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/rnd/xenobiology) "cdQ" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/engineering/break_room) @@ -5622,23 +5622,23 @@ "cef" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "admin_shuttle_dock_airlock"; pixel_x = 0; pixel_y = 30; req_one_access = list(13); tag_airpump = "admin_shuttle_dock_pump"; tag_chamber_sensor = "admin_shuttle_dock_sensor"; tag_exterior_door = "admin_shuttle_dock_outer"; tag_interior_door = "admin_shuttle_dock_inner"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry/aft) "ceg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless,/area/rnd/test_area) "ceh" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/rnd/test_area) -"cei" = (/obj/machinery/camera{c_tag = "Toxins Test Chamber South"; dir = 1; network = list("Toxins Test Area")},/obj/machinery/light,/turf/simulated/floor/airless,/area/rnd/test_area) +"cei" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/camera/network/research{c_tag = "Research Division Access"},/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/rnd/research) "cej" = (/turf/simulated/wall,/area/construction) "cek" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/engineering/break_room) "cel" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/engineering/break_room) -"cem" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "admin_shuttle_dock_airlock"; name = "interior access button"; pixel_x = -8; pixel_y = 25; req_one_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry/aft) +"cem" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "cen" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/carpet,/area/engineering/break_room) "ceo" = (/obj/machinery/iv_drip,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) "cep" = (/obj/structure/table,/obj/item/weapon/storage/box/cdeathalarm_kit,/obj/item/bodybag/cryobag{pixel_x = -3},/obj/item/bodybag/cryobag{pixel_x = -3},/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) "ceq" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = -36},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/button/windowtint{id = "isoC_window_tint"; pixel_y = -26},/turf/simulated/floor{dir = 6; icon_state = "whitered"},/area/medical/patient_c) "cer" = (/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/purple,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/rnd/xenobiology) -"ces" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) +"ces" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "admin_shuttle_dock_airlock"; name = "interior access button"; pixel_x = -8; pixel_y = 25; req_one_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry/aft) "cet" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/disposalpipe/segment,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/atmos_control) "ceu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/atmos_control) -"cev" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) -"cew" = (/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) +"cev" = (/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "psych"; name = "Mental Health Privacy Shutters"; opacity = 0},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized{dir = 4},/turf/simulated/floor/plating,/area/medical/psych) +"cew" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Secondary Storage"; req_access = list(5)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) "cex" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/engineering/foyer) -"cey" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced,/obj/structure/cable/green,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) +"cey" = (/obj/structure/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Chief Engineer"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/button/windowtint{pixel_x = 36; pixel_y = 18},/obj/machinery/door_control{desc = "A remote control-switch for the office door."; id = "cedoor"; name = "Office Door Control"; normaldoorcontrol = 1; pixel_x = 26; pixel_y = 17; req_access = list(56)},/turf/simulated/floor,/area/crew_quarters/heads/chief) "cez" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) "ceA" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) "ceB" = (/obj/machinery/door/airlock/medical{autoclose = 0; icon_state = "door_open"; id_tag = "engineering_cubicle"; name = "Restroom"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) @@ -5684,7 +5684,7 @@ "cfp" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/smartfridge,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "cfq" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/maintenance/research_starboard) "cfr" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/research_starboard) -"cfs" = (/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Aft Starboard Solar Access"; dir = 1},/obj/effect/decal/cleanable/generic,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/research_starboard) +"cfs" = (/obj/item/weapon/stool,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera/network/engineering{c_tag = "Solar Maintenance Aft Starboard"; dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cft" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/rnd/test_area) "cfu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/command{name = "Electrical Maintenance"; req_access = list(19)},/turf/simulated/floor/plating,/area/maintenance/substation/command) "cfv" = (/obj/machinery/light/small,/turf/simulated/floor/plating/airless,/area/rnd/test_area) @@ -5704,8 +5704,8 @@ "cfJ" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/locker) "cfK" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/engineering/foyer) "cfL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/engine_eva) -"cfM" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engineering/foyer) -"cfN" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engineering/foyer) +"cfM" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/camera/network/engine{c_tag = "Engineering SMES"; dir = 8},/turf/simulated/floor,/area/engineering/engine_smes) +"cfN" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/camera/network/engine{c_tag = "Engine Waste Handling"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/engineering/engine_waste) "cfO" = (/obj/machinery/newscaster{pixel_x = 31; pixel_y = 3},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) "cfP" = (/obj/machinery/computer/station_alert,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) "cfQ" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) @@ -5722,8 +5722,8 @@ "cgb" = (/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor{dir = 10; icon_state = "whitered"},/area/medical/ward) "cgc" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{dir = 7; icon_state = "whitered"},/area/medical/ward) "cgd" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{dir = 7; icon_state = "whitered"},/area/medical/ward) -"cge" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/camera{c_tag = "Medbay Recovery Ward"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 6; icon_state = "whitered"},/area/medical/ward) -"cgf" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/machinery/camera{c_tag = "Medbay Mental Health Room"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "bcarpet04"},/area/medical/psych) +"cge" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Southeast"; dir = 1},/turf/simulated/floor,/area/engineering/atmos) +"cgf" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio1"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/network/research{c_tag = "Xenobiology Southwest"; dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology) "cgg" = (/obj/structure/table,/obj/item/weapon/storage/box/drinkingglasses{pixel_x = 1; pixel_y = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) "cgh" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/medical/patient_wing) "cgi" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) @@ -5733,7 +5733,7 @@ "cgm" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/locker) "cgn" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/patient_wing) "cgo" = (/obj/structure/bed/chair/comfy/brown,/obj/effect/landmark/start{name = "Psychiatrist"},/turf/simulated/floor{icon_state = "bcarpet06"},/area/medical/psych) -"cgp" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/camera/autoname{dir = 4},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/closet/crate/hydroponics/prespawned,/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora_storage) +"cgp" = (/obj/machinery/space_heater,/obj/machinery/light/small,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/engineering/atmos/storage) "cgq" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/terminal{dir = 8},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) "cgr" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cgs" = (/turf/simulated/wall/r_wall,/area/maintenance/substation/engineering) @@ -5779,7 +5779,7 @@ "chg" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer) "chh" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/foyer) "chi" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer) -"chj" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/camera{c_tag = "Engineering Foyer"; dir = 8; network = list("SS13")},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) +"chj" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Maintenance"; dir = 4},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/engineering/atmos/storage) "chk" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/foyer) "chl" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/structure/bed/chair/comfy/brown{dir = 4},/turf/simulated/floor{icon_state = "bcarpet08"},/area/medical/psych) "chm" = (/obj/structure/bed/psych,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor{icon_state = "bcarpet09"},/area/medical/psych) @@ -5807,14 +5807,14 @@ "chI" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora_storage) "chJ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology/xenoflora_storage) "chK" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora_storage) -"chL" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/engineering/atmos) +"chL" = (/obj/machinery/camera/network/engineering{c_tag = "Engineering Hallway Southeast"; dir = 1},/turf/simulated/floor,/area/engineering) "chM" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "chN" = (/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/engineering/atmos) "chO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) -"chP" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/engineering/atmos) +"chP" = (/obj/machinery/light/small{dir = 1},/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Tank - Air"},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/engineering/atmos) "chQ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "chR" = (/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/engineering/atmos) -"chS" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/engineering/atmos) +"chS" = (/obj/machinery/light/small{dir = 1},/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Tank - Oxygen"},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/engineering/atmos) "chT" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) "chU" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) "chV" = (/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/table/reinforced{icon_state = "table"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor,/area/engineering/engine_eva) @@ -5869,12 +5869,12 @@ "ciS" = (/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) "ciT" = (/obj/structure/closet/secure_closet/medical2,/obj/machinery/light_switch{pixel_x = 22; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) "ciU" = (/turf/simulated/wall,/area/medical/surgery2) -"ciV" = (/obj/machinery/camera{c_tag = "Virology Access Fore"; dir = 4; network = list("SS13","Research")},/turf/simulated/floor,/area/medical/virologyaccess) +"ciV" = (/obj/machinery/computer/shuttle_control/engineering,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/camera/network/engineering{c_tag = "Engineering Shuttle Access"; dir = 8},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "ciW" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "ciX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/medical/surgeryprep) "ciY" = (/obj/structure/toilet{dir = 1},/obj/machinery/light/small{dir = 4},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/patient_wing) "ciZ" = (/obj/machinery/shower{dir = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/patient_wing) -"cja" = (/obj/item/weapon/stool,/obj/machinery/camera{c_tag = "Aft Starboard Solar Control"; dir = 4; network = list("SS13")},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) +"cja" = (/obj/machinery/light/small{dir = 1},/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Tank - Nitrogen"},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/engineering/atmos) "cjb" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/engineering/atmos) "cjc" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/engineering/atmos) "cjd" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/engineering/atmos) @@ -5885,7 +5885,7 @@ "cji" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 6},/obj/item/weapon/storage/briefcase/inflatable{pixel_y = 3},/obj/structure/table/reinforced{icon_state = "table"},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = -3; pixel_y = 0},/turf/simulated/floor,/area/engineering/engine_eva) "cjj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/light,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor/plating,/area/rnd/xenobiology) "cjk" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) -"cjl" = (/obj/machinery/camera{c_tag = "Engineering EVA Storage"; dir = 1; network = list("SS13")},/obj/machinery/suit_cycler/engineering,/turf/simulated/floor,/area/engineering/engine_eva) +"cjl" = (/obj/machinery/camera/network/engineering{c_tag = "Engineering Hallway Southwest"; dir = 1},/turf/simulated/floor,/area/engineering) "cjm" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/pipe/manifold/hidden/purple,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cjn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/light,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor/plating,/area/rnd/xenobiology/xenoflora) "cjo" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) @@ -6036,11 +6036,11 @@ "cmd" = (/obj/machinery/light,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora_storage) "cme" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "warnwhite"},/area/rnd/xenobiology) "cmf" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) -"cmg" = (/obj/structure/closet/emcloset,/obj/machinery/camera/xray{c_tag = "Xenobiology Access"},/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/rnd/xenobiology) +"cmg" = (/obj/structure/closet/wardrobe/virology_white,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/camera/xray/medbay{c_tag = "Virology Access Aft"},/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/medical/virology) "cmh" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "cmi" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology/xenoflora) "cmj" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/meter{frequency = 1443; id = "mair_in_meter"; name = "Mixed Air Tank In"},/turf/simulated/wall/r_wall,/area/engineering/atmos) -"cmk" = (/obj/machinery/biogenerator,/obj/machinery/camera/autoname{dir = 1},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) +"cmk" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Southwest"; dir = 1},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/engineering/atmos) "cml" = (/obj/machinery/seed_extractor,/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "cmm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/atmos) "cmn" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) @@ -6071,15 +6071,15 @@ "cmM" = (/obj/structure/closet/secure_closet/atmos_personal,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/item/weapon/tank/emergency_oxygen/engi,/turf/simulated/floor,/area/engineering/locker_room) "cmN" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/engineering/locker_room) "cmO" = (/obj/structure/table,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/engineering/locker_room) -"cmP" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table,/obj/machinery/camera{c_tag = "Engineering Locker Room"; dir = 1; network = list("SS13")},/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/engineering/locker_room) +"cmP" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/camera/network/medbay{c_tag = "Virology Break/Access"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cmQ" = (/obj/structure/cable,/obj/machinery/power/terminal{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/shuttle/constructionsite/station) -"cmR" = (/obj/machinery/camera{c_tag = "Medbay Operating Theatre 1"; dir = 8; network = list("SS13")},/obj/machinery/button/holosign{pixel_x = 24; pixel_y = 2},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteredcorner"},/area/medical/surgery) +"cmR" = (/obj/structure/closet/radiation,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/camera/network/engine{c_tag = "Engine Airlock"},/turf/simulated/floor,/area/engineering/engine_airlock) "cmS" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/surgeryprep) "cmT" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating/airless,/area/solar/starboard) "cmU" = (/obj/machinery/door/blast/regular{dir = 4; id = "disvent"; name = "Incinerator Vent"},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) "cmV" = (/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry/port) "cmW" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/surgeryprep) -"cmX" = (/obj/machinery/button/holosign{pixel_x = -24; pixel_y = 2},/obj/machinery/camera{c_tag = "Medbay Operating Theatre 2"; dir = 4; network = list("SS13")},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 1; icon_state = "whiteredcorner"},/area/medical/surgery2) +"cmX" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/camera/network/research{c_tag = "Xenobiology North"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cmY" = (/obj/machinery/door/blast/regular{desc = "By gods, release the hounds!"; id = "xenobioout6"; name = "Containment Release"},/turf/simulated/floor/engine,/area/rnd/xenobiology) "cmZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/solar/starboard) "cna" = (/obj/structure/cable/yellow,/turf/simulated/floor/plating/airless,/area/solar/starboard) @@ -6147,7 +6147,7 @@ "cok" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "col" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) "com" = (/turf/simulated/wall,/area/rnd/xenobiology) -"con" = (/obj/machinery/camera{c_tag = "Xenobiology Module South"; dir = 4; network = list("SS13","Research"); pixel_x = 0},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio1"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology) +"con" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/structure/sign/atmosplaque{pixel_x = 0; pixel_y = 32},/obj/machinery/cell_charger,/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Northeast"},/turf/simulated/floor,/area/engineering/atmos) "coo" = (/obj/structure/closet/l3closet/scientist,/turf/simulated/floor{dir = 6; icon_state = "warnwhite"},/area/rnd/xenobiology) "cop" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "coq" = (/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "virologyq_airlock_interior"; locked = 1; name = "Virology Quarantine Airlock"; req_access = list(39)},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) @@ -6191,7 +6191,7 @@ "cpc" = (/obj/machinery/status_display,/turf/simulated/wall,/area/medical/surgery) "cpd" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{req_one_access = list(10,24)},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cpe" = (/obj/machinery/light{dir = 8},/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/structure/closet/wardrobe/medic_white,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/surgeryprep) -"cpf" = (/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/structure/table,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/camera{c_tag = "Medbay Surgery Prep"; dir = 8; network = list("SS13")},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/surgeryprep) +"cpf" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "o2_in"; name = "Oxygen Supply Control"; output_tag = "o2_out"; sensors = list("o2_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light{dir = 1},/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Northwest"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engineering/atmos) "cpg" = (/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "virology_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "virology_pump"; tag_exterior_door = "virology_outer"; frequency = 1379; id_tag = "virology_airlock"; tag_interior_door = "virology_inner"; pixel_x = 25; req_access = list(13); tag_chamber_sensor = "virology_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "virology_pump"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/maintenance/medbay) "cph" = (/obj/machinery/status_display,/turf/simulated/wall,/area/medical/surgery2) "cpi" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/medbay) @@ -6212,23 +6212,23 @@ "cpx" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1443; input_tag = "air_in"; name = "Mixed Air Supply Control"; output_tag = "air_out"; pressure_setting = 2000; sensors = list("air_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/engineering/atmos) "cpy" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/engineering/atmos) "cpz" = (/obj/machinery/atmospherics/valve/digital/open{name = "Oxygen Outlet Valve"},/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/engineering/atmos) -"cpA" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "o2_in"; name = "Oxygen Supply Control"; output_tag = "o2_out"; sensors = list("o2_sensor" = "Tank")},/obj/machinery/camera{c_tag = "Atmospherics North West"; dir = 2},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engineering/atmos) +"cpA" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/camera/network/engineering{c_tag = "Engineering Monitoring Room"; dir = 4},/turf/simulated/floor,/area/engineering/engineering_monitoring) "cpB" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{icon_state = "red"; dir = 9},/area/engineering/atmos) -"cpC" = (/obj/machinery/atmospherics/binary/pump,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos) +"cpC" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Monitoring Room"; dir = 8},/turf/simulated/floor,/area/engineering/atmos/monitoring) "cpD" = (/obj/machinery/atmospherics/valve/digital/open{name = "Nitrogen Outlet Valve"},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/engineering/atmos) "cpE" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{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/plating/airless,/area/engineering/atmos) "cpF" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "n2_in"; name = "Nitrogen Supply Control"; output_tag = "n2_out"; sensors = list("n2_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/engineering/atmos) "cpG" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/space,/area/space) "cpH" = (/turf/simulated/floor,/area/engineering/atmos) "cpI" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/space,/area/space) -"cpJ" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor,/area/engineering/atmos) +"cpJ" = (/obj/machinery/atmospherics/binary/pump{name = "O2 to Connector"},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos) "cpK" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry/aft) "cpL" = (/obj/structure/reagent_dispensers/fueltank,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = 25},/turf/simulated/floor,/area/engineering/atmos) "cpM" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos) "cpN" = (/obj/structure/table,/obj/item/device/t_scanner,/obj/item/device/multitool{pixel_x = 5},/obj/item/device/radio/headset/headset_eng,/obj/item/weapon/cartridge/atmos,/obj/item/weapon/cartridge/atmos,/obj/item/device/pipe_painter,/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 4; name = "Atmos RC"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor,/area/engineering/atmos) "cpO" = (/obj/structure/dispenser,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos) "cpP" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/space,/area/space) -"cpQ" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/machinery/camera{c_tag = "Atmospherics North East"; dir = 6},/obj/structure/sign/atmosplaque{pixel_x = 0; pixel_y = 32},/obj/machinery/cell_charger,/turf/simulated/floor,/area/engineering/atmos) +"cpQ" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/binary/pump{name = "N2 to Connector"},/turf/simulated/floor,/area/engineering/atmos) "cpR" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/space,/area/space) "cpS" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/hallway/secondary/entry/port) "cpT" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 50},/obj/item/clothing/head/welding{pixel_x = -5; pixel_y = 3},/obj/item/clothing/glasses/welding,/obj/structure/closet/fireaxecabinet{pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos) @@ -6236,14 +6236,14 @@ "cpV" = (/obj/structure/table,/obj/machinery/newscaster{pixel_y = 30},/obj/machinery/light{dir = 1},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/weapon/storage/belt/utility/atmostech,/obj/item/weapon/storage/belt/utility/atmostech,/turf/simulated/floor,/area/engineering/atmos) "cpW" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 1; sortType = "Atmospherics"; name = "Atmospherics"},/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/floor,/area/engineering/atmos) "cpX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/floor,/area/engineering/atmos) -"cpY" = (/obj/machinery/atmospherics/binary/pump/on{dir = 1},/turf/simulated/floor,/area/engineering/atmos) +"cpY" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/bed/chair,/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/camera/network/medbay{c_tag = "Virology Monkey Pen"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cpZ" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/floor,/area/engineering/atmos) "cqa" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/atmos/monitoring) -"cqb" = (/obj/machinery/atmospherics/binary/pump/on,/turf/simulated/floor,/area/engineering/atmos) +"cqb" = (/obj/machinery/atmospherics/binary/pump/on{dir = 1; name = "Air to Ports"},/turf/simulated/floor,/area/engineering/atmos) "cqc" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/engineering/atmos/monitoring) "cqd" = (/obj/machinery/computer/atmos_alert,/turf/simulated/floor,/area/engineering/atmos/monitoring) "cqe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/engineering_monitoring) -"cqf" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera/autoname{dir = 8},/turf/simulated/floor,/area/engineering/atmos/monitoring) +"cqf" = (/obj/machinery/atmospherics/binary/pump/on{name = "Ports to Waste"},/turf/simulated/floor,/area/engineering/atmos) "cqg" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/engineering) "cqh" = (/obj/structure/closet/crate/freezer,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery) "cqi" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery) @@ -6263,11 +6263,11 @@ "cqw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology) "cqx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology) "cqy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology) -"cqz" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/camera/autoname{dir = 4},/turf/simulated/floor,/area/engineering/engineering_monitoring) +"cqz" = (/obj/machinery/light_switch{pixel_x = -27; pixel_y = 0},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/engineering{c_tag = "Engineering Storage"; dir = 4},/turf/simulated/floor/plating,/area/engineering/storage) "cqA" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/meter,/obj/machinery/door_control{id = "disvent"; name = "Incinerator Vent Control"; pixel_x = 0; pixel_y = -24; req_one_access = list(12,5)},/turf/simulated/floor{dir = 1; icon_state = "warningcorner"; tag = "icon-warningcorner (WEST)"},/area/maintenance/incinerator) "cqB" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cqC" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) -"cqD" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/camera{c_tag = "Xenobiology Module North"; dir = 2; network = list("SS13","Research"); pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) +"cqD" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/engineering{c_tag = "Engineering Workshop"; dir = 8},/turf/simulated/floor,/area/engineering/workshop) "cqE" = (/obj/machinery/embedded_controller/radio/airlock/access_controller{tag_exterior_door = "xeno_airlock_exterior"; id_tag = "xeno_airlock_control"; tag_interior_door = "xeno_airlock_interior"; name = "Xenobiology Access Console"; pixel_x = 8; pixel_y = 22},/obj/machinery/light_switch{pixel_x = -6; pixel_y = 26},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/rnd/xenobiology) "cqF" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/rnd/xenobiology) "cqG" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/rnd/xenobiology) @@ -6286,7 +6286,7 @@ "cqT" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/security/prison) "cqU" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 8},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) "cqV" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) -"cqW" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor,/area/engineering/atmos) +"cqW" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/camera/network/engineering{c_tag = "Engineering Hallway North"; dir = 4},/turf/simulated/floor,/area/engineering) "cqX" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor,/area/engineering/atmos) "cqY" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor,/area/engineering/atmos) "cqZ" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor,/area/engineering/atmos) @@ -6354,7 +6354,7 @@ "csj" = (/obj/structure/table/reinforced,/obj/machinery/light,/obj/item/device/flashlight,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/engineering/engineering_monitoring) "csk" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/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,/area/engineering/engineering_monitoring) "csl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio2"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/rnd/xenobiology) -"csm" = (/obj/machinery/computer/power_monitor,/turf/simulated/floor,/area/engineering/engineering_monitoring) +"csm" = (/obj/machinery/atmospherics/binary/pump{dir = 8; name = "Air Tank Bypass Pump"},/turf/simulated/floor,/area/engineering/atmos) "csn" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/engineering) "cso" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor,/area/engineering) "csp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/workshop) @@ -6379,7 +6379,7 @@ "csI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/medbay) "csJ" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "warnwhite"},/area/medical/virology) "csK" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"csL" = (/obj/structure/closet/wardrobe/virology_white,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/camera/xray{c_tag = "Virology Access Aft"; dir = 2; network = list("SS13","Medical")},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/medical/virology) +"csL" = (/obj/structure/closet/emcloset,/obj/machinery/camera/xray/research{c_tag = "Xenobiology Access"},/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/rnd/xenobiology) "csM" = (/obj/machinery/door/window/southright{name = "Containment Pen"; req_access = list(47)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio4"; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/engine,/area/rnd/xenobiology) "csN" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor,/area/engineering/atmos) "csO" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor,/area/engineering/atmos) @@ -6403,7 +6403,7 @@ "ctg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/atmos/monitoring) "cth" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire/firefighter,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/glasses/meson,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cti" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor,/area/engineering) -"ctj" = (/obj/machinery/camera{c_tag = "Engineering Hallway North"; dir = 4; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/engineering) +"ctj" = (/obj/structure/table,/obj/machinery/light{dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/weapon/storage/box/gloves{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/masks,/obj/machinery/camera/network/medbay{c_tag = "Virology Port"; dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "ctk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/engineering/workshop) "ctl" = (/obj/structure/window/reinforced{dir = 1},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/structure/table/reinforced,/turf/simulated/floor,/area/engineering/workshop) "ctm" = (/obj/structure/window/reinforced{dir = 1},/obj/item/stack/rods{amount = 50},/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/weapon/cell/high,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table/reinforced,/turf/simulated/floor,/area/engineering/workshop) @@ -6413,8 +6413,8 @@ "ctq" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "surgeryobs"; name = "Operating Theatre Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgeryobs) "ctr" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "surgeryobs"; name = "Operating Theatre Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgeryobs) "cts" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) -"ctt" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/camera{c_tag = "Engineering Workshop"; dir = 8; network = list("SS13"); pixel_y = -23},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/workshop) -"ctu" = (/obj/machinery/light_switch{pixel_x = -27; pixel_y = 0},/obj/machinery/camera{c_tag = "Engineering Hard Storage"; dir = 4; network = list("SS13")},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engineering/storage) +"ctt" = (/obj/machinery/atmospherics/binary/pump/on{name = "Scrubber to Waste"},/turf/simulated/floor,/area/engineering/atmos) +"ctu" = (/obj/machinery/atmospherics/binary/pump/on{dir = 1; name = "Air to Supply"},/turf/simulated/floor,/area/engineering/atmos) "ctv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/engineering) "ctw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/engineering) "ctx" = (/obj/machinery/door/airlock/maintenance{name = "Drone Fabrication"; req_one_access = list(10,24)},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) @@ -6438,7 +6438,7 @@ "ctP" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "ctQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "surgeryobs2"; name = "Operating Theatre Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgeryprep) "ctR" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) -"ctS" = (/obj/machinery/camera{c_tag = "Virology Monkey Pen"; dir = 2},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/bed/chair,/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"ctS" = (/obj/structure/disposalpipe/segment,/obj/machinery/camera/network/research{c_tag = "Xenobiology Southeast"; dir = 8},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "ctT" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "ctU" = (/obj/structure/table,/obj/item/weapon/storage/box/syringes,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "ctV" = (/obj/structure/bed/chair{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) @@ -6448,7 +6448,7 @@ "ctZ" = (/obj/structure/bed/chair{dir = 8},/obj/effect/landmark/start{name = "Xenobiologist"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cua" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor,/area/engineering/atmos) "cub" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "surgeryobs"; name = "Operating Theatre Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgery) -"cuc" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/machinery/atmospherics/binary/pump{dir = 1},/turf/simulated/floor,/area/engineering/atmos) +"cuc" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "O2 to Transit"},/turf/simulated/floor,/area/engineering/atmos) "cud" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor,/area/engineering/atmos) "cue" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan,/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) "cuf" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/engineering/atmos) @@ -6506,14 +6506,14 @@ "cvf" = (/obj/machinery/optable{name = "Xenobiology Operating Table"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/rnd/xenobiology) "cvg" = (/obj/machinery/computer/operating{name = "Xenobiology Operating Computer"},/turf/simulated/floor{dir = 8; icon_state = "whitecorner"},/area/rnd/xenobiology) "cvh" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) -"cvi" = (/obj/machinery/atmospherics/unary/freezer{dir = 2; icon_state = "freezer"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) +"cvi" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/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/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/command{id_tag = "cedoor"; name = "Chief Engineer"; req_access = list(56)},/turf/simulated/floor,/area/crew_quarters/heads/chief) "cvj" = (/obj/machinery/constructable_frame/machine_frame,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) "cvk" = (/obj/machinery/atmospherics/unary/heater{dir = 2; icon_state = "heater"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) "cvl" = (/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "virology_airlock_exterior"; locked = 1; name = "Virology Exterior Airlock"; req_access = list(39)},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = -24; pixel_y = 0; req_access = list(39)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cvm" = (/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "virologyquar"; name = "Virology Emergency Quarantine Blast Doors"; opacity = 0},/turf/simulated/floor{icon_state = "delivery"},/area/medical/virologyaccess) "cvn" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engineering/atmos) "cvo" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/engineering/atmos) -"cvp" = (/obj/machinery/hologram/holopad,/obj/structure/disposalpipe/sortjunction/flipped{dir = 8; sortType = "Drone Fabrication"; name = "Drone Fabrication"},/turf/simulated/floor,/area/engineering/atmos) +"cvp" = (/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized{dir = 4},/obj/structure/window/reinforced/polarized{dir = 1},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) "cvq" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engineering) "cvr" = (/obj/machinery/door/airlock/medical{name = "Operating Theatre 1 Storage"; req_access = list(45)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgeryprep) "cvs" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light,/turf/simulated/floor,/area/engineering) @@ -6541,7 +6541,7 @@ "cvO" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/light,/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "virologyquar"; name = "Virology Emergency Lockdown Control"; pixel_x = 0; pixel_y = -28; req_access = list(5)},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/medical/virologyaccess) "cvP" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/turf/simulated/floor/plating,/area/maintenance/medbay) "cvQ" = (/obj/machinery/power/apc/super{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/engineering/atmos) -"cvR" = (/obj/structure/table,/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Virology Port"; dir = 4; network = list("SS13")},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/weapon/storage/box/gloves{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/masks,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"cvR" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor,/area/engineering/atmos/storage) "cvS" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cvT" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j1"; dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cvU" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) @@ -6582,7 +6582,7 @@ "cwD" = (/obj/structure/table,/obj/item/weapon/storage/box/syringes{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/beakers,/obj/item/weapon/reagent_containers/dropper,/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cwE" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/tvalve/bypass,/obj/structure/sign/securearea{desc = "A warning sign which reads 'SIPHON VALVE'."; name = "\improper SIPHON VALVE"; pixel_y = -32},/turf/simulated/floor/plating,/area/medical/virology) "cwF" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"},/area/medical/virology) -"cwG" = (/obj/machinery/camera{c_tag = "Virology Starboard"; dir = 8; network = list("RD"); pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"cwG" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/portable_atmospherics/powered/pump/filled,/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/engineering/atmos/storage) "cwH" = (/obj/machinery/door/window/southright{dir = 1; name = "Virology Isolation Room One"; req_access = list(39)},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "cwI" = (/obj/machinery/atmospherics/pipe/tank/phoron{dir = 2; volume = 3200},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "cwJ" = (/obj/machinery/atmospherics/pipe/tank/oxygen{dir = 2; volume = 3200},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) @@ -6613,10 +6613,10 @@ "cxi" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cxj" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cxk" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) -"cxl" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/floor,/area/engineering/atmos/storage) +"cxl" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera/network/medbay{c_tag = "Virology Starboard"; dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cxm" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/rnd/xenobiology) "cxn" = (/obj/structure/table,/obj/item/weapon/circular_saw,/obj/item/weapon/scalpel{pixel_y = 12},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor,/area/rnd/xenobiology) -"cxo" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/portable_atmospherics/powered/pump,/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/engineering/atmos/storage) +"cxo" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/camera/network/engineering{c_tag = "Engineering Foyer"; dir = 8},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) "cxp" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold4w/hidden/yellow,/turf/simulated/wall/r_wall,/area/engineering/atmos/storage) "cxq" = (/obj/structure/disposalpipe/segment,/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,/area/engineering) "cxr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/workshop) @@ -6660,9 +6660,9 @@ "cyd" = (/obj/machinery/power/tracker,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/airless,/area/solar/port) "cye" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cyf" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) -"cyg" = (/obj/machinery/camera{c_tag = "Xenobiology South"; dir = 8; network = list("SS13","Research"); pixel_y = -22},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) -"cyh" = (/obj/machinery/computer/security/engineering{network = list("Engineering","Engineering Outpost","Power Alarms","Atmosphere Alarms","Fire Alarms","Atmospherics")},/turf/simulated/floor,/area/engineering/atmos/monitoring) -"cyi" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/camera{c_tag = "Atmospherics South East"; dir = 1},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/atmos) +"cyg" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engineering/foyer) +"cyh" = (/obj/machinery/computer/security/engineering,/turf/simulated/floor,/area/engineering/atmos/monitoring) +"cyi" = (/obj/machinery/computer/security/engineering,/turf/simulated/floor,/area/engineering/engineering_monitoring) "cyj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor,/area/engineering/atmos) "cyk" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor,/area/engineering/atmos) "cyl" = (/turf/simulated/floor,/area/engineering/atmos/storage) @@ -6678,13 +6678,13 @@ "cyv" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/pipedispenser,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor,/area/engineering/atmos) "cyw" = (/obj/structure/bed/chair/office/dark,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cyx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/plating,/area/medical/virology) -"cyy" = (/obj/machinery/atmospherics/binary/passive_gate,/turf/simulated/floor,/area/engineering/atmos) +"cyy" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "N2 to Transit"},/turf/simulated/floor,/area/engineering/atmos) "cyz" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor,/area/engineering/atmos) "cyA" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 9},/turf/simulated/floor,/area/engineering/atmos) "cyB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engineering/atmos) "cyC" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor,/area/engineering/atmos) "cyD" = (/obj/machinery/space_heater,/turf/simulated/floor,/area/engineering/atmos/storage) -"cyE" = (/obj/machinery/space_heater,/obj/machinery/light/small,/turf/simulated/floor,/area/engineering/atmos/storage) +"cyE" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engineering/foyer) "cyF" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/wall/r_wall,/area/engineering/atmos/storage) "cyG" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_y = 5},/obj/item/weapon/storage/toolbox/mechanical{pixel_y = 5},/obj/item/weapon/storage/toolbox/electrical,/turf/simulated/floor,/area/engineering/workshop) "cyH" = (/obj/structure/table,/obj/item/device/floor_painter,/obj/item/device/multitool{pixel_x = 5},/obj/item/device/t_scanner,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor,/area/engineering/workshop) @@ -6743,7 +6743,7 @@ "czI" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) "czJ" = (/obj/structure/table,/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "czK" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) -"czL" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/camera/autoname,/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) +"czL" = (/obj/machinery/atmospherics/binary/pump{dir = 8; name = "Supply to Waste"},/turf/simulated/floor,/area/engineering/atmos) "czM" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics"; req_access = list(24)},/turf/simulated/floor,/area/engineering/atmos) "czN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/engineering) "czO" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/engineering) @@ -6779,7 +6779,7 @@ "cAs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engineering) "cAt" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) "cAu" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/atmos/storage) -"cAv" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/obj/machinery/camera{c_tag = "Atmospherics Substation"; dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/engineering/atmos/storage) +"cAv" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/machinery/camera/network/medbay{c_tag = "Medbay Mental Health Room"; dir = 1},/turf/simulated/floor{icon_state = "bcarpet04"},/area/medical/psych) "cAw" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering) "cAx" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio2"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology) "cAy" = (/obj/machinery/light{dir = 1},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/engineering) @@ -6815,12 +6815,12 @@ "cBc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/medical/virology) "cBd" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/turf/simulated/floor{dir = 3; icon_state = "whitered"},/area/medical/virology) "cBe" = (/obj/machinery/light,/turf/simulated/floor{dir = 3; icon_state = "whitered"},/area/medical/virology) -"cBf" = (/obj/machinery/camera{c_tag = "Atmospherics South West"; dir = 1},/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/engineering/atmos) -"cBg" = (/obj/machinery/light,/obj/machinery/atmospherics/binary/pump{dir = 1},/turf/simulated/floor,/area/engineering/atmos) +"cBf" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/camera/network/medbay{c_tag = "Medbay Recovery Ward"; dir = 1},/turf/simulated/floor{dir = 6; icon_state = "whitered"},/area/medical/ward) +"cBg" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Mix to Supply"},/turf/simulated/floor,/area/engineering/atmos) "cBh" = (/obj/machinery/atmospherics/valve/digital{name = "Phoron Outlet Valve"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engineering/atmos) "cBi" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "tox_in"; name = "Phoron Supply Control"; output_tag = "tox_out"; sensors = list("tox_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/light,/turf/simulated/floor{icon_state = "warning"},/area/engineering/atmos) "cBj" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{dir = 10; icon_state = "escape"},/area/engineering/atmos) -"cBk" = (/obj/machinery/atmospherics/binary/pump{dir = 1},/obj/machinery/light,/turf/simulated/floor,/area/engineering/atmos) +"cBk" = (/obj/machinery/atmospherics/binary/pump{dir = 8; name = "Mix to Waste"},/turf/simulated/floor,/area/engineering/atmos) "cBl" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology) "cBm" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics"; req_access = list(24)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/atmos) "cBn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Workshop"; req_one_access = list(11,24)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/workshop) @@ -6831,7 +6831,7 @@ "cBs" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio1"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access = list(55)},/turf/simulated/floor/engine,/area/rnd/xenobiology) "cBt" = (/obj/machinery/atmospherics/valve/digital{name = "N2O Outlet Valve"},/turf/simulated/floor{icon_state = "escape"; dir = 6},/area/engineering/atmos) "cBu" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "n2o_in"; name = "Nitrous Oxide Supply Control"; output_tag = "n2o_out"; sensors = list("n2o_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/light,/turf/simulated/floor{dir = 7; icon_state = "escape"},/area/engineering/atmos) -"cBv" = (/obj/machinery/atmospherics/valve/digital{name = "Gas Mix Inlet Valve"},/obj/machinery/camera{c_tag = "Atmospherics South"; dir = 1},/turf/simulated/floor{dir = 10; icon_state = "green"},/area/engineering/atmos) +"cBv" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/closet/crate/hydroponics/prespawned,/obj/machinery/camera/network/research{c_tag = "Xenoflora Storage"; dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora_storage) "cBw" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "incinerator_access_control"; name = "Incinerator airlock control"; pixel_x = -8; pixel_y = 24},/obj/structure/sign/fire{pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/binary/pump{dir = 1},/turf/simulated/floor/plating,/area/maintenance/incinerator) "cBx" = (/obj/machinery/atmospherics/valve/digital{name = "Gas Mix Outlet Valve"},/turf/simulated/floor{icon_state = "green"; dir = 6},/area/engineering/atmos) "cBy" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "waste_in"; name = "Gas Mix Tank Control"; output_tag = "waste_out"; sensors = list("waste_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "green"},/area/engineering/atmos) @@ -6840,8 +6840,8 @@ "cBB" = (/obj/machinery/door/window/southright{name = "Virology Isolation Room Three"; req_access = list(39)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "cBC" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/engineering) "cBD" = (/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,/area/engineering) -"cBE" = (/obj/machinery/camera{c_tag = "Engineering Hallway South West"; dir = 1; pixel_x = 22},/turf/simulated/floor,/area/engineering) -"cBF" = (/obj/machinery/camera{c_tag = "Engineering Hallway South East"; dir = 1},/turf/simulated/floor,/area/engineering) +"cBE" = (/obj/machinery/suit_cycler/engineering,/obj/machinery/camera/network/engineering{c_tag = "Engineering EVA"; dir = 1},/turf/simulated/floor,/area/engineering/engine_eva) +"cBF" = (/obj/structure/table/reinforced,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera/network/engine{c_tag = "Engine Monitoring Room"; dir = 4},/turf/simulated/floor,/area/engineering/engine_monitoring) "cBG" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering) "cBH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/engineering) "cBI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/engineering) @@ -6904,7 +6904,7 @@ "cCN" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Virology Laboratory"; req_access = list(39)},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/medical/virology) "cCO" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering EVA Storage"; req_one_access = list(11,24)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/engine_eva) "cCP" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air/airlock,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/maintenance/engi_shuttle) -"cCQ" = (/obj/machinery/computer/shuttle_control/engineering,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) +"cCQ" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Transit to Waste"},/turf/simulated/floor,/area/engineering/atmos) "cCR" = (/obj/machinery/atmospherics/valve,/turf/simulated/floor/plating,/area/maintenance/engineering) "cCS" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 6; icon_state = "intact"; tag = "icon-intact-f (SOUTHEAST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/engineering) "cCT" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/maintenance/engineering) @@ -6914,7 +6914,7 @@ "cCX" = (/turf/simulated/floor/plating/airless,/area/maintenance/medbay) "cCY" = (/obj/machinery/door_control{id = "engineering_cubicle"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 8; specialfunctions = 4},/obj/structure/toilet{dir = 1},/obj/machinery/light/small{dir = 4},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) "cCZ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; 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/plating/airless,/area/maintenance/incinerator) -"cDa" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/camera{c_tag = "Virology Break/Access"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"cDa" = (/obj/machinery/camera/network/medbay{c_tag = "Virology Access Fore"},/turf/simulated/floor,/area/medical/virologyaccess) "cDb" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cDc" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cDd" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) @@ -6941,7 +6941,7 @@ "cDy" = (/obj/structure/closet/radiation,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = 28},/turf/simulated/floor,/area/engineering/engine_monitoring) "cDz" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/ai_status_display{layer = 4; pixel_y = 32},/turf/simulated/floor,/area/engineering/engine_monitoring) "cDA" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/engineering/engine_airlock) -"cDB" = (/obj/structure/closet/radiation,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/machinery/camera{c_tag = "Engine Room Airlock"; dir = 2; network = list("SS13","Supermatter")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor,/area/engineering/engine_airlock) +"cDB" = (/obj/machinery/atmospherics/binary/passive_gate{name = "Waste to Space"},/turf/simulated/floor,/area/engineering/atmos) "cDC" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_airlock) "cDD" = (/obj/structure/bed,/obj/item/weapon/bedsheet/green,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cDE" = (/obj/item/weapon/stool,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) @@ -6969,7 +6969,7 @@ "cEa" = (/obj/machinery/light/small{dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor/engine,/area/rnd/xenobiology) "cEb" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) "cEc" = (/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/turf/simulated/floor,/area/engineering/engine_smes) -"cEd" = (/turf/simulated/floor,/area/engineering/engine_smes) +"cEd" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/medical/psych) "cEe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engineering/engine_smes) "cEf" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor,/area/engineering/engine_monitoring) "cEg" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_monitoring) @@ -6998,7 +6998,7 @@ "cED" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cEE" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/drone_fabrication) "cEF" = (/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) -"cEG" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/toolbox/electrical,/obj/machinery/camera{c_tag = "Drone Fabrication"; dir = 8; network = list("SS13")},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cEG" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cEH" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) "cEI" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/lights/mixed,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/engineering/engine_smes) "cEJ" = (/obj/structure/table,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) @@ -7030,20 +7030,20 @@ "cFj" = (/obj/effect/landmark{name = "JoinLateCyborg"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/drone_fabrication) "cFk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) "cFl" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_smes) -"cFm" = (/obj/machinery/camera{c_tag = "SMES"; dir = 8; network = list("SS13","Supermatter")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/engineering/engine_smes) +"cFm" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "Transit to Mix"},/turf/simulated/floor,/area/engineering/atmos) "cFn" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cFo" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/closet/secure_closet/personal/patient,/obj/item/clothing/under/color/white,/obj/item/clothing/under/color/white,/obj/item/clothing/under/color/white,/obj/item/clothing/under/color/white,/obj/item/clothing/under/color/white,/obj/item/clothing/under/color/white,/obj/item/clothing/under/color/white,/obj/item/clothing/shoes/white,/obj/item/clothing/shoes/white,/obj/item/clothing/shoes/white,/obj/item/clothing/shoes/white,/obj/item/clothing/shoes/white,/obj/item/clothing/shoes/white,/obj/item/clothing/shoes/white,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cFp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/engineering/engine_smes) -"cFq" = (/obj/structure/table/reinforced,/obj/machinery/camera{c_tag = "Engine Monitoring Room"; dir = 4; network = list("SS13","Supermatter")},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/engineering/engine_monitoring) +"cFq" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "CO2 to Transit"},/turf/simulated/floor,/area/engineering/atmos) "cFr" = (/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/engineering,/obj/machinery/door/window/southleft{name = "Engineering Hardsuits"; req_access = list(11)},/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/item/clothing/suit/space/void/engineering,/turf/simulated/floor,/area/engineering/engine_eva) "cFs" = (/obj/structure/bed/chair/office/dark,/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor,/area/engineering/engine_monitoring) "cFt" = (/obj/structure/table/reinforced,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor,/area/engineering/engine_monitoring) "cFu" = (/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller{id_tag = "engine_room_airlock"; name = "Engine Room Airlock"; pixel_x = -24; tag_airpump = "engine_airlock_pump"; tag_chamber_sensor = "eng_al_c_snsr"; tag_exterior_door = "engine_airlock_exterior"; tag_exterior_sensor = "eng_al_ext_snsr"; tag_interior_door = "engine_airlock_interior"; tag_interior_sensor = "eng_al_int_snsr"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/engineering/engine_airlock) "cFv" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/engineering/engine_airlock) "cFw" = (/obj/machinery/atmospherics/binary/dp_vent_pump/high_volume{dir = 8; frequency = 1379; id = "engine_airlock_pump"},/turf/simulated/floor/plating,/area/engineering/engine_airlock) -"cFx" = (/obj/machinery/light/small,/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/engineering/atmos) -"cFy" = (/obj/machinery/light/small,/turf/simulated/floor/engine{carbon_dioxide = 0; name = "phoron floor"; nitrogen = 0; oxygen = 0; phoron = 70000},/area/engineering/atmos) -"cFz" = (/obj/machinery/light/small,/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) +"cFx" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Phoron to Transit"},/turf/simulated/floor,/area/engineering/atmos) +"cFy" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "N2O to Transit"},/turf/simulated/floor,/area/engineering/atmos) +"cFz" = (/obj/machinery/atmospherics/binary/pump{name = "Transit to Mix Tank"},/turf/simulated/floor,/area/engineering/atmos) "cFA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) "cFB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) "cFC" = (/obj/machinery/computer/drone_control,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/drone_fabrication) @@ -7067,7 +7067,7 @@ "cFU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/computer/power_monitor,/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_monitoring) "cFV" = (/obj/machinery/computer/rcon,/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_monitoring) "cFW" = (/obj/machinery/computer/station_alert,/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_monitoring) -"cFX" = (/obj/machinery/computer/security/engineering{network = list("Engineering","Power Alarms","Atmosphere Alarms","Fire Alarms","Supermatter")},/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_monitoring) +"cFX" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Mix Tank to Transit"},/turf/simulated/floor,/area/engineering/atmos) "cFY" = (/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eng_al_c_snsr"; pixel_x = -25; pixel_y = 0},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/engineering/engine_airlock) "cFZ" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/engineering/engine_airlock) "cGa" = (/turf/simulated/floor/plating,/area/engineering/engine_airlock) @@ -7086,7 +7086,7 @@ "cGn" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/wall/r_wall,/area/engineering/engine_waste) "cGo" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/engineering/engine_waste) "cGp" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 10},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/engineering/engine_waste) -"cGq" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13","Supermatter","Atmospherics")},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/engineering/engine_waste) +"cGq" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/machinery/camera/network/engineering{c_tag = "Engineering Locker Room"; dir = 1},/turf/simulated/floor,/area/engineering/locker_room) "cGr" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_waste) "cGs" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/engineering/engine_room) "cGt" = (/obj/machinery/light/small{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_waste) @@ -7199,12 +7199,12 @@ "cIw" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/space,/area/space) "cIx" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 6},/turf/space,/area/space) "cIy" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cIz" = (/obj/machinery/camera{c_tag = "Engineering Core West"; dir = 8; network = list("SS13","Supermatter")},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) +"cIz" = (/obj/machinery/button/holosign{pixel_x = -24; pixel_y = 2},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/camera/network/medbay{c_tag = "Medbay Operating Theatre 2"; dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whiteredcorner"},/area/medical/surgery2) "cIA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{dir = 8; icon_state = "pdoor1"; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"},/turf/simulated/floor/plating,/area/engineering/engine_room) "cIB" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering EVA Storage"; req_one_access = list(11,24)},/turf/simulated/floor,/area/engineering/engine_eva) "cIC" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "cID" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cIE" = (/obj/machinery/camera{c_tag = "Engineering Core East"; dir = 4; network = list("SS13","Supermatter")},/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 8},/obj/machinery/meter,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) +"cIE" = (/obj/machinery/light,/obj/machinery/atmospherics/binary/pump{dir = 1; name = "CO2 to Connector"},/turf/simulated/floor,/area/engineering/atmos) "cIF" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 9},/turf/simulated/floor/plating,/area/engineering/engine_room) "cIG" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor/plating,/area/engineering/engine_room) "cIH" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 5},/turf/simulated/floor/plating,/area/engineering/engine_room) @@ -7247,7 +7247,7 @@ "cJs" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plating,/area/engineering/engine_room) "cJt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"},/turf/simulated/floor/plating,/area/engineering/engine_room) "cJu" = (/turf/simulated/floor/engine/nitrogen,/area/engineering/engine_room) -"cJv" = (/obj/machinery/camera{c_tag = "Engineering Core South"; dir = 1; network = list("SS13","Supermatter")},/turf/simulated/floor/engine/nitrogen{dir = 8; icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) +"cJv" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Phoron to Connector"},/obj/machinery/light,/turf/simulated/floor,/area/engineering/atmos) "cJw" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) "cJx" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) "cJy" = (/obj/machinery/atmospherics/valve/digital{dir = 4; name = "Emergency Cooling Valve 2"},/turf/simulated/floor/plating,/area/engineering/engine_room) @@ -7272,8 +7272,8 @@ "cJR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) "cJS" = (/obj/machinery/power/solar_control{id = "portsolar"; name = "Aft Port Solar Control"; track = 0},/obj/structure/cable/yellow,/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/maintenance/portsolar) "cJT" = (/turf/simulated/floor/plating,/area/maintenance/portsolar) -"cJU" = (/obj/machinery/camera{c_tag = "Aft Port Solar Control"; dir = 1},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/portsolar) -"cJV" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/maintenance/engi_engine) +"cJU" = (/obj/machinery/light,/obj/machinery/atmospherics/binary/pump{dir = 1; name = "N2O to Connector"},/turf/simulated/floor,/area/engineering/atmos) +"cJV" = (/obj/machinery/atmospherics/valve/digital{name = "Gas Mix Inlet Valve"},/obj/machinery/camera/network/engineering{c_tag = "Atmospherics South"; dir = 1},/turf/simulated/floor{dir = 10; icon_state = "green"},/area/engineering/atmos) "cJW" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/engi_engine) "cJX" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/engi_engine) "cJY" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/maintenance/engi_engine) @@ -7327,6 +7327,35 @@ "cKU" = (/obj/machinery/door/airlock/hatch{icon_state = "door_locked"; id_tag = "engine_access_hatch"; locked = 1; req_access = list(10)},/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plating,/area/engineering/engine_room) "cKV" = (/obj/machinery/door/airlock/hatch{icon_state = "door_locked"; id_tag = "engine_access_hatch"; locked = 1; req_access = list(10)},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating,/area/engineering/engine_room) "cKW" = (/obj/machinery/door_control{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; pixel_x = 5; pixel_y = -25; req_access = list(10)},/obj/machinery/door_control{desc = "A remote control-switch for the engine charging port."; id = "SupermatterPort"; name = "Reactor Blast Doors"; pixel_x = -5; pixel_y = -25; req_access = list(10)},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) +"cKX" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) +"cKY" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry/aft) +"cKZ" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry/aft) +"cLa" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/door_control{desc = "A remote control-switch for the office door."; id = "mentaldoor"; name = "door lock"; normaldoorcontrol = 1; pixel_x = -24; pixel_y = 8; req_access = list(20); specialfunctions = 4},/obj/machinery/button/windowtint{pixel_x = -22},/obj/machinery/light_switch{pixel_x = -28},/turf/simulated/floor/wood,/area/medical/psych) +"cLb" = (/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) +"cLc" = (/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized,/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) +"cLd" = (/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized,/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) +"cLe" = (/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/window/reinforced/polarized{dir = 1},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) +"cLf" = (/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) +"cLg" = (/obj/machinery/atmospherics/unary/freezer{dir = 2; icon_state = "freezer"},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) +"cLh" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/engineering/atmos) +"cLi" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 8; sortType = "Drone Fabrication"; name = "Drone Fabrication"},/turf/simulated/floor,/area/engineering/atmos) +"cLj" = (/obj/machinery/light_switch{pixel_x = 22; pixel_y = -10},/turf/simulated/floor,/area/engineering/engine_smes) +"cLk" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Mix Tank to Connector"},/obj/machinery/light,/turf/simulated/floor,/area/engineering/atmos) +"cLl" = (/obj/machinery/button/holosign{pixel_x = 24; pixel_y = 2},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/camera/network/medbay{c_tag = "Medbay Operating Theatre 1"; dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whiteredcorner"},/area/medical/surgery) +"cLm" = (/obj/machinery/biogenerator,/obj/machinery/camera/network/research{c_tag = "Xenoflora"; dir = 1},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) +"cLn" = (/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/structure/table,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera/network/medbay{c_tag = "Medbay Surgery Prep"; dir = 8},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/surgeryprep) +"cLo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/maintenance/engineering) +"cLp" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/camera/network/engineering{c_tag = "Solar Maintenance Aft Port Access"; dir = 1},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/maintenance/engi_engine) +"cLq" = (/obj/machinery/light/small,/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Tank - Carbon Dioxide"; dir = 1},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/engineering/atmos) +"cLr" = (/obj/machinery/light/small,/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Tank - Phoron"; dir = 1},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "phoron floor"; nitrogen = 0; oxygen = 0; phoron = 70000},/area/engineering/atmos) +"cLs" = (/obj/machinery/light/small,/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Tank - Nitrous Oxide"; dir = 1},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) +"cLt" = (/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Tank - Gas Mixing"; dir = 1},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) +"cLu" = (/obj/machinery/computer/security/engineering,/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_monitoring) +"cLv" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable,/obj/machinery/camera/network/engineering{c_tag = "Solar Maintenance Aft Port"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/portsolar) +"cLw" = (/obj/machinery/camera/network/engine{c_tag = "Engine Core West"; dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) +"cLx" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 8},/obj/machinery/meter,/obj/machinery/camera/network/engine{c_tag = "Engine Core East"; dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) +"cLA" = (/obj/machinery/camera/network/engine{c_tag = "Engine Core South"; dir = 1},/turf/simulated/floor/engine/nitrogen{dir = 8; icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) +"cLB" = (/obj/item/weapon/shard,/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/research_port) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -7393,138 +7422,138 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaauaauaauaauaaaaaaaaaaauaauaauaauaauaauaauaaaaaaaaaaauaauaauaauaaaaaaaaaaacaaaaamaaacKraazaavaaacKraazaavaaacKraazaavaafaafaafaafaaaaaaaaaaaaaaaaaaaafaaaaaaaafaaAaaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaCaaDaaEaaDaaEaaDaaFaayaayaaGaaHaayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaauaauaauaauaaaaaaaauaauaauaauaauaauaauaauaauaaaaaaaauaauaauaauaaaaaaaaaaaaaaaaaIaafcKraazaavaaacKraazaavaafcKraazaavaafaaaaaaaafaafaaJaaaaaaaaaaaaaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaKaaLaafaayaaMaaNaaNaaNaaNaaNaaOaaPaaQaaRaaSaayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaauaauaauaauaaaaaaaauaauaauaauaauaauaauaauaauaaaaaaaauaauaauaauaaaaaaaaaaaaaaaaafaaacKraazaavaafcKraazaavaaacKraazaavaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaabhabhabhabhabhabhabhaafaaaaayaaUaaVaofaaVaaEaaVaaWaaXaaYaaZabaaayabbabbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaamaamaaIaafaaacKraazaavaafcKraazaavaaacKraazaavaafaaaaaaaacaaaaafaafabcabdabdabdabdabeabfaaaaaaabhabvabvaojabvabvabhaaaaafaayabiabjaaXabjaaXabjaaXaayablaaZaosaayabnaboaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaamaaaaafaaaaafaafapsaafaafaafapsaafaaaaafapsaafaaaaaaaaaaaaaaaabqabrabsabtabuabzabwabxabfaafaaaabhabBabAaceabCacfabhaaaaaaabDabEabFabGabHaaEabFaaEabIabJabKabLamxabNabOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaaIaafaqMaqbapTaqTaqTaqTaqTaqTaqTaqTaqTaqTaqTaqTaqTarBaqbaqbaoeamMamHamWamUacaacbamyacdaaTaaTaaTabhabhacgankacAabhabhachaciacjackaclacmacnacmacoackackackanPacqacracsactaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaafaaLaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaamaaaaafaaaaafaafapjaafaaaaafapjaafaaaaafapjaafaaaaaaaaaaaaaaaabqabracvacwacxacyabdaczaaTaaTalPalxamtalZacEacFaaTaaTacGacHacIadnacKacLacMacNacOacPacQacQacRacSacracsabbabbabbabbabbabbaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaamaamaaIaafaafcKrapgaavaaacKrapgaavaaacKrapgaavaafaaaaaaaaaaaaaafaafacUabdabdabdabdacVaaTamuacXacXacXacXacEacXacYaoZadaacQadbadcaddadeacMadqacQacQacQacQadgadhackadiadjabbadkadladmabbaaLaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaaaaaaaaaaaaaaacKrapgaavaafcKrapgaavaaacKrapgaavaaaaaaaaaaafaaaaafaafaaaaaaaaaaaaabfacVaaTalnadoadpadFadzadsadtaduaoZadaacQadvadcaddadwadxadyacQadMadMadMaddadAacradBadlalaadladladlalaaaLaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaaaaaaaaIaafcKrapgaavaaacKrapgaavaaacKrapgaavaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaadDadEaaTalqacXacXacXacXacEacXalvaoZadaacQadvadHadIadJalradLadUadNadNadNadVadPacradQadlabbadRadSadlabbaaLaaLaafaaaaafaaaaaLaafaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaaaaaaaaIaafcKrapgaavaaacKrapgaavaafcKrapgaavaafaafaafaaaaafaafaaaaaaaaaaaaaaaadTadEaaTaaTarSarPadWadXacEadXaaTaaTasnacQadbacQaddadZaeaadyadUadNaebadNaetaedacradQaeeabbabbabbabbabbaaLaaaaaaaaaaaaaaaaaaaafaafaafaaaaaaaafaafaaLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaaaaaaaaaaaqaafcKrarDaavaaacKrarDaavaaacKrarDaavaafaaaaafaafaafaaaaaaaaaaaaaaaaaaadTaegaaTaaTaaTaaTaaTaaTasOaaTaaTaaTaeiaejaekaelaemaenasBaepaeMaeraesaerafAaeuacradBaevabbaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaafaaaaaaaaaaafaafaafaaaaaaaafaafaaaaaaaafaafaaaaaaaaaaaaaaaaafaaaaewadEaexaeyarzaaTaeAaeBaeCaeDaeEaeFaeGaeHaeIaeHaddadZaeJaeKaeLaeLafBaeLaeNaeOarCaeQaeRabbaeSaeSaeSaeSaeSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauabgaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaeTaamaamaamaamaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafabfadEaeUaeVaeWaaTaeAaeAaeXaeYaeZaeFafaafbafcafdaddarOaffafgacQacQafhacQafiafjacrafkaflabbafmafnafoafoafpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaamaamaaIaafaaacKraazaavaafcKraazaavaaacKraazaavaafaaaaaaaacaaaaafaafabcabdabdabdabdabeabfaaaaaaabhabvabvaoZabvabvabhaaaaafaayabiabjaaXabjaaXabjaaXaayablaaZapDaayabnaboaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaamaaaaafaaaaafaafapsaafaafaafapsaafaaaaafapsaafaaaaaaaaaaaaaaaabqabrabsabtabuabzabwabxabfaafaaaabhabBabAaceabCacfabhaaaaaaabDabEabFaoPabHaaEabFaaEabIabJabKabLamxabNabOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaaIaafaqMaqbapTaqTaqTaqTaqTaqTaqTaqTaqTaqTaqTaqTaqTarBaqbaqbaoeamMamHamWamUacaacbamyacdamJamJamJabhabhacgankacAabhabhachaciacjackaclacmacnacmacoackackackanPacqacracsactaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaafaaLaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaamaaaaafaaaaafaafapjaafaaaaafapjaafaaaaafapjaafaaaaaaaaaaaaaaaabqabracvacwacxaqXabdalqamJamJanoannaojaohamZanpamJamJacGacHacIadnacKacLacMacNacOacPamOacQacRacSacracsabbabbabbabbabbabbaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaamaamaaIaafaafcKrapgaavaaacKrapgaavaaacKrapgaavaafaaaaaaaaaaaaaafaafacUabdabdabdabdacVamJaosamPamPamPamPamZamPaotalZadaacQadbadcaddadeacMadqacQacQacQacQadgadhackadiadjabbadkadladmabbaaLaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaaaaaaaaaaaaaaacKrapgaavaafcKrapgaavaaacKrapgaavaaaaaaaaaaafaaaaafaafaaaaaaaaaaaaabfacVamJamFamEamDamAamuamtaeqalQalZadaacQadvadcaddadwadxadyacQadMadMadMaddadAacradBadlalaadladladlalaaaLaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaaaaaaaaIaafcKrapgaavaaacKrapgaavaaacKrapgaavaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaadDadEamJanlamPamPamPamPamZamPanmalZadaacQadvadHadIadJalradLadUadNadNadNadVadPacradQadlabbadRadSadlabbaaLaaLaafaaaaafaaaaaLaafaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaaaaaaaaIaafcKrapgaavaaacKrapgaavaafcKrapgaavaafaafaafaaaaafaafaaaaaaaaaaaaaaaadTadEamJamJarZarSavCavbauSauvamJamJasnacQadbaebaddadZaeaadyadUadNaebadNaetaedacradQaeeabbabbabbabbabbaaLaaaaaaaaaaaaaaaaaaaafaafaafaaaaaaaafaafaaLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaaaaaaaaaaaqaafcKrarDaavaaacKrarDaavaaacKrarDaavaafaaaaafaafaafaaaaaaaaaaaaaaaaaaadTaegamJamJamJamJamJamJasOamJamJamJaeiaejaekaelaemaenasBaepaeMaeraesaerafAavTacradBarwabbaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaafaaaaaaaaaaafaafaafaaaaaaaafaafaaaaaaaafaafaaaaaaaaaaaaaaaaafaaaaewadEaexaeyarzaaTaeAarHaeCaeDaeEaeFaeGaeHaeIaeHaddadZaeJaeKaeLaeLafBaeLaeNaeOarCaeQaraabbaeSaeSaeSaeSaeSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauabgaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaeTaamaamaamaamaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafabfadEaeUaeVaeWaaTaeAaeAaeXaeYaeZaeFarPafbafcafdaddarOaffafgacQacQafhacQafiafjacrafkaflabbafmafnafoafoafpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaacaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfabfabfabfabfabfabfabfabfabfabfabfadEafqafrafsaaTaftafuafvafwafxappafzafNafOafNafCafDadxafEafFacQafhacQafGapdaqqafJafKaqJadlapHaghaqgafPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfafQafRafSabfafTafUafVafWafXafYafZafZafZafZafZafZagaagbagcagbaaTageagdagfarvarnaeFagiagjagkaglagmagnagoagpagqagrarjagtaguagpagvagwaryabbadlagyafoafoagzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfafQafRafSabfafTafUafVafWafXafYafZafZafZafZafZafZagaagbagcagbaaTaroagdagfarvarnaeFagiagjagkaglagmagnagoagpagragqaguagtahpagpagvagwaryabbadlagyafoafoagzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaabgaauaauaauaauaauaauaauaauaauaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaabfagAagBafZafZafZafYafYafZagCagDagDagDagDagDagDagDagDagDagDaoGaaTagFagGaoCagIagJaeFahNagLagLagLaddagMagNagOagPagQagRagQagPagSagvagTadlabbabbaeSaeSaeSaeSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaeaaeaaeaaeaaeaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfagUagVagWagWagWagWagWagWagWagDagXagYagZagWahaahbahcahdaheahfahgahhahiahjahkahmahlahnahnahnahnaddahoahpahqahrahsahQahuahvahwagvahxahyaboaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkaaaaaaabkaaaaaaaaaabkaaaaaaaaaaaaaaaabkaaaaaaaaaabkaaaaaaabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaeaaeaaeaaeaaeaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfafQafRahAabfahBadEagWahCahDahEahFahGahHagDagZahIahFaezahKahLahLahMaiiahOaePacXacXacEacXaikaeoahSacQacQacQaddahTahUahVahWaeqahYahZaiaaibagvahxaicabOaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkabkabkabkaaaaaaaaaabkabkabkabkabkabkabkaaaaaaaaaabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDaidaieaifabfaigadEagWaihaimaijaipailaisagDagZahIainagWaioahLaizaiqahKahOairaiFacXaitacXacXaiuacZahSacQacQaddaiwaixaiyagPagPajeagPagPaiAagvaiBaiCactaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkabkabkabkaaaaaaabkabkabkabkabkabkabkabkabkaaaaaaabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaewagbagbaiDabfagbadEagWaiEakfaiGaiHaiIahFagDaiJaiKaiLagWaiMaiNaiOaiOaiPaiQaiRaiSaiTacEaiUaiVaeFaiWaiXaiYaiZakNakEajcajdakVajfajgajhagPajiagvahxabbabbabbabbaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIaaIaamaamaaaaaaaaaaaaaaaaaaaaaaaaabkabkabkabkaaaaaaabkabkabkabkabkabkabkabkabkaaaaaaabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaeaaeaaeaaeaaeaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfagUagVagWagWagWagWagWagWagWagDagXagYagZagWahaahbahcahdaheahfahgahhaqCahjahkahmahlahnahnahnahnaddahoahUahqahrahsahQahuahvahwagvahxahyaboaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkaaaaaaabkaaaaaaaaaabkaaaaaaaaaaaaaaaabkaaaaaaaaaabkaaaaaaabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaeaaeaaeaaeaaeaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfafQafRahAabfahBadEagWahCahDahEahFaeuahHagDagZahIahFaezahKahLahLahMaiiahOaePacXacXacEacXaikaeoahSacQacQaebaddahTaixahVahWajeahYahZaiaaibagvahxaicabOaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkabkabkabkaaaaaaaaaabkabkabkabkabkabkabkaaaaaaaaaabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDaidaieaifabfaczadEagWadXaimaijaipailaisagDagZahIainagWadWahLaizaiqahKahOairaiFacXaitacXacXaiuacZahSacQacQaddaiwamsaiyagPagParjagPagPaiAagvaiBaiCactaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkabkabkabkaaaaaaabkabkabkabkabkabkabkabkabkaaaaaaabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaewagbagbaiDabfagbadEagWaiEakfaiGaiHaiIahFagDaiJaiKadFagWaiMaiNaiOaEeaiPaiQaiRaiSaiTacEaiUaiVaeFaduaiXaiYaiZakNakEajcadzakVajfajgajhagPajiagvahxabbabbabbabbaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIaaIaamaamaaaaaaaaaaaaaaaaaaaaaaaaabkabkabkabkaaaaaaabkabkabkabkabkabkabkabkabkaaaaaaabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfadrabfabfajkajlagWagWadGagWagWadCagWagWagWadOagWagWajpajsadKantaecajuagWajvajwadYajyajqagWagWajzaehaefagWagWagWagpajCagpagpagpagpagpagvahxabbajDajEaboaaaaafaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaafaaaaaqaaaaaaaaaaaaaaaaaaaaaaaaabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfagBafYajFafYajGajHadfajJajKajLajMajNajOajPajQajRajSajTajUajVajWajXajUajYajWajWajZakaakaakbakcakdahOakeajbakgajzakhakiakjakkaklakmaknakoakpacWakZakqabOaaaaaaaaaaaaaaaaaaaaaaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafabQaafaaIaaaaaaaaaaaaaaaaaaaaaaaaabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaamaamaaIaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadEagWagWagWagWagWagWaksaktakuakvakwakxakyakzacDakBakCakDakXakFakwakGakwakwakHakIakJakKakLakMajaakOakPakJakQacJakSakTakUalbakWalCakYakoalIabbalOamaactaaaaaaaaaaafaaaaaaaaaaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIaaIaaIaaIaaaaaaaaaabpaaaaaaaaaaaIaaIaamaamaamaaaaaaabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadEagWalcaldalealfagWalgalhahLalialjagWacTacCacTagWabVacBabUagWalpacpacualsagDaltaluaccalwabZagWabTabSabSabRagWalBamcalDalEalFalGalHakoabXanQabYanQanQaaaaaaaafaafaaaaaaaaaaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqaaaaaaaafaafaafaaaaaaaoYaafaafaaaaafaafaaaaaaaamaaaaaaabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafabMaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafabfadEabyalMalMalNamsabmalQalRahKalSaljagWalTalUalValWalXalYabWabPahKambahKamNamdameameamfamgamhamiamjamkamlammakoamnamoampamqalDalDamrakoadQanQamvawKamwaaaaaaaaLaaaaaaaaaaafaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafanTanTanTanTanTaafalJaafanTanTanTanTanTaafaaIaaaaaaabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaaIaaIaaaaaaaaaaoXaaaaaaaaaaaIaaIaamaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadEagWamAamBamCamDagWamEalRaljamFamGagWamRamIamJalWamKamLakAakRamOamPamQanaamSamgamgamfamgamTaoWamVanfamXanhakoamZanWalDamqalDalDanbakoancandaneaocangaafaaLaafaafaaLaafaafaafakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafanianjanjanjanjanualJansanqanqanqanqanwaafaaIaaaaaaabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafaafaaaaaaaaaaoVaafaafaaaaafaafaaaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfajBagWagWagWagWanlanmannanoanmanmanmanmanpaoPanpanraoQajAaoRanvaoSaoTaoUanzanAamgamgamfanBanCamianDanEamXanFanGanHanIanJanKanLanManNanGanOajIapqanRanSaaaaaaaafaaaaafaaLaafaacakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafapIapIapIapIapIaafalJaafapIapIapIapIapIaafaaIaaaabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafanVanVanVanVanVaafalkaafanVanVanVanVanVaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanXanYanZaoaagDaobapDagWaodajoalKaogaohaoibqKaokaolaomaonaooaonaopaoqaoraonaoOaotamgamgaouaovaowamiaoxanEamXaoyanGaozaoAaoBajraoDaoEaoFanGajxanQanQanQanQaoIaoJaoHaoLajtaaaaafaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafaaaaaaaafalJaaaaaaaaaaafaaaaaaaaaaamaaaabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfagBafYajFafYajGajHadfajJajKajLajMajNajOajPajQajRajSajTajUajVajWajXajUajYajWajWajZakaakaakbakcakdahOakeajbakgajzakhakiakjacyaklakmaknakoakpacWakZakqabOaaaaaaaaaaaaaaaaaaaaaaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafabQaafaaIaaaaaaaaaaaaaaaaaaaaaaaaabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaamaamaaIaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadEagWagWagWagWagWagWaksaktakuakvakwakxakyakzacDakBakCakDakXadsakwakGakwakwakHakIakJakKakLakMadtakOakPakJakQacJakSakTakUalbakWalCakYakoalIabbalOamaactaaaaaaaaaaafaaaaaaaaaaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIaaIaaIaaIaaaaaaaaaabpaaaaaaaaaaaIaaIaamaamaamaaaaaaabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadEagWalcaldadpadoagWalgalhahLalialjagWacTacCacTagWabVacBabUagWalpacpacualsagDaltaluaccalwabZagWabTabSabSabRagWalBamcalDalEalFalGalHakoabXanQabYanQanQaaaaaaaafaafaaaaaaaaaaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqaaaaaaaafaafaafaaaaaaaoYaafaafaaaaafaafaaaaaaaamaaaaaaabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafabMaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafabfadEabyalMalMacYacFabGabmalRahKalSaljagWalTalUalValWalXalYabWabPahKambahKamNamdameameamfamgamhamiamjamkamlammakoamnamoampamqalDalDamrakoadQanQamvawKamwaaaaaaaaLaaaaaaaaaaafaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafanTanTanTanTanTaafalJaafanTanTanTanTanTaafaaIaaaaaaabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaaIaaIaaaaaaaaaaoXaaaaaaaaaaaIaaIaamaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadEagWalvamBamCalxagWalNalRaljalPamGagWamRamIalfalWamKamLakAakRaAralnamQanaamSamgamgamfamgamTaoWamVanfamXanhakoakkanWalDamqalDalDanbakoancandaneaocangaafaaLaafaafaaLaafaafaafakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafanianjanjanjanjanualJansanqanqanqanqanwaafaaIaaaaaaabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafaafaaaaaaaaaaoVaafaafaaaaafaafaaaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfajBagWagWagWagWagWagWakFaleaiWaiWaiWaiWajaajdajaanraoQajAaoRanvaoSaoTaoUanzanAamgamgamfanBanCamianDanEamXanFanGanHanIanJanKanLanManNanGanOajIapqanRanSaaaaaaaafaaaaafaaLaafaacakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafapIapIapIapIapIaafalJaafapIapIapIapIapIaafaaIaaaabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafanVanVanVanVanVaafalkaafanVanVanVanVanVaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanXanYanZaoaagDaobaihagWaodajoalKaogahGaoiaioaokaolaomaonaooaonaopaoqaoraonaoOaiLamgamgaouaovaowamiaoxaFSamXaoyanGaozaoAaoBajraoDaoEaoFanGajxanQanQanQanQaoIaoJaoHaoLajtaaaaafaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafaaaaaaaafalJaaaaaaaaaaafaaaaaaaaaaamaaaabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaIaafalzalyalyalyalyalAalkallaivaivaivaivagEaafaaIaaaaaaaaaaaaaaaaaaaacaaaaaaaaaanXanXapaapbagDalMapcajjapeapfahXaphapiaoMaonaonapkaplaonapmapnaoraonapoaonaoNapEapramgamfamgamTajmamYanEamXaptanGapuapvapwapxapyapzapAanGapBaoHapCapLapGapFapPaoHaoHajnaoHaoHaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafanTanTanTanTanTaafalJaafanTanTanTanTanTaafaaIaaaaaaabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafapJapJapJapJapJaafalkaafapJapJapJapJapJaafaaIaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaapKapaapbagDapUapMagWalgapNalKapOapVapQapRaokapSaqmaqcaqpapWapXapYapZaqaanUaqNaqdaovaqeaovaqfahPaqhaqiaqjaqkanGaqlaqWapyaqnaqoarlaqoahRaqraqsapFaqtaquapFaqvaoHaqwaqxaqyaoHaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafanianjanjanjanjanualJansanqanqanqanqanwaafaaIaaaaaaaaaaaaaaaaaaabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafaaaaaaaafalkaaaaaaaaaaafaaaaaaaaaaaqaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaqzaqAaqBagDagWagWagWaqCalRagWalWalWalWaqDaqEapkaqFaqGaqHaonaqIahzaqKaqLanyarMaqOaqPaqQaqRaqSanxaqUaqVarQamVanGaqXaqYaqZaraarbarcardanGarearfapFaqtaqtapFargaoHarhariahJaoHaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafapIapIapIapIapIaafalJaafapIapIapIapIapIaafaaIaaaaaaaaaaaaabgaaaabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafanVanVanVanVanVaafalkaafanVanVanVanVanVaafaaIaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaqzarkaqBagDaobarZagWarmaggalKaogaroaoiaokarparqarrarsartaonarualWagxarwarxalLagsarAagKamzagHarEarFarGarHamjanGanGarIanGanGanGanGanGanGarJarKarLasaasaapFarNaoHaoHahtaoHaoHaaaaaaakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafaaaaaaaaaalJaaaaaaaaaaafaaaaaaaaaaamaaaaaaaaaaaaaaaaaaabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLafLaaLaaaaaaaaaaaaaaaaaaaaaaaIaafalzalyalyalyalyalAalkallaivaivaivaivagEaafaaIaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaqzasbaqBagDarRapcafyarTarUafeapharWaloaonaonarYasFasyasMaonascalWasdasealmasgasharAasiasjaskarEaoHaoHaoHaoHaoHaslafIafHasoasoaspaspasqasrassastastasuasvasvaswasxafMaszaqsaaaaafaafaafaaaaaaaafaafaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaIaafanTanTanTanTanTaafalJaafanTanTanTanTanTaafaaIaaaaaaaaaaaaaaaaaaabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafasAaSZasAaaaaaaaaaaaaaaaaaaaaaaaIaafapJapJapJapJapJaafalkaafapJapJapJapJapJaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasCasbapbagDapUapMagWasDasEalKapOasPaoiasGasGasHasIaonasJaonasKalWasLatgaSHathatiarAasQasRasSarEasTasUasUasVaRxasVaSoaStasZasZasZasZasZasZasZasZasZasmataatbatcaoKatdateatfaaaaafatPatratjatjatjatjatQatjatjatjatjatUaafaaaaaaaaaaaaaamaafanianjanjanjanjanualJansanqanqanqanqanwaafaaIaaaaaaaaaaaaaaaaaaaaaaaaabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatkatlatmaaaatnatoatpaaaaafatqatWatqaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafaaaaaaaaaalkaaaaaaaaaaafaaaaaaaaaaamaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaanXatsattagDagDagDagWagWagWagWalWalWalWalWalWatuaonaoratvaqEatwalWalWalWatxatxatxarAatyatzatAarEatBasZasZasZasZatCatDatEatFatGatHatIatJatKatLatMatNatOatPatPatPatPatPatPatPatPatPatPatRatRatRatRatRatRatRatRatRatRaumaafaaaaaaaaaaaaaamaaaapIapIapIapIapIaafalJaafapIapIapIapIapIaaaaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatSatTaUjatTatSatVaUlatVatSaafatqaVfatYaaaaaaaaaaaaaaaaaaaaaaaIaafanVanVanVanVanVaafalkaafanVanVanVanVanVaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafatZauaanYaubaucanXaafaafalWaudaueaufaugauhaTPaonapnaonasJaqEaujaukaulauvaunauKauparAauqaurausarEatBasZauLaySauMatCauxauyatFatGauzauAauBauCauDatMatNauEauFauGauHauIauHauJauwauOauPaxsatRatRatRatRatRatRatRatRatRatRavcaafaaaaaaaaaaaaaamaaaaafaaaaafaafaaaaaabepaaaaaaaafaaaaaaaafaaaaaIaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauNatTavmatTauNatVavyatVauNauQauRaVIauTauUauUauVauQauQaafaaaaaIaafalzalyalyalyalyalAalkallaivaivaivaivagEaafaaIaaaaaaaaaaaaaaaaaaaaaaaaanXanXanXauWanXanXapbaucanXaaaaaaalWauXalWauYauZavaalWavbavzaonavdaveaveavfavgaveavhaviavjarAavkauravlarEatBasZavAavoavJatCawravqatFatGauzauAavravsavtatMatNavuavvauGauHauHauHauJavwavQawfavVatRatRatRatRatRatRatRatRatRatRavcaafaaaaaaaaaaaaaamaamaaIaaaaaaaafaaaaaaabpaaaaafaafaafaafaaIaaIaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauNavBaLiavDauNavEaLeavGauNavHavIaKYavKavLavMavNavOauQaaaaaaaaqaaaapJapJapJapJapJaafbeSaafapJapJapJapJapJaaaaaIaaaaaaaaaaaaaaaaaaaaaaaaaLmaLkavSaMcaMwaLYavWavXanXaaaaaaalWalWalWavYavZawaalWawbawcawdaweawpawgaukawhawxautawyawlarAawmauraMEarEatBasZawzawUawYaxaaxbawZatFatFatFawsawtawuatFatFatNawvawwauGauHauHauHauJawAavxawfaykatRatRatRatRatRatRatRatRatRatRavcaafaaaaaaaaaaaaaaaaaaaafaafaaaaafaaaaaaaKXaaaaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauNawGawHawIauNawGawHawIauNawJavHavHavHavHavHavHavHasAaaaaaaaaIaaaaafaaaaafaafaaaaaaaOpaaaaaaaafaaaaaaaafaaaaaIaafaaaaaaaafaafaaaaaaaafawPaLkawQawRaMwawSaucawTanXaafaaLcqTatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxarAawVaurawWarEatBasZawBaxjawCatCaxVavnaxdaxcaxfaxeaxhaxgaxhaxiaxkaxlaxmaxnaxoaxoaxoaxnaxmavxawEawDatRatRatRatRatRatRatRatRatRatRavcaafaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaazoaMXazoaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafaaaaaaaafalkaaaaaaaaaaafaaaaaaaaaaaqaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaqzaqAaqBagDagWagWagWahialRagWalWalWalWaqDaqEapkaqFaqGaqHaonaqIahzaqKaqLanyarMaqOaqPaqQaqRaqSanxaqUaqVarQamVanGaeRaqYaqZaigarbarcardanGarearfapFaqtaqtapFargaoHarhariahJaoHaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafapIapIapIapIapIaafalJaafapIapIapIapIapIaafaaIaaaaaaaaaaaaabgaaaabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafanVanVanVanVanVaafalkaafanVanVanVanVanVaafaaIaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaqzarkaqBagDaobafaagWarmaggalKaogaeBaoiaokarparqarrarsartaonarualWagxaevarxalLagsarAagKamzagHarEarFarGageamjanGanGarIanGanGanGanGanGanGarJarKarLasaasaapFarNaoHaoHahtaoHaoHaaaaaaakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafaaaaaaaaaalJaaaaaaaaaaafaaaaaaaaaaamaaaaaaaaaaaaaaaaaaabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLafLaaLaaaaaaaaaaaaaaaaaaaaaaaIaafalzalyalyalyalyalAalkallaivaivaivaivagEaafaaIaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaqzaBOaqBagDarRapcafyarTarUafeapharWaloaonaonarYasFasyasMaonascalWasdasealmasgasharAasiasjaskarEaoHaoHaoHaoHaoHaslafIafHasoasoaspaspasqasrassastastasuasvasvaswasxafMaszaqsaaaaafaafaafaaaaaaaafaafaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaIaafanTanTanTanTanTaafalJaafanTanTanTanTanTaafaaIaaaaaaaaaaaaaaaaaaabkabkabkabkabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafasAaSZasAaaaaaaaaaaaaaaaaaaaaaaaIaafapJapJapJapJapJaafalkaafapJapJapJapJapJaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasCasbapbagDapUapMagWasDasEalKapOasPaoiasGasGasHasIaonasJaonasKalWasLatgaSHathatiarAasQasRasSarEasTasUasUasVaRxasVaSoaStasZasZasZasZasZasZasZasZasZasmaSIatbatcaoKatdateatfaaaaafatPatratjatjatjatjaOMatjatjatjatjatUaafaaaaaaaaaaaaaamaafanianjanjanjanjanualJansanqanqanqanqanwaafaaIaaaaaaaaaaaaaaaaaaaaaaaaabkabkabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatkatlatmaaaatnatoatpaaaaafatqatWatqaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafaaaaaaaaaalkaaaaaaaaaaafaaaaaaaaaaamaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaanXatsattagDagDagDagWagWagWagWalWalWalWalWalWatuaonaoratvaqEatwalWalWalWatxatxatxarAatyatzatAarEatBasZasZasZasZatCatDatEatFatGatHaWKaVLatKatLatMatNatOatPatPatPatPatPatPatPatPatPatPatRatRatRatRatRatRatRatRatRatRaumaafaaaaaaaaaaaaaamaaaapIapIapIapIapIaafalJaafapIapIapIapIapIaaaaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaabkabkabkabkabkabkabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatSatTaUjatTatSatVaUlatVatSaafatqaVfatYaaaaaaaaaaaaaaaaaaaaaaaIaafanVanVanVanVanVaafalkaafanVanVanVanVanVaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafatZauaanYaubaucanXaafaafalWaudaueaufaugauhaTPaonapnaonasJaqEaujaukaulbGfaunauKauparAauqaurausarEatBasZauLaXnauMatCauxauyatFatGauzauAauBauCauDatMatNauEauFauGauHauIauHauJauwauOauPaxsatRatRatRatRatRatRatRatRatRatRavcaafaaaaaaaaaaaaaamaaaaafaaaaafaafaaaaaabepaaaaaaaafaaaaaaaafaaaaaIaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauNatTavmatTauNatVavyatVauNauQauRaVIauTauUauUauVauQauQaafaaaaaIaafalzalyalyalyalyalAalkallaivaivaivaivagEaafaaIaaaaaaaaaaaaaaaaaaaaaaaaanXanXanXauWanXanXapbaucanXaaaaaaalWauXalWauYauZavaalWbGgavzaonavdaveaveavfavgaveavhaviavjarAavkauravlarEatBasZavAavoavJatCawravqatFatGauzauAavravsavtatMatNavuavvauGauHauHauHauJavwavQawfavVatRatRatRatRatRatRatRatRatRatRavcaafaaaaaaaaaaaaaamaamaaIaaaaaaaafaaaaaaabpaaaaafaafaafaafaaIaaIaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauNavBaLiavDauNavEaLeavGauNavHavIaKYavKavLavMavNavOauQaaaaaaaaqaaaapJapJapJapJapJaafbeSaafapJapJapJapJapJaaaaaIaaaaaaaaaaaaaaaaaaaaaaaaaLmaLkavSaMcaMwaLYavWavXanXaaaaaaalWalWalWavYavZawaalWawbawcawdaweawpawgaukawhawxautawyawlarAawmauraMEarEatBasZawzawUawYaxaaxbawZatFatFatFawsawtawuatFatFatNaKPawwauGauHauHauHauJawAavxawfaykatRatRatRatRatRatRatRatRatRatRavcaafaaaaaaaaaaaaaaaaaaaafaafaaaaafaaaaaaaKXaaaaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauNawGawHawIauNawGawHawIauNawJavHavHavHavHavHavHavHasAaaaaaaaaIaaaaafaaaaafaafaaaaaaaOpaaaaaaaafaaaaaaaafaaaaaIaafaaaaaaaafaafaaaaaaaafawPaLkawQaMFaMwawSaucawTanXaafaaLcqTatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxarAawVaurawWarEatBasZawBaxjawCatCaxVavnaNPaxcaxfaxeaxhaxgaxhaxiaxkaxlaxmaxnaxoaxoaxoaxnaxmavxawEawDatRatRatRatRatRatRatRatRatRatRavcaafaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaazoaMXazoaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaatSauNaQcaxxatSauNaOsaxxatSauNaOHauNauNauNauNauNavHatqaaaaaaaaIaaIaaIaaaaaaaafaaaaxBaQxaxBaafaafaafaafaaIaaIaaIaafanXanXanXanXaxDaxEaxEaxFanXanXanXanXaxGaucaucanXaxHaxIanXanXaxJaxKaxLaxMaxMaxMaxMaxMaxMaxMaxMaxNaxMaxMaxMaxMaxMaQdaxPaxQaxRaQdavpasZaxSawjcfSatCaxVaxXaxXaxXaxZaxYayaawLaxXavqaydayeayfaygayhayhayhayhawXavxawEawDatRatRatRatRatRatRatRatRatRatRavcaafaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaAuaOqaAuaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaynayoaypayoayqayoayrayoaysaytayvayvayvayvaywauNawNatqaaaaafaafaaaaaaaaaaaaaafaaaayyaRrayAaafaaaaafaaaaaaaaaaaaaaaanXayBayCayDayCayCayCayCayEayCayCayFayGayDayHayIaxMaxMaxMaxMaxMaxMayJayKayLayLayLayLayMayLayLaQAayLayMayLayLayLarAayOayPayQarEaAiasZcfSaycaxUatCayUayTayWaxpayYayXayYaxqayTazaazbazcazdazeazdazdazfaxraxuaxtaxTaxvatRatRatRatRatRatRatRatRatRatRavcaafaaaaaaaaaaaaaaaaaaaaaaaaaafaafaBuaBvaQyaBxaByaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaynayoaypayoaXzayoayrayoaysaytayvayvayvayvaywauNawNatqaaaaafaafaaaaaaaaaaaaaafaaaayyaRrayAaafaaaaafaaaaaaaaaaaaaaaanXayBayCayDayCayCayCayCayEayCayCayFayGayDayHayIaxMaxMaxMaxMaxMaxMayJayKayLayLayLayLayMayLayLaQAayLayMayLayLayLarAaOCayPayQarEaAiasZcfSaycaxUatCayUayTayWaxpayYayXayYaxqayTazaazbazcazdazeazdazdazfaxraOiaxtaxTaxvatRatRatRatRatRatRatRatRatRatRavcaafaaaaaaaaaaaaaaaaaaaaaaaaaafaafaBuaBvaQyaBxaByaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazqazrazsaztazuazvazwazxazyazwazzazAazwazwbhJauNavHauRaafaafaaaaaaaaaaaaaaaaafazDazEbguazGazHaaaaafaaaaaaaaaaaaaaaanXazIanXazJazKazLazLazLazMazLazLazLazNazJazOazPazPazPazPazPazPazPazQazRayLazSazTbgMazVazWazXazYazZaAabheazTaAcarAaAdayPayQarEaAiasZaybaAeauMatCaxWaxXaxXaxXaxXayiayjaAlaAmaAnaxkaAoaylaApaApaApaAqayVatPayZatPatPatRatRatRatRatRatRatRatRatRatRavcaafaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaCvaCwbhKaCyaCvaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafauNaAwaAxaAwaAyazsazsaAzaAwaAxaAwaAAaABaACaADauNavHauQauQaAEauUauUauUauUauVauQaAFaAGbhLaAIaAFanXanXaxHaAJaxIanXanXanXazIaAKazJaaaaafaaaaafaaaaafaaaaafaaaazJazOazPaALaAMaANaAOaAPazPazQaucayLaAQaAQaARaASaATaAUaAVaATaAWaAXazTaAcarAaAdayPaDdarEaAiasZawzaAgaAhaBbayRaBdaBeazhaBgaBhaBiaBjaBjbhNaBjatPaBlaBmaBnaBoaBpaBraxvaziazkazjatRatRatRatRatRatRatRatRatRatRavcaafaaaaaaaaaaaaaaaaacaaaaaaaafaaaaCvazlaDAaDBaCvaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaBzatSaBAawHaBBaBCaBDaBEaBFaBBawHaBGaBHaBIaBJaBKaBLavHavHavHavHavHavHavHavHaBOaBPaAFazmaBRaBSaAFaBTaBUayCayCayCayCayCaBVaBWaBXazJaafaBYaBYaBYaBYaBYaBYaBYaafazJazOazPaBZaCaaCbaCcaBZazPazQaCdayLayLayLayLaCeaCfaCgaChaCfaCiaCjazTaCkarAaAdayPaClarEaJCasZaznaAYazCatCaxWavqatEaBjaBjaBjaBjaBjaCqaCraCsaBjatPatPatPatPbhSatPatPaAfaAkaAjatRatRatRatRatRatRatRatRatRatRaumaafaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaCvaEXaEYaAraCvaaaaaaaaaaafaafaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazqaAxaCzaCAaCAaCAaCAaCBaAxazqaaaaBIaCCaxzaBLaCEaCEaCEaCEaCEaCEaCEavHaCFaCGaAFaCHaCIaAsaAFaCKbitaCKaCKaCKaCKaCKaCKaCKaCKaCMaaaaBYaCNaCOaCPaCQaCRaBYaaaazJazOazPaBZaCSaCTaCUaBZazPazQanXayLaCVaCWaARaCXaCYaCZaDaaDbbiqayLayLayLarAaAdayPayQarEaAiasZaAtaBcauMatCaDgavqatEaDhaDiaDjaDkaBjaCqaDlaCsaBjaDmaDnaDoaDpaDqaGwaDsatPatPatPaAZatjatjatjatjaBaatjatjatjatjaBfaafaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaCvaCvbiDaGyaCvaDCaDDaDEaDCaDCaDCaDCaDCaDCaDCaDFaDGaDGaDGaDHaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaaaaaaaDIaDJaDKaDJaDJaDLaDMaDJaDJaDKaDNaDOaBIaDPaxAaBLaDRaDSaDTaDUaDVaDWaCEavHaDXauQaAFaAFaWoaDZaCMaEaaEbaEcaEdaEeaEfaEgaEhaEiaEjaCMaafaBYaEkaElaEmaEnaEoaBYaafazJazOazPaEpaEqaEraEsaEtazPazQaEuayLazSazTaWwaEwaCfaExaEyaATaEzaEAaEBaEBarAaAdayPayQarEaAiaCmaCmaCmaCmaCmaEHaEIatEaEJaEKaEKaELaWFaEKaENaEOaBjaEPaEQaERaXIaETaCnaDsaaaaafaafaafaaaaaaaafaafaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaDCaBsaBqaDCaBtaCpaBQaFdaFdaFdaFdaFeaFfaFgaFgaFgaFgaFgaFgaFgaFhaFiaFjaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaDIaDNaDJaFkaFlaFlaFmaFnaFoaFpaFqaFlaFlaFraFsaFtaDPayuaBLaFvayxaBMaCxaBMaBNaYqavHaFuaXXaFxaCJaFzaDraYwaFJaFKaFLaFLaFLaDtaFLaFLaFNaFOaCMaaaaBYaDuaElaFQaEnaFRaBYaaaazJazOazPaFSaFTaFUaFTaFVazPazQaFWayLayLayLayLaFXaCfaCgazTaCfaFYaYAazTaGaarAaGbaGcaGdarEaAiaDeaYyaDvaCoaDeaEVaDzaYxaGlaGmaBjaBjaBjaBjaBjaBjaGnaGoaGpaGqaDpaYVbaNaDsaDsaDsaDsaDsaDsaDsaDsaDsaFaaFbaDsaDsaFaaGtaDsaDsaaaaaaaDCaDCaDCaDCaDCaEZaEWaFdaFcaFwaDCaDCaDCaDCaDCaGDaGEaGFaGFaGFaGFaGFaGFaGGaGGbaPaGGaGGaGGaGGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaFraGIaFyaGKaFlaFMaFlaFMaFlaFMaFlaFMaFlaGMaGNaGOaDPayuaBLaGPaFAaGRaGSaGTaGUaCEaFBaFDaFCaFCaFCbazbbhaFCaHcaFLaFLaFLaFLaFLaFLaFLaFNaHdaCMaafaBYaHeaHfaHgaHhaHiaBYaafazJazOazPaHjaFPaFUaHlaHmazPaHnaHoayLaHpazTaARaHqaATaHrazTaCfaFYaHsazTaHtarAaHuaHvaHwarEaGubbfaEUaGvaDwbaYaGzaGjatEaHCaHDaBjaHEaBjaHFaBjaHGaBjaHHaGpbcTaDpbcabcPaHLaHMaHMaHNaHOaHKaHKaHKaHKaHKaHPaHKaHKaHKaHQaHVaDsaDsaDsaDCaGBaGAaGCaGCaGLaGJaDCaDCbbPaDCaIdaIeaIfaIgaGFbbQaGFaIiaIjaIkaIlbinbbRaIoaIpaIqbbSaIsbjFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaIwaFlaFlaDKaFlaFMaFlaFMaIxaFMaIyaFMaFlaGMaGNaGOaDPaFFaIAaIAbeaaICbdQaICaIAaIAaIEaIFaFCaGQaFHaGWaHkaFCaIKaILaIMaFLaFLaHRaFLaIOaIPaIKaCMaaaaBYaBYaIQaHSaIQaBYaBYaaaazJazOazPaISaITaIUaFTaIVazPaIWaIXayLaIYazTbeMaEwaCfaJaaEyaATaJbaJcazTaJdaJeaJfaJgaJhaMbbeeaCuaCuaCuaCuaCuaHUaHTaJlaJmaJnaBjaJoaBjaJpaBjaJqaBjaJraGpbfyaJtaGsaGsaDqaJvaDsaDsbeNaDsaDsaJxaDsaGsaJyaGsaGsaGsaJzaHZaHXaHWaIabfxaIraIbaIbaIbaIRaINaIgaJIaJJaJjaJkaJMaJNaIgaJOaJPaGFaJQaJAaJSaJTbinaJUaIoaJVaJBaGGaGGaGGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaFraJXaFyaGKaFlaFMaFlaFMaFlaFMaFlaFMaFlaGMaGNaGOaDPaGYaGXaHaaGZaHbaHbaIBaIzaIHaIGaIJaAbaJZaJYaJGaKaaFCaIKaKmaKnaKoaKpaIKaKqaKraKsaKtaKuaaaaafaaaaKvaKwaKvaaaaafaaaaKuazOazPaKxaKyaKzaKAaKBazPaKCaKDayLaKEazTaARaKFaKGaHrazTaKHaKIaKJaKKaKLaJeaEDaKNaKOaKPaEEaKRaaaaaaaJlaKSaJKazUaJlaKVaJnaJnaJnaKWaJnaJnaJnaBjaDpazFaDpaDpaDpaDpazBaDpaKZaLaaLbaLcaLdazpaLfaLgaLhaLfaLfaLfaLfaLfazgaLfaLfaLfaLfaLfaLfaLfaLfaJLaIgaLjaJRaLlaEFaJWaLoaIgaLpaKbaGFaLraLsaLtaJTayNaJUaIoaJVaIoaKTaLwaLxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaLyaLzaDJaFkaFlaFlaFlaLAaFlaFlaLBaFlaFlaFraLCaLDaDPaLEaLFaLGaLHaLGaLGaLGaLGaLGaLIaLJaFCaFCaFCaFCaFCaFCaLLaLMaLNaLOaLOaLOaLOaLPaLQaLRaKuaLSaLTaLTaLUaLVaLWaLTaLTaLXaKuayzaKuaKuaLZaMaaLZaJeaJeaMbaxyaJeaJeaJeaJeaMdaMeaxCaxOaMhaMiaJeaJeaJeaJeaMjaKNaMkaMkaMlaMmaMnaMoaJlaMpaLqaLnaJlaJlaJlaJlaJlaJlaJlaJlaBjaBjaMsaMtaMuaMvawMaLvaMyaMfaKZaMAaMBaMCaMCaMDaLfaxwaMFaMGaMHaMIaMJaMKaMLaMMaMNaMHaMJaMIaMHaMOaLfaJLaIgaMPaMgaMRaMSaMqaMUaIgaMVaMWawoaMYaMraNaaNbaGFaGGaNcaJVaIoaMxaNeaNfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaaaaaaaLyaDJaDKaDJaDJaDLaDMaDJaDJaDKaLzaNgaBIaNhaLEaNiaMzaMzaNkaMzaNlaIAaNmaNnaLJaNoaNpaNqaNraNsaNtaNraNuaNraNraNraNvaNraNraNwaNxaNyaNzaNAaNBaNzaNCaNzaNzaNzaNzaNDaNEaNFaNGaNraNHaNIaNJaNKaNLaNMaNLaNNaNOaNPaNQaNQaNRaNSaNTaNSaNUaNVaNWaEGaNYaNZaOaaObaOcaMkaMkaMkaOdaOeaMTaMQaOhaOiaOjaOkaOlaOmaOnaJlaOoaCLaCDaOraOtaOtaOuaMZaOwaNdaKZaOyaOzaOAaOAaOBaLfaOCaODaOEaOEaOEaOEaOFaOGaCtaOIaOJaOKaOKaOLaOMaLfaJLaIgaONaOOaNjaOfaONaONaIgaORaOSaGFaOTaOUaOVaOWaGFaIoaIoaJVaIoaGGaGGaGGaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaBzatSaBAawHaBBaBCaBDbfWaBFaBBawHaBGaBHaBIaBJaBKaBLavHavHavHavHavHavHavHavHbuiaBPaAFazmaBRaBSaAFaBTaBUayCayCayCayCayCaBVaBWaBXazJaafaBYaBYaBYaBYaBYaBYaBYaafazJazOazPaBZaCaaCbaCcaBZazPazQaCdayLayLayLayLbdtaCfaCgaChaCfbdKaCjazTaCkarAaAdayPaClarEaJCasZaznaAYazCatCaxWavqatEaBjaBjaBjaBjaBjaCqaCraCsaBjatPatPatPatPbhSatPatPaAfaAkaAjatRatRatRatRatRatRatRatRatRatRaumaafaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaCvaEXaEYbeVaCvaaaaaaaaaaafaafaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazqaAxaCzaCAaCAaCAaCAaCBaAxazqaaaaBIaCCaxzaBLaCEaCEaCEaCEaCEaCEaCEavHaCFaCGaAFbgXaCIaAsaAFaCKbitaCKaCKaCKaCKaCKaCKaCKaCKaCMaaaaBYaCNaCOaCPaCQaCRaBYaaaazJazOazPaBZaCSaCTaCUaBZazPazQanXayLaCVaCWaARaCXaCYaCZaDaaDbbiqayLayLayLarAaAdayPayQarEaAiasZaAtbfqauMatCaDgavqatEaDhaDiaDjaDkaBjaCqaDlaCsaBjaDmbhCaDoaDpaDqaGwaDsatPatPatPaAZatjatjatjatjbjvatjatjatjatjaBfaafaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaCvaCvbiDaGyaCvaDCaDDaDEaDCaDCaDCaDCaDCaDCaDCaDFaDGaDGaDGaDHaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaaaaaaaDIaDJaDKaDJaDJaDLaDMaDJaDJaDKaDNaDOaBIaDPaXNaBLaDRaDSaDTaDUaDVaDWaCEavHaDXauQaAFaAFaWoaDZaCMaEaaEbaEcaEdaZnaEfaEgaEhaEiaEjaCMaafaBYaEkaElaEmaEnaEoaBYaafazJazOazPaEpaEqaEraEsaEtazPazQaEuayLazSazTaWwaEwaCfaExaEyaATaEzaEAaEBaEBarAaAdayPayQarEaAiaCmaCmaCmaCmaCmaEHaEIatEaEJaEKaEKaELaWFaEKaENaEOaBjaEPaEQaERaXIaETaCnaDsaaaaafaafaafaaaaaaaafaafaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaDCaBsaBqaDCaBtaCpbaWaFdaFdaFdaFdaFeaFfaFgaFgaFgaFgaFgaFgaFgaFhaFiaFjaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaDIaDNaDJaFkaFlaFlaFmaFnaFoaFpaFqaFlaFlaFraFsaFtaDPayuaBLaFvayxaBMaCxaBMaBNaYqavHaFuaXXaFxbbDaFzaDraYwaFJaFKaFLaFLaFLaDtaFLaFLaFNaFOaCMaaaaBYaDuaElaFQaEnaFRaBYaaaazJazOazPbbLaFTaFUaFTaFVazPazQaFWayLayLayLayLaFXaCfaCgazTaCfaFYaYAazTaGaarAaGbaGcaGdarEaAiaDeaYyaDvaCoaDebcuaDzaYxaGlaGmaBjaBjaBjaBjaBjaBjaGnaGoaGpaGqaDpaYVbaNaDsaDsaDsaDsaDsaDsaDsaDsaDsaFaaFbaDsaDsaFaaGtaDsaDsaaaaaaaDCaDCaDCaDCaDCaEZaEWaFdaFcaFwaDCaDCaDCaDCaDCaGDaGEaGFaGFaGFaGFaGFaGFaGGaGGbaPaGGaGGaGGaGGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaFraGIaFyaGKaFlaFMaFlaFMaFlaFMaFlaFMaFlaGMaGNaGOaDPayuaBLbekaFAaGRaGSaGTaGUaCEaFBaFDaFCaFCaFCbazbbhaFCaHcaFLaFLaFLaFLaFLaFLaFLaFNaHdaCMaafaBYaHeaHfaHgaHhaHiaBYaafazJazOazPaHjaFPaFUaHlaHmazPaHnaHoayLaHpazTaARaHqaATaHrazTaCfaFYaHsazTaHtarAaHuaHvaHwarEaGubbfaEUaGvaDwbaYaGzaGjatEaHCaHDaBjaHEaBjaHFaBjaHGaBjaHHaGpbcTaDpbcabcPaHLaHMaHMaHNaHOaHKaHKaHKaHKaHKaHPaHKaHKaHKaHQaHVaDsaDsaDsaDCaGBaGAaGCaGCaGLaGJaDCaDCbbPaDCaIdaIeaIfaIgaGFbbQaGFaIiaIjbeBaIlbinbbRaIoaIpaIqbbSaIsbjFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaIwaFlaFlaDKaFlaFMaFlaFMaIxaFMaIyaFMaFlaGMaGNaGOaDPaFFaIAaIAbeaaICbdQaICaIAaIAaIEaIFaFCaGQaFHaGWaHkaFCaIKaILaIMaFLaFLaHRaFLaIOaIPaIKaCMaaaaBYaBYaIQaHSaIQaBYaBYaaaazJazOazPaISaITaIUaFTaIVazPaIWaIXayLaIYazTbeMaEwaCfaJaaEyaATaJbaJcazTaJdaJeaJfaJgaJhaMbbeeaCuaCuaCuaCuaCuaHUaHTaJlaJmaJnaBjaJoaBjaJpaBjaJqaBjaJraGpbfyaJtaGsaGsaDqaJvaDsaDsbeNaDsaDsaJxaDsaGsaJyaGsaGsaGsaJzaHZaHXaHWaIabfxaIraIbaIbaIbaIRaINaIgaJIaJJbeRaJkaJMaJNaIgaJOaJPaGFaJQaJAaJSaJTbinaJUaIoaJVaJBaGGaGGaGGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaFraJXaFyaGKaFlaFMaFlaFMaFlaFMaFlaFMaFlaGMaGNaGOaDPaGYaGXaHaaGZaHbaHbaIBaNcaIHaIGaIJaAbaJZaJYaJGaKaaFCaIKaKmaKnaKoaKpaIKaKqaKraKsaKtaKuaaaaafaaaaKvaKwaKvaaaaafaaaaKuazOazPaKxaKyaKzaKAaKBazPaKCaKDayLaKEazTaARaKFaKGaHrazTatQaKIaKJaKKaKLaJeaEDaKNaKOatJaEEaKRaaaaaaaJlaKSaJKazUaJlaKVaJnaJnaJnaKWaJnaJnaJnaBjaDpazFaDpaDpaDpaDpazBaDpaKZaLaaLbaLcaMVazpaLfaLgaLhaLfaLfaLfaLfaLfazgaLfaLfaLfaLfaLfaLfaLfaLfaJLaIgaLjaJRaLlaEFaJWaLoaIgaLpaKbaGFaLraLsaLtaJTayNaJUaIoaJVaIoaKTaLwaLxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaLyaLzaDJaFkaFlaFlaFlaLAaFlaFlaLBaFlaFlaFraLCaLDaDPaLEaLFaLGaLHaLGaLGaLGaLGaLGaLIaLJaFCaFCaFCaFCaFCaFCaLLaLMaLNaLOaLOaLOaLOaLPaLQaLRaKuaLSaLTaLTaLUaLVaLWaLTaLTaLXaKuayzaKuaKuaLZaMaaLZaJeaJeaMbaxyaJeaJeaJeaJeaMdaMeaxCaxOaMhaMiaJeaJeaJeaJeaMjaKNaMkaMkaMlaMmaMnaMoaJlaMpaLqaLnaJlaJlaJlaJlaJlaJlaJlaJlaBjaBjaMsaMtaMuaMvawMaLvaMyaMfaKZaMAaMBaMCaMCaMDaLfaxwatIaMGaMHaMIaMJaMKaMLaMMaMNaMHaMJaMIaMHaMOaLfaJLaIgaMPaMgaMRaMSaMqaMUaIgaJjaMWawoaMYaMraNaaNbaGFaGGaLdaJVaIoaMxaNeaNfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaaaaaaaLyaDJaDKaDJaDJaDLaDMaDJaDJaDKaLzaNgaBIaNhaLEaNiaMzaMzaNkaMzaNlaIAaNmaNnaLJaNoaNpaNqaNraNsaNtaNraNuaNraNraNraNvaNraNraNwaNxaNyaNzaNzaNBaNAaNCaNzaNzaNzaNzaNDaNEaNFaNGaNraNHaNIaNJaNKaNLaNMaNLaNNaNOaxuaNQaNQaNRaNSaNTaNSaNUaNVaNWaEGaNYaNZaOaaObaOcaMkaMkaMkaOdaOeaMTaMQaOhaxdaOjaOkaOlaOmaOnaJlaOoaCLaCDaOraOtaOtaOuaMZaOwaNdaKZaOyaOzaOAaOAaOBaLfawvaODaOEaOEaOEaOEaOFaOGaCtaOIaOJaOKaOKaOLawRaLfaJLaIgaONaOOaNjaOfaONaONaIgaORaOSaGFaOTaOUaOVaOWaGFaIoaIoaJVaIoaGGaGGaGGaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOXaOYaOZaPaaPaaPaaPaaPbaOYaOXaaaaBIaPcaPdaPeaOvaOgaPhaPhaOxaIAaPjaNnaPkaPlaPmaPnaPoaPpaPqaPqaPraPsaPsaPsaPtaPuaPuaPvaPwaNIaPqaPqaPxaPyaPzaPAaPBaPBaPCaPBaPDaPyaPyaPyaPEaPFaPGaPHaMkaPIaPJaPJaPJaPJaPJaPJaPJaPJaPKaPJaPLaPMaPNaPOaPPaPQaPRaPSaPTaPJaPUaPJaPVaPWaPXaPWaPWaPWaPWaPWaPWaPYaPZaRsaQbaQbaQbaAHaQbaQbaAvaQeaQfaQgaKZaQhaMCaQiaQjaQkaLfaQlaQmaQnaQnaQnaQnaQnaQoaQpaOPaQraQnaQnaQsaQtaLfaJLaIgaQuaONaONaQvaONaQwaIgaGFaGFaGFaGFaGFaGFaBwaGFaIoaIoaJVaIoaBkaOQaGGaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaafaBIawqaBIaQBaQCaGOaQDaQEaQFaQGaGOaQCaQHaQIaBIaQJaLEaPeaPfaQLaPhaPhaOxaIAaQMaNnaLJaQNaNpaQOaQPaNraNraQQaQRaQSaQTaNraQUaQVaQWaQVaQXaQYaQVaQVaQZaQVaQVaRaaRbaQVaRcaQVaRdaNraNraNraReaPFaPGaPHaMkaRfaMkaRgaRgaRgaRgaRgaRgaRgaRgaRhaRiaRgaRjaRgaRgaRkaRgaRgaRgaRgaRlaRmaRnaRoaRoaRoaRoaRoaRoaRoaRpaRqaRpaJlaImawOawOawOawOawOaItaRuaRvaRwaKZaKZaKZaKZaKZatXaLfaRyaQmaQnaRzaRAaRBaPgaRDaREaRFaQraRGaRHaRIaRJaLfaJLaIgaRKaRKaRLaRMaRNaRNaROaIgaRPaRQaRRaGGaRSaRTaRUaRVaRVaRWaRXaGGaRYaGGaRZaRZaRZaSaaSbaScaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaGeaGgaGgaGiaGfaGhaSdaOYaLDaDPaHxaHxaSfaLDaOYaLDaHyaHAaHzaLEaSkaPiaPiaNkaPiaNlaIAaSmaNnaSnaIAaLKaLKasXaLKaLKaLKaLKaLKaLKaSpaSqaLKaLKaLKaLKaLKaLKaSraSsaSraLKasYaLKaNraQPaSuaSvaSwaSxaNraSyaLKaMbaMbaMkaSzaKOaSAaMnaMnaSBaSBaSBaSBaSCaJeasfasNarVarXarXavParXarXarVasNawFaJeaSJaSKaSKaSKaSKaSLaSLaSMaSNaRqaRpaJlaQqaQaaQaaQaaQaaQaaQaaSQaSRaSSaSTaSUaSVaSWaSXaSYaKZaKZasWaTaaTbaTcaTdaTeaTeaTeaTfaTgaTfaTeaTeaTeaTeaJLaIgaThaONaRLaRMaONaONaTiaIgaTjaQzaTlaGGaIoaTmaTnaToaTpaTqaIoaTraQKaGGaTtaTuaRZaTvaTwaTxaafaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDauSaNXavTavUawiaSgaSeaSiaShaSjaSiaTzaTyaTBaTAaTEaTCaTAaTFcozaTIaTJaTKaTLaTLaTLaTMaTLaTNaTOaIAavRaTQaTRaTSaTTaTUaTVaTWaTXaTUaTYaTZaUaaUbaUcaUdaUeaUfaUgaUhaUeaUiaLKaLKawnaLKaLKaLKaLKaUkawkaLKaUmaMbaUnaSzaKOaUoaaaaaaaaaaaaaaaaaaaaaaUpaUqaUraUsaUtaUvaUuaUxaUwaUzaUyaVUaUpaaaaaaaaaaaaaaaaaaaaaaUAaSNaRqaUBaUCaUDaUEaUFaUFaUFaUFaUGaUHaUIaUFaUFaUFaUJaUKaULaUMaUNaUOaUPaUQaURaUSaUTaTfaUUaUVaRCaUXaUYaUZaVaaVbaTeaJLaIgaVcaVcaRLaRMaVdaVdaVeaIgaIgavFaIgaGGaVgaVhaViaViaViaVjaVkaGGaGGaGGaVlaVmaVnaVoaVpaVqaafaafaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDauScmVaVravCaDPaVsaVsaVtaVsaVsaVsaVDaVsaVsaVtaVsaVsaYEaWYaVuaVvaKdaKdaKdaKdaKdaVwaVxaVyaVzaIAaTQaTQaVAaTSaVBaTUaTUaTUaTUaTUaTYaVCaTUaTUaTUaUdaUeclraVEaVFaUeaUiaVGaVHaKeaKcaVKaUmaVLaVMaVNaVOaVPaVQaMkaSzaKOaUoaaaaaaaaaaaaaUpaUpaUpaUpaVRaSlaVTaXEaVVaSDaVXaXFaVZaSOaWbaUpaUpaUpaUpaaaaaaaaaaaaaUAaSNaRqaRpaWcaSSaSPaWeaTkaSSaTsaUWaWiaVSaWkaVWaWmaWnaQbauiaWpaWqaWraWsaWtaWtaWuaWvauoaWaaWyaWdaWAaWBaWCaWDaWEaTeaJLaIgaThaONaRLaRMaONaONaONauuaWGaONaWHaGGaWIaWJaToaToaToaTqaIoaYsaGGaWfaVoaLuaWQaVoaWRaWSaWTaWTaWUaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTGaGgaTHaGiaBIaBIaBIaWVaWWaWWaWWaWWaWWaWWaWWaWXaBIaBLcpSaWZaIAaXcaXbaXbaXbaYraXdaIAaIAaIAaIAaTQaXeaXfaTSaXgaTUaTUaWgaXiaXjaXkaWgaTUaTUaTUaXlaUeaXmaXnaXoaUeaUiaVGaXpaKfaXraXsaUmaXtaVPaXuaXvaXwaXxaMkaSzaKOaMmaSCaMbaXyaUpaUpaVYaXAaXzaXCaXDaXDaXEaXFaXGaXEaXFaXDaXDaXHaGxaXJaXBaUpaUpaXyaJlaXLaXMaSNaRqaRpaJlaXNaSPaXOaTkaSSaXPaXQaSSaWhaXSaTkaSSaXTaOtaXUaXVaUQaXWaHYaXYaXZaYaaYbaYcaYdaYeaWjaYgaWBaYhaWDaYiaTeaJLaIgaYjaYjaRLaRMaWlaONaONaYlaONaWzaWxaGGaIoaXRaXhaToaYfaYkaZXaWLbaOaYmaWOaZcaVoaYvaHIaGVaGHaYzaHJaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaGkaaaaaaaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaafaYCaYDcpKaYFaWPaYHaYHaYIaYJaYKaYLaYMaYNaYOaYPaYQaYRaYSaTSaYTaTUaTUaWgaXjaYUbbTaWgaTUaTUaYWaUdaUeaUeaUeaUeaUeaUiaVGaVGaVGaVGaVGaUmaYYaXvaYZaXvaXvaXxaMkaSzaKOaNSaNSaZaaZbaWNaUpaZdaYnaZfaZgaZfaZfaZfaZfaZhaZfaZfaZfaZfaZfaZfaYoaZjaUpaWMaZbaZlaZmaZnaSNaRqaRpaWcaSSaSSaSSaSSaSSaXPaZoaSSaWhaZpaTkaSSaXTaOtaZqaXVaUQaZraZsaZtaZuaYaaYpaZwaYdaYeaWjaYgaWBaYhaZxaZyaZzaGraZzaZzaZzaZBaZCaZDaYtaOOaZFaZGaZHaZIaGGaZJaYXaYGaToaZeaYGaIoaIoaXaaZiaVoaYuaVoaZNaZOaZPaZQaWTaZRaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaZSaZTaZUbjnaZWaSFaZYaZkbaaaZvbacbadbaebafaYObagbahbaibajaTSbakbalbambanbaobapbaqbarbarbarbasbataTSbaubavbawbaxaKgbajbnZaKhbajbaCaUmbaDbaEbaFbaGbaHbaIaMkbaJbaKaMkbaLbaMaJHbcyaKjbaQbaRbaQbaSbaTbaUbaVbaWbaXaKlbaZbbabbbbbcbaQbbdbbeaKQbeoaKMbbibbjbbkbblbbmbbnaJlaUDaSPbboaTkaSSaZAaZEbbraZKaXOaTkaSSaXTbbtaULaXVbbubbvbbwaUQaUQaYabbxbbybbzbbAbbBaYgaWBbbCaWDbbDaZzaZLbbFbbFbbGbbHbbIaRLaRLaRLaRLaRLaRLaRLaGGbbJaXRaXhaToaYfaXhaIobbKaGGbbLaVoaYuaVoaZNbbMbbNbbOaafaKUaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaIIaIZaIDaInbbUaSFbaabaabaabaabaabbVbaabbWaYObbXbbYbaibbZbbZbbZbbZaIhbbZbcbaTUbccbcdbcebcebcfbcgaTSaXebchbcibcjaKiaIcblcaKkbcobcobcpbcpbcpbcpbcpbcqaMbbcrbcsbctbcubcvbcwbcxbbgaUpbczbcAbcBbaBaUpaUpaUpaUpaUpbcDaUpaUpaUpbcCbcFbcGbczaUpbbgbcxbcHbcIbcJbcKbcLaRpaWcaSSaSSaSSaSSaSSaGpbcMaSSbcNaSSbcObcObcObcOaJwbcQbcRbcSaUQaUQaUQaJsbcUaTeaZMbcWbcXaYgaWBaYhaWDbcYaZzaZZbdabdbbdcbddbdebddbddbddbddbddbdfbdgbdhbdibdjbdkbdlbdmbdnbdobdpbdqbdraVoaYubdsaZNaVobdtbbOaafaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBbdubdvaZUbdwbdxaSFaYHbabbaaaZvbdzbbVbaabdAaYObbpbdCbaibbZbdDbdEbdFbdGbbZbdHbdIbdJaTSbdKbdLbdMbdNaTSaXebdObdPbdPaDQbdPbdPbdPbdPbdRbdSbdSbdSbdTbdSbdUaMbbdVbdWbdXaJeaJeaJebdYbdYbdYbdZaDxbdZbdYbebbebbebbebbebbecbebbebbebbedbedaDybedaUpaUpaUpaJiaJiaJibcKbcLaRpaJlbefbegaDmbehaSSbeibcMbejbekbelbcObcObembenaZzaZzaZzaDYaSGaSGaSGaZzaZzaZzbeqberbesbetaWBaYhaYhbeuaZzbevbewbbqaZzbeybbsbeAaYtbeBbbEbeDbcmaONaGGaIobeFbeGbeHbeFbeIaIoaIoaGGbeJaVoaYuaVoaZNbeKbeLbbOaafaEvaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaDfbeObePbeQbeRaRtaYHbeTbeUaDcbdzbbVbeVbeWaYObeXbeYbaibbZbbZbbZbeZbfabbZbfbbdIbfcaTSbdKbdLbdMbfdaTSaXebdObdPbfebffbfgbfgbfhbdPbfibcVbfkbflbfmbfmbfmaMbaMkbcsbctaJebfnbfobfpbfqbfrbfsbftbfubdYbebbfvbfwaSEbcZbfzbfAbdybebbedbfCbfDbfEbfFbfGbfHbfIbfJaJibfKbfLbfMaJlaZzaZzaZzaZzbfNbfObfPbfQaZzaZzbfRaZzaZzaZzaZzbfSbfTbfUbfVbfVbfVbfWbfXaZzbfYbfZbgabgbbgcbgcbgcbgdaZzbevbewbdBaZzaZzaZzaZzaZzaZzaZzaZzaZzaZzaZzbgfbggbghbgibgjbgfbggaZzaRZbgkaVoaYuaVoaZNaZObglbgmaWTaZRaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaabgnbgobgpbgqaZUbgrbgrbgrbgrbgrbgrbgsbgtbgraYOaYOaYOaYOaYOaEMaYOaYOaYObgvbgvbgwbbZbdDbgxbeZbgybbZbgzbgAbgzaTSbdKbdLbdMbfdaTSaXebdObdPbgBbgCbgDbfgbgDbdPbfibgEbgFbgGbgHbgIbgJaMbbgKbgLbctaWKbgNbgObgPbexbexbgRbgSbgTbdYbebbgUbgVbgWbgXbfvbgYbezbebbedbhabhbbhcbeCaESbeEbhgbhhaJibhibhjaRpbhkbhlbhmbewbewbhnbewbhobewbewbewbewbhpbewbewbewbewbhqbewbewbewbewbewbewbhmbewbewbhrbhsbhsbhtbhsbhsbhubhvbewbhqbhwbhxbhpbewbhybewbewbewbhzbhAbhBbhCbewbhDbewbhEbewbewbhFbhGbhHaVoaYuaVobhIaFZaFIaFGbhMaFEaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaabhObhObhObhObhObhObhObhObhObhOaaaaafbhPaYDbhQbhRaECbhTbhTbhTbhTbhTbhUbhVbhWbhXbhYbhZbgwbbZbbZbbZbiabfabbZaTSaTSaTSaTSbdKbibbicbidaTSbiebifbdPbigbihbiibgDbijbdPbfibikbgFbgGbgGbgGbilaMbbimaSzbctaSIbiobipbfjbirbisbfBbiubivbdYbebbiwbixbiybiybiybgYbgebebbedbiAbiBbiCbgQbiEbgZbiGbiHaJibiIbiJbiKbiLbiMbiNbiObiObiPbiQbiRbiSbiSbiSbiTbiSbiSbiSbiSbiSbiUbiVbiVbiVbiWbiObiObiNbiObiObiXbiVbiVbiYbiSbiZbjabjbbiSbjcbiObiObiObiObiObiObiObiObiObiObiObiObiObjdbiTbjebiSbjfbjgbjhbjibjibjjbjkaZNaWRbjlaWTaWTaWUaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaabhObhObhObhObhObhObhObhObhObhObhOaZSaZTbjmbjnbjobgrbjpbjpbZCbjpbjpbjpbjrbajbajbajbajbaibbZbdDbjsbjtbgybbZbjubjvbjuaTSaTSaTSaTSbZLaTSbjxbdObdPbjybjzbgDbjAbjBbdPbfibfmbjCbgGbgGbgGbjDaMbbjEaSzbctcdNcbjbgObhdbjIbjJbhfbjLbjMbdYbjNcaWbjPbiycaxbiybgVcacbjSbedbjTbjUbizbjWbjWbjWbjXbjYaJibjZbkabkbbkcbkdbkebbFbkfbkgbkhbkibkjbkkbklbkmbknbknbkobewbewbewbewbewbkpbkqbkrbewbksbktbkubkvbewbkpbkwbkxbkybhFbewbewbkzbewbewbkAbkBbewbkpbewbewbewbewbewbewbewbewbewbhqbewbewbhFbkCbkDbkEbkFbkGcbkbkIbkJaafaaaaafaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaabhObhObhObhObhObhObhObhObhObhObhObYabXwbZcbZibkObgrbkPbkQbkRbkRbkSbkTbkUbYobYwbYwbYHbYTbbZbbZbbZbeZbkZbbZbajbajbajbajblaaXeaXeblbblcbldbleblfblgblhblibljblkbdPbllbfmblmbgGblnbgGbloblpblqaSzbctaJeblrblsbltblublvblwblxblybdYbebblzblAbZrbZsblDblAbiFbebbedbedblFblGblHblIbiCblJblKaJiblLblMblNaJiblOblOblOblOblOblOaZzaZzblPblQbZNcdMblQblPaZzaZzaZzaZzaZzaZzaZzaZzaZzaZzbZuaZzaZzaZzaZzaZzaZzbZzaZzbewbewblVblWbjHblOblOblOblOblOblXblYblYblZblYbewblYblZbmablYbmbblObmcbmcbmcbZBaRZbmeaRZaRZaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaabhObhObhObhObhObhObhObhObhObhObhObdubdvbjmbjnbmfbgrbmgbjpbmhbmibjpbjpbjpbWkbmjbmkbmkbUwbbZbdDbmmbeZbmnbbZbmobmpbmqbmrbmsbmtbmtbmubmtbmtbmvbdPbmwbXcbfgbmybmzblfbmAbfmbmBbgGbgGbjKbmDbWVblqaSzbmFbmGbmGbmGbmGbmGbmGbmGbWMbmGbdYbebbmIbmJbmKbmLbmKbmMbjQbebbedbedbmObWmbmQbmRbiCbiGbmSaJibcKaRqaRpaJibmTbXqbmVbmWbmXbmYbmZbnablBbjVbndbnebjVblEbmCbnhbnibnjbmPbmNbnmbnnbnobnpbnqbnrbnsbntbntbnubYfaVJblOblObXpblObZMbZMblObnzbnAbnBblObZtbXebZtblOblXblYbmbblObZnbXfbZnblObnGbnHbnIbnJbnKbnLbnMaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaabhObhObhObhObhObhObhObhObhObhOaaabUobnObnPbeQbnQbgrbnRbjpbURbnTbnUbnVbjpbUPbUqbnYbnZbUwbbZbbZbbZbbZbbZbbZboabobbocbodboebdPbdPbdPbdPbdPbdPbdPbWqbdPbdPbdPbogbdPbohbVmbojbgGbgGbgGbokblpblqaSzbVkbmGbombonbncbcEbvGbotbosbotaafbebboubovbowboxboybozbnfbebaafbedboBboCboDboEbiCbiGboFaJiboGboHaRpbXHboJbngboLboMbnkbWhboPboQboRboRboSboTboUboUboVbnlboXboYboZbpabpbbnnbpcbpdbpebpfbpgbphbpfbpibYfaVJbpjbpkbplbpmbpnbnybppbnCbnDbpqbpsbptboobVyblOaZzbVvbpxblObpyboqbpAbpBbpCbpDbnIbpEbpFbpGbnMaaaaaaaaaaacaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaaaaaaaaaaaabgnbgobgpbgqbdvbpHbpHbpHbpIbpHbpJaZVbpKcfBbgrbpMbpNboAbpPbpQbpRcfHcfJcfUcfUcfUcgmbkWbpUbkWbkWbkWbkWbpVbpWbpWbpXbpYbdPbpZbqabqbbqcbqdbqebqfcfibqhbqibqjbqkbmAbqlbojbgGbgGbqmbfmaMbblqbqnbqoaJubqqbqrbqrbxqborcfubxsbotaafbebbebbebbebcfjbebbebbebbebaafbedbqzboCbqAcfmbqCbqDbqEaJibqFaRqaRpaJibqGbqHbqIbqJaJDbqLboPbqNboUboUboUboUboUboUbqObqPcgCboYbqRbqSboNbnnbqUbqVbqWbpfbpgbphbpfbqXbYfaVJbpjbqYbqZbqZbrabrbcgObrdbrdbrdbrebrdbrfboObrhbribrjbrkbnIbrlbpCbrmbrnbrocgDbnIbrqbpFbrrbnMaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaaaaaabrsbrtcefcescembrxbrxbrybrzbrAbgrcedbrCbpPbrDbjpbjpbjpbajbrEbrFbrGbrHbrGbrGbrGbrHbrGbajbajbdPbdPbdPcdpbdPbrJbrJbrJbrJbrJbrJbqfbrKbrLbrMbrNbrOcdFbrQbrRbrSbrTbrUbrVbrWbrXbrYbrZaHBbsbbqvbsabsebscbotbosbotaafbsicdYbskbslbsmbsnbskcdZbsiaafbedbspcecbspbedbedbedcebaJibssaRqaRpbXHboJbngbstbsuceCbqLbswbqNbsxceHbszbsAceKbsCbqObsDbnibsEbsFbsGceIbnnbsIbqVbpebpfbpgbphbpfbpibYfaVJbpjbsJbsKbsLbsMbplbsNbsObsPbsQbsRbsSbsTbsUbrhbsVbsWbsXbnIbsYbsZbtabtbbtcbtdbnIbrqbpFbtebnMaaaaaaaaaaaaaafaafaafaafaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaacaaaaaaaaaaaaaaaaaaaaabrsbtfbtgccJbtibtibtibtjbtibtibgrbtkbtlbtmbpPbjpaaaaaaaaaaafaafbtnbtnbtnbtnbtnbtnbtnaaaaaabtobtpbtqbtrbtsbrJbrJbrJbrJbrJbrJbttbtuccubtwbtxbtybtzbtAbfmbfmccFbfmbfmbtCbtDbtEbtFbmGbtHbmGbmGbmGbmGbmGccrbmGaafbtJbtKbtLbtMbtNbtMbtLbtObtPaafbspbtQbtRbtSccqbtUbspbtVaJlbtWbbmbtXaJibtYbXqbtZbuabubbucbudbuebufccRbuhcdmbprbukbulbumbnibnnbunbpubupbnnbuqburbusbutbuubuubuvbuwbYfaXqbpjbuxbplbplbsMbuybuzbuAbpvbuCbuDbuEbuFbuGbrhbuHbuIbuJbnIbuKbuLbuMbtbbpCbuNbnIbpEbpFbuObnMaaaaaaaaaaaaaafbuPbuQbuRbuQbuRbuQbuSaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbnbeOcbocbobuVbpHbuWbgnbgobuXbuWbgrbuYbuZbvabvbbjpaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnaaaaaabvcbvdbrJbvebvfbvfbvfbvfbvfbvgbvhbvfbvicblbvkbvlbvmbvnbvobfmbvpbgGbvqbpzbvsbvtbvubvvbmGbmGbmGbvxbvybvzbvAbvBbvwaafbpObvIbvHbvJbvKbvMbvNbvObpOaafbspbqMbvQbxnbedbvRbspbvSaJlbvTbcLbvUaJibvVbvWbvXbvYcbBbuccdTcdUcbtbwdbwebwebwfccncdWcdVbwjbwkcccbwmbwkbwkbwkbwkcbObwkbwkaXKaXKaXKaXKaVJbpjbsJbsKbsLbwobwpbwqbwrbwsbwsbwsbsSbwtbqTbwvbwwcbrbwybnIbwzbwAbwBbwCbpCbwDbnIbwEbwFbnMbnMaaaaaaaaaaaaaafbwGbwHbrgbwJbwJbwKbwGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbwMbwNbwObwPbrJbwQbrJbwRbwRbwRbwSbwTbrKbrJbrJbrLbwUbwVbwWbwXbrpbPzbxabgGbgGbugbxcbvtbvubxdbxebxfbPBbujbxibxjbxkbxlbvwaafbxmbqtbskbxobxpbxobskbqxbxraafbspbqwbuobuBbedbPFbspbtVaJlbxwbcLaRpaJibxxbxybxzbxAbxBbxCbOTbxEbxCbxFbxGbOUbxFbwkbPvbxJbwkbwkbxKbxLbxMbxNbxObxPbxQbxRbxSaXKbaybvraXKaVJbpjbxXbqZbqZbxYbxZbppbyabwsbwsbwsbsSbwtbybbwwbvDbUabTQbwwbyfbygbyhbyibpCbvLbnIbrqbykbnMaaaaaaaaaaaaaaaaafbylbymbrgbwJbrgbynbuRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbOQbypbOQbyqbyrbwQbrJbrJbrJbysbrJbwTbrKbytbdPbdPbyubgGbrNbwXbyvbywbyxbyybyybyzbyAbyBbyCbyDbvsbyEbvPbyGbxkbyHbyIbyJbvwaafbxrbxrbyKbtLbyLbskbyMbxrbxraafbyNbyNbyNbyNbyNbyNbyNbORaJibyPblMblNaJibwbbyRbyRbySbyTbxCbObbyVbyWbyXbyYbyZbzabwmbzbbzcbzdbzebzfbzgbzgbzhbzibzgbzjbzkbckbaAbwubclbOibcnbOkbzsbztbzubzvbzwbppbzxbpqbpqbzybsSbwtbzzbzAbzBbzCbzDbzAbzEbzFbzGbOdbzIbwwbwwbOfbnMbnMbzKbzLbzLbzLbzMbzNbwGbwJbrgbwJbwJbONbwGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaacaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbNVbzQbNVbzRbrJbwQbrJbzSbzSbzSbzSbwTbrKbzTbzUbdPbzVbgGbrNbwXbzWbzXbzYbgGblnbgGbzZbAabAbbAcbAdbyEbwIbAfbxkbxkbxkbAgbvwbAhbAhbAhbxrbAibxpbAibxrbAjbAjbAjbyNbAkbAlbAmbAnbAobApbAqaJibAraRqaRpaJibxbbwYbxhbAvbAwbMpbAybAzbMlbABbACbADbAEbMqbAGbAHbAIbAJbAKbAIbxtbAMbANbAObnvblUbsdbNdbsgbsfbaAbPObpjbxubxUbAYbAZbAZbppbBabBbbBcbppbBdbBebBfbBgbBhbBibBjbBkbBlbBlbBmbBnbBobTHbMhbBrbBsbNkbTIbBvbBwbBwbBxbBybBzbuQbuRbNQbuRbuQbBBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbBCbwNbBDbLYbrJbwQbrJbrJbrJbrJbrJbwTbrKbzTbBFbdPbBGbgGbBHbBIbgGbLxbgFbgGbgGbyjbvsbvtbAbbAcbAdbyEbvwbBLbBMbBNbBMbBObvwbBPbBQbBRbAhbxrbLnbxrbAjbyQbBUbBVbyNbBWbzmbBYbBZbCabCabCbbLabAraRqaRpaJibAsbCebCebySbCfbxCbCgbChbxCbCibCjbCjbCkbwkbClbCmbwkbwkbwkbwkbwkbwkbIUbwkbwkbwmbIvaXKaXKaXKaXKbIobpjbwwbzAbzAbzAbzAbzAbzAbzAbzAbzAbzIbHlbCsbCtbBhbCubCvbCwbCxbCxbCxbCybCzbHmbCBbCCbCDbJDbTGbCGbCHbCGbAtbCJbzKbzLbzMbJVbzNbKfaaaaafaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbNVbzQbNVbCMbCNbCObrJbrJbrJbCNbrJbwTbrKbzTbCPbdPbCQbgGbrNbwXbgGbqlbCRbgGbgGbAubxcbvtbAbbCTbxcbCUbvwbCVbALbCXbAWbxlbvwbCZbDabDbbTObDdbvFbvEbUbbDhbDibDjbyNbDkbDlbDlbDmbDnbDobDpaJibDqbDrbDsaJibDtbSFbDvbSVbDxbDybDzbDAbyWbDBbBKbCjbDDbwmbDEbDFbwmbDGbDHbDIbDJbDKbDLbDMbCpbDNbDObBTbDQbDRbCpbVLbVMbDUbVAbDWbDXbCxbDYbDZbEabEbbEcbEdbEebEfbEabEgbEhbCvbEibEjbEkbwwbwwbwwbwwbwwbTAbTgbEnbzKbzMbCJbEobEpbCAbSwbSubCIbEubEvaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbSrbExbSrbEybEzbEAbEAbEAbEAbEAbEBbECbEDbzTbEEbdPbEFbEGbEHbEIbEJbtzbEKbELbEMbfmbtCbENbAbbEObEPbyEbvwbEQbERbESbBMbETbvwbEUbEVbEWbAhbEXbvCbEYbAjbFabFbbFcbyNbFdbFebFfbFgbDnbDobFhaJibxwaRqaRpbVjbFjbFkbFlbFmbFnbFobFpbFqbxCbxFbxFbRWbxFbwkbFsbFtbFubFvbFwbFxbDJbFybDLbFzbFAbFBbDObFCbFDbFEbSfbVlbDXbSgbVAbFJbDXbDXbFKbFLbFMbFLbFLbFNbFObFPbFQbFRbFSbCvbFTbFUbScbFWbFXbFYbFZbGabGbbGcbGdaafaafbCJbGebGfbGgbGhbGibGjbRBbCJaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbGlbGmbGnbdPbdPbGobwNbwNbwNbGpbdPbdPbGqbGrbGsbdPbGtbGtbGtbRAbGtbGvbGwbGxbGybGzbtCbvtbAbbGAbGBbtCbtGbtGbtGbtGbtGbRybtGbtGbtGbtGbtGbtGbRzbtGbtGbtGbtGbtGbtGbtGbtGaJiaJiaJiaJiaJiaJibxwaRqaRpbVjbRebFkbCSbGGbCWbGIbGJbGKbGLbGMbGNbCjbGObGPbGQbGRbGSbGTbGUbGVbRxbGXbGYbGZbRvbHbbHcbHdbHebHfbCpbUSbUfbwwbwwbwwbwwbwwbRabwwbwwbwwbzAbQubzAbzAbHkbBhbCubCvbFTbRdbCYbHnbHobHpbHqbGabGbbGcbHraaaaaabCJbHsbHtbCJbBybCJbCJbBybCJaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHuaafaaaaaaaaaaaabGtbHvbHwbHxbHybGvbHzbDebHBbHCbtCbvtbAbbAcbAabHDbHEbHFbHGbHHbHIbHJbHKbHLbHMbHLbHNbHObqybHQbHRbAabHSbAabHTbAabzZbHUbHVbHWbHXbHYbHZbxwaRqbDsaJlbDtbDubDtbDCbDPbxCbIbbIcbIdbIebIfbIgbIhbIibIjbIkbwmbIlbImbInbDJbDTbElbIpbIqbIrbFDbIsbItbIubCpbPXbIwbIxbIybUdbIAbIBbICbIDbUcbIFbIGbIHbIIbIJbzAbIKbCubCvbILbIMbINbIObIPbIQbIRbGabGbbISbEnbEnbEnbCJbCJbCJbCJaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGtbITbEmbIVbIWbIXbIYbIZbJabJbbtCbvtbJcbJdbJebJebJfbJgbJhbJibJjbJgbJfbJebJebJebJkbJlbqsbJnbJobJebJebJebJpbJgbJhbJqbJrbJsbJtbJubJtbJvbJwbvUaJlbEtbEqbFHbGFbzObGHbDzbHAbFibDVbxFbzPbCFbDSbDEbJGbwkbJHbJIbJJbDJbJKbJLbJMbJNbJObFDbJPbItbJObCpbJQbJRbIxbJSbJTbJUbzJbJWbHPbJYbIFbJZbKabKbbKbbzAbKcbKdbKebzHbKgbKhbKibKjbKjbKkbGabGbbKlbEnbKmbKobKnbEnaafaafaafaafaafaafaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbKpbKqbKqbKrbKsbKsbKtbKtbKtbKtbKuaafaafaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnaaaaaaaaaaaaaaaaaaaaaaaabKvbKwbKxbKwbKyaaaaaaaaabGtbGtbKzbKAbIVbKAbKBbKCbHBbKDbKEbtCbKFbvtbKGbKHbAabKIbAabzZbHHbKJbAabKKbKLbKMbKNbKObAcbAabKPbKQbHLbKRbHLbHLbKSbKTbKUbKVbKWbKXbcLbKYaRpaRpaRpaJlbAebGFbGFbFlbJmbAxbJybJxbFIbLgbLhbLibLjbHgbDEbIkbIabIzbHhbDJbDJbLobLobLobCpbLpbLqbLrbLsbLtbCpbLubLvbIxbLwbFGbLybLzbLAbLBbLCbIFbJCbLEbKbbKbbzAbRsbLFbCvbwwbLGbLHbLIbLJbLKbLLbGabLMbLNbLObLObLObLPbGdaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafbLQbLRbLSbLRbKsbKtbKtbLTbLUbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLVbLWbLXbwxbLVbLZbMabMbbGtbMcbMdbMebMfbMgbwnbMibMjbMjbMkbtCbtCbtCbxDbtCbtCbtCbtCbtCbtCbtCbtCbtCbtCbtCbtCbtCbMmbMnbMobtCbtCbtCbtCbtCbwZbtCaJlaJlaJlaJlbxvaJlaKSaMpbMraJlbKZbJXbxHbGFbLdbxCbDzbLDbxCbMybMzbMAbMBbwkbMCbMDbMEbMFbMGbMHbMIbMJbMKbMLbItbJObFDbFDbMMbJObCpbMNbMObMObMObMObMObMObMObMObMObMObMPbMQbMRbMRbzAbMSbMTbMUbwwbMVbMVbMVbMWbMXbMYbMVbMVbMVbMVbMVbMZbNabNbaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymbsBbLRbLRbNebKtbKtbLTbLTbNfbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKxbNgbMsbNgbKxbNibNjbxIbNlbNmbNnbKAbNobNpbGvbNqbNrbNsbNtbGvbNubNvbNwbNxaaaaaaaaaaaabNybNzbNAbNBbNDbNCbNEbNFbNGbNHbNIbNFbNJbNKbNLbNMbNNbNObNPbxTbNRbNSbNTbNUbNUbNUbNUbDtbDtbDtbDtbMtbMtbxCbNZbOabyobMzbMvbMubOebyUbOgbOhbyObOjbMxbMwbOmbNhbMKbOobFDbFDbNXbJObJObOobCpbMNbMObOqbOrbOsbOtbOubOvbOwbOxbMObOybOzbOAbOAbzAbOBbOCbCvbzIbODbOEbOFbOGbOHbOIbOJbOKbOLbOMbMVbEnbzrbEnbOObOObOObOObOOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabOPbKtbsBbKtbKtbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLVbNgbNgbNgbDgbDfbKAbOSbDcbCLbKAbKAbOVbOWbGvbGvbGvbGvbGvbGvbOXbOYbOZbPaaaabPbbPcbPcbPdbPebPfbPgbPhbPfbPibNFbPjbPkbPlbNFbPmbNYbPobPpbPqbPrbPsbPtbPtbNSbPubCKbPwbPxbPybDtbOcbLbbEwbGFbGFbErbDzbPCbxCbPDbPEbEsbPGbwkbPHbPIbwkbOlbPKbPLbOnbPNbMKbCpbCpbCpbCpbCpbCpbCpbCpbPObMObPPbQYbPRbOsbOsbOsbOsbPSbMObPTbLEbPUbPUbzAbBhbPVbPWbDwbPYbPYbPYbPYbPZbQabQabQbbQcbQdbMVbQebQfbQgbOObQhbOpbPnbQkaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKsbKtbQlbQmbQmbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKxbMsbMsbMsbKxbQnbQobQpbQqbQrbKAbKAbQsbQtbEZbQvbQvbQvbQvbQvbQvbQwbQxbQyaaabQzbQAbQBbQCbQDbPfbQEbQGbQFbPfbNFbQIbQJbQKbNFbQLbQMbQNbQObQPbQQbQRbPtbQSbPxbQTbNUbPxbPxbQUbDtbHjbGFbQVbGFbGFbPAbDzbLebRCbQZbPJbHibRcbRGbDEbIkbSpbOlbPLbPLbOnbRfbMKbRgbRhbPMbRjbRkbRlbQibRnbPObMObOsbOsbRobOsbOsbOsbOsbRpbMObRqbLEbRrbRrbzAbRsbRtbRubHabRwbGkbGubGubGCbGDbGubGEbGWbFVbFFbRDbREbRFbFrbRHbRIbQjbRKaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKtbKtbRLbLTbLTbLTbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaabLVbRMbRNbRObLVbRPbMabMbbGtbGtbRQbRQbRQbGtbGtbNxbRRbRRbRSbRSbRSbRSbNwbQyaaabRTbRUbRVbAFbRXbRYbRZbSabSbbSbbAXbSdbSebQHbNFbPtbPtbPtbPtbPtbAAbPtbPtbShbSibSjbNUbPxbSkbSlbDtbQXbLbbQVbSmbBAbPAbSobJAbJBbSqbRbbSsbStbJzbFsbSvbIEbSxbRmbRibSAbSBbMKbRJbSDbBtbRjbSnbSGbBJbRnbPObMObMObMObRobOsbOsbOsbMObMObMObSIbSJbRrbRrbzAbSKbSLbCvbzIbSMbSNbSObSPbSQbSRbSSbBEbQabSybMVbBqbQfbSWbOObSXbSYbSzbTaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKtbLTbLTbLTbLTbLTbLTbTbbLTbTcbLTbLTbLTbLTbLTbKtbKtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabTdbKwbTebKwbTfbBSaafaaaaaabGtbThbTibTjbGtaaabNxbTkbTlbTmbTnbTnbTnbTobQyaaabQzbTpbTqbTrbTsbPfbTtbTvbTubTwbNFbSCbTybTzbBXbTBbTBbTBbTCbTCbTDbTEbULbPxbPxbTFbNUbNUbNUbNUbDtbDtbLfbLkbLcbDtbTJbTKbTLbJFbJEbTJbCnbLlbLmbTRbTSbTJbMKbMKbMKbMKbMKbMKbTTbTUbTVbRjbTWbTXbTYbRnbPObMObTZbQWbPQbCrbCobNWbNcbTZbUgbUhbUibIIbIJbzAbIKbSLbUjbwwbMVbMVbMVbMVbMVbUkbMVbCEbSEbVFbMVbUnbCcbUnbOObUpbCdbUrbOOaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKtbUsbUsbUsbUsbUsbUsbUtbLTbUubUsbTcbLTbLTbLTbLTbKtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbUvbNxbNxbNxbNxbRSbmEbNwbUxaaabUybPcbPcbUzbUAbPfbPfbUBbPfbSHbNFbUDbSTbSUbNFbSZbSZbSZbSZbSZbSZbSZbSZbUHbUIbUJbUKbUKbUMbNUbDtbUNbTxbTMbUQbmlbwabUTbUUbTNbUWbTPbUTbUYbUZbVabVbbVcbUebVdbVebVgbVhbVibUlbmxbUmbRjbUCblCbUCbRnbPObMObVnbUFbVpbVqbVrbVsbVtbVubUgbzAblTbzAbzAbVwbCxbSLbCxbVxaafbnxbVzblSbVBbUGbVBbmdbUObUVbMVbVGbVHbVIbOObVJbVKbVKbwhaaLaaLaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwibLRbLRbLRbLRbLRbLRbLRbVNbLUbLTbLTbLTbLTbVObLUbKuaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVPbVQbVQbVRbVSbNxbVTbRSbVUbNxaaaaaaaaaaaabNybVVbVWbVXbVZbVYbPfbNFbWabWbbNIbNFbSZbUXbVCbVfbVEbVDbWcbSZcaqcaqcaqcaqcaqbTFbWjbnWbWlbWdbWebWobWpbxgbWrbWsbWtbWubWtbWvbWtbWwbWxbWybWzbWAbWBbWAbWCbWDbWEbWFbWGbWfbWIbWgbWKbWLbnwbxVbMObxWbnNbzlbWSbWTbWibWSbWSbnSbWWbWXbWYbWZbCxbCxbSLbCxbFTaafbnxbXabXbbmHbXdbmUbnbbXgbXhbMVbXibVHbXjbOObOObOObOObOOaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKtbQmbQmbQmbQmbQmbQmbXkbLTbQlbQmbXlbLTbLTbLTbLTbKtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXmbjGbWnbjObRSbjRbXrbRSbXsbNxaaKaaaaaaaaabNybNybNybNybNybNybNybNFbUDbUEbXtbNFbSZbWHbWRbWJbWJbWRbWUbSZbXobXnbXnbXucaqbXBbDtbDtbXCbXDbXEbXFbXGblRbXIbXJbXKbXLbXMbXNbXObXPbXQbXRbXSbXTbXUbznbzpbzobAPbzqbARbAQbATbASbAVbAUbYfbYgbIwbYhbVobCqbWObWNbWPbYmbYnbjqbYpbYqbYrbYsbYtbYrbYubYvbILaafbnxbXabrBbVBbXvbVBbjwbYzbYAbMVbXjbVHbYBbYCbUnaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKtbLTbLTbLTbLTbLTbLTbTbbLTbXlbLTbLTbLTbLTbLTbKtbKtaafaaaaaaaaaaaaabgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYDbVQbVQbVRbYEbYFbYGbNxbkYbNxbYIbYJbYKbYIbYIbYLbYMbYNbYObYPbXybXxbXAbXzbYjbYebYxbWRbYQbYybYSbYRbYUbkXbYWbYVbYYbYXcaqbZhbNSbkMbZjbZkbZlbZlbZmbnEbZobZpbTJbTJbZqbkNbTJbTJbkHbYZbZabVibZvbWQbZxbZybkLbZybZAbZbbkKbZbbZAbkVbYfbMNbIwbZEbXWbXVbZdbZIbZJbZKbMObMObwwbwwbwwbwwbwwboIbnFbofbwwbMVbMVbMVbMVbMVbZebMVbMVbMVbMVbMVbZObZPbZQbZRbUnaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKtbKtbRLbLTbLTbLTbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaambZSaamaamaamaamaamaaaaaaaaaaaaaaaaaaaafaafaaabZfbZgbZgbZgbZHbZgbZgbZUbZTbYIbZYbZZbYIbZVcabbZWcadbZXcafbsycaacagcaecaicahcajbWRbYQcakcalbYRcambSZcaqcaqcaqcaqcaqcarbNSbDtcascatcaocancawbsvcaycazbTJcapcaBcaCcaDcaEcaFcaGcaHcaIbZxbWQcaubZycaKcaLbZAcaMcaNcaObZAbXXbYfbPObIwbXYbsqbXZbXYbXYbIwbIwbIwcaRcaScaTcaUcaVbwwbwwbsrbwwbwwcaXcaYcavcaJcaAcbbcaZcbacbccbdcbecbfcbgcbhbUnbUnbUnaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKsbKtbUubUsbUsbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcbibwlbpScbmbwgbpTbvZcbqcbpbYIbvjcbsbYIbYIbwccbucbvcbwcbxcbzcbybXAbXzbYjcbAbuUbWRbWRcbCcbDbWRcbEbSZcbFcbGcaqcbHcaqbTFcbIcbIcbIcbIcbIcbIcbIbTJcbJcbKbTJcbLcbMcbNbrucaEcbPcbQcbRcaIbZxbWQcbUbZycbScbTbZAcbWcbVbuTbZAccsbYfbYbbYdbYcbYiccAccBbYcbuibYkbYlcktbZDbZwbZFcktbtIbZGccDccCbtTccEccQccPbsHbthbtvbthbthbtBcctcctccvccwccxccycczbUnbUnbUnbUnaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaaaaaabOPbKtbsBbKtbKtbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafccSccSbpSccUccTbpTccVccXccWbYIccGccHccIbqgccKccLccMccNccOccZccYcdbcdacdycdebqBcdBceecdQcelcekcenbqQcdccddaJEcdfcaqbTFcbIcdgcdhcdicdjcdkcdlbpwcdncdobpocdqcdrcdscdtcaEcducdvcdwcaIbZxbWQceobZycdxcepbZAcdzcdAceqbZAcaPbYfbYfcaQbYccbYcbXcbZbYcchBccacjfcdLcdLbyFbBucdLcdOcdPcercdRcdOcdSbBpbyebydcdScdScdScdSbpLbyebydcdScdSbXjcdXboKbopceabnXbolboibycbycbycbycbycbycbycbycbycbycbycbycbycbycbycbycboWcegcegcehbKtbKtbLTbLTceibLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacejcejcejcejcejcejcejceucetbYIbYIbYIbYIbYIbYJcewcevcevcevceycexbXAbXzbYjceEbYxceSceUceTceXceWceYbSZcezaJFcfaaJFcaqbTFcbIceDcfccfccfcceFceGbTJbrwbrvbTJcbLcbNceJbrucaEbrcceLceMcaIbZxbWQceNbZyceOcePbZAbZAbZAbZAbZAccbceRbYfcaQbYcccdbsobYcbYcchBccecjfcdLceZcfbcfbcfecdOcfdbsjcffcdOcfgcfhcfhcfhbshbrIcfkcflbrPcfncfocfpcdScfqcfrcfsbUnbUnbUnbUnaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaafaafcftcfCcfvbNebKsbKtbKtbLTbLUbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcejcfwcfxcfycfzcfAcejcfEcfDcfGcfFcfIcFKcFrcFrcfLcfKcfKcfMcfNcbybXAbXzbYjcfOcajcfPcfRcfQcggcFgcgibSZaJFaJFcaqceBcaqbTFcbIcfVcfWcfWcfWcfXcbIcfYcfZcgacfYcgbcgccgdcgecaEcgfceLcgocaIcghccfcgjbZycgkcglbZycFSbLvbVicgnccgcchbYfccjcciccicckcclcclcclcclccmcdLcgpcgycgycgzcgActscgtcgrcgxcgucgGcgGcgGcgBcgIcgIcgJcGdcgLcgEcgMcdScgNcFLcgPcgNaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcgQbKqbKqbKrbKsbKsbKtbKtbKtbKtbKuaafaafaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFaaaaaacgScgTcgTcgTcgUcgVcejcgKcgHcCWcgRcgYcgXchacgZcCOchbchechdchgchfchichhchkchjbSZbSZbSZbSZbSZbSZbSZbSZcDNcDOcaqcCYcaqbTFcbIcbIctpctqctrcbIcbIchrchschtcfYcaEcaEcaEcaEcaEcaIchlchmcaIchwcDUchwbZychychnbZychAchBbVichCbVichDbYfccobYfbYfccpcdCcdCcdCcdDbYfcdLchIchJchJchKcEkchMchpchOcEBchQckLckLckLckLcEYchvckLcEQckLchEchFcdSchZciachGcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgFchHchLchHcgFchNchPchNcgFchRchSchRcgFaaaaaaciicgTcgTcgUcgUcijcejchUchTchWchVchYchXcidciccIBcieciecigciecbybXAcihbYjcikcimcilciocinciocipcirciqciqciAciAciAciAbTFciGciHciIciIciJciKcIMciMciXciOcIIciQciRciSciSciTciUcaIcaIcaIciVcdEckqbZybZybZybZychBchBbViciYbViciZbYfccobYfaaaaaaaaaaaaaaaaaaaaacdLcjgcisciucitcjjcjkcivcjmcjncjociwcjocjocixcjrcjscgIcICcgIciWcjucdScjacjwcjxcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgFchHcjbchHcgFchNcjcchNcgFchRcjdchRcgFaaaaaaciicgTcgUcgUcgUcjBcGmcjhcjechWcjicjpcjlcGgcGecjzcjycjDcjAcjEcbybXAcjFchkcjGcGxcjHcjJcjJcjJcjKcjMcjLcjNcGvcjOceAciAbTFciGckaciIckbckcckdcubckfckgckhctQckjckkcklciSckmciUcImcHGckpcjQcjPcdHcdGcdIcdIcdJcdIcdKbVibVibVibVibYfccobYfaaaaaaaaaaaaaaaaaaaaacdLcGVcjRcjTcjSckEcdOcHlcdOckGckHcjXcjUcjUcjYcgIcgIckecjZcjUckickOcdSckPcGJckRcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgFckrckuckscgFckzckBckAcgFckDckJckIcgFaaaaafciiclbcgTcgUcgUcgUcejckMckKchWchWcKdchWchWchWchWckTcieckWckYcbyclackZcldclccKccleclhclhclhclicljcljclkciAcllcgqclwclxciGclyciIclzclAclBcKmclDclEclFcKoclHclIclJciSclKciUcKecKkclNclnclmclQclNclRclSclTbYfceQcdIcdIcdIcdIcdIcltbYfaaaaaaaaaaaaaaaaaaaaacdLcmacmbcmccmdcdOcmecmfcmgcdScmhcmicmicmiclvcmkcmlclPclOcmicmicmncdScmocKpcmqcmraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafaafcgFclXcmmcmjcgFcmscmmcmtcgFcmscmmcmtcgFaaaaafcmzcgTcgTcgUcgUcmAcejcmvcmucmxcIQcmBcmycmCcmCcmEcmDcmCcmFcJzcbycmIcmHcmKcmJcimcmLcmLcmMcljcmNcmPcmOcmOciAcibceVcJAcqgciGcnbciIcnccndcmRciGcmSciNcmWcfYcmXcnicnjciScnkciUclLclMclNcnlcJBcnlclNaaaaaaaaabYfbYfbYfcnnclSclSclTbYfbYfaaaaaaaaaaaacdOcdOcdOcdOcdOcdOcdOcdOcdOcnocnpcnqcdScdScnrcnscntcdScdScdScdScJCcnscntcdScdScnvcJFcnvaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaafaBIawqaBIaQBaQCaGOaQDaCeaQFaQGaGOaQCaQHaQIaBIaBEaLEaPeaPfaQLaPhaPhaOxaIAaQMaNnaLJaQNaNpaQOaQPaNraNraQQaQRaQSaEVaNraQUaQVaQWaQVaQXaQYaQVaQVaQZaQVaQVaRaaDnaQVaRcaQVaRdaNraNraNraReaPFaPGaPHaMkaRfaMkaRgaRgaRgaRgaRgaRgaRgaRgaRhaRiaRgaRjaRgaRgaRkaRgaRgaRgaRgaRlaRmaRnaRoaRoaRoaRoaRoaRoaRoaRpaRqaRpaJlaImawOawOawOawOawOaItaRuaRvaRwaKZaKZaKZaKZaKZatXaLfaRyaQmaQnaRzaRAaRBaPgaRDaREaRFaQraRGaRHaRIaRJaLfaJLaIgaRKaRKaRLaRMaRNaRNaROaIgaRPaRQaRRaGGaRSaRTaRUaRVaRVaRWaRXaGGaRYaGGaRZaRZaRZaSaaSbaScaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaGeaGgaGgaGiayqaGhaSdaOYaLDaDPaHxaHxaSfaLDaOYaLDaHyaHAaHzaLEaSkaPiaPiaNkaPiaNlaIAaSmaNnaSnaIAaLKaLKasXaLKaLKaLKaLKaLKaLKaSpaSqaLKaLKaLKaLKaLKaLKaSraSsaSraLKasYaLKaNraQPaBcaSvaSwaSxaNraSyaLKaMbaMbaMkaSzaKOaSAaMnaMnaSBaSBaSBaSBaSCaJeasfasNarVarXarXavParXarXarVasNawFaJeaSJaSKaSKaSKaSKaSLaSLaSMaSNaRqaRpaJlaQqaQaaQaaQaaQaaQaaQaaSQaSRaSSaSTaxAaSVaSWaSXaSYaKZaKZasWaTaaTbaTcaTdaTeaTeaTeaTfaTgaTfaTeaTeaTeaTeaJLaIgaThaONaRLaRMaONaONaTiaIgaTjaQzaTlaGGaIoaTmaTnaToaTpaTqaIoaTraQKaGGaTtaTuaRZaTvaTwaTxaafaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDavUaFIaFZaGkaGVaSgaSeaSiaShaSjaSiaTzaTyaTBaTAaTEaTCaTAaTFcozaTIaTJaTKaTLaTLaTLaTMaTLaTNaTOaIAavRaTQaTRaTSaTTaTUaTVaTWaTXaTUaTYaTZaUaaUbaUcaUdaUeaUfaUgaUhaUeaUiaLKaLKawnaLKaLKaLKaLKaUkawkaLKaUmaMbaUnaSzaKOaUoaaaaaaaaaaaaaaaaaaaaaaUpaUqaUraUsaUtaUvaUuaUxaUwaUzaUyaVUaUpaaaaaaaaaaaaaaaaaaaaaaUAaSNaRqaUBaUCaUDaUEaUFaUFaUFaUFaUGaUHaUIaUFaUFaUFaUJaUKaULaUMaUNaGxaUPaUQaURaUSaUTaTfaUUaUVaRCaUXaUYaUZaVaaVbaTeaJLaIgaVcaVcaRLaRMaVdaVdaIzaIgaIgavFaIgaGGaVgaVhaViaViaViaVjaIkaGGaGGaGGaVlaVmaVnaVoaVpaVqaafaafaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDavUcmVaECawiaDPaVsaVsaVtaVsaVsaVsaVDaVsaVsaVtaVsaVsaYEaWYaVuaVvaKdaKdaKdaKdaKdaVwaVxaVyaGfaIAaTQaTQaVAaTSaVBaTUaTUaTUaTUaTUaTYaVCaTUaTUaTUaUdaUeclraVEaVFaUeaUiaVGaVHaKeaKcaVKaUmataaVMaVNaVOaVPaVQaMkaSzaKOaUoaaaaaaaaaaaaaUpaUpaUpaUpaVRaSlaVTaXEaVVaSDaVXaXFaVZaSOaWbaUpaUpaUpaUpaaaaaaaaaaaaaUAaSNaRqaRpaWcaSSaSPaWeaTkaSSaTsaUWaWiaVSaWkaVWaWmaWnaQbauiaWpaWqaWraWsaWtaWtaWuaWvauoaWaaWyaWdaWAaWBaWCaWDaWEaTeaJLaIgaThaONaRLaRMaONaONaONauuaWGaONaWHaGGaWIaWJaToaToaToaTqaIoaYsaGGaWfaVoaLuaWQaVoaWRaWSaWTaWTaWUaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTGaGgaTHaGiaBIaBIaBIaWVaWWaWWaWWaWWaWWaWWaWWaWXaBIaBLcpSaWZaIAaXcaXbaXbaXbaYraXdaIAaIAaIAaIAaTQaXeaXfaTSaXgaTUaTUaWgaXiaXjaXkaWgaTUaTUaTUaXlaUeaXmaVkaXoaUeaUiaVGaXpaKfaXraXsaUmaXtaVPaXuaXvaXwaXxaMkaSzaKOaMmaSCaMbaXyaUpaUpaVYaXAaUOaXCaXDaXDaXEaXFaXGaXEaXFaXDaXDaXHaVeaXJaXBaUpaUpaXyaJlaXLaXMaSNaRqaRpaJlaVzaSPaXOaTkaSSaXPaXQaSSaWhaXSaTkaSSaXTaOtaXUaXVaUQaXWaHYaXYaXZaYaaYbaYcaYdaYeaWjaYgaWBaYhaWDaYiaTeaJLaIgaYjaYjaRLaRMaWlaONaONaYlaONaWzaWxaGGaIoaXRaXhaToaYfaYkaZXaWLbaOaYmaWOaZcaVoaYvbrxbqKaGHaYzaHJaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDbhXaaaaaaaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaafaYCaYDcpKaYFaWPaYHaYHaYIaYJaYKaYLaYMaYNaYOaYPaYQaYRaYSaTSaYTaTUaTUaWgaXjaYUbbTaWgaTUaTUaYWaUdaUeaUeaUeaUeaUeaUiaVGaVGaVGaVGaVGaUmaYYaXvaYZaXvaXvaXxaMkaSzaKOaNSaNSaZaaZbaWNaUpaZdaYnaZfaZgaZfaZfaZfaZfaZhaZfaZfaZfaZfaZfaZfaYoaZjaUpaWMaZbaZlaZmaBQaSNaRqaRpaWcaSSaSSaSSaSSaSSaXPaZoaSSaWhaZpaTkaSSaXTaOtaZqaXVaUQaZraZsaZtaZuaYaaYpaZwaYdaYeaWjaYgaWBaYhaZxaZyaZzaGraZzaZzaZzaZBaZCaZDaYtaOOaZFaZGaZHaZIaGGaZJaYXaYGaToaZeaYGaIoaIoaXaaZiaVoaYuaVoaZNaZOaZPaZQaWTaZRaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaZSaZTaZUbjnaZWaSFaZYaZkbaaaZvbacbadbaebafaYObagbahbaibajaTSbakbalbambanbaobapbaqbarbarbarbasbataTSbaubavbawbaxaKgbajbnZaKhbajaaaaUmbaDbaEbaFbaGbaHbaIaMkbaJbaKaMkbaLbaMaJHbcyaKjbaQbaRbaQbaSbaTbaUbaVaCJbaXaKlbaZbbabbbbbcbaQbbdbbeaKQbeoaKMbbibbjbbkbblbbmbbnaJlaUDaSPbboaTkaSSaZAaZEbbraZKaXOaTkaSSaXTbbtaULaXVbbubbvbbwaUQaUQaYabbxbbybbzbbAbbBaYgaWBbbCaWDaGPaZzaZLbbFbbFbbGbbHbbIaRLaRLaRLaRLaRLaRLaRLaGGbbJaXRaXhaToaYfaXhaIobbKaGGaKHaVoaYuaVoaZNbbMbbNbbOaafaKUaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaIIaIZbryaInbbUaSFbaabaabaabaabaabbVbaabbWaYObbXbbYbaibbZbbZbbZbbZaIhbbZbcbaTUbccbcdbcebcebcfbcgaTSaXebchbcibcjaKiaIcblcaKkbcobcobcpbcpbcpbcpbcpbcqaMbbcrbcsbctaCibcvbcwbcxbbgaUpbczbcAbcBbaBaUpaUpaUpaUpaUpbcDaUpaUpaUpbcCbcFbcGbczaUpbbgbcxbcHbcIbcJbcKbcLaRpaWcaSSaSSaSSaSSaSSaGpbcMaSSbcNaSSbcObcObcObcOaJwbcQbcRbcSaUQaUQaUQaJsbcUaTeaZMbcWbcXaYgaWBaYhaWDbcYaZzaZZbdabdbbdcbddbdebddbddbddbddbddbdfbdgbdhbdibdjbdkbdlbdmbdnbdobdpbdqbdraVoaYubdsaZNaVoaCHbbOaafaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBbdubdvaZUbdwbdxaSFaYHbabbaaaZvbdzbbVbaabdAaYObbpbdCbaibbZbdDbdEbdFbdGbbZbdHbdIbdJaTSaBabdLbdMbdNaTSaXebdObdPbdPaDQbdPbdPbdPbdPbdRbdSbdSbdSbdTbdSbdUaMbbdVbdWbdXbdYbdYbdYbdYbdYbdYbdZaDxbdZbdYbebbebbebbebbebbecbebbebbebbedbedaDybedaUpaUpaUpaJiaJiaJibcKbcLaRpaJlbefbegaDmbehaSSbeibcMbejaRbbelbcObcObembenaZzaZzaZzaDYaSGaSGaSGaZzaZzaZzbeqberbesbetaWBaYhaYhbeuaZzbevbewbbqaZzbeybbsbeAaYtaQTbbEbeDbcmaONaGGaIobeFbeGbeHbeFbeIaIoaIoaGGbeJaVoaYuaVoaZNbeKbeLbbOaafaEvaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaDfbeObePbeQaQEaRtaYHbeTbeUaDcbdzbbVayObaCaYObeXbeYbaibbZbbZbbZbeZbfabbZbfbbdIbfcaTSaBabdLbdMbfdaTSaXebdObdPbfebffbfgbfgbfhbdPbfibcVbfkbflbfmbfmbfmaMbaMkbcsbctbdYbfnbfobfpaySbfrbfsbftbfubdYbebbfvbfwaSEbcZbfzbfAbdybebbedbfCbfDbfEbfFbfGbfHbfIbfJaJibfKbfLbfMaJlaZzaZzaZzaZzbfNbfObfPbfQaZzaZzbfRaZzaZzaZzaZzbfSbfTbfUbfVbfVbfVaQJbfXaZzbfYbfZbgabgbbgcbgcbgcbgdaZzbevbewbdBaZzaZzaZzaZzaZzaZzaZzaZzaZzaZzaZzbgfbggbghbgibgjbgfbggaZzaRZbgkaVoaYuaVoaZNaZObglbgmaWTaZRaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaabgnbgobgpbgqaZUbgrbgrbgrbgrbgrbgrbgsbgtbgraYOaYOaYOaYOaYOaEMaYOaYOaYObgvbgvbgwbbZbdDbgxbeZbgybbZbgzbgAbgzaTSaBabdLbdMbfdaTSaXebdObdPbgBbgCbgDbfgbgDbdPbfibgEbgFbgGbgHbgIbgJaMbbgKbgLbctbeWbgNbgObgPbexbexbgRbgSbgTbdYbebbgUbgVbgWaSubfvbgYbezbebbedbhabhbbhcbeCaESbeEbhgbhhaJibhibhjaRpbhkbhlbhmbewbewbhnbewbhobewbewbewbewbhpbewbewbewbewbhqbewbewbewbewbewbewbhmbewbewbhrbhsbhsbhtbhsbhsbhubhvbewbhqbhwbhxbhpbewbhybewbewbewbhzbhAbhBaSUbewbhDbewbhEbewbewbhFbhGbhHaVoaYuaVobhIbhWbhVaFGbhMaFEaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaabhObhObhObhObhObhObhObhObhObhOaaaaafbhPaYDbhQbhUbhTaVraVraVraVraVraNXaIDaHIbhRbhYbhZbgwbbZbbZbbZbiabfabbZaTSaTSaTSaTSaBabibbicbidaTSbiebifbdPbigbihbiibgDbijbdPbfibikbgFbgGbgGbgGbilaMbbimaSzbctbjubiobipbfjbirbisbfBbiubivbdYbebbiwbixbiybiybiybgYbgebebbedbiAbiBbiCbgQbiEbgZbiGbiHaJibiIbiJbiKbiLbiMbiNbiObiObiPbiQbiRbiSbiSbiSbiTbiSbiSbiSbiSbiSbiUbiVbiVbiVbiWbiObiObiNbiObiObiXbiVbiVbiYbiSbiZbjabjbbiSbjcbiObiObiObiObiObiObiObiObiObiObiObiObiObjdbiTbjebiSbjfbjgbjhbjibjibjjbjkaZNaWRbjlaWTaWTaWUaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaabhObhObhObhObhObhObhObhObhObhObhOaZSaZTbjmbjnbjobgrbjpbjpbZCbjpbjpbjpbjrbajbajbajbajbaibbZbdDbjsbjtbgybbZaaaaaaaaaaTSaTSaTSaTSbZLaTSbjxbdObdPbjybjzbgDbjAbIfbdPbfibfmbRybgGbgGbgGbjDaMbbjEaSzbctbjCcbjbgObhdbjIbjJbhfbjLbjMbdYbjNcaWbjPbiycaxbiybgVcacbjSbedbjTbjUbizbjWbjWbjWbjXbYMaJibZvbkabkbbkcbkdbkebbFbkfbkgbkhbkibkjbOIbklbkmbknbknbkobewbewbewbewbewbkpbkqbkrbewbksbktbkubkvbewbkpbkwbZWbkybhFbewbewbkzbewbewbRAbkBbewbkpbewbewbewbewbewbewbewbewbewbhqbewbewbhFbkCbkDbkEbkFbkGcbkbkIbkJaafaaaaafaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaabhObhObhObhObhObhObhObhObhObhObhObYabXwcembZibkObgrbkPbkQbkRbkRbkSbkTbkUbYobYwbYwbYHbYTbbZbbZbbZbeZbQHbbZbajbajbajbajblaaXeaXeblbblcbldbleblfblgblhblibljblkbdPbllbfmblmbgGblnbgGbloblpblqaSzbctbdYblrblsbltblublvblwblxblybdYbebblzblAbZrbZsblDblAbiFbebbedbedblFbkLblHblIbiCblJblKaJiblLblMblNaJiblOblOblOblOblOblOaZzaZzblPblQbZNcdMblQblPaZzaZzaZzaZzaZzaZzaZzaZzaZzaZzbZuaZzaZzaZzaZzaZzaZzbZzaZzbewbewblVblWbjHblOblOblOblOblOblXblYblYblZblYbewblYblZbmablYbmbblObmcbmcbmcbZBaRZbmeaRZaRZaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaabhObhObhObhObhObhObhObhObhObhObhObdubdvbjmbjnbmfbgrbmgbjpbmhbmibjpbjpbjpbWkbmjbmkbmkbUwbbZbdDbmmbeZbmnbbZbmobmpbmqbmrbmsbmtbmtbmubmtbmtbmvbdPbmwbXcbfgbmybmzblfbmAbfmbmBbgGbgGbjKbmDbWVblqaSzbQBbmGbmGbmGbmGbmGbmGbmGbJVbdYbdYbebbmIbmJbmKbmLbmKbmMbjQbebbedbedbmObWmbmQbmRbiCbiGbmSaJibcKaRqaRpaJibmTbXqbVObmWbmXbmYbmZbnabXybjVbndbnebjVbSWbmCbnhbnibnjbmPbScbnmbnnbnobnpbnqbnrbUWbntbntbnubYfaVJblOblObXpblObZMbZMblObnzbnAbnBblObZtbXebZtblOblXblYbmbblObZnbXfbZnblObnGbnHbnIbnJbnKbnLbnMaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaabhObhObhObhObhObhObhObhObhObhOaaabUobnObOtbeQbnQbgrbnRbjpbURbnTbnUbnVbjpbUPbUqbnYbnZbUwbbZbbZbbZbbZbbZbbZboabobbocbodboebdPbdPbdPbdPbdPbdPbdPbWqbdPbdPbdPbogbdPbohbVmbojbgGbgGbgGbokblpblqaSzbVkbmGbombonbncbcEbvGbotbosbotaafbebboubovbowboxboybozbnfbebaafbedboBboCboDboEbiCbiGboFaJiboGboHaRpbXHboJbngboLboMbnkbWhboPboQboRboRboSboTboUboUboVbnlboXboYboZbpabpbbnnbpcbpdbpebpfbpgbphbpfbpibYfaVJbpjbpkbplbpmbpnbnybppbnCbnDbpqbPHbptboobVyblOaZzbkZbpxblObpyboqbpAbPSbpCbpDbnIbpEbpFbpGbnMaaaaaaaaaaacaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaaaaaaaaaaaabgnbgobgpbgqbdvbpHbpHbpHbpIbpHbpJaZVbpKcfBbgrbpMbpNboAbpPbpQbpRcfHcfJcfUcfUcfUcgmbkWbpUbkWbkWbkWbkWbpVbpWbpWbpXbpYbdPbpZbqabqbblGbqdbqebqfcfibqhbqibqjbqkbmAbqlbojbgGbgGbqmbfmaMbblqbqnbqoaJubqqbqrbqrbxqborcfubxsbotaafbebbebbebbebcfjbebbebbebbebaafbedbqzboCbqAcfmbqCbqDbqEaJibqFaRqaRpaJibqGbqHbqIbqJaJDbqLboPbqNboUboUboUboUboUboUbqObqPcgCboYbqRbqSboNbnnbqUbqVbqWbqcbpgbphbpfbqXbYfaVJbpjbqYbqZbqZbrabrbcgObrdbrdbrdbrebrdbrfboObrhbribrjceibnIbrlbpCbrmbrnbrocgDbnIbrqbpFbrrbnMaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaaaaaabrsbrtcefcKXcescKYcKYcKZbrzbrAbgrcedbrCbpPccMbjpbjpbjpbajbrEbrFbrGbrHbrGbrGbrGbrHbrGbajbajbdPbdPbdPcdpbdPbrJbrJbrJbrJbrJbrJbqfbrKbrLbrMbrNbrOcdFbrQbrRbrSbrTbrUbrVbrWbrXbrYbrZaHBbsbbqvbsabsebscbotbosbotaafbsicdYbskbslbsmbsnbskcdZbsiaafbedbspcecbspbedbedbedcebaJibssaRqaRpbXHboJbngbstbsuceCbqLbswbqNbsxceHbszbsAceKbsCbqObsDbnibsEbsFbsGceIbnnbsIbqVbpebpfbpgbphbpfbpibYfaVJbpjbsJbsKbsLbsMbplbsNbsObsPbsQbsRbsSbsTbsUbrhbsVbsWbsXbnIbsYbsZbtabtbbtcbtdbnIbrqbpFbtebnMaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaacaaaaaaaaaaaaaaaaaaaaabrsbtfbtgccJbtibtibtibtjbtibtibgrbtkbtlbtmbpPbjpaaaaaaaaaaafaafbtnbtnbtnbtnbtnbtnbtnaaaaaabtobtpbtqbtrbtsbrJbrJbrJbrJbrJbrJbttbtuccubtwbtxbtybtzbtAbfmbfmccFbfmbfmbtCbtDbtEbtFbmGbtHbmGbmGbmGbmGbmGccrbmGaafbtJbtKbtLbtMbtNbtMbtLbtObtPaafbspbtQbtRbtSccqbtUbspbtVaJlbtWbbmcbraJibtYbXqbtZbuabubbucbudbuebufccRbuhcdmbprbukbulbumbnibnnbunbpubupbnnbuqburbusbutbuubuubuvbuwbYfaXqbpjcbJbplbplbsMbuybuzbuAbpvbuCbuDbuEbuFbuGbrhbuHbuIbuJbnIbuKbuLbuMbtbbpCbuNbnIbpEbpFbuObnMaaaaaaaaaaaacHzaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbnbeOcbocbobuVbpHbuWbgnbgobuXbuWbgrbuYbsybvabvbbjpaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnaaaaaabvcbvdbrJbvebvfbvfbvfbvfbvfbvgbvhbvfbvicblbvkbvlbvmbvnbvobfmbvpbgGcaobpzbvsbvtbvubvvbmGbmGbmGbvxbvybvzbvAbvBbvwaafbpObvIbvHbvJbvKbvMbvNbvObpOaafbspbqMbvQbxnbedbvRbspbvSaJlbvTbcLbvUaJibvVbvWbvXbvYcbBbuccdTcdUcbtbwdbwebwebwfccncdWcdVbwjbwkcccbwmbwkbwkbwkbwkcbObwkbwkaXKaXKaXKaXKaVJbpjbsJbsKbsLbwobwpbwqbwrbwsbwsbwsbsSbwtbqTbwvbwwbvqbwybnIbwzbwAbwBbwCbpCbwDbnIbwEbwFbnMbnMaaaaaaaaaaaaaafbuPbuQbuRbuQbuRbuQbuSaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbwMbwNbwObwPbrJbwQbrJbwRbwRbwRbwSbwTbrKbrJbrJbrLbwUbwVbwWbwXbrpbPvbxabgGbgGbugbxcbvtbvubxdbxebxfbPzbujbxibxjbxkbxlbvwaafbxmbHSbskbxobxpbxobskbqxbxraafbspbqwbHUbuBbedbPBbspbtVaJlbxwbcLaRpaJibxxbxybDYbxAbxBbxCbORbxEbxCbxFbxGbOTbxFbwkbOUbxJbwkbwkbxKbxLbxMbxNbIDbxPbxQbxRbxSaXKbaybvraXKaVJbpjbxXbqZbqZbxYbxZbppbyabwsbwsbwsbsSbwtbybbwwbvDbUabTQbwwbyfbygbyhbyibpCbvLbnIbrqbykbnMaaaaaaaaaaaaaaaaafbwGbwHbrgbwJbwJbwKbwGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbONbypbONbyqbyrbwQbrJbrJbrJbysbrJbwTbrKbytbdPbdPbyubgGbrNbwXbyvbywbyxbyybyybyzbyAbyBbyCbyDbvsbyEbvPbyGbxkbyHbyIbyJbvwaafbxrbxrbyKbtLbyLbskbyMbxrbxraafbyNbyNbyNbyNbyNbyNbyNbOQaJibyPblMblNaJibwbbyRbyRbySbyTbxCbNVbyVbyWbyXbyYbyZbzabwmbzbbzcbzdbzebzfbzgbzgbzhbzibzgbzjbzkbckbaAbwubclbOfbcnbOibzsbztbzubzvbzwbppbzxbpqbpqbzybsSbwtbzzbzAbzBbzCbzDbzAbzEbzFbzGbObbzIbwwbwwbOdbnMbnMbzKbzLbzLbzLbzMbCJbylbymbrgbwJbrgbynbuRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaacaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbNQbzQbNQbzRbrJbwQbrJbzSbzSbzSbzSbwTbrKbzTbzUbdPbHMbgGbrNbzHbzWbzXbzYbgGblnbgGbzZbAabAbbAcbAdbyEbwIbAfbxkbxkbxkbAgbvwbAhbAhbAhbxrbAibxpbAibxrbAjbAjbAjbyNbAkbAlbAmbAnbGAbApbAqaJibAraRqaRpaJibxbbwYbxhbAvbAwbMlbAybAzbMhbABbACbADbAEbMpbAGbAHbAIbAJbAKbAIbxtbAMbANbAObnvblUbsdbMqbsgbsfbaAbPObpjbxubxUbAYbAZbAZbppbBabBbbBcbppbBdbBebBfbBgbBhbBibBjbBkbBlbBlbBmbBnbBobTHbLYbBrbDKbNdbTIbBvbzNbAtbzVbAubwGbwJbrgbwJbwJbOkbwGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbBCbwNbBDbALbrJbwQbrJbrJbrJbrJbrJbwTbrKbzTbBFbdPbBGbgGbBHbBIbgGbBwbgFbgGbgGbyjbvsbvtbAbbAcbAdbyEbvwbBLbBMbBNbBMbBObvwbBPbBQbBRbAhbxrbLabxrbAjbyQbBUbBVbyNbBWbzmbBYbBZbCabCabCbbBxbAraRqaRpaJibAsbCebCebySbCfbxCbCgbChbxCbCibCjbCjbCkbwkbClbCmbwkbwkbwkbwkbwkbwkbIvbwkbwkbwmbIoaXKaXKaXKaXKbHmbpjbwwbzAbzAbzAbzAbzAbzAbzAbzAbzAbzIbHjbCsbCtbBhbCubCvbDIbCxbCxbCxbCybCzbHlbCBbCCbCDbIUbTGbCGbCnbCGbCAbCHbBzbuQbuRbNkbuRbuQbBBaafaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbNQbzQbNQbCMbCNbCObrJbrJbrJbCNbrJbwTbrKbzTbCPbdPbCQbgGbrNbwXbgGbqlbCRbgGbgGbCIbxcbvtbAbbCTbxcbCUbvwbCVbCYbCXbAWbxlbvwbCZbDabDbbTObDdbvFbvEbUbbDhbDibDjbyNbDkbDlbDlbDmbDnbDobDpaJibDqbDrbDsaJibDtbSFbDvbSVbDxbDybDzbDAbyWbDBbMHbCjbDDbwmbDEbDFbwmbDGbDHbNfbDJbMPbDLbDMbCpbDNbDObBTbDQbDRbCpbVLbVMbDUbVAbDWbDXbDXbNLbDZbEabEbbEcbEdbEebEfbEabEgbEhbCvbEibDebEjbwwbwwbwwbwwbwwbTAbTgbEnbzKbzMbCJbEobPDbCJbzKbzLbzMbJDbCJbEpaafcHzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbSrbExbSrbEybEzbEAbEAbEAbEAbEAbEBbEubEDbzTbEEbdPbEFbEGbEHbEIbEJbEKbECbEMbELbGvbtCbENbAbbEObEPbyEbvwbEQbYtbESbBMbETbvwbEUbEVbPCbAhbNBbvCbEYbAjbKVbFbbFcbyNbFdbFebFfbFgbDnbDobFhaJibxwaRqaRpbKobFjbFkbFlbFmbFnbKUbFpbFqbxCbxFbxFbRWbxFbwkbFsbFtbFubFvbFwbFxbDJbFybDLbFzbFAbFBbDObFCbFDbFEbSfbVlbDXbSgbVAbFJbDXbDXbFKbFLbFMbFLbFLbFNbFObFPbFQbFRbFSbCvbGjbFUbMCbFWbFXbFYbFZbGabGbbGcbGdaafaafbCJbGebIMbIMbIXbVjbJrbKfbEvaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbGlbGmbGnbdPbdPbGobwNbwNbwNbGpbdPbdPbGqbGrbGsbdPbGtbGtbGtbKzbGtbGvbGwbGxbGybGzbtCbvtbAbbJqbGBbtCbtGbtGbtGbtGbtGbKBbtGbtGbtGbtGbtGbtGbLnbtGbtGbtGbtGbtGbtGbtGbtGbtGbtGaJiaJiaJiaJibxwaRqaRpbKobRebFkbCSbGGbCWbGIbGJbGKbGLbGMbGNbCjbGObGPbGQbGRbGSbGTbGUbGVbRxbGXbGYbGZbRvbHbbHcbHdbHebHfbCpbUSbUfbwwbwwbwwbwwbwwbRabwwbwwbwwbzAbQubzAbzAbHkbBhbCubCvbGjbLxbLIbHnbHobHpbHqbGabGbbGcbHraaaaaabCJbHsbHtbEobAtbBybMibMSbCJaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHuaafaaaaaaaaaaaabGtbHvbHwbHxbHybGvbHzbNqbHBbHCbtCbvtbAbbAcbAabHDbHEbHFbHGbHHbHIbHJbHKbHLbJbbHLbHNbHObqybHQbHRbAabHZbAabHTbAabzZbHHbKJbHWbHXbHYcbEbxwaRqbDsaJlbDtbDubDtbDCbDPbxCbIbbIcbIdbIebHVbIgbIhbIibIjbIkbwmbIlbImbInbDJbDTbElbIpbIqbIrbFDbIsbItbIubCpbPXbIwbIxbIybUdbLybIBbICbLzbUcbIFbIGbIHbIIbIJbzAbIKbCubCvbNZbIAbINbIObIPbIQbIRbGabGbbISbEnbEnbEnbCJbCJbCJbQpbOpbCJbCJbBybCJaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGtbITbEmbIVbIWbRdbIYbIZbJabxHbtCbvtbJcbJdbJebJebJfbJgbJhbJibJjbJgbJfbJebJebJebJkbJlbqsbJnbJobJebJebJebJpbJgbJhbJibJjbJsbJtbJubJtbJvbJwbvUaJlbEtbEqbFHbGFbzObGHbDzbHAbFibDVbxFbzPbCFbDSbDEbJGbwkbJHbJIbJJbDJbJKbJLbJMbJNbJObFDbJPbItbJObCpbJQbJRbIxbJSbJTbJUbzJbJWbGibJYbIFbJZbKabKbbKbbzAbKcbKdbKebRzbKgbKhbKibKjbKjbKkbGabGbbKlbEnbKmbWMbKnbEnaafaafaafaafaafaafaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbKpbKqbKqbKrbKsbKsbKtbKtbKtbKtbKuaafaafaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnaaaaaaaaaaaaaaaaaaaaaaaabKvbKwbKxbKwbKyaaaaaaaaabGtbGtbBtbKAbIVbKAbRBbKCbSubKDbKEbtCbKFbvtbKGbKHbAabKIbAabzZbHHbKJbAabKKbKLbKMbKNbKObAcbAabKPbKQbHLbKRbHLbHLbKSbKTbAVbAobKWbKXbcLbKYaRpaRpaRpaJlbAebFlbFnbSwbJmbAxbJybJxbFIbLgbLhbLibLjbHgbDEbIkbIabIzbHhbDJbDJbLobLobLobCpbLpbLqbLrbLsbLtbCpbLubLvbIxbLwbFGbLybHPbLAbLBbLCbIFbJCbLEbKbbKbbzAbRsbLFbCvbwwbLGbLHbxzbLJbLKbLLbGabLMbLNbLObLObLObLPbGdaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafbLQbLRbLSbLRbKsbKtbKtbLTbLUbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLVbLWbLXbwxbLVbLZbMabMbbGtbMcbMdbMebMfbMgbWobVvbMjbMjbMkbtCbtCbtCbxDbtCbtCbtCbtCbtCbtCbtCbtCbtCbtCbtCbtCbtCbMmbMnbMobtCbtCbtCbtCbtCbwZbtCbtCbtCaJlaJlbxvaJlaKSaMpbMraJlbKZbJXbuTbGFbLdbxCbDzbLDbxCbMybMzbMAbMBbwkbnsbMDbMEbMFbMGbmVbMIbMJbMKbMLbItbJObFDbFDbMMbJObCpbMNbMObMObMObMObMObMObMObMObMObMObpsbMQbMRbMRbzAbnPbMTbMUbwwbMVbMVbMVbMWbMXbMYbMVbMVbMVbMVbMVbMZbNabNbaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymbsBbLRbLRbNebKtbKtbLTbLTbpBbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKxbNgbMsbNgbKxbNibNjbxIbNlbNmbNnbKAbNobNpbGvbYZbNrbNsbNtbGvbNubNvbNwbNxaaaaaaaaaaaabNybNzbNAbuZbNDbNCbNEbNFbNGbNHbNIbNFbNJbNKbrkbNMbNNbNObNPbxTbNRbNSbNTbNUbNUbNUbNUbDtbDtbDtbDtbMtbMtbxCbZabOabyobMzbMvbMubOebyUbOgbOhbyObOjbMxbMwbOmbNhbMKbOobFDbFDbNXbJObJObOobCpbMNbMObOqbOrbOsbuxbOubOvbOwbOxbMObOybOzbOAbOAbzAbOBbOCbCvbzIbODbOEbOFbOGbOHbwnbOJbOKbOLbOMbMVbEnbzrbEnbOObOObOObOObOOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabOPbKtbsBbKtbKtbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLVbNgbNgbNgbDgbDfbKAbOSbDcbCLbKAbZcbOVbOWbGvbGvbGvbGvbGvbGvbOXbOYbOZbPaaaabPbbPcbPcbPdbPebPfbPgbPhbPfbPibNFbPjbPkbPlbNFbPmbNYbPobPpbPqbPrbPsbPtbPtbNSbPubCKbPwbPxbPybDtbOcbLbbEXbGFbGFbErbDzbERbxCbEWbPEbPFbPGbwkbCEbPIbwkbOlbPKbPLbOnbPNbMKbCpbCpbCpbCpbCpbCpbCpbCpbPObMObPPbQYbPRbOsbOsbOsbOsbCwbMObPTbLEbPUbPUbzAbBhbPVbPWbDwbPYbPYbPYbPYbPZbQabQabQbbQcbQdbMVbQebQfbQgbOObQhbBKbPnbQkaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKsbKtbQlbQmbQmbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKxbMsbMsbMsbKxbQnbQobFobQqbQrbKAbKAbQsbQtbEwbQvbQvbQvbQvbQvbQvbQwbQxbQyaaabQzbQAbFabQCbQDbPfbQEbQGbQFbPfbNFbQIbQJbQKbNFbQLbQMbQNbQObQPbQQbQRbPtbQSbPxbQTbNUbPxbPxbQUbDtbHibGFbQVcbzbGFbPAbDzbLebRCbQZbPJbHabRcbRGbDEbIkbSpbOlbPLbPLbOnbRfbMKbRgbRhbPMbRjbRkbRlbQibRnbPObMObOsbOsbRobOsbOsbOsbOsbRpbMObRqbLEbRrbRrbzAbRsbRtbRubGWbRwbFVbGkbGkbGubGCbGkbGDbGEbFFbFrbRDbREbRFbEZbRHbRIbQjbRKaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKtbKtbRLbLTbLTbLTbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaabLVbRMbRNbRObLVbRPbMabMbbGtbGtbRQbRQbRQbGtbGtbNxbRRbRRbRSbRSbRSbRSbNwbQyaaabRTbRUbRVbAFbRXbRYbRZbSabSbbSbbAXbSdbSebBJbNFbPtbPtbPtbPtbPtbAAbPtbPtbShbSibSjbNUbPxbSkbSlbDtbQXbLbbQVbSmbBAbPAbSobJAbJBbSqbRbbSsbStbJzbFsbSvbIEbSxbRmbRibSAbSBbMKbRJbSDbEkbRjbSnbSGbEsbRnbPObMObMObMObRobOsbOsbOsbMObMObMObSIbSJbRrbRrbzAbSKbSLbCvbzIbSMbSNbSObSPbSQbSRbSSbBEcbQbSybMVbBqbQfbxObOObSXbSYbSzbTaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKtbLTbLTbLTbLTbLTbLTbTbbLTbTcbLTbLTbLTbLTbLTbKtbKtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabTdbKwbTebKwbTfbBSaafaaaaaabGtbThbTibTjbGtaaabNxbTkbTlbTmbTnbTnbTnbTobQyaaabQzbTpbTqbTrbTsbPfbTtbTvbTubTwbNFbSCbTybTzbBXbTBbTBbTBbTCbTCbTDbTEbULbPxbPxbTFbNUbNUbNUbNUbDtbDtbLfbLkbLcbDtbTJbTKbTLbJFbJEbTJbyobLlbLmbTRbTSbTJbMKbMKbMKbMKbMKbMKbTTbTUbTVbRjbTWbTXbTYbRnbPObMObTZbQWbPQbCrbCobNWbNcbTZbUgbUhbUibIIbIJbzAbIKbSLbUjbwwbMVbMVbMVbMVbMVbUkbMVbBsbSEbVFbMVbUnbCcbUnbOObUpbCdbUrbOOaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKtbUsbUsbUsbUsbUsbUsbUtbLTbUubUsbTcbLTbLTbLTbLTbKtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbUvbNxbNxbNxbNxbRSbmEbNwbUxaaabUybPcbPcbUzbUAbPfbPfbUBbPfbSHbNFbUDbSTbSUbNFbSZbSZbSZbSZbSZbSZbSZbSZbUHbUIbUJbUKbUKbUMbNUbDtbUNbTxbTMbUQbjZbwabUTbUUbTNbkAbTPbUTbUYbUZbVabVbbVcbUebVdbVebVgbVhbVibUlbmxbUmbRjbUCblCbUCbRnbPObMObVnbUFbVpbVqbVrbVsbVtbVubUgbzAblTbzAbzAbVwbCxbSLbCxbVxaafbnxbVzblSbVBbUGbVBbmdbUObUVbMVbVGbVHbVIbOObVJbVKbVKbwhaaLaaLaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwibLRbLRbLRbLRbLRbLRbLRbVNbLUbLTbLTbLTbLTblBbLUbKuaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVPbVQbVQbVRbVSbNxbVTbRSbVUbNxaaaaaaaaaaaabNybVVbVWbVXbVZbVYbPfbNFbWabWbbNIbNFbSZbUXbVCbVfbVEbVDbWcbSZcaqcaqcaqcaqcaqbTFbWjbnWbWlbWdbWecbRbWpbxgbWrbWsbWtbWubWtbWvbWtbWwbWxbWybWzbWAbWBbWAbWCbWDbWEbWFbWGbWfbWIbWgbWKbWLbnwbxVbMObxWbnNbzlbWSbWTbWibWSbWSbnSbWWbWXbWYbWZbCxbCxbSLbCxbFTaafbnxbXabXbbmHbXdbmUbnbbXgbXhbMVbXibVHbXjbOObOObOObOObOOaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKtbQmbQmbQmbQmbQmbQmbXkbLTbQlbQmbXlbLTbLTbLTbLTbKtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXmbjGbWnbjObRSbjRbXrbRSbXsbNxaaKaaaaaaaaabNybNybNybNybNybNybNybNFbUDbUEbXtbNFbSZbWHbWRbWJbWJbWRbWUbSZbXobXnbXnbXucaqbXBbDtbDtbXCbXDbXEbXFbXGblRbXIbXJbXKbXLbXMbXNbXObXPbXQbXRbXSbXTbXUbznbzpbzobAPbzqbARbAQbATbASbjBbAUbYfbYgbIwbYhbVobCqbWObWNbWPbYmbYnbjqbYpbYqbYrbYsbkkbYrbYubYvbILaafbnxbXabrBbVBbXvbVBbjwbYzbYAbMVbXjbVHbYBbYCbUnaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKtbLTbLTbLTbLTbLTbLTbTbbLTbXlbLTbLTbLTbLTbLTbKtbKtaafaaaaaaaaaaaaabgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYDbVQbVQbVRbYEbYFbYGbNxbkYbNxbYIbYJbYKbYIbYIbYLbZIbYNbYObYPccGbXxbXAbXzbYjbYebYxbWRbYQbYybYSbYRbYUbkXbYWbYVbYYbYXcaqbZhbNSbkMbZjbZkbZlbZlbZmbnEbZobZpbTJbTJbZqbkNbTJbTJcdNccZcevcaIbjYbWQbZxbZycewbZybZAbZbbkKbZbbZAbkVbYfbMNbIwbZEbXWbXVbZdbkxbZJbZKbMObMObwwbwwbwwbwwbwwboIbnFbofbwwbMVbMVbMVbMVbMVbZebMVbMVbMVbMVbMVbZObZPbZQbZRbUnaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKtbKtbRLbLTbLTbLTbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaambZSaamaamaamaamaamaaaaaaaaaaaaaaaaaaaafaafaaabZfbZgbZgbZgbZHbZgbZgbZUbZTbYIbZYbZZbYIbZVcabceycadbZXcafcvicaacagcaecaicahcajbWRbYQcakcalbYRcambSZcaqcaqcaqcaqcaqcarbNSbDtcascatbrDcancawbsvcaycazbTJcapcaBcaCcaDcaEcaFcaGcaHcaIbZxbWQcaubZycaKcaLbZAcaMcaNcaObZAbXXbYfbPObIwbXYbsqbXZbXYbXYbIwbIwbIwcaRcaScaTcaUcaVbwwbwwbsrbwwbwwcaXcaYcavcaJcaAcbbcaZcbacbccbdcbecbfcbgcbhbUnbUnbUnaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKsbKtbUubUsbUsbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcbibwlbpScbmbwgbpTbvZcbqcbpbYIbvjcbsbYIbYIbwccbucbvcbwcbxcvpcbybXAbXzbYjcbAbuUbWRbWRcbCcbDbWRbuobSZcbFcbGcaqcbHcaqbTFcbIcbIcbIcbIcbIcbIcbIbTJbmNcbKbTJcbLcbMcbNbrucaEcbPcEdcLacaIbZxbWQcbUbZycbScbTbZAcbWcbVbtXbZAccsbYfbYbbYdbYcbYiccAccBbYccLBbYkbYlcktbZDbZwbZFcktbtIbZGccDccCbtTccEccQccPbsHbthbtvbthbthbtBcctcctccvccwccxccycczbUnbUnbUnbUnaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaaaaaabOPbKtbsBbKtbKtbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafccSccSbpSccUbmlbpTccVccXccWbYIbGhccHccIbqgccKccLbmFccNccOcLbccYcdbcdacdycdebqBcdBceecdQcelcekcenbqQcdccddaJEcdfcaqbTFcbIcdgcdhcdibkHcdkcdlbpwcdncdobpocdqcdrcdscdtcaEcducdvcdwcaIbZxbWQceobZycdxcepbZAcdzcdAceqbZAcaPbYfbYfcaQbYccbYcbXcbZbYcchBccacjfcdLcdLbyFbBucdLcdOcdPcercdRcdOcdSbBpbyebydcdScdScdScdSbpLbyebydcdScdSbXjcdXboKbopceabnXbolboibycbycbycbycbycbycbycbycbycbycbycbycbycbycbycbycboWcegcegcehbKtbKtbLTbLTblEbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacejcejcejcejcejcejcejceucetbYIbYIbYIbYIbYIcLccLecLdcLdcLdcLfcexbXAbXzbYjceEbYxceSceUceTceXceWceYbSZcezaJFcfaaJFcaqbTFcbIceDcfccfccfcceFceGbTJbrwbrvbTJcbLcbNceJbrucaEbrcceLceMcaIbZxbWQceNbZyceOcePbZAbZAbZAbZAbZAccbceRbYfcaQbYcccdbsobYcbYcchBccecjfcdLceZcfbcfbcfecdOcfdbsjcffcdOcfgcfhcfhcfhbshbrIcfkcflbrPcfncfocfpcdScfqcfrbqtbUnbUnbUnbUnaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaafaafcftcfCcfvbNebKsbKtbKtbLTbLUbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcejcfwcfxcfycfzcfAcejcfEcfDcfGcfFcfIcFKcFrcFrcfLcfKcfKcygcyEcbybXAbXzbYjcfOcajcfPcfRcfQcggcFgcgibSZaJFaJFcaqceBcaqbTFcbIcfVcfWcfWcfWcfXcbIcfYcfZcgacfYcgbcgccgdcBfcaEcAvceLcgocaIcghccfcgjbZycgkcglbZycFSbLvbVicgnccgcchbYfccjcciccicckcclcclcclcclccmcdLcBvcgycgycgzcgActscgtcgrcgxcgucgGcgGcgGcgBcgIcgIcgJcGdcgLcgEcgMcdScgNcFLcgPcgNaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcgQbKqbKqbKrbKsbKsbKtbKtbKtbKtbKuaafaafaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFaaaaaacgScgTcgTcgTcgUcgVcejcgKcgHcCWcgRcgYcgXchacgZcCOchbchechdchgchfchichhchkcxobSZbSZbSZbSZbSZbSZbSZbSZcDNcDOcaqcCYcaqbTFcbIcbIctpctqctrcbIcbIchrchschtcfYcaEcaEcaEcaEcaEcaIchlchmcaIchwcDUchwbZychychnbZychAchBbVichCbVichDbYfccobYfbYfccpcdCcdCcdCcdDbYfcdLchIchJchJchKcEkchMchpchOcEBchQckLckLckLckLcEYchvckLcEQckLchEchFcdSchZciachGcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgFchHchPchHcgFchNchSchNcgFchRcjachRcgFaaaaaaciicgTcgTcgUcgUcijcejchUchTchWchVchYchXcidciccIBcieciecigciecbybXAcihbYjcikcimcilciocinciocipcirciqciqciAciAciAciAbTFciGciHciIciIciJciKcIMciMciXciOcIIciQciRciSciSciTciUcaIcaIcaIcDacdEckqbZybZybZybZychBchBbViciYbViciZbYfccobYfaaaaaaaaaaaaaaaaaaaaacdLcjgcisciucitcjjcjkcivcjmcjncjociwcjocjocixcjrcjscgIcICcgIciWcjucdScfscjwcjxcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgFchHcjbchHcgFchNcjcchNcgFchRcjdchRcgFaaaaaaciicgTcgUcgUcgUcjBcGmcjhcjechWcjicjpcBEcGgcGecjzcjycjDcjAcjEcbybXAcjFchkcjGcGxcjHcjJcjJcjJcjKcjMcjLcjNcGvcjOceAciAbTFciGckaciIckbckcckdcubckfckgckhctQckjckkcklciSckmciUcImcHGckpcjQcjPcdHcdGcdIcdIcdJcdIcdKbVibVibVibVibYfccobYfaaaaaaaaaaaaaaaaaaaaacdLcGVcjRcjTcjSckEcdOcHlcdOckGckHcjXcjUcjUcjYcgIcgIckecjZcjUckickOcdSckPcGJckRcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgFckrckuckscgFckzckBckAcgFckDckJckIcgFaaaaafciiclbcgTcgUcgUcgUcejckMckKchWchWcKdchWchWchWchWckTcieckWckYcbyclackZcldclccKccleclhclhclhclicljcljclkciAcllcgqclwclxciGclyciIclzclAclBcKmclDclEclFcKoclHclIclJciSclKciUcKecKkclNclnclmclQclNclRclSclTbYfceQcdIcdIcdIcdIcdIcltbYfaaaaaaaaaaaaaaaaaaaaacdLcmacmbcmccmdcdOcmecmfcsLcdScmhcmicmicmiclvcLmcmlclPclOcmicmicmncdScmocKpcmqcmraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafaafcgFclXcmmcmjcgFcmscmmcmtcgFcmscmmcmtcgFaaaaafcmzcgTcgTcgUcgUcmAcejcmvcmucmxcIQcmBcmycmCcmCcmEcmDcmCcmFcJzcbycmIcmHcmKcmJcimcmLcmLcmMcljcmNcGqcmOcmOciAcibceVcJAcqgciGcnbciIcnccndcLlciGcmSciNcmWcfYcIzcnicnjciScnkciUclLclMclNcnlcJBcnlclNaaaaaaaaabYfbYfbYfcnnclSclSclTbYfbYfaaaaaaaaaaaacdOcdOcdOcdOcdOcdOcdOcdOcdOcnocnpcnqcdScdScnrcnscntcdScdScdScdScJCcnscntcdScdScnvcJFcnvaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaafaafaafaaaaafcnxaafcnxaafcKBaafcKAaafcKBaafcKAaafaafaaacejcnAcnBcgUcgUcnCcnDcKCcKzcnycnmcKDcnzcnzcKEcnzcnGcKFcnHcnGcnJcqrcKwcKxcnMcnOcnOcnOcnOczvcKycnRcnRcnRcgscgscgscgscnSciGcnTcnUcnccnVcnWciGcmSciNcnXciUcnYcnZcnjcoacobciUclLclMclNcoccodcoeclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacdOcofcogcohcwlcojcokcKHcomcKIcopcoocdOaaLaafaafaafaafaaaaaaaaacKGaaaaaaaaaaafcoscKJcosaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafcoucowcovcoxcovcowcoycoxcoAcoBcoycoDcoCcoFcoEcnycnycnycnycnycnycnycnycoHcoGcoJcoIcoLcoKcoNcoMcoOcnGcoQcoPcoRcnGcoTcoScoUcnOcoWcoVcoYcoXcpacoZcpjcpbcpbcpkcpncpncpjbTFciGciGcpccKuciGciGciGcpeciNcpfciUciUciUcKtcphciUciUclLcpiclNcvmcpscvmclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafcdOcplcpmcplcKqcwVcppcpqcomcomcKscomcdOcdOaaaaaaaaaaafaafaaaaacaaaaaaaaaaaaaafaaacKvaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaaaaaaaafcptcpvcpucpxcpwcpvcpycpAcpzcpCcpBcpFcpDcpJcpHcpMcpLcpOcpNcpTcpQcpVcpUcpXcpWcpZcpYcqbcqacqdcqccqfcqecqzcqtcwwcqIcoTcqKcqMcnOcpacpacpacpacpacqPcpjcqQcqQcqQcpncpncpjbTFcrYciGcqhcqicqjcqkciGcqlciNcqmciUcqncqocqpcqqciUcvDclLcpiclNcvOcqRcquclNaaaaaaaaaaaaaaaaaacqvcqwcqxcqycqvaafaaaaaaaaaaaacdOcplcplcplcoicwacqBcqCcqDcqEcqFcqGcqHcdOaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacmZaaaaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafcqScpHcqUcqWcqVcpHcqXcpHcqYcqZcqXcpHcqYcqZcpHcpHcpHcpHcpHcracpHcpHcpHcqbcrbcpYcrccvBcqacrecrdcrgcrfcricrhcrkcrjcoTcqKcrlcnOcrmcpacpacrncpacrocpjcrpcrJcrIcrJcrKcpjbTFcrqciGcrrcrscrtcrucvrcrwcrxcrycvtcrAcrBcrCcrDciUcrEcrFcrGcrHcqvcvlcqvcrHaaaaaaaafaaaaaaaaacqvcrQcrScrRcqvaafaafaaaaaaaaacdOcomcomcomcomcrMcppcrNcrNcrNcnpcrNcrOcdOaaaaaaaaaaaaaaacrPcrPcrPbZSaafaafaafaafcnaaafaafaafaafaafaaqcrPcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcptcpHcrccpHcrccpHcqXcpHcrTcrVcrUcrVcrWcrVcrVcrZcrXcpHcpHcyCcnPcnPcnPcnLcymcypcypcyvcqacyhcsgcsicnGcskcsjcsmcnGcsocsncsqcspcsscsrcsucstcpacsvcpjcswcrJcsxcrJcsycpjbTFcizciGcszcsAcsBcsCciGcfYcyacfYciUcsEcsFcsGcsHciUcsIcrGcrGcqvcsJcsKcsLcqvcqvcqvcqvcqvcqvcqvcqvctMctDctNcqvcqvcqvcrHaaaaaacdOcofcogcohcslcsRcqBcrNcrNcrNcnpcrNcsScdOaaaaaaaaaaaaaaacrPaaaaafaaaaafaaaaaaaaackxaaaaafaafaaaaaaaaaaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaafaaaaaacptcpHcrccpHcsNcsQcsOcsUcsTcsVcrUcrVcsWcrVcrVcrZcsXcxRcrZcxVcqWctacsZcsZctccrccrcctectdctgcxHcnzcnGcxIcnGcnGcnGctjcticsqctkctmctlctoctncpacttcpjctucrJcsxcrJcxGcpjctvctwciGciGcxBciGciGciGciBctzctAciUciUciUcxFciUciUcsIcrGaaacqvctCctOctEctFctGctHcxdctJctKctLcqvcuVcwHcuVcqvctSctPcqvaafaafcdOcplcplcplcwTcwVctRctVctTctUctZcrNctWcdOcdOcdOcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacptcpHcsNcsQcsQcsQcsOcsQcsQcsQcsOcsQcsQcsQcsQcsQcuacAUcsQcAIcsQcuccsQcsQcsQcuecudcufcpvcpHcugcBmcuhcukcujcumculcujcuncupcBncurcuqcuqcuscuqcutcBqcuucuxcuwcuycuycpjcuCcuDczVcuFcuFcuGcuHcuIcuJcuJcuJcuJcuJcuJcuJcuJcuKcrFcrGaaactFczXcuzcuNctFcuOcuAcuQcuQcuPcuBcuQcuQcuRcuQcuVcuXcuQcqvaaaaaacdOcplcplcplcslcAxcuZcvacvbcvccvdcrNcrNcvecvfcvgcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacptcpHcpHcpHcpHcpHcqXcpHcpHcpHcqXcpHcpHcpHcpHcpHcqYcpHcpHcvBcpHcvhcpHcpHcvicvkcvjcvocvncvpcvnczMcvqcvucvscvvcvqcvqcvwcvxczvcvycpacvAcvzcpacpaczycrJcrJcvCcuycuycpjbPxcAscvNcvNcvNcvNcyScvNcvNcvNcvNclMcvPcrGcrGcrGcrGcrGcrGaaactFctFcyRctFctFcvRcvScvTcvUcvVcvEcvGcvFcvIcvHcyZcwbcwccqvaaaaaacdOcomcomcomcomcwdcppcvacwecwfcvJcrNcrNcwhcrNcwicdOaaaaaacrPaafcwjcwjcwjcwjcwjaaackxaaacwjcwjcwjcwjcwjaafcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaabZSaaaaaaaaaaaacptcpHcpHcpHcpHcpHcqXcpHcpHcpHcqXcpHcpHcpHcpHcpHcqYcpHcpHcvBcpHcvKcpHcpHcvKcvKcvLcpHcpHcvWcvQcvXcvXcvXcvXcvZcvYcoTcwgcwkcspcwmcpacwocvzcpacwpcpjcwqcrJcwscwucwtcpjcCLcvMcvNcwIcwJcwKcwLcwMcwNcwOcvNcwPcwQcrGaaaaaaaaaaaaaaaaaacqvcwRcwvcwxcCNcwzcwycwBcwAcwDcwCcwFcwEcwScwGcuWcuQcxecqvaaaaaacdOcofcogcohckXcsRcuZcxgcxhcxhcxicxjcxkcCIcxmcxncdOaaaaaacrPaaaaafaaaaafaafaafaaackxaaaaafaaaaafaaaaafaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacptcpHcpHcpHcpHcpHcwUcpHcpHcpHcwUcpHcpHcpHcpHcpHcqYcpHcpHcCncqWcwXcwWcwWcwXcwYcwXcxacwZcxbcwWcCicxccxocxlcxpcvYcoTcxqcoTcxrcxscpacpacxtcpacxucpjcxvcxvcxwcwucwtcpjbPxcvMcvNcxKcxLcxMcxNcxOcxNcxPcvNcxQcCfcrGaaaaaaaaaaaaaaaaaacqvcxScxTcxUcCecxWcxXcxYcxZcuTcCccuScxAcuTcBBcqvcqvcqvcqvaaaaaacdOcplcpmcplcBscwVcppcrNcrNcyecyfcrNcygcomcomcomcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaafcrPaaacgWaaaaaacgWaaaaaaaaacgWaaaaaaaaaaaaaaacgWaaaaaaaaacgWaaaaaacgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacptcpHcsbcsacsacxDcxCcnPcolcnPcxEcolcnPcnPcnPcnPcnQcnPcnNcnLcnKcvKcpHcpHcxJcyccybcyjcyicykcpHcnIcylcyncyncyqcyocoTcxqcyrcnOcyscpacytcpacnFcyucpjcpjcpjcpjcpjcpjcpjbPxcvMcvNcyMcyNcxLcyOcxLcxNcyPcvNcyQcorcrGaaaaaaaaaaaaaaaaaacqvcuVcoqctFctFcyTcywcyVcyWctMctDctNcyxctMcuRcyYcqvaaaaaaaaaaaacdOcplcplcplckXconczacrNcrNcrNcyfcrNczbcrNczccrNczdaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaacgWcgWcgWcgWaaaaaaaaacgWcgWcgWcgWcgWcgWcgWaaaaaaaaacgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacptcpHcqXcpHcpHcpHcwUcpHcpHcpHcwUcpHcpHcpHcpHcpHcqYcpHcybcpHcyycvKcpHcpHcyzcwYcyAcyBcvXcotcvXcvXcylcyEcyDcyFcyocoTcxqcoTcnOcyHcyGcyJcyIcyKcpacnOcyLczJczJcyUczLcpdczNczOcvNcxNczPczQcxNczRczSczTcvNczUcpgcrGaaaaaaaaaaaaaaaaaacqvczWcuMcpocuVczYczZcAactFcAbcAccsPcyxczWcyXcAecqvaaaaaaaaaaaackEcdOcAfcAgcAgczecAicAjcAkcAlcAmcAncAocApcAqcokcAraaaaaacrPaafcwjcwjcwjcwjcwjaaackxaafcwjcwjcwjcwjcwjaaacrPaaacgWcgWcgWcgWaaaaaacgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaacgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaIaaaaaaczfcpHcqXcpHczgcrVcrUcrVczhcrVcrUcrVczhcrVcrVcrVczjczkczjcrZczlcyAczmczocznczqczpczrcvXcztczscvXcvXcvXcvXcvXczucqrcprcqrcnOcnOcnOcnOcnOcnOcnOcnOczwczJczJczxcANcAObPxcAPcvNcAQcARcqscATcqAcAVcAWcvNcAXcAYcrGaaaaaaaaaaaaaaaaaacqvcuQcAZcAectFcBacBbcBcctFcBdcBeczAczzczBcBeczDcqvaafaafaaaaaaaaaaaabquaaacdOcBlcqJcrvcBocBpcqJcqOcBrcBpcqJcrzcdOaaaaaabZSaaaaafaaaaafaaaaafaaackxaaaaafaaaaafaafaafaafcrPaaacgWcgWcgWcgWaaaaaacgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaacgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaaaaaaaaaaaIaaaaaaczEcpHcqXcpHcybcyccqXcpHcybcyccqXcpHcybcyccpHcpHcxJcpHcybcycczFczHczGczKczIcAhcAdcAtcvXcAvcAucrLcAwcAycujcAAcAzcujcABcujcACculcADcAFcAEcAEcAHcsccBVcBWcBWcBXcBYcAObPxcBZcvNcvNcCacCbcsdcCbcCacCdcvNcrGcsecrGaaaaaaaaaaaaaaaaaacqvctFcsfcuVctFcCgcChcshctFcCjcCkcqycgvcAJcCkcCocrHaaaaaaaaaaaaaaaaaacgwaafcdOcCqcsMclUcomclscsDclqcomclocsYclWcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaafcrPaaacgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaafaaIaafaafczEcALcAKcAScAMcBgcBfcBicBhcBkcBjcBucBtcBgcpHcALcBvcBycBxcBkcBzcnycnycnycnycnycnycnycnyctxcBAczucBCcBDcoTcBEcoTcoTcxqcoTcoTcBFcoTcBDcBGcBIcBHcBJcthctfctbcCPcCQcAObPwcCRcCScCTcCacAGcAVcBwcCacBLcBKcBMctycCXaaaaaaaaaaaaaaaaaacqvcBNctDcuQcDacDbcuQcDccDdcDeaafaaachxcBPcBOcBQaaaaaaaaaaacaaaaaaaaaaaaaaacdOcDhcplcplcomcDicplcplcomcDicplcplcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaacgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafcoucowcovcoxcovcowcoycoxcoAcoBcoycoDcoCcoFcoEcnycnycnycnycnycnycnycnycoHcoGcoJcoIcoLcoKcoNcoMcoOcnGcoQcoPcoRcnGcoTcoScoUcnOcoWcoVcoYcoXcpacoZcpjcpbcpbcpkcpncpncpjcLociGciGcpccKuciGciGciGcpeciNcLnciUciUciUcKtcphciUciUclLcpiclNcvmcpscvmclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafcdOcplcpmcplcKqcwVcppcpqcomcomcKscomcdOcdOaaaaaaaaaaafaafaaaaacaaaaaaaaaaaaaafaaacKvaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaaaaaaaafcptcpvcpucpxcpwcpvcpycpfcpzcpJcpBcpFcpDcpQcpHcpMcpLcpOcpNcpTconcpVcpUcpXcpWcpZcqbcqfcqacqdcqccpCcqecpAcqtcwwcqIcoTcqKcqMcnOcpacpacpacpacpacqPcpjcqQcqQcqQcpncpncpjbTFcrYciGcqhcqicqjcqkciGcqlciNcqmciUcqncqocqpcqqciUcvDclLcpiclNcvOcqRcquclNaaaaaaaaaaaaaaaaaacqvcqwcqxcqycqvaafaaaaaaaaaaaacdOcplcplcplcoicwacqBcqCcmXcqEcqFcqGcqHcdOaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacmZaaaaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafcqScpHcqUcsmcqVcpHcqXcpHcqYcqZcqXcpHcqYcqZcpHcpHcpHcpHcpHcracpHcpHcpHcttcrbctucrccvBcqacrecrdcrgcrfcricrhcrkcrjcoTcqKcrlcnOcrmcpacpacrncpacrocpjcrpcrJcrIcrJcrKcpjbTFcrqciGcrrcrscrtcrucvrcrwcrxcrycvtcrAcrBcrCcrDciUcrEcrFcrGcrHcqvcvlcqvcrHaaaaaaaafaaaaaaaaacqvcrQcrScrRcqvaafaafaaaaaaaaacdOcomcomcomcomcrMcppcrNcrNcrNcnpcrNcrOcdOaaaaaaaaaaaaaaacrPcrPcrPbZSaafaafaafaafcnaaafaafaafaafaafaaqcrPcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcptcpHcrccpHcrccpHcqXcpHcrTcrVcrUcrVcrWcrVcrVcuccrXcpHcpHcyCcnPcnPcnPcnLcymcypcypcyvcqacyhcsgcsicnGcskcsjcyicnGcsocsncsqcspcsscsrcsucstcpacsvcpjcswcrJcsxcrJcsycpjbTFcizciGcszcsAcsBcsCciGcfYcyacfYciUcsEcsFcsGcsHciUcsIcrGcrGcqvcsJcsKcmgcqvcqvcqvcqvcqvcqvcqvcqvctMctDctNcqvcqvcqvcrHaaaaaacdOcofcogcohcslcsRcqBcrNcrNcrNcnpcrNcsScdOaaaaaaaaaaaaaaacrPaaaaafaaaaafaaaaaaaaackxaaaaafaafaaaaaaaaaaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaafaaaaaacptcpHcrccpHcsNcsQcsOcsUcsTcsVcrUcrVcsWcrVcrVcyycsXcxRcrZcxVczLctacsZcsZctccrccrcctectdctgcxHcnzcnGcxIcnGcnGcnGcqWcticsqctkctmctlctoctncpacqDcpjcqzcrJcsxcrJcxGcpjctvctwciGciGcxBciGciGciGciBctzctAciUciUciUcxFciUciUcsIcrGaaacqvctCctOctEctFctGctHcxdctJctKctLcqvcuVcwHcuVcqvcpYctPcqvaafaafcdOcplcplcplcwTcwVctRctVctTctUctZcrNctWcdOcdOcdOcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacptcpHcsNcsQcsQcsQcsOcsQcsQcsQcsOcsQcsQcsQcsQcsQcuacAUcsQcAIcsQcBgcsQcsQcsQcuecudcufcpvcpHcugcBmcuhcukcujcumculcujcuncupcBncurcuqcuqcuscuqcutcBqcuucuxcuwcuycuycpjcuCcuDczVcuFcuFcuGcuHcuIcuJcuJcuJcuJcuJcuJcuJcuJcuKcrFcrGaaactFczXcuzcuNctFcuOcuAcuQcuQcuPcuBcuQcuQcuRcuQcuVcuXcuQcqvaaaaaacdOcplcplcplcslcAxcuZcvacvbcvccvdcrNcrNcvecvfcvgcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacptcpHcpHcpHcpHcpHcqXcpHcpHcpHcqXcpHcpHcpHcpHcpHcqYcpHcpHcvBcpHcvhcpHcLhcLgcvkcvjcvocvncLicvnczMcvqcvucvscvvcvqcvqcvwcvxczvcvycpacvAcvzcpacpaczycrJcrJcvCcuycuycpjbPxcAscvNcvNcvNcvNcyScvNcvNcvNcvNclMcvPcrGcrGcrGcrGcrGcrGaaactFctFcyRctFctFctjcvScvTcvUcvVcvEcvGcvFcvIcvHcyZcwbcwccqvaaaaaacdOcomcomcomcomcwdcppcvacwecwfcvJcrNcrNcwhcrNcwicdOaaaaaacrPaafcwjcwjcwjcwjcwjaaackxaaacwjcwjcwjcwjcwjaafcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaabZSaaaaaaaaaaaacptcpHcpHcpHcpHcpHcqXcpHcpHcpHcqXcpHcpHcpHcpHcpHcqYcpHcpHcvBcpHcvKcpHcpHcvKcvKcvLcpHcpHcvWcvQcvXcvXcvXcvXcvZcvYcoTcwgcwkcspcwmcpacwocvzcpacwpcpjcwqcrJcwscwucwtcpjcCLcvMcvNcwIcwJcwKcwLcwMcwNcwOcvNcwPcwQcrGaaaaaaaaaaaaaaaaaacqvcwRcwvcwxcCNcwzcwycwBcwAcwDcwCcwFcwEcwScxlcuWcuQcxecqvaaaaaacdOcofcogcohckXcsRcuZcxgcxhcxhcxicxjcxkcCIcxmcxncdOaaaaaacrPaaaaafaaaaafaafaafaaackxaaaaafaaaaafaaaaafaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacptcpHcpHcpHcpHcpHcwUcpHcpHcpHcwUcpHcpHcpHcpHcpHcqYcpHcpHcCncBkcwXcwWcwWcwXcwYcwXcxacwZcxbcwWcCicxccwGcvRcxpcvYcoTcxqcoTcxrcxscpacpacxtcpacxucpjcxvcxvcxwcwucwtcpjbPxcvMcvNcxKcxLcxMcxNcxOcxNcxPcvNcxQcCfcrGaaaaaaaaaaaaaaaaaacqvcxScxTcxUcCecxWcxXcxYcxZcuTcCccuScxAcuTcBBcqvcqvcqvcqvaaaaaacdOcplcpmcplcBscwVcppcrNcrNcyecyfcrNctScomcomcomcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaafcrPaaacgWaaaaaacgWaaaaaaaaacgWaaaaaaaaaaaaaaacgWaaaaaaaaacgWaaaaaacgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacptcpHcsbcsacsacxDcxCcnPcolcnPcxEcolcnPcnPcnPcnPcnQcnPcnNcnLcnKcvKcpHcpHcxJcyccybcyjcgecykcpHcnIcylcyncyncyqcyocoTcxqcyrcnOcyscpacytcpacnFcyucpjcpjcpjcpjcpjcpjcpjbPxcvMcvNcyMcyNcxLcyOcxLcxNcyPcvNcyQcorcrGaaaaaaaaaaaaaaaaaacqvcuVcoqctFctFcyTcywcyVcyWctMctDctNcyxctMcuRcyYcqvaaaaaaaaaaaacdOcplcplcplckXcgfczacrNcrNcrNcyfcrNczbcrNczccrNczdaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaacgWcgWcgWcgWaaaaaaaaacgWcgWcgWcgWcgWcgWcgWaaaaaaaaacgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacptcpHcqXcpHcpHcpHcwUcpHcpHcpHcwUcpHcpHcpHcpHcpHcqYcpHcCQcpHcDBcvKcpHcpHcyzcwYcyAcyBcvXcotcvXcvXcylcgpcyDcyFcyocoTcxqcoTcnOcyHcyGcyJcyIcyKcpacnOcyLczJczJcyUcEGcpdczNczOcvNcxNczPczQcxNczRczSczTcvNczUcpgcrGaaaaaaaaaaaaaaaaaacqvczWcuMcpocuVczYczZcAactFcAbcAccsPcyxczWcyXcAecqvaaaaaaaaaaaackEcdOcAfcAgcAgczecAicAjcAkcAlcAmcAncAocApcAqcokcAraaaaaacrPaafcwjcwjcwjcwjcwjaaackxaafcwjcwjcwjcwjcwjaaacrPaaacgWcgWcgWcgWaaaaaacgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaacgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaIaaaaaaczfcpHcqXcpHczgcrVcrUcrVczhcrVcrUcrVczhcrVcrVcrVczjczkczjcFmczlcyAczmczocznczqczpczrcvXcztczscvXcvXcvXcvXcvXczucqrcprcqrcnOcnOcnOcnOcnOcnOcnOcnOczwczJczJczxcANcAObPxcAPcvNcAQcARcqscATcqAcAVcAWcvNcAXcAYcrGaaaaaaaaaaaaaaaaaacqvcuQcAZcAectFcBacBbcBcctFcBdcBeczAczzczBcBeczDcqvaafaafaaaaaaaaaaaabquaaacdOcBlcqJcrvcBocBpcqJcqOcBrcBpcqJcrzcdOaaaaaabZSaaaaafaaaaafaaaaafaaackxaaaaafaaaaafaafaafaafcrPaaacgWcgWcgWcgWaaaaaacgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaacgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaaaaaaaaaaaIaaaaaaczEcpHcqXcpHcFqcyccqXcpHcFxcyccqXcpHcFycyccpHcpHcFzcpHcFXcycczFczHczGczKczIcAhcAdcAtcvXchjcAucrLcAwcAycujcAAcAzcujcABcujcACculcADcAFcAEcAEcAHcsccBVcBWcBWcBXcBYcAObPxcBZcvNcvNcCacCbcsdcCbcCacCdcvNcrGcsecrGaaaaaaaaaaaaaaaaaacqvctFcsfcuVctFcCgcChcshctFcCjcCkcqycgvcAJcCkcCocrHaaaaaaaaaaaaaaaaaacgwaafcdOcCqcsMclUcomclscsDclqcomclocsYclWcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaafcrPaaacgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaafaaIaafaafczEcALcAKcAScAMcIEcmkcBicBhcJvcBjcBucBtcJUcpHcALcJVcBycBxcLkcBzcnycnycnycnycnycnycnycnyctxcBAczucBCcBDcoTcjlcoTcoTcxqcoTcoTchLcoTcBDcBGcBIcBHcBJcthctfctbcCPciVcAObPwcCRcCScCTcCacAGcAVcBwcCacBLcBKcBMctycCXaaaaaaaaaaaaaaaaaacqvcBNctDcuQcmPcDbcuQcDccDdcDeaafaaachxcBPcBOcBQaaaaaaaaaaacaaaaaaaaaaaaaaacdOcDhcplcplcomcDicplcplcomcDicplcplcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaacgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcpEaaaaaaaaIaaaaaacBScBUcBTcCrcCpcCtcCscCucCpcCtcCscCucCpcCtcCvcCvcCwcCucCpcCtcCxcnyaaacCzcCycCBcCAcCDcCCcCFcCEcCGcCGctBcCHcCKcCJcCMcuicCJcCMcCKcCUctIcCVcCUczuczucAOcuvcuocDPcDQcAObNUcDRcDScDTcCacCbcuEcCbcCacDgcCZcDfaafaaaaaaaaaaaaaaaaaaaaacqvcBNcDVcDjcDXcDXcDjcsPcDYcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcDZcplcplcomcEacplcplcomcEacplcplcdOaaaaaacrPaafcwjcwjcwjcwjcwjaaackxaaacwjcwjcwjcwjcwjaaacrPaaacgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcClcqLcpIcBRcpIcpIcqLcpIcpPcpIcpGcpIcpPcpIcpGcpIcpPcpIcpGcpIcqLcpIcpRcpIcpGcpIcqNaafaaacDlcDkcDncDmcDpcDocCFcDqcCGcDrcDtcDscDvcDucDxcDwcDzcDycDvcDAcDCcDBcCUaaaaafcAOcuLcECcEDaafaaabNUbPxbPxbSkcCaclZcEFclYcCaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcDDcuXcDEcEJcEJcDEcuQcEKcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcplcplcplcomcELcplcplcomcELcplcplcdOaacaaacrPaaaaaaaafaafaafaaaaaacmTaafaaaaaaaafaafaaaaaacrPaaacgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaabgaaaaaaaaaaaaaaaaaaaaacrPaafaafaaaaaqaaaaaaaafcgFcmscmmcDFcgFcmscmmcDFcgFcmscmmcDGcgFaaacgFcDHcmmcDGcgFaaaaafaaacDlcDIcDKcDJcDMcDLcEbcDWcCGcEccEecEdcDvcEfcEhcEgcEjcEicDvcuUcEmcElcCUaaaaaacAOcuYcFhcFiaaaaaabNUbPxbPxbNUcCacmUcmUcmUcCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcEncFncuQcuQcuQcuQcuQcFocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackEcdOcdOcdOcdOcdOcdOcdOcdOcmYcmYcmYckEaaaaaacrPcrPcrPcrPcrPaaaaaaaaacmZaaaaaaaaacrPcrPcrPbZScrPaaacgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaafaaIaaaaaaaafcgFcEocEqcEpcgFcErcEtcEscgFcEucEwcEvcgFaafcgFcExcEzcEycgFaaaaafaaacDlcEAcDncDMcDMcEEcEHcEGcEMcEIcEOcENchccEPcEScERcEUcETcEWcEVchzcEXcCUaafaaacFJchqchocAOchuaaabNUcFMbPxcFNcFOaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrHcqvcqvcFPcFQcDEcDEcDEcFRcFPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqpbqpbqpaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafcfTaafcrPaaaaaaaaaaaaaaaaaaaaacgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaIaaaaafaafcgFcEZcFacEZcgFcFbcFccFbcgFcFdcFecFdcgFaaacgFcFdcFdcFfcgFaaaaafaaacDlcCycFjcDJcDMcDocFkcDqcCGcFlcFpcFmcDvcFqcFscjqcFscFtcDvcFucFwcFvcCUaaLciPciyciLciCciyciycifbNUciEciDcGjaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGlcEJcEJcEJcEJcEJcGlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaaacrPaaaaaaaaaaaaaaaaaacgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaIaafaafaaacgFcEZcFxcEZcgFcFbcFycFbcgFcFdcFzcFdcgFaafcgFcFdcFdcFdcgFaafaafaafcFBcFAcFDcFCcFFcFEcFGcDqcCGcFHcjvcFIcDvcFTcFVcFUcFXcFWcDvcFYcGacFZcCUaaacjIcjCckocknckFckCcjtcGFcGGcGHbNUaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcCmcqxcqxcqxcCocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcrPcrPcrPcrPaaaaaaaaaaaaaaaaaacgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcClcqLcpIcBRcpIcpIcqLcpIcpPcpIcpGcpIcpPcpIcpGcpIcpPcpIcpGcpIcqLcpIcpRcpIcpGcpIcqNaafaaacDlcDkcDncDmcDpcDocCFcDqcCGcDrcDtcDscDvcDucDxcDwcDzcDycDvcDAcDCcmRcCUaaaaafcAOcuLcECcEDaafaaabNUbPxbPxbSkcCaclZcEFclYcCaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcDDcuXcDEcEJcEJcDEcuQcEKcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcplcplcplcomcELcplcplcomcELcplcplcdOaacaaacrPaaaaaaaafaafaafaaaaaacmTaafaaaaaaaafaafaaaaaacrPaaacgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaabgaaaaaaaaaaaaaaaaaaaaacrPaafaafaaaaaqaaaaaaaafcgFcmscmmcDFcgFcmscmmcDFcgFcmscmmcDGcgFaaacgFcDHcmmcDGcgFaaaaafaaacDlcDIcDKcDJcDMcDLcEbcDWcCGcEccEecLjcDvcEfcEhcEgcEjcEicDvcuUcEmcElcCUaaaaaacAOcuYcFhcFiaaaaaabNUbPxbPxbNUcCacmUcmUcmUcCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcEncFncuQcuQcuQcuQcuQcFocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackEcdOcdOcdOcdOcdOcdOcdOcdOcmYcmYcmYckEaaaaaacrPcrPcrPcrPcrPaaaaaaaaacmZaaaaaaaaacrPcrPcrPbZScrPaaacgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaafaaIaaaaaaaafcgFcEocEqcEpcgFcErcEtcEscgFcEucEwcEvcgFaafcgFcExcEzcEycgFaaaaafaaacDlcEAcDncDMcDMcEEcEHcdjcEMcEIcEOcENchccEPcEScERcEUcETcEWcEVchzcEXcCUaafaaacFJchqchocAOchuaaabNUcFMccTcFNcFOaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrHcqvcqvcFPcFQcDEcDEcDEcFRcFPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqpbqpbqpaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafcfTaafcrPaaaaaaaaaaaaaaaaaaaaacgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaIaaaaafaafcgFcEZcFacEZcgFcFbcFccFbcgFcFdcFecFdcgFaaacgFcFdcFdcFfcgFaaaaafaaacDlcCycFjcDJcDMcDocFkcDqcCGcFlcFpcfMcDvcBFcFscjqcFscFtcDvcFucFwcFvcCUaaLciPciyciLciCciyciycifbNUciEciDcGjaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGlcEJcEJcEJcEJcEJcGlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaaacrPaaaaaaaaaaaaaaaaaacgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaIaafaafaaacgFcEZcLqcEZcgFcFbcLrcFbcgFcFdcLscFdcgFaafcgFcFdcLtcFdcgFaafaafaafcFBcFAcFDcFCcFFcFEcFGcDqcCGcFHcjvcFIcDvcFTcFVcFUcLucFWcDvcFYcGacFZcCUaaacjIcjCckocknckFckCcjtcGFcGGcGHbNUaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcCmcqxcqxcqxcCocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcrPcrPcrPcrPaaaaaaaaaaaaaaaaaacgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaaaaaacgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFaaacGbcgFcgFcgFcgFaaaaaaaaaaaacBAcBAcBAcBAcBAclCcGccGccGccGcclGcGccGfcGicGhcGicGkcGccGcclucGccGccGccjIcjCclpclgclfckQckNaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaafaaacGQcGRcGRcGRcGScGncGpcGocGrcGqcGtcGscmwcGucmpcGwcGzcGycGBcGAcGDcGCcGIcGEcGKcmGcGEcGccjIcjCcnecmQclfcnfclVaafaaacGQcGLcGQcGLcGQcGLaafcGMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaafaaacGQcGRcGRcGRcGScGncGpcGocGrcfNcGtcGscmwcGucmpcGwcGzcGycGBcGAcGDcGCcGIcGEcGKcmGcGEcGccjIcjCcnecmQclfcnfclVaafaaacGQcGLcGQcGLcGQcGLaafcGMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafcHncjVcHpaaacHncjVcHpaaacHncjVcHpaafaafaaaaafaafaafaafaafcHqcGRcGRcGRcGScGncGOcGNcGTcGPcnucGUcGXcGWcGZcGYcHbcHacHdcHccHdcHdcHdcHecHdcHfcHgcGccnhciyciyciyciyciycngaafaafcHhcHhcHhcHhcHhcHhaafcGMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaabgaaacgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaacHncjWcHpaaacHncjWcHpaaacHncjWcHpaafaafaaaaafaaaaaacHKaafcGQcGRcGRcGRcGScGncGOcHicHkcHjcnwcGUcHocHmcHrcGKcGKcGKcHtcHscHucGKcGKcHmcHwcHvcHxcGccGccGccHyaaaaaaaaaaaacHzaaacHAcHAcHAcHAcHAcHAaafcGMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncjWcHpaaacHncjWcHpaafcHncjWcHpaafaaaaaaaafaafcIcaaaaafcHqcGRcGRcGRcGScGncHCcHBcHEcHDcnEcHFcHIcHHcHLcHJcHJcHJcHNcHMcHOcHJcHJcHPcHRcHQcHTcHScHVcHUcHXcHWcHWcHWcHWcHWcHWcHYcHZcHYcHZcHYcHhaafcGMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaaaaaaaaaaaaaafaafaaaaafaaaaaaaaaaaaaafcIacIdcIbcIfcIecIgcGscIhcGKcGKcGKcIjcIicIlcIkcIncKWcIpcIocIrcIqcItcIscIvcIucHXcIwcIxcIwcIxcIwcIxcIwcIxcIwcIxcIwcHhaafcGMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgWcgWcgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaafaaaaaaaaaaaaaafaafcIJcIKcIKcIKcIKcILcILcILcILcILcKScILcGccIycGKcGKcGKcIzcGccKUcIAcKVcGccIEcIDcIFcHQcIHcIGcKTcGcaaacHAcHAcHAcHAcINcHAcHAcHAcHAcHAcHAcHAaafcGMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaafaaaaaaaaaaaaaafaafcIJcIKcIKcIKcIKcILcILcILcILcILcKScILcGccIycGKcGKcGKcLwcGccKUcIAcKVcGccLxcIDcIFcHQcIHcIGcKTcGcaaacHAcHAcHAcHAcINcHAcHAcHAcHAcHAcHAcHAaafcGMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgWcgWcgWcgWcgWcgWcgWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafczCaafaafaafczCaafaaaaafczCaafaaaaaaaaaaaaaaacIUcIVcIWcIXcIYcIOcJacJbcJcciFcJecJfcJgcJecGccKRcIPcGKcGKcIScIRcIZcITcJdcIRcJicJhcHRcHQcJkcJjcJlcGcaafcHhcHhcHhcHhcHhcHhcHhcHhcHhcHhcHhcHhaafaanaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcydcxzcxycxxcxxcxxcxxcxxcxxcxxcxxcxxcxxcxxczicxzcxzcxzcKPcKQcKNcKOcKMcJDcJEcKLcJGcJHcJHcJHcJIcJJcJKcGccJmcJmcGKcGKcIScJncJpcJocJqcJncJicGKcIrcJrcItcGKcJscGcaafcHhcHhcHhcHhcHhcHhcHhcHhcHhcHhcHhcHhaafcGMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafcxfaafaaaaafcxfaafaaaaafcxfaafaaaaaaaaaaaaaaacIUcIVcJRcJScJTcJUcIKcJVcJWcJecJecJXcJXcJYcGccJmcJmcGKcGKcIScJtcJpcJucJvcJtcJxcJwcJLcJycJNcJMcJOcGcaaacHAcHAcHAcHAcINcHAcHAcHAcHAcHAcHAcHAaafaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafcxfaafaaaaafcxfaafaaaaafcxfaafaaaaaaaaaaaaaaacIUcIVcJRcJScJTcLvcIKcLpcJWcJecJecJXcJXcJYcGccJmcJmcGKcGKcIScJtcJpcJucLAcJtcJxcJwcJLcJycJNcJMcJOcGcaaacHAcHAcHAcHAcINcHAcHAcHAcHAcHAcHAcHAaafaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafcKfcIKcIKcIKcIKcKgcKhcKicKicKjcKgcKgcGccGccGscGccGccGccGccGccJPcGccGccGccGccGccGscGccGccGccGcaafcHhcHhcHhcHhcHhcHhcHhcHhcHhcHhcHhcHhaafaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHncwrcHpaafcHncwrcHpaaacHncwrcHpaaaaaaaaaaafaaaaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacJQaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaacHqcJZcHqcJZcKacJZcHqcJZcHqcJZcHqcJZaafaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaLaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/exodus-2.dmm b/maps/exodus-2.dmm index 654ff2942c6..0eb63301dcd 100644 --- a/maps/exodus-2.dmm +++ b/maps/exodus-2.dmm @@ -939,7 +939,7 @@ "sc" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "sd" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "supply_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/supply/dock) "se" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/structure/sign/nosmoking_1{pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"sf" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/syringe,/obj/item/clothing/mask/surgical,/obj/item/clothing/gloves/latex,/obj/item/weapon/surgicaldrill,/obj/structure/closet/secure_closet/medical_wall{pixel_x = 32; pixel_y = 0; req_access = null; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"sf" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/syringe,/obj/item/clothing/mask/surgical,/obj/item/clothing/gloves/latex,/obj/item/weapon/surgicaldrill,/obj/structure/closet/secure_closet/medical_wall{pixel_x = 32; pixel_y = 0; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "sg" = (/obj/machinery/door/window/northright{icon_state = "right"; dir = 2},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) "sh" = (/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) "si" = (/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) @@ -1035,7 +1035,7 @@ "tU" = (/obj/machinery/teleport/station,/turf/unsimulated/floor{icon_state = "engine"},/area/centcom/control) "tV" = (/obj/machinery/teleport/hub,/turf/unsimulated/floor{icon_state = "engine"},/area/centcom/control) "tW" = (/turf/unsimulated/floor{icon_state = "engine"},/area/centcom/control) -"tX" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "CentComPort"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"tX" = (/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/control) "tY" = (/obj/machinery/vending/assist,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "tZ" = (/obj/machinery/shieldgen,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "ua" = (/obj/machinery/shield_capacitor,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) @@ -1050,7 +1050,7 @@ "uj" = (/obj/machinery/portable_atmospherics/canister/air,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "uk" = (/obj/structure/table/rack,/obj/item/clothing/suit/armor/vest/ert/security,/obj/item/clothing/suit/armor/vest/ert/security,/obj/item/clothing/suit/armor/vest/ert/security,/obj/item/clothing/suit/armor/vest/ert/security,/obj/item/clothing/head/helmet/ert/security,/obj/item/clothing/head/helmet/ert/security,/obj/item/clothing/head/helmet/ert/security,/obj/item/clothing/head/helmet/ert/security,/obj/item/weapon/storage/backpack/ert/security,/obj/item/weapon/storage/backpack/ert/security,/obj/item/weapon/storage/backpack/ert/security,/obj/item/weapon/storage/backpack/ert/security,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "ul" = (/obj/machinery/shieldwallgen,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) -"um" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/creed) +"um" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) "un" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) "uo" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control) "up" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control) @@ -1058,10 +1058,10 @@ "ur" = (/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) "us" = (/turf/space,/area/centcom/specops) "ut" = (/obj/machinery/mech_bay_recharge_port,/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/specops) -"uu" = (/obj/machinery/camera{c_tag = "Assault Armor North"; dir = 2; network = list("ERT")},/obj/mecha/combat/gygax/dark,/turf/unsimulated/floor{icon_state = "delivery"; dir = 6},/area/centcom/specops) +"uu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/control) "uv" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; listening = 0; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "uw" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 9},/area/centcom/specops) -"ux" = (/obj/machinery/door/blast/regular{id = "CentComPort"; name = "Security Doors"},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control) +"ux" = (/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{name = "plating"},/area/centcom/control) "uy" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/gun/nuclear,/obj/item/weapon/gun/energy/gun/nuclear,/obj/item/weapon/gun/energy/gun/nuclear,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "uz" = (/obj/machinery/vending/tool,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "uA" = (/obj/structure/table/woodentable{dir = 10},/obj/machinery/door_control{name = "Spec Ops Ready Room"; desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; pixel_y = 15; req_access = list(11); id = "CREED"},/obj/machinery/door_control{name = "Mech Storage"; desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; pixel_y = 0; req_access = list(11); id = "ASSAULT"},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) @@ -1094,7 +1094,7 @@ "vb" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "vc" = (/obj/structure/table/reinforced,/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion,/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser,/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster,/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "vd" = (/obj/structure/table/rack,/obj/item/clothing/head/beret/centcom/officer,/obj/item/clothing/head/beret/centcom/officer,/obj/item/clothing/head/beret/centcom/officer,/obj/item/clothing/head/beret/centcom/officer,/obj/item/clothing/head/beret/centcom/officer,/obj/item/clothing/head/beret/centcom/officer,/obj/item/clothing/mask/balaclava,/obj/item/clothing/mask/balaclava,/obj/item/clothing/mask/balaclava,/obj/item/clothing/mask/balaclava,/obj/item/clothing/mask/balaclava,/obj/item/clothing/mask/balaclava,/obj/item/clothing/accessory/holster/waist,/obj/item/clothing/accessory/holster/waist,/obj/item/clothing/accessory/holster/waist,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) -"ve" = (/obj/machinery/door/airlock/centcom{name = "Creed's Office"; opacity = 1; req_access = list(108)},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/creed) +"ve" = (/obj/machinery/door/airlock/centcom{name = "Creed's Office"; opacity = 1; req_access = list(108)},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) "vf" = (/obj/machinery/door/airlock/centcom{name = "Maintenance Access"; opacity = 1; req_access = list(106)},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) "vg" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT"; name = "Assault Armor Storage"; p_open = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) "vh" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/wall,/area/prison/solitary) @@ -1123,7 +1123,7 @@ "vE" = (/obj/machinery/pipedispenser/orderable,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "vF" = (/obj/structure/closet/secure_closet/courtroom,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control) "vG" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control) -"vH" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/obj/machinery/camera{c_tag = "Court"; invisibility = 1; network = list("thunder"); pixel_x = 10},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control) +"vH" = (/obj/mecha/combat/gygax/dark,/obj/machinery/camera/network/ert{c_tag = "Assault Armor North"},/turf/unsimulated/floor{icon_state = "delivery"; dir = 6},/area/centcom/specops) "vI" = (/obj/mecha/medical/odysseus/loaded,/turf/unsimulated/floor{icon_state = "delivery"; dir = 6},/area/centcom/specops) "vJ" = (/obj/structure/table/reinforced,/obj/item/mecha_parts/mecha_equipment/tool/sleeper,/obj/item/mecha_parts/mecha_equipment/tool/sleeper,/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "vK" = (/obj/machinery/power/emitter,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) @@ -1154,7 +1154,7 @@ "wj" = (/obj/structure/table/reinforced,/obj/item/mecha_parts/mecha_equipment/teleporter,/obj/item/mecha_parts/mecha_tracking,/obj/item/mecha_parts/mecha_tracking,/obj/item/mecha_parts/mecha_tracking,/obj/item/mecha_parts/mecha_tracking,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "wk" = (/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor{icon_state = "carpet9-4"; dir = 4},/area/holodeck/source_courtroom) "wl" = (/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) -"wm" = (/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) +"wm" = (/obj/structure/sign/nosmoking_2,/turf/unsimulated/wall,/area/centcom/living) "wn" = (/obj/structure/table/reinforced,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "wo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) "wp" = (/obj/machinery/cell_charger,/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) @@ -1172,7 +1172,7 @@ "wB" = (/obj/structure/table/reinforced,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/flash,/obj/item/device/flash,/obj/item/weapon/rcd,/obj/item/weapon/rcd,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd,/obj/item/weapon/rcd,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "wC" = (/obj/structure/table/reinforced,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "wD" = (/obj/structure/table/rack,/obj/item/weapon/rig/ert/medical,/obj/item/clothing/accessory/storage/black_vest,/obj/item/weapon/rig/ert/medical,/obj/item/clothing/accessory/storage/black_vest,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) -"wE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom) +"wE" = (/obj/structure/sign/securearea,/turf/unsimulated/wall,/area/centcom/living) "wF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) "wG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) "wH" = (/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) @@ -1215,12 +1215,12 @@ "xs" = (/obj/mecha/working/hoverpod,/turf/unsimulated/floor{icon_state = "delivery"; dir = 6},/area/centcom/specops) "xt" = (/obj/structure/table/rack,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/maneuvering_jets,/obj/item/rig_module/maneuvering_jets,/obj/item/rig_module/grenade_launcher,/obj/item/rig_module/device/drill,/obj/item/rig_module/device/drill,/obj/item/rig_module/device/healthscanner,/obj/item/rig_module/device/healthscanner,/obj/item/rig_module/device/plasmacutter,/obj/item/rig_module/device/plasmacutter,/obj/item/rig_module/device/rcd,/obj/item/rig_module/device/rcd,/obj/item/rig_module/chem_dispenser/injector,/obj/item/rig_module/chem_dispenser/injector,/obj/item/rig_module/chem_dispenser/combat,/obj/item/rig_module/chem_dispenser/combat,/obj/item/rig_module/mounted/egun,/obj/item/rig_module/mounted/egun,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "xu" = (/obj/machinery/door/airlock/centcom{name = "Armory Special Operations"; opacity = 1; req_access = list(103)},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) -"xv" = (/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) +"xv" = (/obj/structure/sign/securearea,/turf/unsimulated/wall,/area/centcom/control) "xw" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access = list(103)},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/specops) "xx" = (/obj/machinery/door/airlock/centcom{name = "Bridge"; opacity = 1; req_access = list(109)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "xy" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT0"; name = "Launch Bay #0"; p_open = 0},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) "xz" = (/obj/machinery/mass_driver{dir = 8; id = "ASSAULT0"; name = "gravpult"},/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/specops) -"xA" = (/obj/machinery/camera{c_tag = "Assault Armor South"; dir = 1; network = list("ERT")},/turf/unsimulated/floor{icon_state = "loadingarea"; dir = 8},/area/centcom/specops) +"xA" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/obj/machinery/camera/network/thunder{c_tag = "Court"; pixel_x = 10; pixel_y = -6},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control) "xB" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "xC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/control) "xD" = (/obj/machinery/computer/robotics,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) @@ -1234,7 +1234,7 @@ "xL" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) "xM" = (/obj/structure/table/reinforced,/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,/obj/item/mecha_parts/mecha_equipment/repair_droid,/obj/item/mecha_parts/mecha_equipment/repair_droid,/obj/item/mecha_parts/mecha_equipment/repair_droid,/obj/item/mecha_parts/mecha_equipment/repair_droid,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "xN" = (/obj/structure/table/reinforced,/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp,/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp,/obj/item/mecha_parts/mecha_equipment/tool/passenger,/obj/item/mecha_parts/mecha_equipment/tool/passenger,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) -"xO" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/specops) +"xO" = (/obj/structure/sign/securearea,/turf/unsimulated/wall,/area/centcom/specops) "xP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) "xQ" = (/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "xR" = (/obj/structure/sign/redcross{pixel_y = -32},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) @@ -1244,7 +1244,7 @@ "xV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor,/area/centcom/control) "xW" = (/obj/machinery/door/airlock/centcom{name = "Courthouse"; opacity = 1},/turf/unsimulated/floor{icon_state = "whiteshiny"},/area/centcom/control) "xX" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control) -"xY" = (/obj/machinery/camera{c_tag = "Jury Room"; network = list("thunder"); pixel_x = 10},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) +"xY" = (/obj/structure/sign/nosmoking_2,/turf/unsimulated/wall,/area/centcom/control) "xZ" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) "ya" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "yb" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/item/weapon/handcuffs,/obj/item/weapon/storage/pill_bottle/dice,/obj/item/weapon/deck,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) @@ -1316,11 +1316,11 @@ "zp" = (/obj/machinery/computer/security/telescreen{name = "Spec. Ops. Monitor"; network = list("ERT")},/obj/structure/table/woodentable{dir = 5},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) "zq" = (/obj/structure/table/woodentable{dir = 5},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) "zr" = (/obj/machinery/computer/card/centcom,/obj/item/weapon/card/id/centcom,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) -"zs" = (/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/centcom/control) -"zt" = (/obj/item/weapon/stool{pixel_y = 8},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/centcom/control) -"zu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor,/area/centcom/control) -"zv" = (/obj/machinery/computer/secure_data,/turf/unsimulated/floor{dir = 8; icon_state = "red"},/area/centcom/control) -"zw" = (/obj/item/weapon/stool{pixel_y = 8},/turf/unsimulated/floor{tag = "icon-red (EAST)"; icon_state = "red"; dir = 4},/area/centcom/control) +"zs" = (/obj/machinery/camera/network/ert{c_tag = "Assault Armor South"; dir = 1},/turf/unsimulated/floor{icon_state = "loadingarea"; dir = 8},/area/centcom/specops) +"zt" = (/obj/structure/sign/nosmoking_2,/turf/unsimulated/wall,/area/centcom/specops) +"zu" = (/obj/machinery/camera/network/thunder{c_tag = "Court - Jury Room"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) +"zv" = (/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/centcom/holding) +"zw" = (/obj/item/weapon/stool{pixel_y = 8},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/centcom/holding) "zx" = (/obj/structure/table/rack,/obj/item/clothing/suit/armor/vest/ert/medical,/obj/item/clothing/suit/armor/vest/ert/medical,/obj/item/clothing/suit/armor/vest/ert/medical,/obj/item/clothing/suit/armor/vest/ert/medical,/obj/item/clothing/head/helmet/ert/medical,/obj/item/clothing/head/helmet/ert/medical,/obj/item/clothing/head/helmet/ert/medical,/obj/item/clothing/head/helmet/ert/medical,/obj/item/weapon/storage/backpack/ert/medical,/obj/item/weapon/storage/backpack/ert/medical,/obj/item/weapon/storage/backpack/ert/medical,/obj/item/weapon/storage/backpack/ert/medical,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "zy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor,/area/centcom/control) "zz" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space,/area/space) @@ -1329,18 +1329,18 @@ "zC" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/device/flash,/obj/item/device/flash,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "zD" = (/obj/structure/table/rack,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "zE" = (/obj/machinery/computer/pod{id = "NTrasen"; name = "Hull Door Control"},/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) -"zF" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/centcom/control) -"zG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor,/area/centcom/control) -"zH" = (/turf/unsimulated/floor{dir = 8; icon_state = "red"},/area/centcom/control) -"zI" = (/turf/unsimulated/floor{icon_state = "green"; dir = 9},/area/centcom/control) -"zJ" = (/turf/unsimulated/floor{icon_state = "green"; dir = 5},/area/centcom/control) +"zF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor,/area/centcom/holding) +"zG" = (/obj/machinery/computer/secure_data,/turf/unsimulated/floor{dir = 8; icon_state = "red"},/area/centcom/holding) +"zH" = (/obj/item/weapon/stool{pixel_y = 8},/turf/unsimulated/floor{tag = "icon-red (EAST)"; icon_state = "red"; dir = 4},/area/centcom/holding) +"zI" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/centcom/holding) +"zJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor,/area/centcom/holding) "zK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor,/area/centcom/control) "zL" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) "zM" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"; dir = 4},/turf/space,/area/shuttle/specops/centcom) "zN" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/specops/centcom) "zO" = (/obj/structure/table/rack,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "zP" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/specops/centcom) -"zQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/unsimulated/floor,/area/centcom/control) +"zQ" = (/turf/unsimulated/floor{dir = 8; icon_state = "red"},/area/centcom/holding) "zR" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/shuttle/escape/centcom) "zS" = (/obj/structure/window/shuttle{icon_state = "window4"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) "zT" = (/obj/structure/window/shuttle{icon_state = "window8"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) @@ -1355,7 +1355,7 @@ "Ac" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) "Ad" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) "Ae" = (/obj/machinery/vending/snack{name = "hacked Getmore Chocolate Corp"; prices = list()},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"Af" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"Af" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 1},/area/centcom/holding) "Ag" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT"; name = "Assault Weapon Storage"; p_open = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) "Ah" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "Ai" = (/turf/simulated/shuttle/wall{icon_state = "swallc4"},/area/shuttle/escape/centcom) @@ -1365,8 +1365,8 @@ "Am" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) "An" = (/turf/simulated/mineral,/area/syndicate_mothership{name = "\improper Raider Base"}) "Ao" = (/turf/unsimulated/wall{icon_state = "iron6"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Ap" = (/obj/structure/bed,/obj/item/weapon/bedsheet/red,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/centcom/control) -"Aq" = (/turf/unsimulated/floor{tag = "icon-red (EAST)"; icon_state = "red"; dir = 4},/area/centcom/control) +"Ap" = (/turf/unsimulated/floor{icon_state = "green"; dir = 9},/area/centcom/holding) +"Aq" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 4},/area/centcom/holding) "Ar" = (/turf/unsimulated/wall{icon_state = "iron12"},/area/syndicate_mothership{name = "\improper Raider Base"}) "As" = (/turf/unsimulated/wall{icon_state = "iron10"},/area/syndicate_mothership{name = "\improper Raider Base"}) "At" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/escape/centcom) @@ -1381,18 +1381,18 @@ "AC" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) "AD" = (/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "AE" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"; dir = 4},/turf/space,/area/shuttle/specops/centcom) -"AF" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{dir = 8; icon_state = "red"},/area/centcom/control) -"AG" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{tag = "icon-red (EAST)"; icon_state = "red"; dir = 4},/area/centcom/control) +"AF" = (/turf/unsimulated/floor{icon_state = "green"; dir = 5},/area/centcom/holding) +"AG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/unsimulated/floor,/area/centcom/holding) "AH" = (/turf/unsimulated/wall,/area/centcom/ferry) "AI" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT3"; name = "Launch Bay #3"; p_open = 0},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) -"AJ" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/computer/skills{icon_state = "medlaptop"; pixel_x = 3; pixel_y = 4},/obj/structure/window/reinforced,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"AJ" = (/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/holding) "AK" = (/turf/unsimulated/wall{icon_state = "iron3"},/area/syndicate_mothership{name = "\improper Raider Base"}) "AL" = (/obj/structure/bed/chair/holochair,/turf/simulated/floor/holofloor{icon_state = "dark"},/area/holodeck/source_courtroom) "AM" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "AN" = (/obj/structure/window/reinforced/holowindow{dir = 1},/obj/structure/window/reinforced/holowindow{dir = 8},/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor{icon_state = "carpet6-2"; dir = 4},/area/holodeck/source_courtroom) "AO" = (/obj/machinery/door/window/holowindoor{name = "Red Team"},/turf/simulated/floor/holofloor{icon_state = "dark"},/area/holodeck/source_emptycourt) -"AP" = (/obj/machinery/atm{pixel_x = -26},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control) -"AQ" = (/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/control) +"AP" = (/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/holding) +"AQ" = (/obj/machinery/door/airlock/glass_security{name = "Holding Cell"; req_access = list(2)},/turf/unsimulated/floor,/area/centcom/holding) "AR" = (/turf/simulated/shuttle/wall{icon_state = "swall13"; dir = 2},/area/shuttle/escape/centcom) "AS" = (/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) "AT" = (/turf/simulated/shuttle/wall{icon_state = "swall14"; dir = 2},/area/shuttle/escape/centcom) @@ -1403,11 +1403,11 @@ "AY" = (/turf/unsimulated/floor{icon_state = "warnplate"; dir = 8},/area/centcom/ferry) "AZ" = (/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) "Ba" = (/obj/structure/table,/obj/effect/decal/cleanable/cobweb2,/obj/effect/decal/cleanable/cobweb2{icon_state = "spiderling"; name = "dead spider"; tag = "icon-spiderling"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Bb" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/ferry) -"Bc" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/ferry) -"Bd" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/control) -"Be" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control) -"Bf" = (/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/control) +"Bb" = (/obj/machinery/door/blast/regular{id = "CentComPort"; name = "Security Doors"},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/holding) +"Bc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) +"Bd" = (/obj/machinery/door/airlock/centcom{name = "Arrivals Processing"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) +"Be" = (/obj/structure/bed,/obj/item/weapon/bedsheet/red,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/centcom/holding) +"Bf" = (/obj/machinery/door/airlock/glass_security{name = "Holding Cell"; req_access = list(2)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) "Bg" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/extinguisher,/obj/item/weapon/crowbar,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "Bh" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/holofloor{dir = 4; icon_state = "wood_siding8"},/area/holodeck/source_picnicarea) "Bi" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/holofloor{icon_state = "wood_siding6"; dir = 2},/area/holodeck/source_picnicarea) @@ -1421,7 +1421,7 @@ "Bq" = (/obj/structure/window/shuttle{icon_state = "window8"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/transport1/centcom) "Br" = (/turf/simulated/shuttle/wall{icon_state = "swall14"; dir = 2},/area/shuttle/transport1/centcom) "Bs" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/turf/space,/area/shuttle/transport1/centcom) -"Bt" = (/obj/machinery/door/airlock/external{frequency = 1380; glass = 1380; icon_state = "door_locked"; id_tag = "centcom_shuttle_bay_door"; locked = 1; name = "Transport Airlock"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/ferry) +"Bt" = (/turf/unsimulated/floor{tag = "icon-red (EAST)"; icon_state = "red"; dir = 4},/area/centcom/holding) "Bu" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "Bv" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_shuttle_port_hatch"; locked = 1; name = "Port Docking Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) "Bw" = (/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) @@ -1433,20 +1433,20 @@ "BC" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "BD" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/shuttle/transport1/centcom) "BE" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/obj/structure/window/reinforced,/turf/space,/area/shuttle/transport1/centcom) -"BF" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/control) -"BG" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/evac) +"BF" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Arrivals Processing"; req_access = list(101)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) +"BG" = (/obj/machinery/computer/card,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) "BH" = (/obj/structure/window/reinforced/holowindow,/obj/machinery/door/window/holowindoor{base_state = "right"; dir = 1; icon_state = "right"; name = "Witness Box"},/obj/structure/bed/chair/holochair,/turf/simulated/floor/holofloor{icon_state = "dark"},/area/holodeck/source_courtroom) "BI" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/transport1/centcom) "BJ" = (/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "BK" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "BL" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "BM" = (/obj/structure/bed,/obj/item/weapon/bedsheet/orange,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"BN" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/unsimulated/wall,/area/centcom/ferry) -"BO" = (/obj/machinery/door/airlock/external{name = "Arrivals Bar Airlock"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/ferry) -"BP" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "greencorner"; dir = 4},/area/centcom/control) -"BQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/control) -"BR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) -"BS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) +"BN" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/extinguisher,/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_shuttle"; pixel_x = 8; pixel_y = 25; req_one_access = list(13); tag_door = "escape_shuttle_hatch"},/obj/machinery/camera/network/crescent{c_tag = "Shuttle Bridge West"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"BO" = (/obj/machinery/status_display{pixel_y = 30},/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin,/obj/machinery/camera/network/crescent{c_tag = "Shuttle Bridge East"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"BP" = (/turf/unsimulated/floor{icon_state = "green"; dir = 10},/area/centcom/holding) +"BQ" = (/obj/structure/bed/chair/office/dark,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "CentComPort"; name = "Security Doors"; pixel_x = -12; pixel_y = -25; req_access = list(101)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) +"BR" = (/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) +"BS" = (/obj/machinery/computer/secure_data,/obj/machinery/camera/network/crescent{c_tag = "Crescent Arrivals North"; dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) "BT" = (/obj/structure/bed/chair{dir = 4},/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "BU" = (/obj/structure/table/woodentable/holotable,/obj/structure/window/reinforced/holowindow,/obj/structure/window/reinforced/holowindow{dir = 4},/turf/simulated/floor/holofloor{icon_state = "dark"},/area/holodeck/source_courtroom) "BV" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/shuttle/escape/centcom) @@ -1457,62 +1457,62 @@ "Ca" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "Cb" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/shuttle/transport1/centcom) "Cc" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/space,/area/shuttle/transport1/centcom) -"Cd" = (/obj/structure/bed/chair/comfy/brown,/turf/unsimulated/floor{dir = 9; icon_state = "carpetside"},/area/centcom/ferry) -"Ce" = (/obj/structure/bed/chair/comfy/brown,/turf/unsimulated/floor{dir = 1; icon_state = "carpetside"},/area/centcom/ferry) -"Cf" = (/obj/structure/bed/chair/comfy/brown,/turf/unsimulated/floor{dir = 5; icon_state = "carpetside"},/area/centcom/ferry) -"Cg" = (/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/ferry) -"Ch" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/ferry) -"Ci" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/ferry) -"Cj" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "greencorner"; dir = 1},/area/centcom/control) -"Ck" = (/obj/machinery/door/airlock/glass{name = "Arrivals Processing"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) -"Cl" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) -"Cm" = (/turf/unsimulated/floor{dir = 4; heat_capacity = 1; icon_state = "warning"},/area/centcom/evac) +"Cd" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) +"Ce" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{dir = 8; icon_state = "red"},/area/centcom/holding) +"Cf" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{tag = "icon-red (EAST)"; icon_state = "red"; dir = 4},/area/centcom/holding) +"Cg" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "CentComPort"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) +"Ch" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/door/window/southright{name = "Arrivals Processing"; req_access = list(101)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) +"Ci" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/computer/skills{icon_state = "medlaptop"; pixel_x = 3; pixel_y = 4},/obj/structure/window/reinforced,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) +"Cj" = (/obj/machinery/atm{pixel_x = -26},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/holding) +"Ck" = (/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/holding) +"Cl" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) +"Cm" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/holding) "Cn" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) -"Co" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/evac) -"Cp" = (/obj/machinery/door/airlock/glass_security{name = "Holding Cell"; req_access = list(2)},/turf/unsimulated/floor,/area/centcom/control) +"Co" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) +"Cp" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/holding) "Cq" = (/obj/structure/table/woodentable/holotable,/obj/structure/window/reinforced/holowindow,/turf/simulated/floor/holofloor{icon_state = "dark"},/area/holodeck/source_courtroom) "Cr" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "Cs" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/transport1/centcom) "Ct" = (/turf/simulated/shuttle/wall{icon_state = "swall13"; dir = 2},/area/shuttle/transport1/centcom) -"Cu" = (/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/centcom/ferry) -"Cv" = (/turf/unsimulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/centcom/ferry) -"Cw" = (/turf/unsimulated/floor{dir = 4; icon_state = "carpetside"},/area/centcom/ferry) -"Cx" = (/obj/machinery/door/airlock/glass{name = "Arrivals Bar"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/ferry) -"Cy" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/ferry) -"Cz" = (/obj/machinery/door/airlock/glass{name = "Arrivals Processing"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/ferry) -"CA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) +"Cu" = (/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/holding) +"Cv" = (/obj/machinery/status_display{pixel_y = 30},/obj/machinery/camera/network/crescent{c_tag = "Shuttle Cell"},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) +"Cw" = (/obj/machinery/door/airlock/external{frequency = 1380; glass = 1380; icon_state = "door_locked"; id_tag = "centcom_shuttle_bay_door"; locked = 1; name = "Transport Airlock"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/holding) +"Cx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) +"Cy" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/holding) +"Cz" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/unsimulated/wall,/area/centcom/holding) +"CA" = (/obj/machinery/door/airlock/external{name = "Arrivals Bar Airlock"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/holding) "CB" = (/turf/simulated/floor/holofloor{icon_state = "carpet5-1"; dir = 4},/area/holodeck/source_theatre) "CC" = (/obj/structure/window/shuttle{icon_state = "window2"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) "CD" = (/obj/structure/bed/chair/holochair{dir = 1},/turf/simulated/floor/holofloor{icon_state = "carpet15-15"; dir = 4},/area/holodeck/source_courtroom) -"CE" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/centcom/ferry) -"CF" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/centcom/ferry) -"CG" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/turf/unsimulated/floor{dir = 6; icon_state = "carpetside"},/area/centcom/ferry) -"CH" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "greencorner"},/area/centcom/control) -"CI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) -"CJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) -"CK" = (/turf/unsimulated/floor{icon_state = "warning"},/area/centcom/evac) -"CL" = (/obj/machinery/door/airlock/centcom{name = "Arrivals Processing"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"CE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) +"CF" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "greencorner"; dir = 4},/area/centcom/holding) +"CG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) +"CH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) +"CI" = (/obj/structure/bed/chair/comfy/brown,/turf/unsimulated/floor{dir = 1; icon_state = "carpetside"},/area/centcom/holding) +"CJ" = (/obj/structure/bed/chair/comfy/brown,/turf/unsimulated/floor{dir = 9; icon_state = "carpetside"},/area/centcom/holding) +"CK" = (/obj/structure/bed/chair/comfy/brown,/turf/unsimulated/floor{dir = 5; icon_state = "carpetside"},/area/centcom/holding) +"CL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) "CM" = (/obj/structure/window/shuttle{icon_state = "window3"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) "CN" = (/turf/unsimulated/wall,/area/centcom/holding) "CO" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/ashtray/bronze{pixel_x = -1; pixel_y = 1},/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) "CP" = (/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) -"CQ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/control) -"CR" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "greencorner"; dir = 8},/area/centcom/control) -"CS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/control) -"CT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 0},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) +"CQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) +"CR" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "greencorner"; dir = 1},/area/centcom/holding) +"CS" = (/obj/machinery/camera/network/crescent{c_tag = "Crescent Arrivals East"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) +"CT" = (/turf/unsimulated/floor{dir = 4; heat_capacity = 1; icon_state = "warning"},/area/centcom/holding) "CU" = (/obj/structure/bed/chair/holochair{dir = 1},/turf/simulated/floor/holofloor{icon_state = "carpet11-12"; dir = 4},/area/holodeck/source_courtroom) -"CV" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 0},/turf/unsimulated/wall,/area/centcom/evac) -"CW" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"; name = "Clothing Storage"},/obj/item/clothing/head/bandana{pixel_y = -10},/obj/item/clothing/glasses/sunglasses,/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/ferry) -"CX" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"; name = "Clothing Storage"},/obj/item/clothing/glasses/sunglasses,/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/ferry) -"CY" = (/obj/structure/closet/athletic_mixed,/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/ferry) +"CV" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "centcom_dock_airlock"; locked = 1; name = "Arrivals Airlock"; req_access = list(13)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/holding) +"CW" = (/obj/machinery/camera/network/crescent{c_tag = "Shuttle Center"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"CX" = (/turf/unsimulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/centcom/holding) +"CY" = (/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/centcom/holding) "CZ" = (/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/obj/structure/closet/athletic_mixed,/turf/unsimulated/floor{tag = "icon-siding4"; name = "plating"; icon_state = "siding4"},/area/centcom/holding) "Da" = (/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/turf/unsimulated/floor{tag = "icon-siding8"; name = "plating"; icon_state = "siding8"},/area/centcom/holding) -"Db" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) -"Dc" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) -"Dd" = (/turf/unsimulated/floor{icon_state = "warning"; dir = 1; heat_capacity = 1},/area/centcom/evac) -"De" = (/turf/unsimulated/floor{dir = 5; heat_capacity = 1; icon_state = "warning"},/area/centcom/evac) +"Db" = (/turf/unsimulated/floor{dir = 4; icon_state = "carpetside"},/area/centcom/holding) +"Dc" = (/obj/machinery/door/airlock/glass{name = "Arrivals Bar"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) +"Dd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) +"De" = (/obj/structure/bed/chair{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/camera/network/crescent{c_tag = "Shuttle West"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "Df" = (/obj/structure/window/shuttle{icon_state = "window1"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) -"Dg" = (/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/ferry) +"Dg" = (/obj/structure/bed/chair{dir = 8},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/obj/machinery/camera/network/crescent{c_tag = "Shuttle East"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "Dh" = (/turf/unsimulated/beach/sand{tag = "icon-desert3"; icon_state = "desert3"},/turf/unsimulated/floor{tag = "icon-siding4"; name = "plating"; icon_state = "siding4"},/area/centcom/holding) "Di" = (/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 4},/turf/unsimulated/floor{tag = "icon-siding8"; name = "plating"; icon_state = "siding8"},/area/centcom/holding) "Dj" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/amanita_pie,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) @@ -1521,9 +1521,9 @@ "Dm" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 4},/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) "Dn" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) "Do" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/stew,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) -"Dp" = (/obj/machinery/vending/coffee,/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control) +"Dp" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/centcom/holding) "Dq" = (/obj/structure/bed/chair{dir = 8},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"Dr" = (/turf/unsimulated/beach/sand{tag = "icon-desert2"; icon_state = "desert2"},/area/centcom/ferry) +"Dr" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/centcom/holding) "Ds" = (/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/turf/unsimulated/floor{tag = "icon-siding4"; name = "plating"; icon_state = "siding4"},/area/centcom/holding) "Dt" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/boiledrice,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) "Du" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/beetsoup,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) @@ -1537,14 +1537,14 @@ "DC" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) "DD" = (/obj/machinery/door/airlock/glass{name = "Arrivals Processing"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) "DE" = (/turf/unsimulated/wall{icon_state = "iron13"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"DF" = (/obj/item/weapon/inflatable_duck,/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/ferry) +"DF" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/turf/unsimulated/floor{dir = 6; icon_state = "carpetside"},/area/centcom/holding) "DG" = (/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/turf/unsimulated/floor{tag = "icon-siding4"; name = "plating"; icon_state = "siding4"},/area/centcom/holding) "DH" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/holding) "DI" = (/turf/unsimulated/wall{tag = "icon-iron8"; icon_state = "iron8"},/area/syndicate_mothership{name = "\improper Raider Base"}) "DJ" = (/turf/simulated/floor/holofloor{icon_state = "carpet9-4"; dir = 4},/area/holodeck/source_theatre) "DK" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "carpet1-0"},/area/holodeck/source_theatre) -"DL" = (/turf/unsimulated/beach/sand{tag = "icon-desert1"; icon_state = "desert1"},/area/centcom/ferry) -"DM" = (/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/obj/effect/overlay/palmtree_r,/turf/unsimulated/beach/sand{tag = "icon-coconuts"; icon_state = "coconuts"},/area/centcom/ferry) +"DL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) +"DM" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "greencorner"},/area/centcom/holding) "DN" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/bloodsoup,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) "DO" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/tofukabob,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) "DP" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/poppypretzel,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) @@ -1560,8 +1560,8 @@ "DZ" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "Ea" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "Eb" = (/obj/structure/bed/roller,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"Ec" = (/mob/living/simple_animal/crab,/turf/unsimulated/beach/sand{tag = "icon-desert3"; icon_state = "desert3"},/area/centcom/ferry) -"Ed" = (/obj/item/weapon/beach_ball,/turf/unsimulated/beach/sand{tag = "icon-desert_dug"; icon_state = "desert_dug"},/area/centcom/ferry) +"Ec" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) +"Ed" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "centcom_dock"; name = "docking port controller"; pixel_x = 25; pixel_y = 0; req_one_access = list(13); tag_door = "centcom_dock_airlock"},/turf/unsimulated/floor{dir = 6; icon_state = "warning"},/area/centcom/holding) "Ee" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/spesslaw,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) "Ef" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/candiedapple,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) "Eg" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) @@ -1586,15 +1586,15 @@ "Ez" = (/obj/structure/bed/chair/holochair{dir = 1},/turf/simulated/floor/holofloor{icon_state = "carpet13-5"; dir = 4},/area/holodeck/source_courtroom) "EA" = (/turf/simulated/shuttle/wall{icon_state = "swall7"; dir = 2},/area/shuttle/escape/centcom) "EB" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/shuttle/escape/centcom) -"EC" = (/obj/effect/overlay/palmtree_l,/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/ferry) -"ED" = (/turf/unsimulated/beach/sand{tag = "icon-beachcorner"; icon_state = "beachcorner"},/area/centcom/ferry) -"EE" = (/turf/unsimulated/beach/sand{tag = "icon-beach"; icon_state = "beach"},/area/centcom/ferry) +"EC" = (/turf/unsimulated/floor{icon_state = "warning"},/area/centcom/holding) +"ED" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/ashtray/bronze{pixel_x = -1; pixel_y = 1},/obj/machinery/camera/network/crescent{c_tag = "Crescent Bar East"; dir = 4},/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) +"EE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) "EF" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/beach/sand{tag = "icon-beach (SOUTHEAST)"; icon_state = "beach"; dir = 6},/area/centcom/holding) "EG" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/holding) "EH" = (/turf/unsimulated/wall,/area/tdome) "EI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/tdome) "EJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/tdome) -"EK" = (/obj/machinery/door/airlock/glass_security{name = "Holding Cell"; req_access = list(2)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/ferry) +"EK" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) "EL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/tdome) "EM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/tdome) "EN" = (/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor{icon_state = "carpet13-5"; dir = 4},/area/holodeck/source_courtroom) @@ -1607,8 +1607,8 @@ "EU" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater,/turf/simulated/floor/plating/airless,/area/shuttle/escape/centcom) "EV" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/shuttle/escape/centcom) "EW" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/escape/centcom) -"EX" = (/turf/unsimulated/beach/sand{tag = "icon-beach (SOUTHEAST)"; icon_state = "beach"; dir = 6},/area/centcom/ferry) -"EY" = (/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/ferry) +"EX" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "greencorner"; dir = 8},/area/centcom/holding) +"EY" = (/obj/machinery/hologram/holopad,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) "EZ" = (/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/holding) "Fa" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) "Fb" = (/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) @@ -1621,7 +1621,7 @@ "Fi" = (/turf/unsimulated/floor{dir = 5; icon_state = "whitegreen"},/area/centcom/holding) "Fj" = (/obj/structure/bed/chair/holochair{dir = 1},/turf/simulated/floor/holofloor{icon_state = "carpet5-1"; dir = 4},/area/holodeck/source_courtroom) "Fk" = (/turf/unsimulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/centcom/holding) -"Fl" = (/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/turf/unsimulated/beach/sand{tag = "icon-coconuts"; icon_state = "coconuts"},/area/centcom/ferry) +"Fl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) "Fm" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) "Fn" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) "Fo" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) @@ -1633,7 +1633,7 @@ "Fu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/shuttle/plating,/area/centcom/holding) "Fv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/tdome) "Fw" = (/turf/unsimulated/floor{tag = "icon-whitehall (EAST)"; icon_state = "whitehall"; dir = 4},/area/centcom/holding) -"Fx" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Arrivals Processing"; req_access = list(101)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"Fx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 0},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) "Fy" = (/turf/unsimulated/floor{dir = 4; icon_state = "whitegreen"},/area/centcom/holding) "Fz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/shuttle/plating,/area/centcom/holding) "FA" = (/turf/unsimulated/floor{dir = 8; icon_state = "red"},/area/tdome) @@ -1642,7 +1642,7 @@ "FD" = (/turf/unsimulated/floor{tag = "icon-whitehall (NORTHEAST)"; icon_state = "whitehall"; dir = 5},/area/centcom/holding) "FE" = (/obj/machinery/optable,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/holding) "FF" = (/turf/unsimulated/floor{tag = "icon-whitehall (NORTHWEST)"; icon_state = "whitehall"; dir = 9},/area/centcom/holding) -"FG" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/extinguisher,/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_shuttle"; pixel_x = 8; pixel_y = 25; req_one_access = list(13); tag_door = "escape_shuttle_hatch"},/obj/machinery/camera{c_tag = "Shuttle Bridge West"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"FG" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 0},/turf/unsimulated/wall,/area/centcom/holding) "FH" = (/obj/structure/table,/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/turf/unsimulated/floor{dir = 4; icon_state = "whitegreen"},/area/centcom/holding) "FI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/shuttle/plating,/area/centcom/holding) "FJ" = (/turf/unsimulated/floor{icon_state = "red"; dir = 10},/area/tdome) @@ -1702,12 +1702,12 @@ "GL" = (/obj/structure/table/rack,/obj/item/weapon/kitchenknife/ritual,/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station) "GM" = (/obj/machinery/recharger{pixel_y = 4},/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) "GN" = (/obj/machinery/recharger{pixel_y = 4},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) -"GO" = (/obj/machinery/camera{pixel_x = 11; pixel_y = -9; network = list("thunder"); c_tag = "Red Team"},/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) +"GO" = (/obj/machinery/porta_turret{anchored = 0; check_records = 0; enabled = 0; req_one_access = list(103); use_power = 0},/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/holding) "GP" = (/turf/simulated/floor/bluegrid,/area/tdome) "GQ" = (/obj/machinery/flasher{id = "flash"; name = "Thunderdome Flash"},/turf/simulated/floor/bluegrid,/area/tdome) -"GR" = (/obj/machinery/camera{pixel_x = 12; pixel_y = -10; network = list("thunder"); c_tag = "Green Team"},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) +"GR" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"; name = "Clothing Storage"},/obj/item/clothing/glasses/sunglasses,/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/holding) "GS" = (/obj/machinery/atmospherics/pipe/vent,/turf/simulated/floor/bluegrid,/area/tdome) -"GT" = (/obj/machinery/camera{pixel_x = 10; network = list("thunder"); c_tag = "Arena"},/turf/simulated/floor/bluegrid,/area/tdome) +"GT" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"; name = "Clothing Storage"},/obj/item/clothing/head/bandana{pixel_y = -10},/obj/item/clothing/glasses/sunglasses,/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/holding) "GU" = (/turf/unsimulated/beach/sand{density = 1; opacity = 1},/area/beach) "GV" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor,/area/tdome) "GW" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/turf/simulated/floor,/area/tdome) @@ -1719,7 +1719,7 @@ "Hc" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor,/area/tdome) "Hd" = (/obj/effect/overlay/palmtree_l,/turf/unsimulated/beach/sand,/area/beach) "He" = (/obj/effect/overlay/palmtree_r,/obj/effect/overlay/coconut,/turf/unsimulated/beach/sand,/area/beach) -"Hf" = (/obj/structure/bed/chair/office/dark,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "CentComPort"; name = "Security Doors"; pixel_x = -12; pixel_y = -25; req_access = list(101)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"Hf" = (/obj/structure/closet/athletic_mixed,/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/holding) "Hg" = (/obj/machinery/door/blast/regular{id = "thunderdomeaxe"; name = "Axe Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "Hh" = (/obj/effect/overlay/coconut,/turf/unsimulated/beach/sand,/area/beach) "Hi" = (/turf/unsimulated/floor{icon_state = "redcorner"; dir = 8},/area/tdome) @@ -1756,7 +1756,7 @@ "HN" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/chips,/turf/unsimulated/beach/sand,/area/beach) "HO" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/turf/unsimulated/beach/sand,/area/beach) "HP" = (/obj/item/weapon/beach_ball,/turf/unsimulated/beach/sand,/area/beach) -"HQ" = (/obj/structure/bed/chair,/turf/unsimulated/beach/sand,/area/beach) +"HQ" = (/obj/machinery/camera/network/crescent{c_tag = "Crescent Bar Center"},/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) "HR" = (/mob/living/simple_animal/crab/Coffee,/turf/unsimulated/beach/sand,/area/beach) "HS" = (/obj/item/clothing/head/collectable/paper,/turf/unsimulated/beach/sand,/area/beach) "HT" = (/turf/unsimulated/floor{icon_state = "sandwater"},/area/beach) @@ -1802,7 +1802,7 @@ "IH" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) "II" = (/obj/structure/table,/obj/item/weapon/storage/box/drinkingglasses{pixel_x = 1; pixel_y = 4},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) "IJ" = (/obj/structure/table/reinforced,/obj/item/weapon/tray{pixel_y = 5},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"IK" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/door/window/southright{name = "Arrivals Processing"; req_access = list(101)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"IK" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/camera/network/crescent{c_tag = "Crescent Arrivals South"; dir = 4},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/holding) "IL" = (/turf/unsimulated/wall{icon_state = "iron14"},/area/syndicate_mothership{name = "\improper Raider Base"}) "IM" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/backpack/cultpack,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) "IN" = (/obj/structure/table/woodentable,/obj/item/clothing/glasses/monocle,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) @@ -1856,7 +1856,7 @@ "JJ" = (/obj/item/organ/xenos/plasmavessel,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) "JK" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror/raider{pixel_x = -28; pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership{name = "\improper Raider Base"}) "JL" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "centcom_shuttle"; pixel_x = 0; pixel_y = -25; tag_door = "centcom_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) -"JM" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "centcom_dock_airlock"; locked = 1; name = "Arrivals Airlock"; req_access = list(13)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/evac) +"JM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) "JN" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "shuttle_dock_north_mech"; pixel_y = -19},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "JO" = (/obj/item/clothing/mask/gas/swat{desc = "A close-fitting mask clearly not made for a human face."; name = "\improper alien mask"},/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) "JP" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/chawanmushi,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) @@ -1878,7 +1878,7 @@ "Kf" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/wizard_station) "Kg" = (/turf/unsimulated/wall/fakeglass{dir = 1; icon_state = "fakewindows"},/area/wizard_station) "Kh" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 4},/area/wizard_station) -"Ki" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "centcom_dock"; name = "docking port controller"; pixel_x = 25; pixel_y = 0; req_one_access = list(13); tag_door = "centcom_dock_airlock"},/turf/unsimulated/floor{dir = 6; icon_state = "warning"},/area/centcom/evac) +"Ki" = (/turf/unsimulated/floor{dir = 5; heat_capacity = 1; icon_state = "warning"},/area/centcom/holding) "Kj" = (/obj/structure/table/rack,/obj/item/clothing/suit/space/vox/pressure,/obj/item/clothing/head/helmet/space/vox/pressure,/obj/item/clothing/shoes/magboots/vox,/obj/item/clothing/gloves/yellow/vox,/obj/item/clothing/under/vox/vox_casual,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) "Kk" = (/obj/effect/decal/remains/human,/turf/unsimulated/floor{tag = "icon-lava"; name = "plating"; icon_state = "lava"},/area/wizard_station) "Kl" = (/turf/unsimulated/floor{tag = "icon-lava"; name = "plating"; icon_state = "lava"},/area/wizard_station) @@ -1888,10 +1888,10 @@ "Kp" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/wizard_station) "Kq" = (/obj/structure/flora/ausbushes/fullgrass,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/wizard_station) "Kr" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) -"Ks" = (/obj/structure/table/rack,/obj/item/clothing/suit/space/vox/stealth,/obj/item/clothing/head/helmet/space/vox/stealth,/obj/item/clothing/shoes/magboots/vox,/obj/item/clothing/gloves/yellow/vox,/obj/item/clothing/glasses/thermal/monocle,/obj/item/clothing/under/vox/vox_robes,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"Ks" = (/obj/structure/shuttle/engine/heater,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Kt" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) "Ku" = (/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Kv" = (/obj/machinery/porta_turret{anchored = 0; check_records = 0; enabled = 0; req_one_access = list(103); use_power = 0},/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/evac) +"Kv" = (/turf/unsimulated/floor{icon_state = "warning"; dir = 1; heat_capacity = 1},/area/centcom/holding) "Kw" = (/obj/item/organ/xenos/eggsac,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) "Kx" = (/obj/item/weapon/tank/nitrogen,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) "Ky" = (/obj/item/organ/stack,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) @@ -1925,28 +1925,28 @@ "La" = (/obj/structure/closet/secure_closet/bar{req_access = list(25)},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/holding) "Lb" = (/obj/structure/table/woodentable{dir = 5},/obj/machinery/chemical_dispenser/bar_alc/full,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/holding) "Lc" = (/obj/structure/table/woodentable{dir = 5},/obj/machinery/chemical_dispenser/bar_soft/full,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/holding) -"Ld" = (/turf/unsimulated/wall{tag = "icon-iron2"; icon_state = "iron2"},/area/shuttle/skipjack/station) -"Le" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_northwest_lock"; locked = 1; req_access = list(150)},/turf/simulated/shuttle/plating/vox,/area/shuttle/skipjack/station) +"Ld" = (/turf/simulated/shuttle/wall{dir = 2; icon = 'icons/turf/walls.dmi'; icon_state = "iron1"},/area/shuttle/skipjack/station) +"Le" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast{id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Lf" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1331; master_tag = "vox_west_control"; req_one_access = list(150)},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/skipjack/station) -"Lg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast{dir = 2; id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating/vox,/area/shuttle/skipjack/station) -"Lh" = (/turf/unsimulated/wall{icon_state = "iron6"},/area/shuttle/skipjack/station) -"Li" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast{dir = 2; id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating/vox,/area/shuttle/skipjack/station) -"Lj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast{dir = 2; id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating/vox,/area/shuttle/skipjack/station) -"Lk" = (/turf/unsimulated/wall{icon_state = "iron10"},/area/shuttle/skipjack/station) -"Ll" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_northeast_lock"; locked = 1; req_access = list(150)},/turf/simulated/shuttle/plating/vox,/area/shuttle/skipjack/station) +"Lg" = (/turf/simulated/shuttle/wall{dir = 2; icon = 'icons/turf/walls.dmi'; icon_state = "iron6"},/area/shuttle/skipjack/station) +"Lh" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"Li" = (/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"Lj" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"Lk" = (/turf/simulated/shuttle/wall{dir = 2; icon = 'icons/turf/walls.dmi'; icon_state = "iron10"},/area/shuttle/skipjack/station) +"Ll" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Lm" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1331; master_tag = "vox_east_control"; req_access = list(150)},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/skipjack/station) "Ln" = (/obj/machinery/door/airlock/centcom{name = "Thunderdome"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) -"Lo" = (/turf/unsimulated/wall{icon_state = "iron3"},/area/shuttle/skipjack/station) -"Lp" = (/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "vox_west_sensor"; pixel_x = 25},/turf/simulated/shuttle/plating/vox,/area/shuttle/skipjack/station) -"Lq" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{frequency = 1331; id_tag = "vox_west_vent"},/turf/simulated/shuttle/plating/vox,/area/shuttle/skipjack/station) +"Lo" = (/turf/simulated/shuttle/wall{dir = 2; icon = 'icons/turf/walls.dmi'; icon_state = "iron13"},/area/shuttle/skipjack/station) +"Lp" = (/turf/simulated/shuttle/wall{dir = 2; icon = 'icons/turf/walls.dmi'; icon_state = "iron12"},/area/shuttle/skipjack/station) +"Lq" = (/obj/machinery/atmospherics/pipe/tank/air,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Lr" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/skipjack/station) -"Ls" = (/obj/machinery/computer/shuttle_control/multi/vox,/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) -"Lt" = (/obj/machinery/computer/station_alert,/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) +"Ls" = (/turf/simulated/shuttle/wall{dir = 2; icon = 'icons/turf/walls.dmi'; icon_state = "iron3"},/area/shuttle/skipjack/station) +"Lt" = (/obj/structure/table,/obj/item/weapon/deck,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) "Lu" = (/turf/unsimulated/floor{tag = "icon-ironsand7"; icon_state = "ironsand7"},/turf/unsimulated/floor{tag = "icon-asteroid7"; name = "plating"; icon_state = "asteroid7"},/area/wizard_station) "Lv" = (/turf/unsimulated/floor{tag = "icon-ironsand12"; icon_state = "ironsand12"},/turf/unsimulated/floor{tag = "icon-asteroid2"; name = "plating"; icon_state = "asteroid2"},/area/wizard_station) -"Lw" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) +"Lw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast{id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Lx" = (/obj/structure/sign/nosmoking_2{pixel_x = 32},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"Ly" = (/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "vox_east_sensor"; pixel_x = -25},/turf/simulated/shuttle/plating/vox,/area/shuttle/skipjack/station) +"Ly" = (/turf/simulated/shuttle/wall{dir = 2; icon = 'icons/turf/walls.dmi'; icon_state = "iron7"},/area/shuttle/skipjack/station) "Lz" = (/turf/simulated/floor/holofloor{icon_state = "carpet7-3"; dir = 4},/area/holodeck/source_theatre) "LA" = (/turf/simulated/floor/holofloor/grass,/turf/simulated/floor/holofloor{icon_state = "wood_siding1"; dir = 2},/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/holofloor{icon_state = "wood_siding5"; dir = 2},/area/holodeck/source_picnicarea) "LB" = (/turf/simulated/floor/holofloor{icon_state = "carpet11-12"; dir = 4},/area/holodeck/source_theatre) @@ -1970,33 +1970,33 @@ "LT" = (/turf/space/transit/east/shuttlespace_ew3,/area/shuttle/escape_pod5/transit) "LU" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area/space) "LV" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area/space) -"LW" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{frequency = 1331; id_tag = "vox_east_vent"},/turf/simulated/shuttle/plating/vox,/area/shuttle/skipjack/station) -"LX" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "vox_west_vent"; tag_exterior_door = "vox_northwest_lock"; frequency = 1331; id_tag = "vox_west_control"; tag_interior_door = "vox_southwest_lock"; pixel_x = 24; req_access = list(150); tag_chamber_sensor = "vox_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1331; id_tag = "vox_west_vent"},/turf/simulated/shuttle/plating/vox,/area/shuttle/skipjack/station) -"LY" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/shuttle/plating/vox,/area/shuttle/skipjack/station) -"LZ" = (/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) -"Ma" = (/turf/unsimulated/wall{icon_state = "iron9"},/area/shuttle/skipjack/station) -"Mb" = (/obj/structure/bed/chair{dir = 1},/obj/item/clothing/glasses/thermal/monocle,/obj/item/clothing/head/pirate,/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) -"Mc" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) -"Md" = (/turf/unsimulated/wall{icon_state = "iron5"},/area/shuttle/skipjack/station) -"Me" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "vox_east_vent"; tag_exterior_door = "vox_northeast_lock"; frequency = 1331; id_tag = "vox_east_control"; tag_interior_door = "vox_southeast_lock"; pixel_x = -24; req_access = list(150); tag_chamber_sensor = "vox_east_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1331; id_tag = "vox_east_vent"},/turf/simulated/shuttle/plating/vox,/area/shuttle/skipjack/station) -"Mf" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4},/turf/simulated/shuttle/plating/vox,/area/shuttle/skipjack/station) -"Mg" = (/turf/unsimulated/wall{tag = "icon-iron7"; icon_state = "iron7"},/area/shuttle/skipjack/station) -"Mh" = (/turf/unsimulated/wall{tag = "icon-iron4"; icon_state = "iron4"},/area/shuttle/skipjack/station) -"Mi" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_southwest_lock"; locked = 1; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating/vox,/area/shuttle/skipjack/station) -"Mj" = (/turf/unsimulated/wall{icon_state = "iron12"},/area/shuttle/skipjack/station) -"Mk" = (/turf/unsimulated/wall{icon_state = "iron13"},/area/shuttle/skipjack/station) -"Ml" = (/turf/unsimulated/wall{icon_state = "iron11"},/area/shuttle/skipjack/station) -"Mm" = (/obj/structure/table/rack,/obj/item/weapon/rig/industrial,/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) -"Mn" = (/obj/structure/table/rack,/obj/item/weapon/rig/light/hacker,/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) -"Mo" = (/turf/unsimulated/wall{tag = "icon-iron8"; icon_state = "iron8"},/area/shuttle/skipjack/station) -"Mp" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_southeast_lock"; locked = 1; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating/vox,/area/shuttle/skipjack/station) +"LW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast{id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"LX" = (/turf/simulated/shuttle/wall{dir = 2; icon = 'icons/turf/walls.dmi'; icon_state = "iron11"},/area/shuttle/skipjack/station) +"LY" = (/turf/simulated/shuttle/wall{dir = 2; icon = 'icons/turf/walls.dmi'; icon_state = "iron4"},/area/shuttle/skipjack/station) +"LZ" = (/turf/simulated/shuttle/wall{dir = 2; icon = 'icons/turf/walls.dmi'; icon_state = "iron8"},/area/shuttle/skipjack/station) +"Ma" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"Mb" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"Mc" = (/obj/structure/bed,/obj/item/weapon/bedsheet/rainbow,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"Md" = (/obj/structure/bed,/obj/item/weapon/bedsheet/hos,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"Me" = (/turf/simulated/shuttle/wall{dir = 2; icon = 'icons/turf/walls.dmi'; icon_state = "iron5"},/area/shuttle/skipjack/station) +"Mf" = (/turf/simulated/shuttle/wall{dir = 2; icon = 'icons/turf/walls.dmi'; icon_state = "iron9"},/area/shuttle/skipjack/station) +"Mg" = (/obj/structure/bed,/obj/item/weapon/bedsheet/green,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"Mh" = (/obj/structure/bed,/obj/item/weapon/bedsheet/orange,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"Mi" = (/turf/simulated/shuttle/wall{dir = 2; icon = 'icons/turf/walls.dmi'; icon_state = "iron14"},/area/shuttle/skipjack/station) +"Mj" = (/obj/item/pizzabox/meat,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"Mk" = (/obj/structure/bed,/obj/item/weapon/bedsheet/rd,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"Ml" = (/obj/structure/bed,/obj/item/weapon/bedsheet/clown,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"Mm" = (/obj/machinery/computer/station_alert,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"Mn" = (/obj/machinery/computer/shuttle_control/multi/vox,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"Mo" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"Mp" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{frequency = 1331; id_tag = "vox_west_vent"},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Mq" = (/obj/machinery/door/airlock/medical{name = "Operating Theatre"; req_access = list(45)},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/holding) "Mr" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/ionrifle,/obj/item/weapon/harpoon,/obj/item/clothing/suit/space/void/merc,/obj/item/clothing/head/helmet/space/void/merc,/obj/item/clothing/head/helmet/space/void/engineering,/obj/item/clothing/suit/space/void/engineering,/obj/item/weapon/tank/oxygen,/obj/item/weapon/tank/oxygen,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/weapon/rig/light/stealth,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Ms" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Mt" = (/obj/structure/table,/obj/item/seeds/potatoseed,/obj/item/seeds/potatoseed,/obj/item/seeds/ambrosiavulgarisseed,/obj/item/weapon/minihoe,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Mu" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -1; pixel_y = 8},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Mv" = (/obj/machinery/vending/hydroseeds,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"Mw" = (/obj/structure/table/rack,/obj/item/weapon/melee/energy/sword/pirate,/obj/item/clothing/suit/space/pirate,/obj/item/clothing/suit/space/pirate,/obj/item/weapon/tank/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) +"Mw" = (/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "vox_west_sensor"; pixel_x = 25},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Mx" = (/obj/machinery/washing_machine,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "My" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/clothing/shoes/magboots,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Mz" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/sniperrifle,/obj/item/clothing/suit/space/void/mining,/obj/item/clothing/head/helmet/space/void/mining,/obj/item/clothing/head/helmet/space/void/atmos,/obj/item/clothing/suit/space/void/atmos,/obj/item/weapon/tank/oxygen,/obj/item/weapon/tank/oxygen,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) @@ -2005,31 +2005,31 @@ "MC" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 28},/turf/unsimulated/floor{tag = "icon-whitecorner (NORTH)"; icon_state = "whitecorner"; dir = 1},/area/centcom/holding) "MD" = (/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "ME" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"MF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast{dir = 2; id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) -"MG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast{dir = 2; id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) -"MH" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) -"MI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast{dir = 2; id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) -"MJ" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/engie,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/engie,/turf/unsimulated/floor{icon_state = "dark"},/area/shuttle/skipjack/station) +"MF" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{frequency = 1331; id_tag = "vox_east_vent"},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"MG" = (/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "vox_east_sensor"; pixel_x = -25},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"MH" = (/turf/simulated/shuttle/wall{dir = 2; icon = 'icons/turf/walls.dmi'; icon_state = "iron2"},/area/shuttle/skipjack/station) +"MI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast{dir = 2; id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"MJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast{dir = 2; id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "MK" = (/obj/item/robot_parts/head,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"ML" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast{id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating/vox,/area/shuttle/skipjack/station) +"ML" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_northwest_lock"; locked = 1; req_access = list(150)},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "MM" = (/obj/item/robot_parts/l_leg,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "MN" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) -"MO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast{id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating/vox,/area/shuttle/skipjack/station) +"MO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast{dir = 2; id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "MP" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) "MQ" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) "MR" = (/obj/machinery/hologram/holopad,/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) -"MS" = (/obj/machinery/camera{c_tag = "Shuttle"},/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) -"MT" = (/obj/machinery/status_display{pixel_y = 30},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) +"MS" = (/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/holding) +"MT" = (/obj/machinery/vending/coffee,/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/holding) "MU" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 30},/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) -"MV" = (/obj/structure/bed/chair{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/camera{c_tag = "Shuttle West"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"MW" = (/obj/structure/bed/chair{dir = 8},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/obj/machinery/camera{c_tag = "Shuttle East"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"MX" = (/obj/machinery/camera{c_tag = "Shuttle Center"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"MV" = (/turf/unsimulated/beach/sand{tag = "icon-desert2"; icon_state = "desert2"},/area/centcom/holding) +"MW" = (/obj/item/weapon/inflatable_duck,/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/holding) +"MX" = (/obj/structure/sign/redcross,/turf/unsimulated/wall,/area/centcom/holding) "MY" = (/obj/machinery/status_display{pixel_y = 30},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"MZ" = (/obj/machinery/camera{c_tag = "Crescent Arrivals East"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"MZ" = (/turf/unsimulated/beach/sand{tag = "icon-desert1"; icon_state = "desert1"},/area/centcom/holding) "Na" = (/obj/structure/window/shuttle{icon_state = "window12"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) "Nb" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Nc" = (/obj/machinery/hologram/holopad,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"Nd" = (/obj/machinery/computer/secure_data,/obj/machinery/camera{c_tag = "Crescent Arrivals North"; dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"Nd" = (/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/obj/effect/overlay/palmtree_r,/turf/unsimulated/beach/sand{tag = "icon-coconuts"; icon_state = "coconuts"},/area/centcom/holding) "Ne" = (/turf/simulated/shuttle/wall{tag = "icon-swall2"; icon_state = "swall2"; dir = 2},/area/shuttle/escape/centcom) "Nf" = (/obj/machinery/computer/crew,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "Ng" = (/obj/structure/AIcore/deactivated,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) @@ -2039,21 +2039,21 @@ "Nk" = (/obj/machinery/computer/shuttle_control/emergency,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "Nl" = (/obj/machinery/computer/communications,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "Nm" = (/obj/machinery/computer/med_data,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"Nn" = (/obj/structure/table/rack,/obj/item/weapon/gun/launcher/crossbow,/obj/item/stack/rods{amount = 10},/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) -"No" = (/obj/machinery/status_display{pixel_y = 30},/obj/structure/table,/obj/machinery/camera{c_tag = "Shuttle Bridge East"},/obj/item/weapon/storage/firstaid/toxin,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"Nn" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_northeast_lock"; locked = 1; req_access = list(150)},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"No" = (/mob/living/simple_animal/crab,/turf/unsimulated/beach/sand{tag = "icon-desert3"; icon_state = "desert3"},/area/centcom/holding) "Np" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "Nq" = (/obj/machinery/hologram/holopad,/turf/unsimulated/floor{dir = 9; icon_state = "whitegreen"},/area/centcom/holding) -"Nr" = (/obj/machinery/camera{c_tag = "Crescent Medical"; dir = 4},/turf/unsimulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/centcom/holding) +"Nr" = (/obj/item/weapon/beach_ball,/turf/unsimulated/beach/sand{tag = "icon-desert_dug"; icon_state = "desert_dug"},/area/centcom/holding) "Ns" = (/obj/machinery/sleeper{icon_state = "sleeper_0-r"; orient = "RIGHT"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "Nt" = (/obj/machinery/sleep_console{icon_state = "sleeperconsole-r"; orient = "RIGHT"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"Nu" = (/obj/machinery/hologram/holopad,/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/ferry) +"Nu" = (/obj/structure/closet/crate/freezer/rations,/obj/machinery/camera/network/crescent{c_tag = "Shuttle West Storage"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) "Nv" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 5; pixel_y = 5},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 0; pixel_y = 0},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 7; pixel_y = 1},/obj/item/weapon/wrench,/turf/unsimulated/floor{dir = 8; icon_state = "whitegreen"},/area/centcom/holding) -"Nw" = (/obj/machinery/camera{c_tag = "Crescent Bar Center"},/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) -"Nx" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/camera{c_tag = "Crescent Arrivals South"; dir = 4},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control) +"Nw" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/machinery/camera/network/crescent{c_tag = "Shuttle Medical"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"Nx" = (/obj/machinery/recharge_station,/obj/machinery/camera/network/crescent{c_tag = "Shuttle East Storage"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) "Ny" = (/obj/machinery/hologram/holopad,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) -"Nz" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/ashtray/bronze{pixel_x = -1; pixel_y = 1},/obj/machinery/camera{c_tag = "Crescent Bar East"; dir = 4},/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) -"NA" = (/obj/machinery/hologram/holopad,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) -"NB" = (/obj/structure/table/rack,/obj/item/weapon/grenade/empgrenade,/obj/item/weapon/grenade/flashbang,/obj/item/weapon/grenade/spawnergrenade,/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) +"Nz" = (/obj/machinery/camera/network/crescent{c_tag = "Crescent Bar West"; dir = 4},/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/holding) +"NA" = (/obj/effect/overlay/palmtree_l,/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/holding) +"NB" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_southeast_lock"; locked = 1; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "NC" = (/obj/machinery/status_display{pixel_y = -30},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "ND" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) "NE" = (/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) @@ -2066,41 +2066,41 @@ "NL" = (/obj/structure/closet/hydrant{pixel_x = -30; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) "NM" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "NN" = (/obj/machinery/door/airlock/glass_mining{name = "Shuttle Cargo"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) -"NO" = (/obj/machinery/camera{c_tag = "Crescent Bar West"; dir = 4},/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/ferry) +"NO" = (/obj/machinery/hologram/holopad,/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/holding) "NP" = (/obj/structure/bed/roller,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "NQ" = (/obj/machinery/iv_drip,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "NR" = (/obj/machinery/hologram/holopad,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"NS" = (/obj/machinery/recharge_station,/obj/machinery/camera{c_tag = "Shuttle East Storage"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) +"NS" = (/turf/unsimulated/beach/sand{tag = "icon-beach"; icon_state = "beach"},/area/centcom/holding) "NT" = (/obj/machinery/recharge_station,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) "NU" = (/obj/item/robot_parts/robot_suit,/obj/item/robot_parts/r_leg,/obj/item/robot_parts/r_arm,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "NV" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"NW" = (/obj/machinery/camera{c_tag = "Shuttle Medical"; dir = 4},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"NX" = (/obj/structure/closet/crate/freezer/rations,/obj/machinery/camera{c_tag = "Shuttle West Storage"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) +"NW" = (/turf/unsimulated/beach/sand{tag = "icon-beachcorner"; icon_state = "beachcorner"},/area/centcom/holding) +"NX" = (/turf/unsimulated/beach/sand{tag = "icon-beach (SOUTHEAST)"; icon_state = "beach"; dir = 6},/area/centcom/holding) "NY" = (/obj/structure/closet/crate/freezer/rations,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) "NZ" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) "Oa" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/centcom/living) "Ob" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/evac) -"Oc" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast{id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating/vox,/area/shuttle/skipjack/station) -"Od" = (/turf/simulated/shuttle/plating/vox,/area/shuttle/skipjack/station) -"Oe" = (/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) -"Of" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) -"Og" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) -"Oh" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/plating/vox,/area/shuttle/skipjack/station) +"Oc" = (/obj/structure/table/rack,/obj/item/weapon/rig/light/hacker,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"Od" = (/obj/structure/table/rack,/obj/item/weapon/rig/industrial,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"Oe" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_southwest_lock"; locked = 1; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"Of" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "vox_east_vent"; tag_exterior_door = "vox_northeast_lock"; frequency = 1331; id_tag = "vox_east_control"; tag_interior_door = "vox_southeast_lock"; pixel_x = -24; req_access = list(150); tag_chamber_sensor = "vox_east_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1331; id_tag = "vox_east_vent"},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"Og" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"Oh" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) "Oi" = (/obj/item/weapon/wrench,/obj/item/weapon/mop,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Oj" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Ok" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/item/weapon/crowbar,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Ol" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"Om" = (/obj/machinery/atmospherics/pipe/tank/nitrogen{dir = 1; initialize_directions = 1; start_pressure = 493.6},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"Om" = (/obj/machinery/camera/network/crescent{c_tag = "Crescent Medical"; dir = 4},/turf/unsimulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/centcom/holding) "On" = (/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/skipjack/station) -"Oo" = (/obj/structure/table,/obj/item/weapon/deck,/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) +"Oo" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Op" = (/obj/machinery/body_scanconsole,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/skipjack/station) "Oq" = (/obj/machinery/bodyscanner,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/skipjack/station) "Or" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/skipjack/station) "Os" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/item/weapon/tank/nitrogen,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Ot" = (/obj/structure/toilet{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"Ou" = (/turf/unsimulated/wall{tag = "icon-iron1"; icon_state = "iron1"},/area/shuttle/skipjack/station) +"Ou" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "vox_west_vent"; tag_exterior_door = "vox_northwest_lock"; frequency = 1331; id_tag = "vox_west_control"; tag_interior_door = "vox_southwest_lock"; pixel_x = 24; req_access = list(150); tag_chamber_sensor = "vox_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1331; id_tag = "vox_west_vent"},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Ov" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/shuttle/skipjack/station) -"Ow" = (/obj/structure/shuttle/engine/heater,/turf/simulated/shuttle/plating/vox,/area/shuttle/skipjack/station) +"Ow" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast{dir = 2; id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) "Ox" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/skipjack/station) "Oy" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/skipjack/station) "Oz" = (/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/skipjack/station) @@ -2110,18 +2110,18 @@ "OD" = (/obj/machinery/optable,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/skipjack/station) "OE" = (/obj/structure/table,/obj/item/weapon/cautery,/obj/item/weapon/retractor,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/skipjack/station) "OF" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/skipjack/station) -"OG" = (/obj/structure/bed,/obj/item/weapon/bedsheet/rainbow,/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) -"OH" = (/obj/structure/bed,/obj/item/weapon/bedsheet/hos,/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) +"OG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast{dir = 2; id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"OH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast{dir = 2; id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) "OI" = (/obj/structure/table,/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/skipjack/station) "OJ" = (/obj/structure/toilet{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/skipjack/station) -"OK" = (/obj/structure/bed,/obj/item/weapon/bedsheet/orange,/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) -"OL" = (/obj/structure/bed,/obj/item/weapon/bedsheet/green,/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) +"OK" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/engie,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/engie,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"OL" = (/obj/structure/table/rack,/obj/item/weapon/melee/energy/sword/pirate,/obj/item/clothing/suit/space/pirate,/obj/item/clothing/suit/space/pirate,/obj/item/weapon/tank/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) "OM" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/adv{pixel_x = 1},/obj/item/weapon/storage/firstaid/toxin{pixel_x = 3; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/skipjack/station) "ON" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire{pixel_x = 1},/obj/item/weapon/storage/firstaid/o2{pixel_x = 3; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/skipjack/station) -"OO" = (/turf/unsimulated/wall{icon_state = "iron14"},/area/shuttle/skipjack/station) -"OP" = (/obj/item/pizzabox/meat,/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) -"OQ" = (/obj/structure/bed,/obj/item/weapon/bedsheet/rd,/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) -"OR" = (/obj/structure/bed,/obj/item/weapon/bedsheet/clown,/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/skipjack/station) +"OO" = (/obj/structure/table/rack,/obj/item/weapon/gun/launcher/crossbow,/obj/item/stack/rods{amount = 10},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"OP" = (/obj/structure/table/rack,/obj/item/weapon/grenade/empgrenade,/obj/item/weapon/grenade/flashbang,/obj/item/weapon/grenade/spawnergrenade,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"OQ" = (/obj/structure/table/rack,/obj/item/clothing/suit/space/vox/stealth,/obj/item/clothing/head/helmet/space/vox/stealth,/obj/item/clothing/shoes/magboots/vox,/obj/item/clothing/gloves/yellow/vox,/obj/item/clothing/glasses/thermal/plain/monocle,/obj/item/clothing/under/vox/vox_robes,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"OR" = (/obj/structure/bed/chair{dir = 1},/obj/item/clothing/glasses/thermal/plain/monocle,/obj/item/clothing/head/pirate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) "OS" = (/obj/machinery/door/airlock/command{name = "Thunderdome Administration"; req_access = list(102)},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) "OT" = (/obj/machinery/door/airlock/command{name = "Thunderdome Administration"; req_access = list(102)},/turf/simulated/floor,/area/tdome) "OU" = (/obj/structure/table/woodentable,/obj/machinery/chemical_dispenser/bar_soft/full,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) @@ -2131,6 +2131,12 @@ "OY" = (/obj/machinery/door/airlock/centcom{name = "Engineering Special Operations"; opacity = 1; req_access = list(103)},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) "OZ" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "merc_shuttle"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access = list(0)},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "Pa" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1331; id_tag = "merc_base"; pixel_x = -25; pixel_y = -5},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"Pb" = (/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/turf/unsimulated/beach/sand{tag = "icon-coconuts"; icon_state = "coconuts"},/area/centcom/holding) +"Pc" = (/obj/effect/landmark{name = "tdome2"},/obj/machinery/camera/network/thunder{c_tag = "Thunderdome - Red Team"; invisibility = 101},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) +"Pd" = (/obj/effect/landmark{name = "tdome1"},/obj/machinery/camera/network/thunder{c_tag = "Green Team"; invisibility = 101},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) +"Pe" = (/obj/machinery/camera/network/thunder{c_tag = "Thunderdome Arena"; invisibility = 101},/turf/simulated/floor/bluegrid,/area/tdome) +"Pf" = (/obj/effect/landmark{name = "endgame_exit"},/turf/unsimulated/beach/sand,/area/beach) +"Pg" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "endgame_exit"},/turf/unsimulated/beach/sand,/area/beach) (1,1,1) = {" aaabacadaeafagahaaaiajakalamanaoagafajacadahakaeamaiaoalahajeEapaqarasatauavawaxayazaAaBaCaDaEaFaGaHaIaJaKawaxayazaAaBaCaDaEaFaLaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtwtwtwtwtwtwtwtwtwtwtwtwtwaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaNaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaQ @@ -2260,77 +2266,77 @@ aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUoVoVqRpesLsMsIpepBpBpBpBpBpepepeqHoVoVpFsOsPsQsRsBsBsBsBsSpFqvqvqvsmsTrLrLrLsUrLrLsVpZqzqXqYqYqYqYqYqXpZqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMmumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUoVoVoVqRpepepepepepepepepepeqHoVoVoVoVpFpFtctdpFpFpFtctetdpFqvqvqvpFtftgtgtgtgtgthpFpZqztitjqYqYqYtktlqAqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMmumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVpFtptptptptptptptptppFpFsNpFpFtptptptptptptppFpZqztrtstttttttstuqAqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvyhyhyhyhyhyhyhxOxOBdtxtxtxtxtxtxpFtytztypFtxtxtxtxtxtxtxtxpZqzqztAtBtBtBtCqzqAqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvtqtvtDtFtEuytNtGtvtYuhtZtZuiuaujujululyhzdyIyIyIyIumwGxvwGuntOtPtQtRtSpFtytztypFtTtUtVtWtWtxaMaMpZqzqzqzqzqzqzqzqzqAqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvtvtvtvtvtvtvAgtvuhuhuhuhuhuhtvuzuhuhuhuhuhuhuhuhuhyhyByIuAyIyIvexQxQxQvfueufufufufpFtytztypFtWtWtWtWtWtxaMaMugugugugugugugugugugugtxtxtxtxtxtxtxtxtxtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMustvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvutuuvbuvuwvguhuhuhuhuhuhuhvytvvkuhuhuhuhuhuhuhuhuhyhyHvpzqyIyIumwGxvwGunueufufufufpFpFsNpFpFtWtWtWtWtWtxuguguguguguguoupuqtxurururtxururururururururtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvyhyhyhyhyhyhyhtptptptxtxtxtxtxtxpFtytztypFtxtxtxtxtxtxtxtxpZqzqztAtBtBtBtCqzqAqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvtqtvtDtFtEuytNtGtvtYuhtZtZuiuaujujululyhzdyIyIyItXuuumuxumuntOtPtQtRtSpFtytztypFtTtUtVtWtWtxaMaMpZqzqzqzqzqzqzqzqzqAqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvtvtvtvtvtvtvAgtvuhuhuhuhuhuhtvuzuhuhuhuhuhuhuhuhuhyhyByIuAyItXveurururvfueufufufufpFtytztypFtWtWtWtWtWtxaMaMugugugugugugugugugugugtxtxtxtxtxtxtxtxtxtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMustvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvutvHvbuvuwvguhuhuhuhuhuhuhvytvvkuhuhuhuhuhuhuhuhuhyhyHvpzqyItXuuumuxumunueufufufufpFwmsNwEpFtWtWtWtWtWtxuguguguguguguoupuqtxurururtxururururururururtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMuUuVuVuVuVuVuVuVuVuVuVuVuVuVAIuXuVuVuVuYAIuZvavbvbvctvtHuhuhuhuhuhuhuhtvvzuhuhuhuhujvEvAvKvKyhzrzpzEyIyIyhvMvMvMtxuDuEuFuGuHtxuIuIuItxtWtWtWtWtWtxuJuKuJuLuMuguNuNuNuOurururuOuruPuQuPuruRuSuTtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMustvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvvgtvtvtvuhuhuhuhuhuhuhuhtvuhuhuhuhvNtvtvtvtvtvyhyhyhyhyhyhyhxQxQxQtxvOtxvlvmvntxufufuftxvlvmvotxvPtxvqvrvqvrvqugtxtxtxtxurururtxvsvtuPvuvsvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumuaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMustvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvutvIvbvbvJtvvxvQukxovRvSuhuhtvuhuhuhuhvTtvwlwhwhwlwownwqwpxQxQxQxQxQwztxufufvBvCvCvCvCvCvCvCvCvCvDufufwAvqvqvqvqvqugvFuNuotxurururtxvGvGvHvGvGvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMuUuVuVuVuVuVuVuVuVuVuVuVuVuVwWuXuVuVuVuYwWwivavbvbwjtvwFwGwGwGwItvuhuhtvuhuhuhuhwBtvuhxQxQwmwEwmwmwmwmwmxQxQxQwPtxufufvVvWvXvXvXvXvXvXvXvYueufufugvZwawbwcwdugweuNuptxurururtxwfwfuNwfwfvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMwgaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMustvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvvgtvtvtvuhuhuhuhuhuhuhuhtvuhuhuhuhvNtvtvtvtvtvyhyhyhyhyhyhyhxQxQxQtxvOxvvlvmvntxufufuftxvlvmvoxvvPtxvqvrvqvrvqugtxtxtxtxurururtxvsvtuPvuvsvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumuaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMustvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvutvIvbvbvJtvvxvQukxovRvSuhuhtvuhuhuhuhvTtvwlwhwhwlwownwqwpxQxQxQxQxQwztxufufvBvCvCvCvCvCvCvCvCvCvDufufwAvqvqvqvqvqugvFuNuotxurururtxvGvGxAvGvGvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMuUuVuVuVuVuVuVuVuVuVuVuVuVuVwWuXuVuVuVuYwWwivavbvbwjtvwFwGwGwGwItvuhuhtvuhuhuhuhwBtvuhxQxQxQxkxQxQxQxQxQxQxQxQwPtxufufvVvWvXvXvXvXvXvXvXvYueufufugvZwawbwcwdugweuNuptxurururtxwfwfuNwfwfvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMwgaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMustvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvutwxvbvbwywowVwYwXxawZwouhuhwouhuhuhuhxbwouhxQxQuwxcxQxQxQwqwqtvtvtvtvtvufufvVwrwsufwtwuwvufwswrueufufugugugugugugugweuNuptxurururtxwwwwuNwwwwvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMuUuVuVuVuVuVuVuVuVuVuVuVuVuVxduXuVuVuVuYxdxevavbvbxgxkxhuhuhuhxlxkuhuhxkuhuhxnxmxpxkxqxQxQxQtvwFwGwHwGwItvwJwJwJtvufufwKwLwMwNwOxrwQwRwSwLwTufuftxwUwUwUwUwUtxtxuOtxtxtxuOtxtxuNuNuNuNuNvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMuUuVuVuVuVuVuVuVuVuVuVuVuVuVxduXuVuVuVuYxdxevavbvbxgxkxhuhuhuhxlxkuhuhxkuhuhxnxmxpxkxqxQxQxQtvwFwGwHwGwItvwJwJwJxOufufwKwLwMwNwOxrwQwRwSwLwTufufxYwUwUwUwUwUtxtxuOtxtxtxuOtxtxuNuNuNuNuNvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMustvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvutxsvbvbxMtvxtuhuhuhuhtvxuxutvOYOYtvtvtvtvxqxQxQuwuWxfxfxfxfxfxwxfxfxfxwufufufxxufufxiufxiufufxxufufufxjurururururxjurururururururxjwwwwwwwwwwvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMmu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMuUuVuVuVuVuVuVuVuVuVuVuVuVuVxyuXuVuVuVuYxyxzxAvbvbuwxHuhuhuhuhuhxHuhuhxIuhuhxKxJxLxLuhxQxQvdtvwFwGwHwGwItvxBxBxBtvufufvBxCxDwNxEufxFwRxGxCvDufufxjurururururxjurururururururxjwwwwwwwwwwtxuOuOtxtxtxtxtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMustvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvvbvbuwxHuhuhuhuhuhxHuhuhxRuhuhxQyayayaxQxQxQzcycybydxQyfyetvtvtvtvtvufufvVwLxSufxiufxiufxSwLueufuftxxTxUxUxUxVtxtxxWtxtxtxuOtxtxtxxXxXxXtxtxurururxYurxZtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMuUuVuVuVuVuVuVuVuVuVuVuVuVuVxyuXuVuVuVuYxyxzzsvbvbuwxHuhuhuhuhuhxHuhuhxIuhuhxKxJxLxLuhxQxQvdtvwFwGwHwGwItvxBxBxBztufufvBxCxDwNxEufxFwRxGxCvDufufxjurururururxjurururururururxjwwwwwwwwwwtxuOuOtxtxtxtxtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMustvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvvbvbuwxHuhuhuhuhuhxHuhuhxRuhuhxQyayayaxQxQxQzcycybydxQyfyetvtvtvtvtvufufvVwLxSufxiufxiufxSwLueufufxvxTxUxUxUxVtxtxxWtxtxtxuOtxtxtxxXxXxXtxtxurururzuurxZtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvvbvbxNtvwFwGwGwGwItvygygtvyiuhxQyjylykxQxQxQyRymydxQxQxQxQxcxQxnyztvufufvVtxtxynyoufypyqtxtxueufuftxaMaMaMaMaMtxyrystxuNytuNuNyuyvywywywObtxururuQuQururyyaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvtvtvtvtvyAyDyCyKyGuhuhuhwoyQuhxQylyWySxQxQxQxQxcxQxQxQyYyXwoxQxQyZtvufufvVtxtxvlvmvmvmvotxtxueufuftxaMaMaMaMaMtxysystxyLyLyLuNyuywywywywyMtxuryNuPuPyOuryPaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvuhuhuhuhuhuhuhuhxkzeuhxQzgzgzgxQxQxQxQxcxQxQxQyYyXxkyJyEyFtvufufwKyTyTyTyTyTyTyTyTyTwTufuftxaMaMaMaMaMtxyUystxyLyVyLuNyuyuyuyuyuyutxuryNuPuPyOuryPaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvuhuhuhuhuhuhuhuhtvwCuhuhzhuhuhuhxQxQwCymxQxQxQyYyXtvtvtvtvtvtxtxzitxtxufufufufuftxtxtxtxtxtxaMaMaMaMaMtxzfystxvFuNuNuNyuaMaMaMaMaMtxuryNuPuPyOuryPaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvzkzkzlznzmzCzxwDtvzOzDvMtvAbAbtvvMzDzOycAexQxQyYyXtvzsztztzszuzvufzwtxtxtxAhtxtxtxaMaMaMaMaMaMaMaMaMaMtxtxtxtxtxtxtxtxyuaMaMaMaMaMzyuryNuPuPyOuryPaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzzmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtwgmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmt -mumumumumumumumumumumuAnAnAnAnAnAoArArArAsAnAnAnAnAnAnAnAnAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvtvtvtvtvtvtvtvtvtvtvtvtvzAzBzBzAtvtvtvtvABxQxQyYyXtvzszFzFzszGzHufzwtxzIwTufwKzJtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzKururzLzLururzKaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumumumumumumumumuAnAnAnAnAnAKAZASBaAKAnAnAnAnAnAnAnAnAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzMzNzNzNzNBvBvzNzNzPaMtvBzxQxQyYyXtvzsztztzszQzHufzwtxueufufufvVtxaMaMaMaMaMaMaMaMaMaMaMaMzRzSNaNaNazTzUaMaMaMaMaMtxzVururururzWtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumumumumumumumumuAnAnAnAnAnAKBMASASAKAnAnAnAnAnAnAnAnAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzXzYzZAaBYAcAcAdCnzNzPtvtvxcxctvtvtvzszszszsCpzHufzwtxAfuxAfCLAftxaMaMaMaMaMaMaMaMaMaMaMzRAiNiNjNkNlNmAlzUaMaMaMaMtxtxtxtxtxtxtxtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumumumumuAnAnAnArDEArDIAnDUDEArDIEpDWArArArArArAsAnAnAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzXzYAmAcAcAcAcAcAcEsErwoxQxQxQxQxQtvApzsApzszuzHufAqEKueufFxufxFyuaMaMaMaMaMaMaMaMaMaMzRAiFGAMADAvADNpNoAlzUaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumuAnAnAnAnFYFZASASASASASASASASASASASASASASASASAKAnAnAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzXzYAxAyAzAzAzAzAzzNAAxPxQxQxQxQxQxcApzsApzszGzHufAqEKuDufwtHfNdyuaMaMaMaMaMaMaMaMaMaMACADADADADNcADADADADACaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumuAnAnASHkFYHkASASASASASASASASASASASASASASASASHmIJIIAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAEzNzNzNzNzNzNzNzNAAaMxkxQxQxQxQxQtvApzsApzszQAFxSAGAHAftXAJIKAfyuaMaMaMaMaMaMaMaMaMaMAtADBuNhNeNgNeNfCrADAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumuAnAnFYHkFYAnAnAnDUArArAsEpDUArILDIEpISASASASEpIUITAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAPufufAQvVyuyuyuaMaMaMaMaMaMaMaMAtIVACATARAUARATACIVAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumuAnFYFYAnAnAnAnAnAnAnAnAKASASBMAKIWASAKASASASEpIUIXAnAnISmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAVAWAWAWAWAWAWAWAWAWAWAWAWAWAXAYIYJaBbBcBcBcBcBcAHBdxCBeufufBfvVxCBdyuaMaMaMaMaMaMaMaMAtADCrAtMSMTMUAtBuADAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumuAnFYAnAnAnmumuAnDUArDIJcJbASAZAKJbAZAKASASASISIUIUIUJlAKmumumumumumuaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAVAWAWBlBmBnBlBmBmBoBpBqBmBrBsAYAWAWBtBcBcBcBcBcAHBdwrBeufufufvVwrBdyuyuyuyuyuyuaMaMaMACADCrCCMQMRMPCCBuADACaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumuAnJoJoAnmumumuAnJpJqJqDWArArArDEArArJrASASASAKIUIUIUJyAKmumumumumumuaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAVAWBlByJzBABBBCBCBCBCBCBCBDBEAYAWAWBbBcBcBcBcBcAHBdwrBeufufufBFwrBdBGBGBGBGBGyuaMaMzRAiADCrDfMQBwMPDfBuADAlzUaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumuAnFYFYFYFYAnAnmumuAnJAJBJAEpASASASASASASASASASASAKJDJCJEDUJrmumumumumumuaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAVAWBIBJBKBJBLBJBJBJBJBJBJBJJFAWAWAWAHAHAHAHBNBOAHBdwrBeufufufBPBQvmBRBRBRBRBRBRBRBSAtBgADCrAlACJHACAiBuADBgAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumuJIFYFYFYFYJJAnmumuISJKJAJAEpASASASASASASASASASASAKAnAnAnAnAnmumumumumumuaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAVAWBWBXJLBZBBCaCaCaCaCaCaCbCcAYAWAWAHCdCeCfCgCgAHChCiCjufufufufCkClClMZClClCmJMCoJMJNADADADMYMXADADMYADADCrACaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumuJOJVJUFYJWFYFYmumuHmJXJYAoArArArArArArILArDIEpDUDEILArArArArArArAsmumuaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAVAWAWBWBmCsBWBmBmBoBpBqBmCtBsAYAWAWAHCuCvCwCgCgCxCyCzufufufufufCkClClClClClCmCABRBSAtMVADCrCCBuADCrCCBuADMWAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumuJZFYKaFYJUFYFYmumuAnAnAnAKASASASASASASAKKbKcKcKcKdAKASASASASASASAKmuaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAVAWAWAWAWAWAWAWAWAWAWAWAWAWAXAYAWAWAHCECFCGCgCgCxCyCzufufufufCHCIBRCJClClCKKiyuaMaMCCBuADCrCMBuADCrCMBuADCrCCaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumuAnFYKjFYKsFYFYmumuaMaMmuAKASAZASASASASHmKcKcKuKcKcHmASASASASAZASAKmuaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHAHAHAHAHAHCNCNCNCNCNCNCNCNCNCNCNCNCNNzCOCOCPCPCNCQvYCRufNAufBFCSBdCTClCmKvCVyuaMaMCMBuADCrCMBuNcCrCMBuADCrCMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumuAnKxKwFYFYKyFYmumuaMaMmuAKASASASASASASEpKcKcKzKcKcEpASASASASASASAKmuaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHCWCXCXCXCYCZDaCPCPCPNwCPCPCPCPCPCPCPCPCPCPNyCPCNBdwrNxufufufBPDbBRDcClClDdDeyuaMaMDfBuADCrCMBuADCrCMBuADCrDfaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumuAnAnFYFYFYFYAnmumumAaMaMAKASASISKAKCKBISKcKLKDKcKcISKAKCKBISASASAKaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHDgDgDgDgDgDhDiDjDkDlCPDmDnDoDlCPCPCPCPCPCPCPCPCNBdwrDpufufufufCkClClClClClCmCABRBSAtBTADCrDfBuADCrDfBuADDqAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumuAnAnAnAnKMKNAnmumBmAaMaMHmASASHmaMaMaMDWDIKAKCKBDUJraMaMaMHmASASHmaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHDgDrDgDgDgDsDiDtDuDlCPDmDvDwDlCPCPDxDxDxDxDxDxCNDyDzDADBDCDCDCDDDCDCClClClCmJMCoJMKOADADNCADADADADADNCADCrACaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumuAnAnAnAnAnAnmuaMaMaMaMaMKPKQKQKRaMaMaMaMaMaMaMaMaMaMaMaMaMKPKQKQKRaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHDgDFDgDgDgDsDaCPCPCPNyCPCPCPCPCPDGDHDHDHDHDHDHCNCNCNCNCNKSKSCNCNCNCNCABRBRBRBRBRBSEAACNNATzSzTKTzSzTATNNACBVaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumumumumumumumuaMaMaMaMKPKVKUKRaMaMaMaMaMaMaMaMaMaMaMaMaMKPKVKUKRaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHDgDgDLDgDMDsDiDNDODlCPDmDPDQDlCPDGDRDSDSDSDSDSCNDTDTDTNDDVDVKWDXDXCNBGBGBGBGyuaMaMAtNENFAtNHNIEaNKNJAtNLNGAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumumumumumumuaMaMaMaMaMKPKVKUKRaMaMaMaMaMaMaMaMaMaMaMaMaMKPKVKUKRaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHEcDgDgEdDgDsDiEeEfDlCPDmEgEhDlCPDGDSDSDSDSDSDSCNEiEjEjElDVDVDVDXDXCNyuyuyuyuyuaMaMAtNXNYAtNWNVEaEaKXAtNTNSAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumumumumumumuaMaMaMaMaMKYKQKQKZaMaMaMKYaMaMaMaMaMKZaMaMaMKYKQKQKZaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHNODgDgDgDgEoDaCPCPCPCPCPCPCPCPCPDGDSDSLaEqLbLcCNEtDVDVDVEwExDVDVEyCNaMaMaMaMaMaMaMEAEBEBAtNQEaNREbNPAtEBEBBVaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumumumuaMaMaMaMaMaMaMaMLdLfLeLdaMaMaMLhLgLiLiLiLjLkaMaMaMLdLlLmLdaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHDgECNuDrEDEEEFEGEGEGEHEHEHEIEJLnELEMEHEHEHCNCNCNNvDVDVEwEPEQExERESCNaMaMaMaMaMaMaMETEVEVBVDYDZEaNtNsEAEVEVEWaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumumumuaMaMaMaMaMaMaMaMLoLqLpLoaMaMKYLoLrLtLsLwLrLoKZaMaMLoLyLWLoaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHDgDgDgEDEXEYEZEZEZEZEHFaFbFcFdFeFfFgFbFaEHCNCNCNCNCNCNNrFiNqFkERESCNaMaMaMaMaMaMaMaMaMaMETATEUEUEUATEWaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumumumuaMaMaMaMaMaMaMaMLoLYLXLoaMaMLhMaLZMcMbMcLZMdLkaMaMLoMeMfLoaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHFlDgEDEXEYEYEZEZEZEZEHFbFmFnFdFeFfFnFoFbEHFpFqFrFsFtCNDVFhFkDVDVEwFuaMaMaMaMaMaMaMaMaMaMaMETEVEVEVEWaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumumumuaMaMaMaMaMaMaMaMMgMiMhMkMjMjMlMmLZLZLZLZLZMnMgMjMjMkMoMpMlaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHDgEDEXEYEYEYEZEZEZEZEHFvFbFvFdFeFfFvFbFvEHFwDVDVDVDVMqDVDVDVDVDVFyFzaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumumumuaMaMaMaMaMaMaMaMLoMsMrMuMtMvLoMwLZLZLZLZLZMwLoMyMxMBMzMsLoaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHEDEXEYEYEYEYEYEYEYEYEHFAFbFbFdFeFfFbFbFBEHFCFDFEFFMCCNDVDVDVDVDVFHFIaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumuaMaMaMaMaMaMaMaMaMaMaMLoMsMDMDMDMEMgMGMFMIMHMGMFMIMlMJMDMDMKMsLoaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHAHAHAHAHAHAHAHAHAHAHAHEHFJFKFKFdFeFfFLFLFMEHFNFOFPFQFRCNFSFTFUFVFWFXCNaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumuaMaMaMaMaMaMaMaMaMaMaMMLMsMDMDMDMDMHLZLZLZLZLZLZLZMHMDMDMMMDMsMLaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeFeFeFeFeFeFeFeFeFeFeEHEHMNEHEHFeEHEHMNEHEHEHEHEHEHEHCNCNCNCNCNCNCNCNaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumuaMaMaMaMaMaMaMaMaMaMMONbMDMDMDMDLoNnLZLZLZLZLZNBLoMDNMMDNUMsMOaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeEHEHEHEHNZEHEHEHFeFeFeFeFeFeEHFeEHFeFeFeFeFeFeFeFeEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumuaMaMaMaMaMaMaMaMaMaMOcNbMDMDLhOdMkMjLkOfOeOgLhMjMkOhLkOjOiOkOcaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeEHGaGbGbGbGbGcEHEHEHEHEHEHEHEHGdEHEHEHEHEHEHEHEHFeEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumuaMaMaMaMaMaMaMaMaMKYLoOmOlOlLoOnOnOnMLOfOoOgMLOqOpOrLoOtOsOmLoKZaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeEHGaGbGbGbGbGcEHGeGfGgGfGhGiGiGiGiGiGhGiGhGiGjEHFeEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumuaMaMaMaMmumuaMaMaMOvOuOwOwMhMlOnOnOnMOOfOeOgMOOrOrOxMgMoOwOwOuOyaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeEHGkGbGbGbGbGlEHGiGmGmGmGmGmGiGiGiGmGmGmGmGnGoEHFeEHEHEHEHEHEHEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumuaMaMaMaMmumuaMaMaMaMOvOzOzOyLoOBOAOnOcLZLZLZOcOrOrOCLoOvOzOzOyaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeEHGkGpGqGqGbGbGrGiGiGsGtGsGiGiGiGiGiGsGtGsGuGiEHFeFeFeFeFeFeFeEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumuaMaMaMaMmumuaMaMaMaMaMaMaMaMLoOnOnOnMgMjMHMjMlODOrOELoaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHEHFeEHEHEHEHEHEHEHEHGiGmGmGmGmGmGiGiGiGmGmGmGmGvGiEHEHEHEHEHEHEHFeEHEHEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMLoOnOnOFLoOGLZOHLoOrOrOILoaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFAFeEHEHzazazazazaEHGxGxGxGxGxGxGxGxGxGxGxGxGxGyGxEHzbzbzbzbzbEHFeFeFBEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMMdLkOJOnLoOKLZOLLoONOMLhMaaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFAEHEHEHHgHgHgHgHgEHGBGCGCGCGCGCGCGCGCGCGCGCGCGDGBEHHgHgHgHgHgEHEHEHFBEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMOvMdMjOOMaOQOPORMdOOMjMaOyaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFAEHzjGAGGGGGGGGGGGFGIGCGCGCGCGCGCGCGCGCGCGCGCGDGJGFGKGKGKGKGKGAGwEHFBEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumumumuaMaMaMaMmumuaMaMaMaMaMaMaMaMOvOuOwOwOwOwOwOuOyaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFAEHzjGAGGGMGGGMGGGFGIGCGCGCGCGCGCGCGCGCGCGCGCGDGJGFGKGNGKGNGKGAGwEHFBEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumumumuaMaMaMaMmumumuaMaMaMaMaMaMaMaMOvOzOzOzOzOzOyaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFAEHzjGAGGGGGOGGGGGFGIGCGCGCGCGCGPGQGPGCGCGCGCGDGJGFGKGKGRGKGKGAGwEHFBEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -mumumumumumuaMaMaMaMmumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFAEHzjGAGGGGGGGGGGGFGIGCGCGCGCGCGSGTGSGCGCGCGCGDGJGFGKGKGKGKGKGAGwEHFBEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMGUGUGUGUGUGUGUGUGUGUGUGUGUGUGUGUGUGUGUGUGU +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvuhuhuhuhuhuhuhuhtvwCuhuhzhuhuhuhxQxQwCymxQxQxQyYyXtvtvtvtvtvtxxvzixYtxufufufufuftxtxtxtxtxtxaMaMaMaMaMtxzfystxvFuNuNuNyuaMaMaMaMaMtxuryNuPuPyOuryPaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvzkzkzlznzmzCzxwDtvzOzDvMtvAbAbtvvMzDzOycAexQxQyYyXtvzvzwzwzvzFzGDCzHCNtxxvAhxYtxtxaMaMaMaMaMaMaMaMaMaMtxtxtxtxtxtxtxtxyuaMaMaMaMaMzyuryNuPuPyOuryPaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzzmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtwgmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmt +mumumumumumumumumumumuAnAnAnAnAnAoArArArAsAnAnAnAnAnAnAnAnAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvtvtvtvtvtvtvtvtvtvtvtvtvzAzBzBzAtvtvtvtvABxQxQyYyXtvzvzIzIzvzJzQDCzHCNApAfDCAqAFCNaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzKururzLzLururzKaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumumumumumumumumuAnAnAnAnAnAKAZASBaAKAnAnAnAnAnAnAnAnAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzMzNzNzNzNBvBvzNzNzPaMtvBzxQxQyYyXtvzvzwzwzvAGzQDCzHCNAJDCDCDCAPCNaMaMaMaMaMaMaMaMaMaMaMaMzRzSNaNaNazTzUaMaMaMaMaMtxzVururururzWtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumumumumumumumumuAnAnAnAnAnAKBMASASAKAnAnAnAnAnAnAnAnAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzXzYzZAaBYAcAcAdCnzNzPtvtvxcxctvtvtvzvzvzvzvAQzQDCzHCNBcBbBcBdBcCNaMaMaMaMaMaMaMaMaMaMaMzRAiNiNjNkNlNmAlzUaMaMaMaMtxtxtxtxtxtxtxtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumumumumuAnAnAnArDEArDIAnDUDEArDIEpDWArArArArArAsAnAnAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzXzYAmAcAcAcAcAcAcEsErwoxQxQxQxQxQxOzvBezvBezFzQDCBtBfAJDCBFDCBGCNaMaMaMaMaMaMaMaMaMaMzRAiBNAMADAvADNpBOAlzUaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumuAnAnAnAnFYFZASASASASASASASASASASASASASASASASAKAnAnAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzXzYAxAyAzAzAzAzAzzNAAxPxQxQxQxQxQxczvBezvBezJzQDCBtBfBPDCBRBQBSCNaMaMaMaMaMaMaMaMaMaMACADADADADNcADADADADACaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumuAnAnASHkFYHkASASASASASASASASASASASASASASASASHmIJIIAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAEzNzNzNzNzNzNzNzNAAaMxkxQxQxQxQxQtvzvBezvBeAGCeCdCfCNBcCgCiChBcCNaMaMaMaMaMaMaMaMaMaMAtADBuNhNeNgNeNfCrADAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumuAnAnFYHkFYAnAnAnDUArArAsEpDUArILDIEpISASASASEpIUITAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHCNCNCNCNCNCNCNCNCNCjDCDCCkAPCNCNCNaMaMaMaMaMaMaMaMAtIVACATARAUARATACIVAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumuAnFYFYAnAnAnAnAnAnAnAnAKASASBMAKIWASAKASASASEpIUIXAnAnISmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAVAWAWAWAWAWAWAWAWAWAWAWAWAWAXAYIYJaClCmCmCmCmCmCNDyCoCpDCDCCuAPCoDyCNaMaMaMaMaMaMaMaMAtADCrAtMQCvMUAtBuADAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumuAnFYAnAnAnmumuAnDUArDIJcJbASAZAKJbAZAKASASASISIUIUIUJlAKmumumumumumuaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAVAWAWBlBmBnBlBmBmBoBpBqBmBrBsAYAWAWCwCmCmCmCmCmCNDyCxCpDCDCDCAPCxDyCNCNCNCNCNCNaMaMaMACADCrCCMQMRMPCCBuADACaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumuAnJoJoAnmumumuAnJpJqJqDWArArArDEArArJrASASASAKIUIUIUJyAKmumumumumumuaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAVAWBlByJzBABBBCBCBCBCBCBCBDBEAYAWAWClCmCmCmCmCmCNDyCxCpDCDCDCCyCxDyDyDyDyDyDyCNaMaMzRAiADCrDfMQBwMPDfBuADAlzUaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumuAnFYFYFYFYAnAnmumuAnJAJBJAEpASASASASASASASASASASAKJDJCJEDUJrmumumumumumuaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAVAWBIBJBKBJBLBJBJBJBJBJBJBJJFAWAWAWCNCNCNCNCzCACNDyCxCpDCDCDCCFCECGCGCGCGCGCGCGCGCHAtBgADCrAlACJHACAiBuADBgAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumuJIFYFYFYFYJJAnmumuISJKJAJAEpASASASASASASASASASASAKAnAnAnAnAnmumumumumumuaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAVAWBWBXJLBZBBCaCaCaCaCaCaCbCcAYAWAWCNCJCICKCPCPCNCQCLCRDCDCDCDCDDDCDCCSDCDCCTCVCmCVJNADADADMYCWADADMYADADCrACaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumuJOJVJUFYJWFYFYmumuHmJXJYAoArArArArArArILArDIEpDUDEILArArArArArArAsmumuaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAVAWAWBWBmCsBWBmBmBoBpBqBmCtBsAYAWAWCNCYCXDbCPCPDcDCDDDCDCDCDCDCDDDCDCDCDCDCCTDdCGCHAtDeADCrCCBuADCrCCBuADDgAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumuJZFYKaFYJUFYFYmumuAnAnAnAKASASASASASASAKKbKcKcKcKdAKASASASASASASAKmuaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAVAWAWAWAWAWAWAWAWAWAWAWAWAWAXAYAWAWCNDrDpDFCPCPDcDCDDDCDCDCDCDMDLCGEcDCDCECEdCNaMaMCCBuADCrCMBuADCrCMBuADCrCCaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumuAnFYKjFYOQFYFYmumuaMaMmuAKASAZASASASASHmKcKcKuKcKcHmASASASASAZASAKmuaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNEDCOCOCPCPCNEKEEEXDCEYDCCyFlDyFxDCCTGOFGCNaMaMCMBuADCrCMBuNcCrCMBuADCrCMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumuAnKxKwFYFYKyFYmumuaMaMmuAKASASASASASASEpKcKcKzKcKcEpASASASASASASAKmuaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNGTGRGRGRHfCZDaCPCPCPHQCPCPCPCPCPCPCPCPCPCPNyCPCNDyCxIKDCDCDCCFCECGJMDCDCKvKiCNaMaMDfBuADCrCMBuADCrCMBuADCrDfaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumuAnAnFYFYFYFYAnmumumAaMaMAKASASISKAKCKBISKcKLKDKcKcISKAKCKBISASASAKaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNMSMSMSMSMSDhDiDjDkDlCPDmDnDoDlCPCPCPCPCPCPCPCPCNDyCxMTDCDCDCDCDDDCDCDCDCDCCTDdCGCHAtBTADCrDfBuADCrDfBuADDqAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumuAnAnAnAnKMKNAnmumBmAaMaMHmASASHmaMaMaMDWDIKAKCKBDUJraMaMaMHmASASHmaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNMSMVMSMSMSDsDiDtDuDlCPDmDvDwDlCPCPDxDxDxDxDxDxCNDyDzDADBDCDCDCDDDCDCDCDCDCCTCVCmCVKOADADNCADADADADADNCADCrACaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumuAnAnAnAnAnAnmuaMaMaMaMaMKPKQKQKRaMaMaMaMaMaMaMaMaMaMaMaMaMKPKQKQKRaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNMSMWMSMSMSDsDaCPCPCPNyCPCPCPCPCPDGDHDHDHDHDHDHCNCNCNCNMXKSKSCNCNCNCNDdCGCGCGCGCGCHEAACNNATzSzTKTzSzTATNNACBVaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumumumumumumumuaMaMaMaMKPKVKUKRaMaMaMaMaMaMaMaMaMaMaMaMaMKPKVKUKRaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNMSMSMZMSNdDsDiDNDODlCPDmDPDQDlCPDGDRDSDSDSDSDSCNDTDTDTNDDVDVKWDXDXCNDyDyDyDyCNaMaMAtNENFAtNHNIEaNKNJAtNLNGAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumumumumumumuaMaMaMaMaMKPKVKUKRaMaMaMaMaMaMaMaMaMaMaMaMaMKPKVKUKRaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNNoMSMSNrMSDsDiEeEfDlCPDmEgEhDlCPDGDSDSDSDSDSDSCNEiEjEjElDVDVDVDXDXCNCNCNCNCNCNaMaMAtNuNYAtNwNVEaEaKXAtNTNxAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumumumumumumuaMaMaMaMaMKYKQKQKZaMaMaMKYaMaMaMaMaMKZaMaMaMKYKQKQKZaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNNzMSMSMSMSEoDaCPCPCPCPCPCPCPCPCPDGDSDSLaEqLbLcCNEtDVDVDVEwExDVDVEyCNaMaMaMaMaMaMaMEAEBEBAtNQEaNREbNPAtEBEBBVaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumumumuaMaMaMaMaMaMaMaMMHLfMLMHaMaMaMLgMOMIMIMIMJLkaMaMaMMHNnLmMHaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNMSNANOMVNWNSEFEGEGEGEHEHEHEIEJLnELEMEHEHEHCNCNCNNvDVDVEwEPEQExERESCNaMaMaMaMaMaMaMETEVEVBVDYDZEaNtNsEAEVEVEWaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumumumuaMaMaMaMaMaMaMaMLsMpMwLsaMaMKYLsLrMmMnMoLrLsKZaMaMLsMGMFLsaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNMSMSMSNWNXEZEZEZEZEZEHFaFbFcFdFeFfFgFbFaEHCNCNCNCNCNCNOmFiNqFkERESCNaMaMaMaMaMaMaMaMaMaMETATEUEUEUATEWaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumumumuaMaMaMaMaMaMaMaMLsOoOuLsaMaMLgMfMaOhOROhMaMeLkaMaMLsOfOgLsaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNPbMSNWNXEZEZEZEZEZEZEHFbFmFnFdFeFfFnFoFbEHFpFqFrFsFtCNDVFhFkDVDVEwFuaMaMaMaMaMaMaMaMaMaMaMETEVEVEVEWaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumumumuaMaMaMaMaMaMaMaMLyOeLpLoLpLpLXOdMaMaMaMaMaOcLyLpLpLoLpNBLXaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNMSNWNXEZEZEZEZEZEZEZEHFvFbFvFdFeFfFvFbFvEHFwDVDVDVDVMqDVDVDVDVDVFyFzaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumumumuaMaMaMaMaMaMaMaMLsMsMrMuMtMvLsOLMaMaMaMaMaOLLsMyMxMBMzMsLsaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNNWNXEZEZEZEZEZEZEZEZEHFAFbFbFdFeFfFbFbFBEHFCFDFEFFMCCNDVDVDVDVDVFHFIaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumuaMaMaMaMaMaMaMaMaMaMaMLsMsMDMDMDMELsOwOGOHMbOwOGOHLsOKMDMDMKMsLsaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHCNCNCNCNCNCNCNCNCNCNCNEHFJFKFKFdFeFfFLFLFMEHFNFOFPFQFRCNFSFTFUFVFWFXCNaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumuaMaMaMaMaMaMaMaMaMaMaMLwMsMDMDMDMDMbMaMaMaMaMaMaMaMbMDMDMMMDMsLwaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeFeFeFeFeFeFeFeFeFeFeEHEHMNEHEHFeEHEHMNEHEHEHEHEHEHEHCNCNCNCNCNCNCNCNaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumuaMaMaMaMaMaMaMaMaMaMLWNbMDMDMDMDLsOOMaMaMaMaMaOPLsMDNMMDNUMsLWaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeEHEHEHEHNZEHEHEHFeFeFeFeFeFeEHFeEHFeFeFeFeFeFeFeFeEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumuaMaMaMaMaMaMaMaMaMaMLeNbMDMDLgMDLoLpLkLjLiLhLgLpLoLlLkOjOiOkLeaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeEHGaGbGbGbGbGcEHEHEHEHEHEHEHEHGdEHEHEHEHEHEHEHEHFeEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumuaMaMaMaMaMaMaMaMaMKYLsLqOlOlLsOnOnOnLwLjLtLhLwOqOpOrLsOtOsLqLsKZaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeEHGaGbGbGbGbGcEHGeGfGgGfGhGiGiGiGiGiGhGiGhGiGjEHFeEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumuaMaMaMaMmumuaMaMaMOvLdKsKsLYLXOnOnOnLWLjLiLhLWOrOrOxLyLZKsKsLdOyaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeEHGkGbGbGbGbGlEHGiGmGmGmGmGmGiGiGiGmGmGmGmGnGoEHFeEHEHEHEHEHEHEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumuaMaMaMaMmumuaMaMaMaMOvOzOzOyLsOBOAOnLeMaMaMaLeOrOrOCLsOvOzOzOyaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeEHGkGpGqGqGbGbGrGiGiGsGtGsGiGiGiGiGiGsGtGsGuGiEHFeFeFeFeFeFeFeEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumuaMaMaMaMmumuaMaMaMaMaMaMaMaMLsOnOnOnLyLpMbLpLXODOrOELsaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHEHFeEHEHEHEHEHEHEHEHGiGmGmGmGmGmGiGiGiGmGmGmGmGvGiEHEHEHEHEHEHEHFeEHEHEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMLsOnOnOFLsMcMaMdLsOrOrOILsaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFAFeEHEHzazazazazaEHGxGxGxGxGxGxGxGxGxGxGxGxGxGyGxEHzbzbzbzbzbEHFeFeFBEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMMeLkOJOnLsMhMaMgLsONOMLgMfaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFAEHEHEHHgHgHgHgHgEHGBGCGCGCGCGCGCGCGCGCGCGCGCGDGBEHHgHgHgHgHgEHEHEHFBEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMOvMeLpMiMfMkMjMlMeMiLpMfOyaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFAEHzjGAGGGGGGGGGGGFGIGCGCGCGCGCGCGCGCGCGCGCGCGDGJGFGKGKGKGKGKGAGwEHFBEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumumumuaMaMaMaMmumuaMaMaMaMaMaMaMaMOvLdKsKsKsKsKsLdOyaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFAEHzjGAGGGMGGGMGGGFGIGCGCGCGCGCGCGCGCGCGCGCGCGDGJGFGKGNGKGNGKGAGwEHFBEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumumumuaMaMaMaMmumumuaMaMaMaMaMaMaMaMOvOzOzOzOzOzOyaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFAEHzjGAGGGGPcGGGGGFGIGCGCGCGCGCGPGQGPGCGCGCGCGDGJGFGKGKPdGKGKGAGwEHFBEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +mumumumumumuaMaMaMaMmumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFAEHzjGAGGGGGGGGGGGFGIGCGCGCGCGCGSPeGSGCGCGCGCGDGJGFGKGKGKGKGKGAGwEHFBEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMGUGUGUGUGUGUGUGUGUGUGUGUGUGUGUGUGUGUGUGUGU mumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFAEHzjGAGGGMGGGMGGGFGIGCGCGCGCGCGVGWGXGCGCGCGCGDGJGFGKGNGKGNGKGAGwEHFBEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMGUGYGYGZGYGYGYHaHaHaGYGYHaHaHaGYGYGYGYGYGU mumumumuaMaMaMaMaMaMaMaMaMaMmumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFAEHFbGHGGGGGGGGGGGFGIGCGCGCGCGCGCHcGCGCGCGCGCGDGJGFGKGKGKGKGKGHFbEHFBEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMGUHdGYGYGYGYGYGYGYGYGYGYGYGYGYGYGYGYGYHeGU mumumumuaMaMaMaMaMaMaMaMmumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFAEHOSEHHbHbHbHbHbEHGBGCGCGCGCGCGCHcGCGCGCGCGCGDGBEHHbHbHbHbHbEHOSEHFBEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMGUGYGYGYGYGYGYGYGYGYGYGYGYGYHhGYGYGYGYGYGU mumumumuaMaMaMaMaMaMaMmumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFJHiFbEHGzGzGzGzGzEHGxGxGxGxGxGxOTHlOTGxGxGxGxGyGxEHGEGEGEGEGEEHFbHnFMEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMGUGYGYGYGYGYGYGYGYGYGYGYGYGYHdGYGYGYGYGYGU mumuaMaMaMaMaMaMaMaMaMaMmumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHEHEHFbEHEHEHEHEHEHEHHoHpHpHpHpHpHqHrHoHpHpHpHpHsHoEHEHEHEHEHEHEHFbEHEHEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMGUGYGYGYGYHtHhGYGYGYGYGYGYGYGYGYGYGYGYGYGU -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFbFbFeFeFeFeFeEHHoHoHuHoHuHoHoHvHwHoHuHoHuHxHoEHFeFeFeFeFeFbFbEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMGUGYGYGYGYGYGYGYGYGYGYGYGYGYGYGYGYGYGYGYGU -mtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHEHEHEHEHEHEHFeMNHoHoHoHyHyHyHoHoHoHyHyHyHyHyHoMNFeEHEHEHEHEHEHEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMGUGYGYGYGYGYHzHAGYGYGYGYGYGYGYGYGYGYGYGYGU -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHEHEHHBHBHBHCHDHEHFHoHGHHHIHJHKHLHMEHEHEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMGUGYGYGYGYGYHNHOGYGYGYHtGYHPGYGYGYGYGYGYGU -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHEHEHEHEHEHEHEHEHEHEHEHEHEHEHEHEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMGUGYGYGYGYGYGYGYGYGYGYGYGYGYGYGYGYGYGYGYGU +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFbFbFeFeFeFeFeEHHoHoHuHoHuHoHoHvHwHoHuHoHuHxHoEHFeFeFeFeFeFbFbEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMGUGYGYGYGYGYPfPfGYGYGYGYGYGYGYGYGYGYGYGYGU +mtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHEHEHEHEHEHEHFeMNHoHoHoHyHyHyHoHoHoHyHyHyHyHyHoMNFeEHEHEHEHEHEHEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMGUGYGYGYGYPfHzHAPfGYGYGYGYGYGYGYGYGYGYGYGU +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHEHEHHBHBHBHCHDHEHFHoHGHHHIHJHKHLHMEHEHEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMGUGYGYGYGYPfHNHOPfGYGYHtGYHPGYGYGYGYGYGYGU +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHEHEHEHEHEHEHEHEHEHEHEHEHEHEHEHEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMGUGYGYGYGYGYPfPfGYGYGYGYGYGYGYGYGYGYGYGYGU aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMGUGYGYHhGYGYGYGYGYGYGYGYGYGYGYGYGYHdGYGYGU aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMGUGYGYHtHhGYGYGYGYGYGYGYGYGYGYGYGYHhGYGYGU -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMGUGYGYGYGYGYGYGYHQGYHQGYHQGYHRGYGYGYGYGYGU +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMGUGYGYGYGYGYGYGYPgGYPgGYPgGYHRGYGYGYGYGYGU aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMGUGYGYGYHSGYGYGYGYGYGYGYGYGYGYGYGYGYGYGYGU aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMGUHTHTHTHTHTHTHTHTHTHTHTHTHTHTHTHTHTHTHTGU aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMHUHVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHU diff --git a/maps/exodus-3.dmm b/maps/exodus-3.dmm index 0e2012a8246..53e6a59fe9b 100644 --- a/maps/exodus-3.dmm +++ b/maps/exodus-3.dmm @@ -84,8 +84,8 @@ "bF" = (/obj/structure/cable,/obj/structure/computerframe{anchored = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) "bG" = (/obj/structure/cable,/obj/structure/computerframe{anchored = 1},/obj/item/stack/cable_coil/cut,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) "bH" = (/obj/structure/table/rack,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"bI" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"bJ" = (/obj/structure/table/rack,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) +"bI" = (/obj/structure/table/rack,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) +"bJ" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) "bK" = (/obj/machinery/power/apc{dir = 8; name = "west bump-derelict"; operating = 0; pixel_x = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) "bL" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) "bM" = (/obj/machinery/light/small,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) @@ -104,14 +104,14 @@ "bZ" = (/obj/machinery/power/solar/fake,/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/space) "ca" = (/turf/simulated/floor/plating/airless,/area/space) "cb" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space) -"cc" = (/obj/machinery/camera{c_tag = "North Solars"; dir = 8; network = list("Tcomsat")},/turf/space,/area/space) +"cc" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/obj/machinery/light{dir = 1},/obj/machinery/camera/network/telecom{c_tag = "Telecoms Main Computer Room"},/turf/simulated/floor,/area/tcommsat/computer) "cd" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/space) "ce" = (/turf/simulated/wall/r_wall,/area/space) "cf" = (/turf/simulated/wall/r_wall,/area/turret_protected/tcomsat) "cg" = (/turf/simulated/wall/r_wall,/area/tcommsat/computer) "ch" = (/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat) "ci" = (/turf/space,/area/turret_protected/tcomsat) -"cj" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/camera{c_tag = "West Wing North"; dir = 2; network = list("Tcomsat")},/turf/space,/area/turret_protected/tcomsat) +"cj" = (/obj/machinery/camera/network/telecom{c_tag = "Telecoms Lounge"},/turf/simulated/floor,/area/tcommsat/computer) "ck" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) "cl" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 6; icon_state = "intact"; tag = "icon-intact-f (SOUTHEAST)"},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) "cm" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/valve/digital/open{dir = 4; name = "Mixed Air Outlet Valve"},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) @@ -121,7 +121,7 @@ "cq" = (/obj/structure/bed,/obj/item/weapon/bedsheet/green,/turf/simulated/floor,/area/tcommsat/computer) "cr" = (/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/tcommsat/computer) "cs" = (/obj/structure/bed,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor,/area/tcommsat/computer) -"ct" = (/obj/machinery/camera{c_tag = "Lounge"; dir = 2; network = list("Tcomsat")},/turf/simulated/floor,/area/tcommsat/computer) +"ct" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/camera/network/telecom{c_tag = "Telecoms West Wing North"},/turf/space,/area/turret_protected/tcomsat) "cu" = (/obj/structure/bed,/obj/item/weapon/bedsheet/red,/turf/simulated/floor,/area/tcommsat/computer) "cv" = (/turf/simulated/floor,/area/tcommsat/computer) "cw" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/turf/space,/area/turret_protected/tcomsat) @@ -132,7 +132,7 @@ "cB" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) "cC" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/turf/space,/area/turret_protected/tcomsat) "cD" = (/obj/structure/filingcabinet,/turf/simulated/floor,/area/tcommsat/computer) -"cE" = (/obj/machinery/camera{c_tag = "Main Computer Room"; dir = 2; network = list("Tcomsat")},/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/tcommsat/computer) +"cE" = (/obj/machinery/camera/network/telecom{c_tag = "Telecoms West Solars"; dir = 8},/turf/space,/area/space) "cF" = (/obj/structure/table,/obj/item/weapon/paper_bin,/obj/item/weapon/pen/blue{pixel_x = -3; pixel_y = 2},/turf/simulated/floor,/area/tcommsat/computer) "cG" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor,/area/tcommsat/computer) "cH" = (/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh{name = "Cuban Pete-Meat"},/turf/simulated/floor/engine,/area/tcommsat/computer) @@ -165,7 +165,7 @@ "di" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor,/area/tcommsat/computer) "dj" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor,/area/tcommsat/computer) "dk" = (/obj/structure/table,/obj/item/weapon/storage/fancy/cigarettes,/turf/simulated/floor,/area/tcommsat/computer) -"dl" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor,/area/tcommsat/computer) +"dl" = (/obj/structure/bed/chair{dir = 8},/obj/structure/sign/deathsposal{pixel_x = 32},/turf/simulated/floor,/area/tcommsat/computer) "dm" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) "dn" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) "do" = (/obj/structure/window/reinforced,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) @@ -215,7 +215,7 @@ "eg" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "eh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "ei" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"ej" = (/obj/machinery/camera{c_tag = "Central Compartment North"; dir = 2; network = list("Tcomsat")},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 1},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"ej" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/camera/network/telecom{c_tag = "Telecoms West Wing Central"; dir = 8},/turf/space,/area/turret_protected/tcomsat) "ek" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "el" = (/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "em" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) @@ -236,10 +236,10 @@ "eB" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) "eC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) "eD" = (/obj/structure/table,/obj/item/weapon/stock_parts/micro_laser,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/turf/simulated/floor,/area/turret_protected/tcomsat) -"eE" = (/obj/machinery/camera{c_tag = "Telecoms Storage"; network = list("Tcomsat")},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor,/area/turret_protected/tcomsat) +"eE" = (/obj/machinery/camera/network/telecom{c_tag = "Telecoms East Solars"; dir = 4},/turf/space,/area/space) "eF" = (/obj/structure/table/rack,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/receiver,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/broadcaster,/turf/simulated/floor,/area/turret_protected/tcomsat) -"eG" = (/obj/machinery/camera{c_tag = "West Solars"; dir = 8; network = list("Tcomsat")},/turf/space,/area/space) -"eH" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/camera{c_tag = "West Wing Middle"; dir = 8; network = list("Tcomsat")},/turf/space,/area/turret_protected/tcomsat) +"eG" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 1},/obj/machinery/camera/network/telecom{c_tag = "Telecoms Central Compartment North"},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"eH" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/camera/network/telecom{c_tag = "Telecoms Storage"},/turf/simulated/floor,/area/turret_protected/tcomsat) "eI" = (/obj/machinery/telecomms/broadcaster/preset_left,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "eJ" = (/obj/machinery/telecomms/broadcaster/preset_right,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "eK" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/space,/area/turret_protected/tcomsat) @@ -249,7 +249,7 @@ "eO" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/treatment,/obj/item/weapon/stock_parts/subspace/treatment,/obj/item/weapon/stock_parts/subspace/treatment,/turf/simulated/floor,/area/turret_protected/tcomsat) "eP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/turret_protected/tcomsat) "eQ" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/item/weapon/stock_parts/subspace/analyzer,/turf/simulated/floor,/area/turret_protected/tcomsat) -"eR" = (/obj/machinery/camera{c_tag = "East Solars"; dir = 4; network = list("Tcomsat")},/turf/space,/area/space) +"eR" = (/obj/machinery/camera/network/telecom{c_tag = "Telecoms North Solars"; dir = 8},/turf/space,/area/space) "eS" = (/turf/simulated/floor/plating,/area/space) "eT" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/obj/machinery/light{dir = 4},/turf/space,/area/turret_protected/tcomsat) "eU" = (/obj/structure/sign/nosmoking_2{pixel_x = -32; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) @@ -269,129 +269,130 @@ "fi" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 29; pixel_y = 0},/obj/machinery/light/small{dir = 4},/turf/simulated/floor,/area/turret_protected/tcomsat) "fj" = (/obj/machinery/telecomms/bus/preset_one,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "fk" = (/obj/machinery/telecomms/processor/preset_one,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"fl" = (/obj/machinery/telecomms/receiver/preset_left,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"fm" = (/obj/machinery/telecomms/receiver/preset_right,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"fn" = (/obj/machinery/telecomms/processor/preset_three,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"fo" = (/obj/machinery/telecomms/bus/preset_three,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"fp" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/space,/area/turret_protected/tcomsat) -"fq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"fr" = (/turf/simulated/floor,/area/turret_protected/tcomsat) -"fs" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor,/area/turret_protected/tcomsat) -"ft" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/turf/simulated/floor,/area/turret_protected/tcomsat) -"fu" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/transmitter,/obj/item/weapon/stock_parts/subspace/transmitter,/turf/simulated/floor,/area/turret_protected/tcomsat) -"fv" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/turf/simulated/floor,/area/turret_protected/tcomsat) -"fw" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/turf/simulated/floor,/area/turret_protected/tcomsat) -"fx" = (/obj/machinery/telecomms/server/presets/science,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"fy" = (/obj/machinery/telecomms/server/presets/medical,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"fz" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"fA" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"fB" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"fC" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"fD" = (/obj/machinery/telecomms/server/presets/command,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"fE" = (/obj/machinery/telecomms/server/presets/security,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"fF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"fG" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; use_power = 1; pressure_checks = 0; pressure_checks_default = 0},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"fH" = (/obj/machinery/camera{c_tag = "Central Compartment South"; dir = 1; network = list("Tcomsat")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"fI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; external_pressure_bound_default = 0; icon_state = "map_vent_in"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; use_power = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"fJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/tcommsat/chamber) -"fK" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/space,/area/turret_protected/tcomsat) -"fL" = (/obj/structure/window/reinforced,/obj/structure/lattice,/obj/machinery/light{dir = 1},/turf/space,/area/turret_protected/tcomsat) -"fM" = (/turf/simulated/wall/r_wall,/area/turret_protected/tcomfoyer) -"fN" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = -32; pixel_y = 0},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/turret_protected/tcomfoyer) -"fO" = (/obj/machinery/porta_turret{dir = 6},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/turret_protected/tcomfoyer) -"fP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/turret_protected/tcomfoyer) -"fQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/camera{c_tag = "Telecoms Foyer"; dir = 2; network = list("Tcomsat")},/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/turretid/lethal{ailock = 1; check_synth = 1; control_area = "\improper Telecoms Satellite"; desc = "A firewall prevents AIs from interacting with this device."; name = "Telecoms lethal turret control"; pixel_y = 29; req_access = list(61)},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/turret_protected/tcomfoyer) -"fR" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/turret_protected/tcomfoyer) -"fS" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/turret_protected/tcomfoyer) +"fl" = (/obj/machinery/bluespacerelay,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"fm" = (/obj/machinery/telecomms/receiver/preset_left,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"fn" = (/obj/machinery/telecomms/receiver/preset_right,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"fo" = (/obj/machinery/telecomms/processor/preset_three,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"fp" = (/obj/machinery/telecomms/bus/preset_three,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"fq" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/space,/area/turret_protected/tcomsat) +"fr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) +"fs" = (/turf/simulated/floor,/area/turret_protected/tcomsat) +"ft" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor,/area/turret_protected/tcomsat) +"fu" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/turf/simulated/floor,/area/turret_protected/tcomsat) +"fv" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/transmitter,/obj/item/weapon/stock_parts/subspace/transmitter,/turf/simulated/floor,/area/turret_protected/tcomsat) +"fw" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/turf/simulated/floor,/area/turret_protected/tcomsat) +"fx" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/turf/simulated/floor,/area/turret_protected/tcomsat) +"fy" = (/obj/machinery/telecomms/server/presets/science,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"fz" = (/obj/machinery/telecomms/server/presets/medical,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"fA" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"fB" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"fC" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"fD" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"fE" = (/obj/machinery/telecomms/server/presets/command,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"fF" = (/obj/machinery/telecomms/server/presets/security,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"fG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/turret_protected/tcomsat) +"fH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; use_power = 1; pressure_checks = 0; pressure_checks_default = 0},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"fI" = (/obj/machinery/camera/network/telecom{c_tag = "Telecoms South Solars"; dir = 4},/turf/space,/area/space) +"fJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; external_pressure_bound_default = 0; icon_state = "map_vent_in"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; use_power = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"fK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/tcommsat/chamber) +"fL" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/space,/area/turret_protected/tcomsat) +"fM" = (/obj/structure/window/reinforced,/obj/structure/lattice,/obj/machinery/light{dir = 1},/turf/space,/area/turret_protected/tcomsat) +"fN" = (/turf/simulated/wall/r_wall,/area/turret_protected/tcomfoyer) +"fO" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = -32; pixel_y = 0},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/turret_protected/tcomfoyer) +"fP" = (/obj/machinery/porta_turret{dir = 6},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/turret_protected/tcomfoyer) +"fQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/turret_protected/tcomfoyer) +"fR" = (/obj/structure/closet/crate,/obj/item/device/aicard,/obj/item/device/multitool,/obj/machinery/camera/network/telecom{c_tag = "Telecoms Entrance South"; dir = 1},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/tcommsat/entrance) +"fS" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/turret_protected/tcomfoyer) "fT" = (/obj/machinery/porta_turret{dir = 10},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/turret_protected/tcomfoyer) -"fU" = (/obj/structure/window/reinforced,/obj/machinery/light{dir = 1},/turf/space,/area/turret_protected/tcomsat) -"fV" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/space,/area/turret_protected/tcomsat) -"fW" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"fX" = (/obj/machinery/door/airlock/hatch{name = "Telecoms West Wing"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomfoyer) -"fY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/turret_protected/tcomfoyer) -"fZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/turret_protected/tcomfoyer) -"ga" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor,/area/turret_protected/tcomfoyer) -"gb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/turret_protected/tcomfoyer) -"gc" = (/obj/machinery/door/airlock/hatch{name = "Telecoms East Wing"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomfoyer) -"gd" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"ge" = (/obj/machinery/camera{c_tag = "East Wing South"; dir = 8; network = list("Tcomsat")},/turf/space,/area/turret_protected/tcomsat) -"gf" = (/obj/machinery/camera{c_tag = "West Wing South"; dir = 4; network = list("Tcomsat")},/turf/space,/area/turret_protected/tcomsat) -"gg" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat) -"gh" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/turret_protected/tcomfoyer) -"gi" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/turret_protected/tcomfoyer) -"gj" = (/turf/simulated/floor,/area/turret_protected/tcomfoyer) -"gk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/turret_protected/tcomfoyer) -"gl" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "warningcorner"; dir = 2},/area/turret_protected/tcomfoyer) -"gm" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/turret_protected/tcomfoyer) -"gn" = (/turf/simulated/wall/r_wall,/area/tcommsat/entrance) -"go" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/hatch{name = "Telecoms Satellite"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/turret_protected/tcomfoyer) -"gp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/tcommsat/entrance) -"gq" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/tcommsat/entrance) -"gr" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/tcommsat/entrance) -"gs" = (/obj/structure/sign/electricshock,/turf/simulated/wall/r_wall,/area/tcommsat/entrance) -"gt" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor,/area/tcommsat/entrance) -"gu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/tcommsat/entrance) -"gv" = (/obj/machinery/turretid/stun{ailock = 1; check_synth = 1; control_area = "\improper Telecoms Foyer"; desc = "A firewall prevents AIs from interacting with this device."; name = "Telecoms Foyer turret control"; pixel_y = 29; req_access = list(61)},/turf/simulated/floor,/area/tcommsat/entrance) -"gw" = (/turf/simulated/floor,/area/tcommsat/entrance) -"gx" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/computer/power_monitor{name = "telecoms power monitoring"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/sensor{long_range = 1; name = "Powernet Sensor - Telecommunications Grid"; name_tag = "Telecommunications Grid"},/turf/simulated/floor{icon_state = "bot"},/area/tcommsat/entrance) -"gy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/tcommsat/entrance) -"gz" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/fractal_reactor{mapped_in = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor,/area/tcommsat/entrance) -"gA" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Telecommunications Main Breaker"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/tcommsat/entrance) -"gB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/camera{c_tag = "Power Room West"; dir = 1; network = list("Tcomsat")},/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/tcommsat/entrance) -"gC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/tcommsat/entrance) -"gD" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/tcommsat/entrance) -"gE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/camera{c_tag = "Power Room East"; dir = 1; network = list("Tcomsat")},/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/tcommsat/entrance) -"gF" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/tcommsat/entrance) -"gG" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/tcommsat/entrance) -"gH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/hatch{name = "Telecoms Satellite"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/tcommsat/entrance) -"gI" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/tcommsat/entrance) -"gJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/tcommsat/entrance) -"gK" = (/obj/machinery/camera{c_tag = "Entrance North"; dir = 2; network = list("Tcomsat")},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/tcommsat/entrance) -"gL" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/tcommsat/entrance) -"gM" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/tcommsat/entrance) -"gN" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/tcommsat/entrance) -"gO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/tcommsat/entrance) -"gP" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/tcommsat/entrance) -"gQ" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor,/area/tcommsat/entrance) -"gR" = (/obj/structure/sign/vacuum,/turf/simulated/wall/r_wall,/area/tcommsat/entrance) -"gS" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/tcommsat/entrance) -"gT" = (/obj/item/weapon/cell,/turf/simulated/floor,/area/tcommsat/entrance) -"gU" = (/obj/structure/closet/malf/suits,/turf/simulated/floor,/area/tcommsat/entrance) -"gV" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1381; master_tag = "telecoms_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access = list(13)},/turf/simulated/floor/plating/airless,/area/space) -"gW" = (/obj/machinery/door/airlock/external{frequency = 1381; icon_state = "door_locked"; id_tag = "telecoms_outer"; locked = 1; name = "External Access"; req_access = list(10,13)},/turf/simulated/floor/plating,/area/tcommsat/entrance) -"gX" = (/obj/machinery/camera/xray{c_tag = "External Airlock"; network = list("Tcomsat")},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1381; id_tag = "telecoms_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "telecoms_pump"; tag_exterior_door = "telecoms_outer"; frequency = 1381; id_tag = "telecoms_airlock"; tag_interior_door = "telecoms_inner"; pixel_x = 0; pixel_y = -25; req_access = list(13); tag_chamber_sensor = "telecoms_sensor"},/obj/machinery/airlock_sensor{frequency = 1381; id_tag = "telecoms_sensor"; pixel_x = 12; pixel_y = -25},/turf/simulated/floor/plating,/area/tcommsat/entrance) -"gY" = (/obj/machinery/door/airlock/external{frequency = 1381; icon_state = "door_locked"; id_tag = "telecoms_inner"; locked = 1; name = "External Access"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/entrance) -"gZ" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1381; master_tag = "telecoms_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/tcommsat/entrance) -"ha" = (/obj/machinery/bluespace_beacon,/turf/simulated/floor,/area/tcommsat/entrance) -"hb" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 29; pixel_y = 0},/turf/simulated/floor,/area/tcommsat/entrance) -"hc" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating/airless,/area/space) -"hd" = (/obj/structure/closet/crate,/obj/item/clothing/glasses/night,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/tcommsat/entrance) -"he" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/tcommsat/entrance) -"hf" = (/obj/structure/closet/crate,/obj/item/device/aicard,/obj/item/device/multitool,/obj/machinery/camera{c_tag = "Entrance South"; dir = 1; network = list("Tcomsat")},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/tcommsat/entrance) -"hg" = (/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/tcommsat/entrance) -"hh" = (/obj/machinery/light{dir = 4},/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/tcommsat/entrance) -"hi" = (/obj/machinery/computer/teleporter,/turf/simulated/floor/plating,/area/tcommsat/entrance) -"hj" = (/obj/machinery/teleport/station,/turf/simulated/floor/plating,/area/tcommsat/entrance) -"hk" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating,/area/tcommsat/entrance) -"hl" = (/obj/machinery/camera{c_tag = "South Solars"; dir = 4; network = list("Tcomsat")},/turf/space,/area/space) -"hm" = (/turf/space,/area/syndicate_station/commssat) -"hn" = (/turf/simulated/wall/r_wall,/area/AIsattele) -"ho" = (/obj/structure/computerframe,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area/AIsattele) -"hp" = (/obj/machinery/teleport/station,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area/AIsattele) -"hq" = (/turf/simulated/floor/plating/airless,/area/AIsattele) -"hr" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating/airless,/area/AIsattele) -"hs" = (/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/AIsattele) -"ht" = (/obj/structure/table/rack,/obj/item/clothing/gloves/yellow,/turf/simulated/floor/plating/airless,/area/AIsattele) -"hu" = (/obj/structure/girder,/turf/simulated/floor/plating/airless,/area/AIsattele) -"hv" = (/obj/item/weapon/cell,/turf/simulated/floor/plating/airless,/area/AIsattele) -"hw" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/simulated/floor/plating/airless,/area/AIsattele) -"hx" = (/turf/space,/area/AIsattele) -"hy" = (/obj/item/weapon/table_parts,/turf/simulated/floor/plating/airless,/area/AIsattele) -"hz" = (/obj/structure/lattice,/turf/space,/area/AIsattele) -"hA" = (/obj/structure/closet,/turf/simulated/floor/plating/airless,/area/AIsattele) -"hB" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area/AIsattele) -"hC" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/AIsattele) -"hD" = (/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/simulated/floor/plating/airless,/area/AIsattele) +"fU" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/turret_protected/tcomfoyer) +"fV" = (/obj/structure/window/reinforced,/obj/machinery/light{dir = 1},/turf/space,/area/turret_protected/tcomsat) +"fW" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/space,/area/turret_protected/tcomsat) +"fX" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) +"fY" = (/obj/machinery/door/airlock/hatch{name = "Telecoms West Wing"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomfoyer) +"fZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/turret_protected/tcomfoyer) +"ga" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/turret_protected/tcomfoyer) +"gb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor,/area/turret_protected/tcomfoyer) +"gc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/turret_protected/tcomfoyer) +"gd" = (/obj/machinery/door/airlock/hatch{name = "Telecoms East Wing"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomfoyer) +"ge" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) +"gf" = (/obj/machinery/camera/network/telecom{c_tag = "Telecoms Entrance North"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/tcommsat/entrance) +"gg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/light/small{dir = 1},/obj/machinery/camera/network/telecom{c_tag = "Telecoms Power Room East"},/turf/simulated/floor,/area/tcommsat/entrance) +"gh" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat) +"gi" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/turret_protected/tcomfoyer) +"gj" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/turret_protected/tcomfoyer) +"gk" = (/turf/simulated/floor,/area/turret_protected/tcomfoyer) +"gl" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/turret_protected/tcomfoyer) +"gm" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "warningcorner"; dir = 2},/area/turret_protected/tcomfoyer) +"gn" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/turret_protected/tcomfoyer) +"go" = (/turf/simulated/wall/r_wall,/area/tcommsat/entrance) +"gp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/hatch{name = "Telecoms Satellite"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/turret_protected/tcomfoyer) +"gq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/tcommsat/entrance) +"gr" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/fractal_reactor{mapped_in = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor,/area/tcommsat/entrance) +"gs" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Telecommunications Main Breaker"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/tcommsat/entrance) +"gt" = (/obj/structure/sign/electricshock,/turf/simulated/wall/r_wall,/area/tcommsat/entrance) +"gu" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor,/area/tcommsat/entrance) +"gv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/tcommsat/entrance) +"gw" = (/obj/machinery/turretid/stun{ailock = 1; check_synth = 1; control_area = "\improper Telecoms Foyer"; desc = "A firewall prevents AIs from interacting with this device."; name = "Telecoms Foyer turret control"; pixel_y = 29; req_access = list(61)},/turf/simulated/floor,/area/tcommsat/entrance) +"gx" = (/turf/simulated/floor,/area/tcommsat/entrance) +"gy" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/computer/power_monitor{name = "telecoms power monitoring"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/sensor{long_range = 1; name = "Powernet Sensor - Telecommunications Grid"; name_tag = "Telecommunications Grid"},/turf/simulated/floor{icon_state = "bot"},/area/tcommsat/entrance) +"gz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/tcommsat/entrance) +"gA" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/tcommsat/entrance) +"gB" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/tcommsat/entrance) +"gC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/light/small{dir = 1},/obj/machinery/camera/network/telecom{c_tag = "Telecoms Power Room West"},/turf/simulated/floor,/area/tcommsat/entrance) +"gD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/tcommsat/entrance) +"gE" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/tcommsat/entrance) +"gF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light,/obj/machinery/camera/network/telecom{c_tag = "Telecoms Central Compartment South"; dir = 1},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"gG" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/tcommsat/entrance) +"gH" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/tcommsat/entrance) +"gI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/hatch{name = "Telecoms Satellite"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/tcommsat/entrance) +"gJ" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/tcommsat/entrance) +"gK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/tcommsat/entrance) +"gL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/turretid/lethal{ailock = 1; check_synth = 1; control_area = "\improper Telecoms Satellite"; desc = "A firewall prevents AIs from interacting with this device."; name = "Telecoms lethal turret control"; pixel_y = 29; req_access = list(61)},/obj/machinery/camera/network/telecom{c_tag = "Telecoms Foyer"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/turret_protected/tcomfoyer) +"gM" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/tcommsat/entrance) +"gN" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/tcommsat/entrance) +"gO" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/tcommsat/entrance) +"gP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/tcommsat/entrance) +"gQ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/tcommsat/entrance) +"gR" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor,/area/tcommsat/entrance) +"gS" = (/obj/structure/sign/vacuum,/turf/simulated/wall/r_wall,/area/tcommsat/entrance) +"gT" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/tcommsat/entrance) +"gU" = (/obj/item/weapon/cell,/turf/simulated/floor,/area/tcommsat/entrance) +"gV" = (/obj/structure/closet/malf/suits,/turf/simulated/floor,/area/tcommsat/entrance) +"gW" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1381; master_tag = "telecoms_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access = list(13)},/turf/simulated/floor/plating/airless,/area/space) +"gX" = (/obj/machinery/door/airlock/external{frequency = 1381; icon_state = "door_locked"; id_tag = "telecoms_outer"; locked = 1; name = "External Access"; req_access = list(10,13)},/turf/simulated/floor/plating,/area/tcommsat/entrance) +"gY" = (/obj/machinery/camera/network/telecom{c_tag = "Telecoms West Wing South"; dir = 4},/turf/space,/area/turret_protected/tcomsat) +"gZ" = (/obj/machinery/door/airlock/external{frequency = 1381; icon_state = "door_locked"; id_tag = "telecoms_inner"; locked = 1; name = "External Access"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/entrance) +"ha" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1381; master_tag = "telecoms_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/tcommsat/entrance) +"hb" = (/obj/machinery/bluespace_beacon,/turf/simulated/floor,/area/tcommsat/entrance) +"hc" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 29; pixel_y = 0},/turf/simulated/floor,/area/tcommsat/entrance) +"hd" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating/airless,/area/space) +"he" = (/obj/structure/closet/crate,/obj/item/clothing/glasses/night,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/tcommsat/entrance) +"hf" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/tcommsat/entrance) +"hg" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1381; id_tag = "telecoms_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "telecoms_pump"; tag_exterior_door = "telecoms_outer"; frequency = 1381; id_tag = "telecoms_airlock"; tag_interior_door = "telecoms_inner"; pixel_x = 0; pixel_y = -25; req_access = list(13); tag_chamber_sensor = "telecoms_sensor"},/obj/machinery/airlock_sensor{frequency = 1381; id_tag = "telecoms_sensor"; pixel_x = 12; pixel_y = -25},/obj/machinery/camera/network/telecom{c_tag = "Telecoms - Airlock"},/turf/simulated/floor/plating,/area/tcommsat/entrance) +"hh" = (/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/tcommsat/entrance) +"hi" = (/obj/machinery/light{dir = 4},/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/tcommsat/entrance) +"hj" = (/obj/machinery/computer/teleporter,/turf/simulated/floor/plating,/area/tcommsat/entrance) +"hk" = (/obj/machinery/teleport/station,/turf/simulated/floor/plating,/area/tcommsat/entrance) +"hl" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating,/area/tcommsat/entrance) +"hm" = (/obj/machinery/camera/network/telecom{c_tag = "Telecoms East Wing South"; dir = 8},/turf/space,/area/turret_protected/tcomsat) +"hn" = (/turf/space,/area/syndicate_station/commssat) +"ho" = (/turf/simulated/wall/r_wall,/area/AIsattele) +"hp" = (/obj/structure/computerframe,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area/AIsattele) +"hq" = (/obj/machinery/teleport/station,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area/AIsattele) +"hr" = (/turf/simulated/floor/plating/airless,/area/AIsattele) +"hs" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating/airless,/area/AIsattele) +"ht" = (/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/AIsattele) +"hu" = (/obj/structure/table/rack,/obj/item/clothing/gloves/yellow,/turf/simulated/floor/plating/airless,/area/AIsattele) +"hv" = (/obj/structure/girder,/turf/simulated/floor/plating/airless,/area/AIsattele) +"hw" = (/obj/item/weapon/cell,/turf/simulated/floor/plating/airless,/area/AIsattele) +"hx" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/simulated/floor/plating/airless,/area/AIsattele) +"hy" = (/turf/space,/area/AIsattele) +"hz" = (/obj/item/weapon/table_parts,/turf/simulated/floor/plating/airless,/area/AIsattele) +"hA" = (/obj/structure/lattice,/turf/space,/area/AIsattele) +"hB" = (/obj/structure/closet,/turf/simulated/floor/plating/airless,/area/AIsattele) +"hC" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area/AIsattele) +"hD" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/AIsattele) +"hE" = (/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/simulated/floor/plating/airless,/area/AIsattele) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -433,7 +434,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQagagagagagaEagagajacacaNafagagaEagagagaMapbsaabtakacacacacacacacakbsaaaaaUbjbublblblblbvblblbwbnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxagagagagbyavatagagagagagagagagaEagagadakbsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUaabzbAbdbdbdbdbdbdbdbAbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEbCbDbEagaMapakacacadatagagagagavacapbsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavatbFbGaMapafbHbJbIajambKbLaGbMaHawbNacalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavatbFbGaMapafbHbIbJajambKbLaGbMaHawbNacalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtakadacapafagagagagagaEagagaMadamawawarasaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPbQbRagagagagagagbSbTaMapbsbtbUawarasaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtacambVagagagagagavadapbsaaaabtbUarasaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -500,53 +501,53 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaabZcabZaaaaaabZcabZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaabZcabZaaaaaabZcabZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbaabZcabZaaaaaabZcabZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaabZcabZaaaaaabZcabZccbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaabZcabZaaaaaabZcabZeRbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaabZcabZaaaaaabZcabZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaUaUcacacacacacacaaUaUbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaaaaaUaaaacaaaaaaUaaaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYbYbYbYbYbYbYbYbYbYbYbYbYbYcdbYbYbYbYbYbYbYbYbYbYbYbYbYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYbYcececececececececececececececececececececececececececebYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYbYcececfcfcfcfcfcfcfcfcfcecececececececececgcgcgcgcgcgcgcgcebYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYcececfchcicjckclcmcncocfcgcgcgcgcgcgcgcgcpcgcqcrcsctcucvcgcecebYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYcecfchchchcwcxcyczcAcBcCcgcvcDcEcFcvcGcgcHcgcIcvcvcvcvcvcgcecebYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYcececfchcictckclcmcncocfcgcgcgcgcgcgcgcgcpcgcqcrcscjcucvcgcecebYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYcecfchchchcwcxcyczcAcBcCcgcvcDcccFcvcGcgcHcgcIcvcvcvcvcvcgcecebYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYcecfcichcicJcKcLcMcNcOcPcgcQcvcRcvcvcScgcHcgcTcvcvcvcvcvcgceceaUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYcecfcichcicicUcVcWcXcYcZdadbdccvcvdddecgdfcgdgdhdidjdkdlcgcecebYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYcecfcichcicJdmdndodpdpdpdqdrdsdtdudvdwdwdwcgdxdydzdAdBdCdDdEdEdFdGdHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYbYbYbYbYbYbYbYbYcbbYbYbYbYbYbYbYbYbYbYbYcecfcichcicJdIdJdKdLdLdLcgdMdNdOcvdPdQdRdwcgcgcgdScgcgcgcgcecebYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYcbbYbYbYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUbYcecfchdTchdUdIcCdwdwdwdwdwdVdWdXdWdYdZeadZdwdwdUebecchdTchcfcebYbYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaUbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZaaaabYcecfcichcicJedeedwefefefegeheiejefekefelefefdwdUebcPcichcicfcebYbYaaaUbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaUbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZaaaabYcecfcichcicJedeedwefefefegeheieGefekefelefefdwdUebcPcichcicfcebYbYaaaUbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaacacacacacacacacacacacacacacacacacaaabYcecfcichcicJemendwefeleleleoelepeleoelelelefdwdUebcPeqerescfcecebYaUcacacacacacacacacacacacacacacacacaaUbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaabZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcaaabYcecfcichcicJeteudwefeveweleoelexeleoeleyezefdweAeBcPeCeDeEeFcfcebYaacabZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaaaaaaaaaaaaaUaaaaaaaaaUaaaaaaaaaacaeGbYcecfcichcicJebeHdwefeleleleoeIexeJeoelelelefdweKeLeMeNeOePeQcfcebYeRcaaaaaaaaaaaaUaaaaaaaaaUaaaaaaaaaaaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaabZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcaaabYcecfcichcicJeteudwefeveweleoelexeleoeleyezefdweAeBcPeCeDeHeFcfcebYaacabZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaaaaaaaaaaaaaUaaaaaaaaaUaaaaaaaaaacacEbYcecfcichcicJebejdwefeleleleoeIexeJeoelelelefdweKeLeMeNeOePeQcfcebYeEcaaaaaaaaaaaaUaaaaaaaaaUaaaaaaaaaaaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaaaaaaaaaaaaaUaaaaaaaaaUaaaaaaaaaacaeScdcecfchchchdUdIeTdweUeVeWeXekefeYefekeZfafbfcdwfdfednfffgfhficfcecdeScaaaaaaaaaaaaUaaaaaaaaaUaaaaaaaaaaaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaaaaaaaaaaaaaUaaaaaaaaaUaaaaaaaaaacaaabYcecfcichcicJdIcPdweffjfkeleoflexfmeoelfnfoefdwcJebfpfqfrfsftcfcebYaacaaaaaaaaaaaaUaaaaaaaaaUaaaaaaaaaaaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaabZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcaaabYcecfcichcicJebcPdwefeleleleoelexeleoelelelefdwcJebcPeCfufvfwcfcebYaacabZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaacacacacacacacacacacacacacacacacacaaabYcecfcichcicJdIcPdweffxfyfzfAelepelfBfCfDfEefdwcJebcPfFerescfcecebYaUcacacacacacacacacacacacacacacacacaaUbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaUbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZaaaabYcecfcichcicJdIcPdwefefeffGefeffHefeffIefefefdwcJebcPcichcicfcebYbYaaaUbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYbYcecfchdTchdUebcCdwdwdwdwdwdwdwfJdwdwdwdwdwdwdwdUebcCchdTchcfcebYbYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYbYbYbYbYbYbYbYbYbYbYbYcbbYbYbYbYbYbYbYbYcecfcichcicJebfKfLcZcZfMfNfOfPfQfRfTfSfMcZcZfUfVebcPcichcicfcebYbYbYbYbYbYbYcbbYbYbYbYbYbYbYbYbYbYcbbYbYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYcecfcichcicJfWdndndndnfXfYfZfZgafZfZgbgcdndndndngdcPcichgecfcebYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYcecfgfchcicidLdLggdLdLfMghgigjgkgjglgmfMdLdLdLdLdLcicichcicfcebYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYcecfcichcicicicichcignfMfMfMfMgofMfMfMfMgncicicicicicichcicfcebYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYcecfchchchchchchchchgpgzgAgsgtgugvgsgwgxgychchchchchchchchcfcebYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYcececfchcicicicicicfgngrgqgBgCgDgCgEgCgFgncfcicicicicichcfcecebYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYbYcececfcfcfcfcfcfcfgngngngngGgHgGgngngngncfcfcfcfcfcfcfcecebYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYbYcececececececececececegngIgJgKgncececececececececececebYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYbYbYbYbYbYbYbYbYbYbYgngngLgugMgngnbYbYbYbYbYbYbYbYbYbYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYcacabYbYgngngNgOgPgCgQgngnbYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacagngngRgSgTgwgwgwgwgUgnbYaUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacagVgWgXgYgZgwgwhagwgwhbgnbYaUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacahcgGgngnhdhegwgwgwgwgUgnbYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYcacabYbYgngnhfhghghghhgngnbYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYbYbYbYbYbYgngnhihjhkgngnbYbYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYbYbYbYgngngngngnbYbYbYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaaaaaaaaaaaaaUaaaaaaaaaUaaaaaaaaaacaaabYcecfcichcicJdIcPdweffjfkfleofmexfneoflfofpefdwcJebfqfrfsftfucfcebYaacaaaaaaaaaaaaUaaaaaaaaaUaaaaaaaaaaaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaabZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcaaabYcecfcichcicJebcPdwefeleleleoelexeleoelelelefdwcJebcPeCfvfwfxcfcebYaacabZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaacacacacacacacacacacacacacacacacacaaabYcecfcichcicJdIcPdweffyfzfAfBelepelfCfDfEfFefdwcJebcPfGerescfcecebYaUcacacacacacacacacacacacacacacacacaaUbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaUbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZaaaabYcecfcichcicJdIcPdwefefeffHefefgFefeffJefefefdwcJebcPcichcicfcebYbYaaaUbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYbYcecfchdTchdUebcCdwdwdwdwdwdwdwfKdwdwdwdwdwdwdwdUebcCchdTchcfcebYbYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYbYbYbYbYbYbYbYbYbYbYbYcbbYbYbYbYbYbYbYbYcecfcichcicJebfLfMcZcZfNfOfPfQgLfSfTfUfNcZcZfVfWebcPcichcicfcebYbYbYbYbYbYbYcbbYbYbYbYbYbYbYbYbYbYcbbYbYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYcecfcichcicJfXdndndndnfYfZgagagbgagagcgddndndndngecPcichhmcfcebYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYcecfgYchcicidLdLghdLdLfNgigjgkglgkgmgnfNdLdLdLdLdLcicichcicfcebYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYcecfcichcicicicichcigofNfNfNfNgpfNfNfNfNgocicicicicicichcicfcebYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYcecfchchchchchchchchgqgrgsgtgugvgwgtgxgygzchchchchchchchchcfcebYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYcececfchcicicicicicfgogAgBgCgDgEgDgggDgGgocfcicicicicichcfcecebYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYbYcececfcfcfcfcfcfcfgogogogogHgIgHgogogogocfcfcfcfcfcfcfcecebYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYbYcececececececececececegogJgKgfgocececececececececececebYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYbYbYbYbYbYbYbYbYbYbYgogogMgvgNgogobYbYbYbYbYbYbYbYbYbYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYcacabYbYgogogOgPgQgDgRgogobYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacagogogSgTgUgxgxgxgxgVgobYaUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacagWgXhggZhagxgxhbgxgxhcgobYaUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacahdgHgogohehfgxgxgxgxgVgobYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYcacabYbYgogofRhhhhhhhigogobYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYbYbYbYbYbYgogohjhkhlgogobYbYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYbYbYbYgogogogogobYbYbYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYbYaabYbYbYcdbYbYbYaabYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaaaaaUaaaacaaaaaaUaaaaaUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaaaUcacacacacacacaaUaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaabZcabZaaaaaabZcabZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaabZcabZaaaaaabZcabZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaabZcabZaaaaaabZcabZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYhlbZcabZaaaaaabZcabZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYfIbZcabZaaaaaabZcabZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaabZcabZaaaaaabZcabZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbaabZcabZaUaUaUbZcabZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaabZcabZaaaaaabZcabZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -573,33 +574,33 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnaUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUaUhnhnhohphqhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUaUaUhnhnhrhqhshqhthnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahuhvhqhwhxhqhqhyhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmhmhmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahqhqhqhzhzhzhqhqhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmhmhmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhqhzhzhxhzhxhAhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmhmhmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUaUaUhnhnhBhChxhzhDhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmhmhmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUaUhnhnhqhzhqhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmhmhmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhqhnhnaUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmhmhmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUaaaUaaaUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmhmhmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUaUaUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmhmhmhmhmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmhmhmhmhmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmhmhmhmhmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmhmhmhmhmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmhmhmhmhmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmhmhmhmhmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmhmhmhmhmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmhmhmhmhmhmhmhmhmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmaahmhmhmhmhmaahmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmaahmhmhmhmhmaahmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahmhmhmhmhmaaaaaaaaaaaaaahmhmhmhmhmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahohohohohoaUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUaUhohohphqhrhohoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUaUaUhohohshrhthrhuhohoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahvhwhrhxhyhrhrhzhoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnhnhnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahrhrhrhAhAhAhrhrhoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnhnhnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahohrhAhAhyhAhyhBhoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnhnhnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUaUaUhohohChDhyhAhEhohoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnhnhnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUaUhohohrhAhrhohoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnhnhnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahohohrhohoaUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnhnhnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUaaaUaaaUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnhnhnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUaUaUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnaahnhnhnhnhnaahnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnaahnhnhnhnhnaahnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahnhnhnhnhnaaaaaaaaaaaaaahnhnhnhnhnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/exodus-4.dmm b/maps/exodus-4.dmm index 0d9ffaf86b4..cc39edcc6ef 100644 --- a/maps/exodus-4.dmm +++ b/maps/exodus-4.dmm @@ -38,7 +38,7 @@ "aL" = (/obj/structure/table/reinforced,/obj/item/stack/sheet/plasteel{amount = 50},/obj/random/tech_supply,/turf/simulated/floor,/area/constructionsite/teleporter) "aM" = (/obj/structure/table/reinforced,/obj/random/powercell,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/constructionsite/teleporter) "aN" = (/obj/structure/table/reinforced,/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 0; pixel_y = 0},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 0; pixel_y = 0},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 0; pixel_y = 0},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 0; pixel_y = 0},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 0; pixel_y = 0},/obj/random/tech_supply,/turf/simulated/floor,/area/constructionsite/teleporter) -"aO" = (/obj/structure/table/reinforced,/obj/machinery/camera/autoname,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/random/tech_supply,/turf/simulated/floor,/area/constructionsite/teleporter) +"aO" = (/obj/structure/table/reinforced,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/random/tech_supply,/obj/machinery/camera/network/engineering_outpost{c_tag = "Construction Site Teleporter"},/turf/simulated/floor,/area/constructionsite/teleporter) "aP" = (/obj/machinery/shieldgen,/obj/structure/window/basic{tag = "icon-window (WEST)"; icon_state = "window"; dir = 8},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/constructionsite/teleporter) "aQ" = (/obj/machinery/shieldgen,/obj/structure/window/basic{tag = "icon-window (EAST)"; icon_state = "window"; dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/constructionsite/teleporter) "aR" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload Access"; req_access = list(16)},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/fore) @@ -82,9 +82,17 @@ "bD" = (/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/obj/machinery/power/port_gen/pacman,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/constructionsite/teleporter) "bE" = (/obj/structure/cable/blue,/obj/machinery/power/port_gen/pacman,/obj/machinery/power/terminal,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/constructionsite/teleporter) "bF" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{id_tag = "constructionsite_vent"},/turf/simulated/floor,/area/constructionsite/teleporter) -"bG" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{id_tag = "constructionsite_vent"},/obj/machinery/camera/autoname,/turf/simulated/floor,/area/constructionsite/teleporter) +"bG" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{id_tag = "constructionsite_vent"},/obj/machinery/camera/network/engineering_outpost{c_tag = "Construction Site Teleporter Airlock"},/turf/simulated/floor,/area/constructionsite/teleporter) "bH" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "constructionsite_inner"; locked = 1; req_access = list(10)},/turf/simulated/floor,/area/constructionsite/teleporter) +"bI" = (/obj/machinery/power/apc/high{dir = 1; name = "north bump"; pixel_y = 24},/turf/simulated/floor/plating/airless,/area/constructionsite/ai) "bJ" = (/turf/simulated/floor/airless{tag = "icon-gcircuit"; icon_state = "gcircuit"},/area/constructionsite/ai) +"bK" = (/obj/machinery/computer/drone_control,/turf/simulated/floor/plating/airless,/area/constructionsite/ai) +"bL" = (/obj/machinery/drone_fabricator/derelict,/turf/simulated/floor/plating/airless,/area/constructionsite/ai) +"bM" = (/obj/machinery/power/apc/high{dir = 2; environ = 0; equipment = 0; lighting = 0; locked = 0; name = "south bump"; pixel_y = -24},/turf/simulated/floor/airless,/area/constructionsite/atmospherics) +"bN" = (/obj/machinery/power/emitter{anchored = 1; dir = 8; id = "EngineEmitter"; state = 2},/turf/simulated/floor/plating/airless,/area/space) +"bO" = (/obj/machinery/power/emitter{anchored = 1; dir = 4; state = 2},/turf/simulated/floor/plating/airless,/area/space) +"bP" = (/obj/machinery/power/terminal{dir = 8},/turf/simulated/floor/plating/airless,/area/constructionsite/engineering) +"bQ" = (/obj/machinery/power/terminal{dir = 4},/turf/simulated/floor/plating/airless,/area/constructionsite/engineering) "cj" = (/obj/structure/lattice,/turf/space,/area/constructionsite/maintenance) "ck" = (/obj/machinery/door/airlock/highsecurity{name = "Messaging Server"; req_access = list(30)},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/fore) "cl" = (/obj/machinery/door/airlock/highsecurity{name = "Messaging Server"; req_access = list(30)},/turf/simulated/floor/plating/airless,/area/constructionsite/ai) @@ -253,9 +261,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababalababalalalalalalalalalalalacaeapaoaoapacacaeapapauaoaoaoapabababaWaWaWbtaWaWaWabababapauauaoauapapaeacacapauaoapaeacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabalalalalalalalalalalalalalalalalalalacaeapaoaoapaeaeaeapauauaoaoapapababaWaWbJbJaXbJbJaWaWababapapauaoauauapaeaeaeapauauapaeacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabavabababababavavavavavabalabalabalabalabalacacacacacacacacacacacaeapaoaoapaqapapapauauauauapaWaWaWaWaXbJaXaXaXbJaXaWaWaWaWapauauaoauapapapaqapauauapacacavavavababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalabalalalalalalalalalalalalalaeaeaeaeaeaeaeaeaeaeaeaeapaoaoauauauauauauaoauauapaXaXaXaWbJbJaXaYaXbJbJaWaXaXaXapauauaoauauauauaoauauaoapaeaealalalalalalalalalalalalaaaaabaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababalalalalalababalalabalabalabalabalabalcjaecjaeaeaeaeaeaeaeaeaeapauauauauauauauaoauauauckaYaYaYclaXaXaXaYaXaXaXcmaYaYaYcnaoauaoaoaoaoaoaoauauauapaeaealalalalalalalalalabalabalabalalalabalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababalalalalalalalabalabalalalalalaeaeaecjaeaeaeaeaeaeaeaeapaoaoauaoaoaoaoaoaoaoaoapaXaXaXaWbJbJaXaYaXbJbJaWcscscsapauauaoauauauauauauaoaoapaeaealalalalalalalalalalalalalalalalabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalabalalalalalalalalalalalalalaeaeaeaeaeaeaeaeaeaeaeaeaoaoaoauauauauauauaoauauapaXaXaXaWbJbJaXaYaXbJbJaWbLbIbKapauauaoauauauauaoauauaoaoaeaealalalalalalalalalalalalaaaaabaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababalalalalalababalalabalabalabalabalabalcjaecjaeaeaeaeaeaeaeaeaeauauauauauauauauaoauauauckaYaYaYclaXaXaXaYaXaXaXcmaYaYaYcnaoauaoaoaoaoaoaoauauauauaeaealalalalalalalalalabalabalabalalalabalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababalalalalalalalabalabalalalalalaeaeaecjaeaeaeaeaeaeaeaeaoaoaoauaoaoaoaoaoaoaoaoapaXaXaXaWbJbJaXaYaXbJbJaWcscscsapauauaoauauauauauauaoaoaoaeaealalalalalalalalalalalalalalalalabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavavavabababababavavavavavavavavavavavacacacacacacacacacacacacapaoaoapcIapapapcJaucJauapaWaWaWaWaXbJaXaXaXbJaXaWaWaWaWapauauaoauapapapaqapauaoapacacavavavavavababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababaccjcVcWcWcVaeaeaecVcXcXcXcXcVcVababaWaWbJbJaXbJbJaWaWababcVcVcXcXcXcXcVaeaeaecVcWcWcXaeacababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaababaccjcVcWcWcVacacaecVcVcXdmcXdmcVabababaWaWaWbtaWaWaWabababcVcXcXcWcXcVcVaeacaccVcWcWcVaeacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -277,7 +285,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcVcXcXcXcXcVdydydydydydydydydydydydycVcWcWcXcXcWcVdydydydydydydydydydydydycVcWcWcWcWdyabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcVcVcVcVcVcVeZeZeZeZfaeZfbeZfbeZfbeZcVcWcWcWcWcXcVfcfcfdfdfdfdfdfdfdfdfcfccVcVcWcWcVcVabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababcVdmdmcVfefefeeZeZfaeZeZeZeZeZeZeZcVcXcXcXcXcXcVfdfdfcfcfcfdfdfdfdfdfcfcfccVcWcWdyababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababcVdmdmcVfefeeZfefefafafafafafaffffcVcVcVcVcVcVcVfdfdfcfcfcfdfdfdfdfdfcfdfccVcWcWdyababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababcVdmdmcVfefeeZfefefafafafafafaffffcVcVcXcXcXcVcVfdfdfcfcfcfdfdfdfdfdfcfdfccVcWcWdyababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababcVdmdmcVfefefefefefaeZeZfefefeeZeZeZdycXcXcXdyfcfcfdfdfdfdfdfdfdfcfcfcfdfccVcWcWdyababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcVdmdmcVfefefefefefeeZfefefefeeZfefedycXcXcXdyfcfcfdfdfdfdfdfdfdfcfcfcfdfccVcWcWdyabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcVdmdmcVfgfgfgfefefefefefefefefefefedycXcXcXdyfcfcfdfdfdfdfdfdfdfdfdfdfdfccVcXcXdyabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -296,7 +304,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafkfkfkfkfhfhfhfhfhfefefefefefefvcWcWcWcWcWcWcWcWcWfjfdfdfdfdfdfdfdfwfsfpfBcVcXcXdyabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafkfkfkfkfhfhfhfhfhfhfhfhfhfgfgcVcWcWcWcWcWcWcWcWcWcVfdfdfdfdfdfdfdfdflflflcVcXcXdyabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafCfDfDfDfDfDfDfDfDfDfDfDfCfgfgfgfgfgcVcWcWcWcWcWcWcWcWcWcVfdfdfdfdfdfdfwfEfofFfGcVcXcXdyabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafCfHfIfHfIfHfHfHfHfHfHfIfDfhfgfhfefecVcVcWcWcWcWcWcWcWcVcVflflfdfdfLfwfdfwfsfAfNcVdmdmdyabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafCfHfIfHfIfHfHfHfHfHfHfIfDfhfgfhfefecVcVcWcWcWcWcWcWcWcVcVflflfdbMfLfwfdfwfsfAfNcVdmdmdyabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafCfHfHfHfHfHfIfHfIfCfIfIfDaaabaafIfHfIcVcVcVcWcWcWcVcVcVababflflflflflflflflflflcVcXcXdyalabalabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafCfHfIfHfIfHfHfHfHfHfHfOfDabababfHfHfHfHfHcVcWcWcWcVfIfIfHfHfIfHfIfHfHfHfHfIfHfIcXdmdmcXabababalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafCfHfHfHfHfHfOfHfHfOfOfOfDaaabaafIfHfIfHfIcVcXcWcWcVfIfHfHfHfCfCfCfCfCfCfCfCfCfCfCfCfCfCfCfIfIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -348,13 +356,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRfRfTfTfTfTfTfRfRfRfSfRfRfRfTfTfTfTfTfRfRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafWfRfRfRfYfRfRfRfTfTfTfTfTfRfRfRfSfRfRfRfWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafWfWfXfTfTfTfXfTfTfTfTfTfTfTfXfTfTfTfXfWfWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafWfWfXfTfTfTfXfZfTfTfTfTfTfZfXfTfTfTfXfWfWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafWfWfXfTfTfTfXfZfTfTfTfTfTfZfXfTfTfTfXfWfWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafWfWfXfTfTfTfXfZbPfTfTfTbQfZfXfTfTfTfXfWfWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafWfWfXfTfTfTfXfZbPfTfTfTbQfZfXfTfTfTfXfWfWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafWfWfXfTfTfTfXfTfTfTfTfTfTfTfXfTfTfTfXfWfWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafWfWfRfRfRfRfRfRfTfTfTfTfTfRfRfRfRfRfRfWfWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafWfWfWfTfTfTfTfRfRfXfXfXfRfRfTfTfTfTfWfWfWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalabababalabababalabababalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalalgealalalgealalalgealalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalbOalgealalalgealalalgealbNalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalabalabababalabababalabalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalabalabaaabalabaaabalabalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalabalabababalabababalabalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -362,7 +370,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalabalabababalabababalabalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalabalabaaabalabaaabalabalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalalalabababalabababalalalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalalgealalalgealalalgealalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalbOalgealalalgealalalgealbNalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalalalalalalalalalalalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/exodus-5.dmm b/maps/exodus-5.dmm index 22732bb0b88..9fd84af475f 100644 --- a/maps/exodus-5.dmm +++ b/maps/exodus-5.dmm @@ -50,22 +50,22 @@ "aX" = (/obj/structure/cable/blue,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/kitchen) "aY" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/hallway) "aZ" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/hallway) -"ba" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials Loading"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/research/lab) -"bb" = (/turf/simulated/wall/r_wall,/area/outpost/research/lab) -"bc" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/outpost/research/lab) +"ba" = (/obj/structure/disposaloutlet{dir = 1},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored) +"bb" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored) +"bc" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/outpost/research/chemistry) "bd" = (/obj/machinery/light/small{dir = 4},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/chemistry) "be" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/chemistry) "bf" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/outpost/research/chemistry) "bg" = (/obj/item/weapon/stool,/turf/simulated/floor{icon_state = "white"},/area/outpost/research/chemistry) "bh" = (/obj/structure/table,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/kitchen) -"bi" = (/obj/structure/sign/nosmoking_2{pixel_x = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/autoname/research_outpost{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/outpost/research/analysis) +"bi" = (/obj/effect/landmark{name = "bluespacerift"},/turf/simulated/floor/plating,/area/outpost/research/chemistry) "bj" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/kitchen) "bk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/outpost/abandoned) "bl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/outpost/abandoned) "bm" = (/turf/simulated/floor,/area/outpost/abandoned) "bn" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/chemistry) "bo" = (/turf/simulated/floor{icon_state = "white"},/area/outpost/research/analysis) -"bp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/outpost/research/analysis) +"bp" = (/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_y = 32},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor,/area/outpost/research/chemistry) "bq" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/hallway) "br" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/hallway) "bs" = (/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/kitchen) @@ -99,12 +99,12 @@ "bU" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Spectrometry Lab"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) "bV" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/outpost/abandoned) "bW" = (/obj/item/stack/rods,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/outpost/abandoned) -"bX" = (/obj/structure/table,/obj/machinery/camera{c_tag = "Research Outpost Sample Preparation"; dir = 1; network = list("Research","SS13")},/obj/item/weapon/reagent_containers/glass/beaker/water,/obj/item/weapon/reagent_containers/glass/beaker/fuel,/obj/item/weapon/reagent_containers/glass/bottle/toxin,/obj/item/weapon/reagent_containers/glass/beaker/sulphuric{name = "beaker 'sulphuric acid'"},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/outpost/research/chemistry) +"bX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Hallway Fore"; dir = 4},/turf/simulated/floor,/area/outpost/research/hallway) "bY" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/dropper{pixel_y = -4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/outpost/research/chemistry) "bZ" = (/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/outpost/research/chemistry) "ca" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/outpost/research/chemistry) "cb" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/outpost/research/lab) -"cc" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials Sample Preparation"; req_access = list(65)},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/lab) +"cc" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Hydroponics"; dir = 8},/turf/simulated/floor,/area/outpost/research/chemistry) "cd" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/outpost/research/lab) "ce" = (/obj/machinery/alarm{dir = 2; pixel_y = 25},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/outpost/research/lab) "cf" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{dir = 6; icon_state = "whitepurple"},/area/outpost/research/lab) @@ -149,7 +149,7 @@ "cS" = (/obj/structure/sign/science{desc = "A warning sign which reads 'MASS SPECTROMETRY'"; name = "\improper MASS SPECTROMETRY"; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/outpost/research/hallway) "cT" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/outpost/research/hallway) "cU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) -"cV" = (/obj/machinery/camera{c_tag = "Research Outpost Lobby"; dir = 2; network = list("Research","SS13")},/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/outpost/research/hallway) +"cV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Sample Analysis"; dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/outpost/research/analysis) "cW" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = -30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) "cX" = (/obj/structure/noticeboard/anomaly{icon_state = "nboard05"; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) "cY" = (/obj/structure/disposalpipe/segment,/obj/machinery/light/small{dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = -25; pixel_y = 0},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "whitepurple"},/area/outpost/research/lab) @@ -157,7 +157,7 @@ "da" = (/obj/item/weapon/stool,/turf/simulated/floor{icon_state = "white"},/area/outpost/research/lab) "db" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/outpost/research/hallway) "dc" = (/obj/structure/closet/walllocker/emerglocker/north,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/outpost/research/hallway) -"dd" = (/obj/structure/sign/chemistry{desc = "A warning sign which reads 'SAMPLE PREPARATION'"; name = "\improper SAMPLE PREPARATION"; pixel_y = 32},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/camera{c_tag = "Research Outpost Hallway Port"; dir = 2; network = list("Research","SS13")},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/outpost/research/hallway) +"dd" = (/obj/structure/table,/obj/effect/landmark{name = "bluespacerift"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/kitchen) "de" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/outpost/research/hallway) "df" = (/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/outpost/research/hallway) "dg" = (/obj/structure/extinguisher_cabinet{pixel_x = -25; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/outpost/research/hallway) @@ -172,14 +172,14 @@ "dp" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 22},/turf/simulated/floor/plating,/area/outpost/research/disposal) "dq" = (/turf/simulated/floor/plating/airless/asteroid,/area/outpost/research/disposal) "dr" = (/obj/machinery/mass_driver{dir = 4; id = "research"},/turf/simulated/floor/plating/airless/asteroid,/area/outpost/research/disposal) -"ds" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access = list(65)},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/lab) +"ds" = (/obj/structure/sign/nosmoking_2{pixel_x = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/outpost/research/analysis) "dt" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/emergency{pixel_x = 5; pixel_y = 5},/turf/simulated/floor/plating,/area/outpost/research/disposal) "du" = (/turf/simulated/floor{dir = 4; icon_state = "whiteyellowcorner"},/area/outpost/research/hallway) "dv" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/kitchen) "dw" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/outpost/research/hallway) "dx" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) "dy" = (/obj/machinery/vending/snack,/obj/machinery/light{dir = 4},/turf/simulated/floor/wood,/area/outpost/research/hallway) -"dz" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/research{name = "Anomalous Materials Locker Room"; req_access = list(65)},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/lab) +"dz" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials Loading"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/research/chemistry) "dA" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) "dB" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/wood,/area/outpost/research/hallway) "dC" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor/wood,/area/outpost/research/hallway) @@ -195,7 +195,7 @@ "dM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/outpost/abandoned) "dN" = (/obj/machinery/light/small,/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/outpost/research/lab) "dO" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/screwdriver{pixel_y = 15},/obj/item/weapon/melee/baton/loaded,/turf/simulated/floor{icon_state = "white"},/area/outpost/research/lab) -"dP" = (/obj/machinery/camera{c_tag = "Research Outpost Anomalous Materials Lab"; dir = 8; network = list("Research","SS13")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/lab) +"dP" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker/water,/obj/item/weapon/reagent_containers/glass/beaker/fuel,/obj/item/weapon/reagent_containers/glass/bottle/toxin,/obj/item/weapon/reagent_containers/glass/beaker/sulphuric{name = "beaker 'sulphuric acid'"},/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Sample Preparation"; dir = 1},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/outpost/research/chemistry) "dQ" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 4},/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"},/turf/simulated/floor/plating/airless,/area/shuttle/alien/mine) "dR" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/alien/mine) "dS" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/alien/mine) @@ -333,7 +333,7 @@ "gu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/outpost/abandoned) "gv" = (/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/outpost/abandoned) "gw" = (/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/outpost/research/eva) -"gx" = (/obj/machinery/camera{c_tag = "Research Outpost Hallway Central"; dir = 4; network = list("Research","SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/outpost/research/hallway) +"gx" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials Sample Preparation"; req_access = list(65)},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/chemistry) "gy" = (/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "gz" = (/obj/item/stack/rods,/obj/structure/lattice,/turf/space,/area/space) "gA" = (/obj/structure/closet/secure_closet/xenoarchaeologist{req_access = list(47)},/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced,/turf/simulated/floor,/area/outpost/research/hallway) @@ -368,7 +368,7 @@ "hd" = (/obj/effect/gibspawner/human,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/outpost/abandoned) "he" = (/obj/effect/gibspawner/robot,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/outpost/abandoned) "hf" = (/obj/structure/table,/obj/machinery/alarm{dir = 1; pixel_y = -25},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/outpost/research/dock) -"hg" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "cmo"},/area/outpost/research/dock) +"hg" = (/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Kitchen"; dir = 8},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/kitchen) "hh" = (/obj/structure/closet/emcloset,/obj/machinery/alarm{dir = 1; pixel_y = -25},/turf/simulated/floor,/area/outpost/research/dock) "hi" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "bluecorner"},/area/outpost/research/dock) "hj" = (/obj/structure/closet/emcloset,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/outpost/research/dock) @@ -377,7 +377,7 @@ "hm" = (/obj/machinery/door/window/westleft,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/outpost/research/eva) "hn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/outpost/research/dock) "ho" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/structure/cable/blue,/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/turf/simulated/floor,/area/outpost/research/dock) -"hp" = (/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/camera{c_tag = "Research Outpost Medbay"; dir = 1; network = list("Research","SS13")},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/medical) +"hp" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "hq" = (/obj/machinery/sleeper{dir = 1},/turf/simulated/floor{dir = 9; icon_state = "warnwhite"},/area/outpost/research/medical) "hr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/research/dock) "hs" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Long Term Storage"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/anomaly_storage) @@ -409,7 +409,7 @@ "hS" = (/obj/item/weapon/shard,/obj/structure/lattice,/turf/space,/area/space) "hT" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/outpost/abandoned) "hU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/research/dock) -"hV" = (/obj/machinery/camera{c_tag = "Research Outpost Shuttle Dock"; dir = 8; network = list("Research","SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/outpost/research/dock) +"hV" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = 32},/turf/simulated/floor/wood,/area/outpost/research/kitchen) "hW" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/outpost/research/dock) "hX" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/westleft{base_state = "right"; icon_state = "right"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/outpost/research/eva) "hY" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24; pixel_y = -32},/obj/structure/cable/blue,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/medical) @@ -464,13 +464,13 @@ "iV" = (/turf/simulated/wall,/area/outpost/research/chemistry) "iW" = (/obj/structure/table,/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/outpost/research/chemistry) "iX" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/kitchen) -"iY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/camera/autoname/research_outpost{dir = 4},/turf/simulated/floor,/area/outpost/research/hallway) +"iY" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "iZ" = (/obj/structure/bed,/obj/item/weapon/bedsheet/brown,/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor/carpet,/area/outpost/research/hallway) "ja" = (/obj/machinery/door_control{id = "rdorm2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; specialfunctions = 4},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/research/hallway) "jb" = (/obj/structure/table/rack,/obj/item/stack/sheet/metal{amount = 50; pixel_x = 5; pixel_y = 5},/obj/item/stack/sheet/glass{amount = 50},/obj/item/weapon/storage/belt/utility{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/storage/toolbox/emergency{pixel_x = 5; pixel_y = 5},/turf/simulated/floor/plating,/area/outpost/research/chemistry) "jc" = (/obj/structure/table,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/carpet,/area/outpost/research/hallway) "jd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/research/chemistry) -"je" = (/obj/machinery/camera/autoname/research_outpost{dir = 8},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/kitchen) +"je" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/outpost/research/kitchen) "jf" = (/obj/machinery/door_control{id = "rddorm1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; specialfunctions = 4},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/research/hallway) "jg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor,/area/outpost/research/chemistry) "jh" = (/obj/machinery/light/small,/obj/structure/closet/walllocker/emerglocker/north{dir = 1; pixel_y = -32},/turf/simulated/floor/plating,/area/outpost/research/chemistry) @@ -493,14 +493,14 @@ "jy" = (/obj/machinery/mineral/input,/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_north"},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) "jz" = (/obj/machinery/mineral/unloading_machine{icon_state = "unloader-corner"},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) "jA" = (/obj/effect/decal/cleanable/dirt,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) -"jB" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{dir = 8; icon_state = "loadingarea"},/area/outpost/mining_north) +"jB" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Lobby Port"},/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/outpost/research/hallway) "jC" = (/obj/item/weapon/table_parts,/obj/structure/table/rack,/obj/item/stack/sheet/glass/reinforced{amount = 8},/obj/item/stack/rods{amount = 6},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) "jD" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/outpost/mining_north) "jE" = (/obj/structure/girder,/turf/simulated/floor/plating,/area/outpost/mining_north) "jF" = (/turf/simulated/wall,/area/outpost/mining_north) "jG" = (/obj/item/weapon/shovel,/obj/item/weapon/pickaxe,/turf/simulated/floor/plating,/area/outpost/mining_north) "jH" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"jI" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/camera{c_tag = "North Outpost"; dir = 8; network = list("MINE")},/obj/effect/decal/cleanable/blood/oil,/obj/structure/cable,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) +"jI" = (/obj/structure/sign/chemistry{desc = "A warning sign which reads 'SAMPLE PREPARATION'"; name = "\improper SAMPLE PREPARATION"; pixel_y = 32},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Lobby Starboard"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/outpost/research/hallway) "jJ" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) "jK" = (/obj/machinery/conveyor_switch{id = "mining_north"; pixel_x = -5},/obj/effect/decal/cleanable/dirt,/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) "jL" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/outpost/mining_north) @@ -508,7 +508,7 @@ "jN" = (/obj/structure/closet/walllocker/emerglocker/south,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/obj/effect/decal/cleanable/dirt,/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"; pixel_x = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) "jO" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_north_outpost_outer"; locked = 1; name = "Mining External Access"; req_access = list(10,13)},/obj/effect/decal/cleanable/dirt,/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"; pixel_x = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) "jP" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_north_outpost_inner"; locked = 1; name = "Mining External Access"},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/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"; pixel_x = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) -"jQ" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/effect/decal/cleanable/dirt,/obj/machinery/light/small,/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"; pixel_x = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) +"jQ" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Anomalous Materials Lab"; dir = 8},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/lab) "jR" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plating,/area/outpost/mining_north) "jS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) "jT" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating,/area/outpost/mining_north) @@ -518,7 +518,7 @@ "jX" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_north) "jY" = (/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_north_outpost_sensor"; pixel_x = 0; pixel_y = 25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "mining_north_outpost_pump"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) "jZ" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) -"ka" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera{c_tag = "North Outpost - Airlock"; dir = 2; network = list("MINE")},/turf/simulated/floor/plating,/area/outpost/mining_north) +"ka" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/research{name = "Anomalous Materials Locker Room"; req_access = list(65)},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) "kb" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/plating,/area/outpost/mining_north) "kc" = (/obj/effect/decal/cleanable/cobweb,/obj/item/stack/sheet/metal{amount = 10},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/clothing/glasses/meson,/obj/item/weapon/storage/box/lights/mixed,/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/plating,/area/outpost/mining_north) "kd" = (/obj/structure/table,/obj/effect/decal/cleanable/cobweb2,/obj/machinery/microwave{pixel_y = 6},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) @@ -532,7 +532,7 @@ "kl" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_north"},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) "km" = (/turf/simulated/floor,/area/outpost/research/isolation_monitoring) "kn" = (/obj/machinery/atmospherics/valve/digital/open,/turf/simulated/floor,/area/outpost/research/isolation_monitoring) -"ko" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_y = 32},/turf/simulated/wall/r_wall,/area/outpost/research/power) +"ko" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Hallway Central"; dir = 4},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) "kp" = (/obj/machinery/atmospherics/pipe/simple/visible/supply{tag = "icon-intact-supply (NORTHEAST)"; icon_state = "intact-supply"; dir = 5},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact-scrubbers (NORTHEAST)"; icon_state = "intact-scrubbers"; dir = 5},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/research/power) "kq" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_north_outpost_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = 25; req_one_access = list(13,54)},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/effect/decal/cleanable/dirt,/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"; pixel_x = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) "kr" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/obj/machinery/light,/turf/simulated/floor/wood,/area/outpost/research/kitchen) @@ -584,7 +584,7 @@ "ll" = (/turf/simulated/floor,/area/outpost/research/eva) "lm" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/structure/dispenser/oxygen,/turf/simulated/floor,/area/outpost/research/eva) "ln" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/research/eva) -"lo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/research/eva) +"lo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Hallway Port"; dir = 4},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/outpost/research/hallway) "lp" = (/obj/machinery/mineral/unloading_machine,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/research/eva) "lq" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/research/eva) "lr" = (/obj/machinery/conveyor_switch{id = "anotempload"; name = "conveyor switch"; pixel_x = 0; pixel_y = 0; req_access = list(65)},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) @@ -594,8 +594,8 @@ "lv" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/gloves{pixel_x = 4; pixel_y = 5},/obj/item/weapon/storage/box/samplebags{pixel_x = 3; pixel_y = -3},/obj/item/weapon/storage/toolbox/emergency{pixel_x = 5; pixel_y = 5},/turf/simulated/floor/plating,/area/outpost/research/emergency_storage) "lw" = (/obj/structure/closet/hydrant{pixel_x = -32},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/plating,/area/outpost/research/emergency_storage) "lx" = (/obj/machinery/atmospherics/unary/heater{dir = 4},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) -"ly" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/autoname/research_outpost{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) -"lz" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/machinery/camera/autoname/research_outpost,/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) +"ly" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Hallway Starboard"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) +"lz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Shuttle Dock"; dir = 8},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/outpost/research/dock) "lA" = (/obj/machinery/conveyor_switch{id = "anosample"; req_access = list(65)},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "lB" = (/obj/machinery/power/emitter,/turf/simulated/floor{icon_state = "delivery"},/area/outpost/research/isolation_monitoring) "lC" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/outpost/research/isolation_monitoring) @@ -612,7 +612,7 @@ "lN" = (/obj/effect/decal/remains/human,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/outpost/abandoned) "lO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/research/eva) "lP" = (/obj/machinery/floodlight,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/outpost/research/eva) -"lQ" = (/obj/machinery/floodlight,/turf/simulated/floor,/area/outpost/research/eva) +"lQ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/outpost/research/hallway) "lR" = (/obj/machinery/suspension_gen,/turf/simulated/floor,/area/outpost/research/eva) "lS" = (/obj/machinery/conveyor{dir = 2; id = "anominerals"},/obj/machinery/mineral/output,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/research/eva) "lT" = (/obj/structure/table,/obj/item/weapon/storage/box/excavation,/obj/item/weapon/pickaxe,/obj/item/weapon/wrench,/obj/item/device/measuring_tape,/obj/item/stack/flag/green,/turf/simulated/floor,/area/outpost/research/eva) @@ -639,7 +639,7 @@ "mo" = (/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/outpost/research/anomaly_storage) "mp" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/anomaly_storage) "mq" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/outpost/research/emergency_storage) -"mr" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/camera/autoname/research_outpost{dir = 8},/turf/simulated/floor,/area/outpost/research/chemistry) +"mr" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Hallway Aft"; dir = 1},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/outpost/research/hallway) "ms" = (/obj/structure/table,/obj/item/weapon/folder,/obj/item/device/camera,/obj/item/weapon/pen,/turf/simulated/floor,/area/outpost/research/isolation_monitoring) "mt" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/anomaly_storage) "mu" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/outpost/research/emergency_storage) @@ -653,7 +653,7 @@ "mC" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor{dir = 2; id = "anotempload"},/turf/simulated/floor/plating,/area/outpost/research/eva) "mD" = (/obj/machinery/conveyor{dir = 1; id = "anosample"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/outpost/research/eva) "mE" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) -"mF" = (/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 4},/obj/machinery/camera/autoname/research_outpost,/turf/simulated/floor,/area/outpost/research/power) +"mF" = (/obj/effect/landmark{name = "bluespacerift"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/anomaly_analysis) "mG" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) "mH" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/outpost/research/eva) "mI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/outpost/research/eva) @@ -728,7 +728,7 @@ "nZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/research/eva) "oa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor,/area/outpost/research/eva) "ob" = (/obj/machinery/atmospherics/omni/filter{tag_east = 1; tag_south = 2; tag_west = 3},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) -"oc" = (/obj/machinery/camera{c_tag = "Research Outpost Expedition Prep"; dir = 2; network = list("Research","SS13")},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = 22},/turf/simulated/floor,/area/outpost/research/eva) +"oc" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{dir = 2; icon_state = "cmo"},/area/outpost/research/dock) "od" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor,/area/outpost/research/eva) "oe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/research/eva) "of" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/archaeology,/obj/item/clothing/suit/space/anomaly,/obj/item/clothing/head/helmet/space/anomaly,/obj/item/clothing/mask/breath,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor,/area/outpost/research/eva) @@ -781,7 +781,7 @@ "pa" = (/obj/structure/bed,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/isolation_c) "pb" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/obj/machinery/light,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/isolation_c) "pc" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) -"pd" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/explored) +"pd" = (/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Medbay"; dir = 1},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/medical) "pe" = (/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"; pixel_x = 0},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/explored) "pf" = (/turf/simulated/wall/r_wall,/area/outpost/research/isolation_b) "pg" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) @@ -790,7 +790,7 @@ "pj" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/explored) "pk" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/outpost/research/eva) "pl" = (/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "research_sensor"; pixel_x = -25; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "research_pump"},/turf/simulated/floor{icon_state = "warning"},/area/outpost/research/eva) -"pm" = (/obj/structure/ore_box,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "research_pump"},/turf/simulated/floor{icon_state = "warning"},/area/outpost/research/eva) +"pm" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/outpost/research/power) "pn" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor{icon_state = "warning"},/area/outpost/research/eva) "po" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/space,/area/mine/explored) "pp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; use_power = 0},/obj/structure/cable/blue,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/outpost/research/isolation_c) @@ -811,15 +811,15 @@ "pE" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/outpost/research/isolation_c) "pF" = (/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/outpost/research/eva) "pG" = (/obj/machinery/door/airlock/glass_mining{name = "Equipment storage"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/research/eva) -"pH" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera{c_tag = "Research Outpost Expedition Airlock"; dir = 4; network = list("Research","SS13")},/turf/simulated/floor/plating,/area/outpost/research/eva) +"pH" = (/obj/structure/sign/nosmoking_2{pixel_y = -32},/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Anomaly Analysis"; dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/outpost/research/anomaly_analysis) "pI" = (/obj/structure/disposalpipe/segment,/turf/unsimulated/mask,/area/mine/unexplored) "pJ" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Temporary Storage Loading"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/eva) "pK" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/isolation_c) -"pL" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/isolation_b) +"pL" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = 22},/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Expedition Prep"},/turf/simulated/floor,/area/outpost/research/eva) "pM" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_mining{name = "Expedition Prep"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/research/dock) "pN" = (/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -27},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/isolation_c) "pO" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/isolation_a) -"pP" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera/autoname/research_outpost{dir = 4},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) +"pP" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Isolation Port"; dir = 4},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) "pQ" = (/obj/structure/table/rack,/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "pR" = (/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -27},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/isolation_b) "pS" = (/obj/structure/table,/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) @@ -850,7 +850,7 @@ "qr" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/outpost/engineering/meeting) "qs" = (/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/outpost/engineering/meeting) "qt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/outpost/engineering/meeting) -"qu" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera/autoname/research_outpost{dir = 8},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) +"qu" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Isolation Starboard"; dir = 8},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) "qv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/outpost/engineering/meeting) "qw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/explored) "qx" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area/space) @@ -878,10 +878,10 @@ "qT" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/empty/carbon_dioxide,/turf/simulated/floor,/area/outpost/engineering/atmospherics) "qU" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/empty/sleeping_agent,/turf/simulated/floor,/area/outpost/engineering/atmospherics) "qV" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/empty/phoron,/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"qW" = (/obj/machinery/atmospherics/unary/vent_pump/siphon/on{dir = 1; frequency = 1441; id_tag = "outpost_n2_out"},/obj/machinery/air_sensor{frequency = 1441; id_tag = "outpost_n2_sensor"},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/outpost/engineering/atmospherics) +"qW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/floodlight,/turf/simulated/floor,/area/outpost/research/eva) "qX" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "map_injector"; id = "outpost_n2_in"; pixel_y = 1; use_power = 1},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/outpost/engineering/atmospherics) "qY" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "map_injector"; id = "outpost_o2_in"; pixel_y = 1; use_power = 1},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/outpost/engineering/atmospherics) -"qZ" = (/obj/machinery/atmospherics/unary/vent_pump/siphon/on{dir = 1; frequency = 1441; id_tag = "outpost_o2_out"},/obj/machinery/air_sensor{frequency = 1441; id_tag = "outpost_o2_sensor"},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/outpost/engineering/atmospherics) +"qZ" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor,/area/outpost/research/eva) "ra" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) "rb" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "eoutpost_dock_pump"},/obj/machinery/light/small{dir = 4},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "eoutpost_solar_sensor"; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "rc" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) @@ -929,7 +929,7 @@ "rS" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "research_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_one_access = list(13,65)},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) "rT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) "rU" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "research_outer"; locked = 1; name = "Research Outpost External Access"; req_access = list(10,13)},/turf/simulated/floor/plating,/area/outpost/research/eva) -"rV" = (/obj/structure/sign/nosmoking_2{pixel_y = -32},/obj/machinery/camera/autoname/research_outpost{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/outpost/research/anomaly_analysis) +"rV" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/explored) "rW" = (/obj/machinery/door/airlock/external{name = "Mining Bridge"; req_one_access = list(54,65)},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "rX" = (/obj/machinery/door/airlock/engineering{name = "Restrooms"; req_access = list(10)},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/outpost/engineering/meeting) "rY" = (/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/outpost/engineering/atmospherics) @@ -938,7 +938,7 @@ "sb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/engineering/hallway) "sc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/outpost/engineering/hallway) "sd" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/engineering/hallway) -"se" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/outpost/research/power) +"se" = (/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 4},/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Maintenance"},/turf/simulated/floor,/area/outpost/research/power) "sf" = (/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/outpost/engineering/atmospherics) "sg" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "edock_inner"; locked = 1; name = "Engineering Dock Airlock"},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "sh" = (/turf/simulated/floor,/area/outpost/engineering/hallway) @@ -968,7 +968,7 @@ "sF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/outpost/engineering/hallway) "sG" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/outpost/engineering/hallway) "sH" = (/turf/simulated/floor/airless,/area/space) -"sI" = (/obj/machinery/camera{c_tag = "Isolation Cell C"; dir = 8; network = list("Anomaly Isolation")},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/isolation_c) +"sI" = (/obj/structure/ore_box,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "research_pump"},/obj/structure/sign/vacuum{pixel_x = 32},/turf/simulated/floor{icon_state = "warning"},/area/outpost/research/eva) "sJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor,/area/outpost/engineering/hallway) "sK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "eoutpost_main_airlock"; pixel_x = 0; pixel_y = -25; req_access = list(10); tag_airpump = "eoutpost_main_pump"; tag_chamber_sensor = "eoutpost_main_sensor"; tag_exterior_door = "eoutpost_main_outer"; tag_interior_door = "eoutpost_main_inner"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "eoutpost_main_pump"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/engineering/hallway) "sL" = (/obj/machinery/light/small,/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) @@ -997,7 +997,7 @@ "ti" = (/obj/structure/lattice,/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/space,/area/mine/explored) "tj" = (/obj/structure/lattice,/turf/space,/area/mine/explored) "tk" = (/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor,/area/outpost/engineering/hallway) -"tl" = (/obj/machinery/camera{c_tag = "Isolation Cell B"; dir = 8; network = list("Anomaly Isolation")},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/isolation_b) +"tl" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Expedition Airlock"; dir = 4},/turf/simulated/floor/plating,/area/outpost/research/eva) "tm" = (/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor,/area/outpost/engineering/hallway) "tn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/outpost/engineering/hallway) "to" = (/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) @@ -1010,7 +1010,7 @@ "tv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/outpost/engineering/hallway) "tw" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/turf/simulated/floor,/area/outpost/engineering/hallway) "tx" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/obj/machinery/light,/turf/space,/area/mine/explored) -"ty" = (/obj/machinery/camera{c_tag = "Isolation Cell A"; dir = 8; network = list("Anomaly Isolation")},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/isolation_a) +"ty" = (/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Isolation Cell A"; dir = 8},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/isolation_a) "tz" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/outpost/engineering/meeting) "tA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/engineering/hallway) "tB" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) @@ -1037,7 +1037,7 @@ "tW" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/obj/machinery/meter,/turf/simulated/floor,/area/outpost/engineering/atmospherics) "tX" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor,/area/outpost/engineering/atmospherics) "tY" = (/obj/machinery/light,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_x = -6; pixel_y = -28},/turf/simulated/floor,/area/outpost/engineering/hallway) -"tZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "eoutpost_main_pump"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera/autoname/engineering_outpost{dir = 1},/turf/simulated/floor,/area/outpost/engineering/hallway) +"tZ" = (/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Isolation Cell B"; dir = 8},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/isolation_b) "ua" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/obj/machinery/atmospherics/pipe/simple/visible/blue{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/engineering/atmospherics) "ub" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/engineering/atmospherics) "uc" = (/obj/machinery/atmospherics/omni/mixer{tag_east = 1; tag_east_con = 0.79; tag_south = 1; tag_south_con = 0.21; tag_west = 2},/turf/simulated/floor,/area/outpost/engineering/atmospherics) @@ -1082,17 +1082,17 @@ "uP" = (/turf/simulated/floor/carpet,/area/outpost/engineering/meeting) "uQ" = (/obj/structure/table/rack,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/item/stack/cable_coil/yellow,/obj/item/stack/cable_coil,/turf/simulated/floor,/area/outpost/engineering/storage) "uR" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/outpost/engineering/storage) -"uS" = (/obj/structure/cable/blue,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor,/area/outpost/engineering/storage) +"uS" = (/obj/effect/landmark{name = "bluespacerift"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/isolation_b) "uT" = (/turf/simulated/wall,/area/outpost/engineering/storage) "uU" = (/obj/machinery/floodlight,/turf/simulated/floor/wood,/area/outpost/engineering/meeting) "uV" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/wood,/area/outpost/engineering/meeting) -"uW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera/autoname/engineering_outpost{dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/outpost/engineering/hallway) -"uX" = (/obj/machinery/light{dir = 1},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor,/area/outpost/engineering/hallway) +"uW" = (/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Isolation Cell C"; dir = 8},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/isolation_c) +"uX" = (/obj/structure/sign/science{desc = "A warning sign which reads 'ANOMALOUS MATERIALS'"; name = "\improper ANOMALOUS MATERIALS"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "uY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor,/area/outpost/engineering/hallway) "uZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/outpost/engineering/storage) "va" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -28},/turf/simulated/floor,/area/outpost/engineering/hallway) "vb" = (/obj/structure/table/rack,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/item/stack/cable_coil/yellow,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/outpost/engineering/storage) -"vc" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor/wood,/area/outpost/engineering/meeting) +"vc" = (/obj/machinery/light{dir = 1},/obj/structure/sign/science{desc = "A warning sign which reads 'ANOMALOUS MATERIALS'"; name = "\improper ANOMALOUS MATERIALS"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/explored) "vd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor,/area/outpost/engineering/hallway) "ve" = (/turf/simulated/wall,/area/outpost/engineering/meeting) "vf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "edock_outer"; locked = 1; name = "Engineering Dock Airlock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) @@ -1109,7 +1109,7 @@ "vq" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "eoutpost_dock_pump"},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "edock_airlock"; pixel_x = 30; pixel_y = 0; req_access = list(10); tag_airpump = "edock_pump"; tag_chamber_sensor = "edock_sensor"; tag_exterior_door = "edock_outer"; tag_interior_door = "edock_inner"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "vr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "vs" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) -"vt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera/autoname/engineering_outpost{dir = 1},/turf/simulated/floor,/area/outpost/engineering/hallway) +"vt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera/network/mining{c_tag = "Mining Outpost North - Airlock"},/turf/simulated/floor/plating,/area/outpost/mining_north) "vu" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating/airless,/area/space) "vv" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/power) "vw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/engineering/power) @@ -1123,7 +1123,7 @@ "vE" = (/obj/structure/cable/blue,/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/obj/machinery/power/sensor{long_range = 1; name_tag = "Engineering Outpost"},/turf/simulated/floor,/area/outpost/engineering/power) "vF" = (/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/turf/simulated/floor,/area/outpost/engineering/power) "vG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/outpost/engineering/power) -"vH" = (/obj/structure/table/rack,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/item/weapon/pickaxe,/turf/simulated/floor,/area/outpost/engineering/storage) +"vH" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/effect/decal/cleanable/dirt,/obj/machinery/light/small,/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"; pixel_x = 0},/obj/structure/sign/vacuum{pixel_y = -32},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) "vI" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/outpost/engineering/storage) "vJ" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Storage"; req_access = list(10)},/turf/simulated/floor,/area/outpost/engineering/storage) "vK" = (/obj/machinery/light{dir = 8},/obj/structure/table,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/outpost/engineering/meeting) @@ -1182,7 +1182,7 @@ "wL" = (/obj/structure/cable/yellow,/turf/simulated/floor/plating/airless,/area/space) "wM" = (/obj/machinery/status_display{layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor,/area/outpost/mining_main/east_hall) "wN" = (/turf/simulated/wall,/area/outpost/mining_main/east_hall) -"wO" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor,/area/outpost/mining_main/east_hall) +"wO" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/effect/decal/cleanable/blood/oil,/obj/structure/cable,/obj/machinery/camera/network/mining{c_tag = "Mining Outpost North"; dir = 8},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) "wP" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/mining_main/east_hall) "wQ" = (/turf/simulated/wall,/area/outpost/mining_main/refinery) "wR" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Break Room"; req_access = list(10)},/turf/simulated/floor,/area/outpost/engineering/hallway) @@ -1194,8 +1194,8 @@ "wX" = (/turf/simulated/wall,/area/outpost/mining_main/maintenance) "wY" = (/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor{icon_state = "white"},/area/outpost/mining_main/medbay) "wZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor{icon_state = "white"},/area/outpost/mining_main/medbay) -"xa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) -"xb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) +"xa" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/effect/decal/cleanable/dirt,/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_y = -32},/turf/simulated/floor{dir = 8; icon_state = "loadingarea"},/area/outpost/mining_north) +"xb" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/structure/table,/obj/random/tech_supply,/turf/simulated/floor/wood,/area/outpost/engineering/meeting) "xc" = (/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) "xd" = (/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/obj/machinery/power/sensor{long_range = 1; name_tag = "Mining Outpost"},/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) "xe" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eoutpost_solar_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access = list(10)},/turf/simulated/floor/plating/airless,/area/outpost/engineering/hallway) @@ -1207,7 +1207,7 @@ "xk" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/turf/simulated/floor,/area/outpost/mining_main/east_hall) "xl" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "eoutpost_solar_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access = list(10)},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/outpost/engineering/hallway) "xm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_solar_inner"; locked = 1; name = "Solar Access"},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) -"xn" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "eoutpost_solar_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "eoutpost_solar_airlock"; pixel_x = 0; pixel_y = -25; req_access = list(10); tag_airpump = "eoutpost_solar_pump"; tag_chamber_sensor = "eoutpost_solar_sensor"; tag_exterior_door = "eoutpost_solar_outer"; tag_interior_door = "eoutpost_solar_inner"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eoutpost_solar_sensor"; pixel_x = 0; pixel_y = 25},/obj/machinery/light/small{dir = 1},/obj/machinery/camera/autoname/engineering_outpost,/turf/simulated/floor/plating,/area/outpost/engineering/hallway) +"xn" = (/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/status_display{pixel_y = 32},/obj/machinery/camera/network/engineering_outpost{c_tag = "Engineering Outpost Meeting Room"},/turf/simulated/floor/wood,/area/outpost/engineering/meeting) "xo" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/mining_main/east_hall) "xp" = (/obj/machinery/conveyor{dir = 4; id = "mining_internal"},/obj/structure/plasticflaps/mining,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_main/refinery) "xq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_solar_outer"; locked = 1; name = "Solar Access"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) @@ -1218,12 +1218,12 @@ "xv" = (/obj/structure/ore_box,/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "xw" = (/obj/machinery/sleeper,/turf/simulated/floor{icon_state = "warnwhite"; dir = 1},/area/outpost/mining_main/medbay) "xx" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor{icon_state = "white"},/area/outpost/mining_main/medbay) -"xy" = (/obj/machinery/camera{c_tag = "Sleeper Room"; dir = 1; network = list("MINE")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "white"},/area/outpost/mining_main/medbay) +"xy" = (/obj/structure/disposaloutlet{dir = 1},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "xz" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/machinery/light/small{dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) "xA" = (/obj/machinery/atmospherics/valve/digital/open{dir = 4},/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) "xB" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) "xC" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor,/area/outpost/engineering/hallway) -"xD" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) +"xD" = (/obj/structure/cable/blue,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/table/rack,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/item/weapon/pickaxe,/turf/simulated/floor,/area/outpost/engineering/storage) "xE" = (/obj/structure/ore_box,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "mining_west_pump"},/turf/simulated/floor{icon_state = "warning"},/area/outpost/mining_main/west_hall) "xF" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "mining_west_pump"},/turf/simulated/floor{icon_state = "warning"},/area/outpost/mining_main/west_hall) "xG" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor{icon_state = "warning"},/area/outpost/mining_main/west_hall) @@ -1231,8 +1231,8 @@ "xI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/west_hall) "xJ" = (/obj/machinery/conveyor_switch{id = "mining_external"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) "xK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"xL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) -"xM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/alarm{frequency = 1439; pixel_y = 22},/obj/machinery/camera/autoname/engineering_outpost,/turf/simulated/floor,/area/outpost/engineering/hallway) +"xL" = (/obj/structure/sign/deathsposal{pixel_x = 32},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/wood,/area/outpost/engineering/meeting) +"xM" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "xN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) "xO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/east_hall) "xP" = (/turf/simulated/floor,/area/outpost/mining_main/east_hall) @@ -1261,8 +1261,8 @@ "ym" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_outer"; locked = 1; name = "Mining External Access"},/turf/simulated/floor/plating,/area/outpost/mining_main/west_hall) "yn" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/mining_main/east_hall) "yo" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/outpost/mining_main/refinery) -"yp" = (/obj/machinery/camera{c_tag = "Shuttle Airlock"; dir = 8; network = list("MINE")},/obj/machinery/conveyor_switch/oneway{id = "mining_internal"; name = "mining conveyor"},/obj/machinery/light{dir = 4},/turf/simulated/floor,/area/outpost/mining_main/east_hall) -"yq" = (/obj/machinery/camera{c_tag = "Production Room"; dir = 8; network = list("MINE")},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/mining_main/refinery) +"yp" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/outpost/engineering/meeting) +"yq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/light{dir = 1},/obj/machinery/alarm{frequency = 1439; pixel_y = 22},/obj/machinery/camera/network/engineering_outpost{c_tag = "Engineering Outpost Power Distribution"},/turf/simulated/floor,/area/outpost/engineering/power) "yr" = (/turf/simulated/floor,/area/outpost/mining_main/refinery) "ys" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_west_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "yt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/mining_main/east_hall) @@ -1312,12 +1312,12 @@ "zl" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "mining_west_outpost_pump"},/obj/structure/closet/walllocker/emerglocker/north,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/outpost/mining_west) "zm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_west) "zn" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_west) -"zo" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "mining_west_outpost_pump"},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_west) +"zo" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "eoutpost_solar_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "eoutpost_solar_airlock"; pixel_x = 0; pixel_y = -25; req_access = list(10); tag_airpump = "eoutpost_solar_pump"; tag_chamber_sensor = "eoutpost_solar_sensor"; tag_exterior_door = "eoutpost_solar_outer"; tag_interior_door = "eoutpost_solar_inner"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eoutpost_solar_sensor"; pixel_x = 0; pixel_y = 25},/obj/machinery/light/small{dir = 1},/obj/machinery/camera/network/engineering_outpost{c_tag = "Engineering Outpost Solar Access"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "zp" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/floor,/area/outpost/mining_west) "zq" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor,/area/outpost/mining_west) "zr" = (/obj/machinery/recharge_station,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/outpost/mining_west) "zs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_west) -"zt" = (/obj/structure/table/rack,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/outpost/mining_west) +"zt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/camera/network/engineering_outpost{c_tag = "Engineering Outpost TeleCommunications"; dir = 1},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 82.1472; oxygen = 21.8366; temperature = 293.15},/area/outpost/engineering/telecomms) "zu" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor,/area/outpost/mining_west) "zv" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor,/area/outpost/mining_west) "zw" = (/obj/structure/table/rack,/turf/simulated/floor,/area/outpost/mining_west) @@ -1355,7 +1355,7 @@ "Ac" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_west) "Ad" = (/obj/structure/table,/obj/item/weapon/shovel,/turf/simulated/floor,/area/outpost/mining_west) "Ae" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) -"Af" = (/obj/machinery/conveyor_switch{id = "mining_west"; pixel_y = 10},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) +"Af" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor,/area/outpost/engineering/storage) "Ag" = (/obj/structure/table/rack,/obj/item/clothing/suit/space/void/mining,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/mining,/obj/item/weapon/mining_scanner,/turf/simulated/floor,/area/outpost/mining_main/eva) "Ah" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "Ai" = (/obj/machinery/suit_cycler/mining,/turf/simulated/floor,/area/outpost/mining_main/eva) @@ -1374,11 +1374,11 @@ "Av" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/west_hall) "Aw" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/explored) "Ax" = (/obj/structure/ore_box,/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_west_outpost_sensor"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_west_outpost_pump"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/outpost/mining_west) -"Ay" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera{c_tag = "West Outpost - Airlock"; dir = 1; network = list("MINE")},/turf/simulated/floor/plating,/area/outpost/mining_west) +"Ay" = (/obj/structure/table/rack,/obj/item/clothing/head/helmet/space/void/engineering,/obj/item/clothing/suit/space/void/engineering,/obj/item/clothing/shoes/magboots,/obj/item/clothing/gloves/yellow,/obj/machinery/firealarm{dir = 4; layer = 3.3; pixel_x = 26},/obj/item/weapon/storage/briefcase/inflatable,/obj/machinery/camera/network/engineering_outpost{c_tag = "Engineering Outpost Storage"; dir = 1},/turf/simulated/floor,/area/outpost/engineering/storage) "Az" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) "AA" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/outpost/mining_west) "AB" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor{icon_state = "bar"},/area/outpost/mining_main/dorms) -"AC" = (/obj/machinery/camera{c_tag = "Crew Area"; dir = 1; network = list("MINE")},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bar"},/area/outpost/mining_main/dorms) +"AC" = (/obj/machinery/light/small{dir = 4},/obj/machinery/camera/network/engineering_outpost{c_tag = "Engineering Outpost Airlock Entry"; dir = 8},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "AD" = (/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/turf/simulated/floor{icon_state = "bar"},/area/outpost/mining_main/dorms) "AE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/outpost/mining_west) "AF" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor,/area/outpost/mining_west) @@ -1398,12 +1398,12 @@ "AT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/west_hall) "AU" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/table/rack,/obj/item/weapon/rig/industrial/equipped,/turf/simulated/floor,/area/outpost/mining_main/west_hall) "AV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/mining_main/west_hall) -"AW" = (/obj/machinery/camera{c_tag = "Storage Room"; dir = 1; network = list("MINE")},/turf/simulated/floor,/area/outpost/mining_main/west_hall) +"AW" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air/airlock,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/outpost/engineering/hallway) "AX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/explored) "AY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/outpost/mining_main/eva) "AZ" = (/turf/simulated/floor,/area/outpost/mining_main/eva) -"Ba" = (/obj/machinery/light_switch{pixel_x = 25; pixel_y = -9},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor,/area/outpost/mining_main/eva) -"Bb" = (/obj/machinery/camera{c_tag = "EVA"; dir = 4; network = list("MINE")},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/outpost/mining_main/eva) +"Ba" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor,/area/outpost/engineering/hallway) +"Bb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/alarm{frequency = 1439; pixel_y = 22},/obj/machinery/camera/network/engineering_outpost{c_tag = "Engineering Outpost Hallway East"},/turf/simulated/floor,/area/outpost/engineering/hallway) "Bc" = (/obj/machinery/conveyor_switch{id = "mining_west"; pixel_x = 5},/turf/simulated/floor,/area/outpost/mining_west) "Bd" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_west_outpost_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/outpost/mining_west) "Be" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/outpost/mining_west) @@ -1427,7 +1427,7 @@ "Bw" = (/obj/structure/table,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/pickaxe,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/mining_main/east_hall) "Bx" = (/obj/structure/table,/obj/item/weapon/storage/backpack/satchel,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/outpost/mining_main/east_hall) "By" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/eva) -"Bz" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "mining_east_pump"},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_main/eva) +"Bz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "eoutpost_main_pump"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera/network/engineering_outpost{c_tag = "Engineering Outpost Airlock"; dir = 1},/turf/simulated/floor,/area/outpost/engineering/hallway) "BA" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "mining_east_pump"},/obj/structure/closet/walllocker/emerglocker/north,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/outpost/mining_main/eva) "BB" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/outpost/mining_west) "BC" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/floor,/area/outpost/mining_west) @@ -1439,8 +1439,8 @@ "BI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/outpost/mining_west) "BJ" = (/obj/machinery/door/airlock/glass{name = "Crew Area"; req_access = list(48)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/mining_main/dorms) "BK" = (/obj/machinery/door/airlock/mining{name = "Mining Station Storage"; req_access = list(48)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/mining_main/west_hall) -"BL" = (/obj/machinery/camera{c_tag = "West Outpost"; dir = 1; network = list("MINE")},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable,/turf/simulated/floor,/area/outpost/mining_west) -"BM" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"},/area/outpost/mining_west) +"BL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera/network/engineering_outpost{c_tag = "Engineering Outpost Hallway West"; dir = 1},/turf/simulated/floor,/area/outpost/engineering/hallway) +"BM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/camera/network/engineering_outpost{c_tag = "Engineering Outpost Hallway Central"; dir = 1},/turf/simulated/floor,/area/outpost/engineering/hallway) "BN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_west) "BO" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_main/eva) "BP" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/outpost/mining_main/eva) @@ -1453,7 +1453,7 @@ "BW" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/mining_main/eva) "BX" = (/obj/machinery/mineral/input,/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_west"},/turf/simulated/floor,/area/outpost/mining_west) "BY" = (/obj/machinery/mineral/unloading_machine,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_west) -"BZ" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "outpost_o2_in"; name = "O2 Tank Monitor"; output_tag = "outpost_o2_out"; sensors = list("outpost_o2_sensor" = "Tank")},/obj/machinery/camera/autoname/engineering_outpost{dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"BZ" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "outpost_o2_in"; name = "O2 Tank Monitor"; output_tag = "outpost_o2_out"; sensors = list("outpost_o2_sensor" = "Tank")},/obj/machinery/camera/network/engineering_outpost{c_tag = "Engineering Outpost Atmospherics"; dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) "Ca" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/east_hall) "Cb" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/outpost/mining_main/east_hall) "Cc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/west_hall) @@ -1465,13 +1465,13 @@ "Ci" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/outpost/mining_main/west_hall) "Cj" = (/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor,/area/outpost/mining_main/west_hall) "Ck" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor,/area/outpost/mining_main/west_hall) -"Cl" = (/obj/machinery/camera{c_tag = "Crew Area Hallway"; network = list("MINE")},/turf/simulated/floor,/area/outpost/mining_main/west_hall) +"Cl" = (/obj/machinery/atmospherics/unary/vent_pump/siphon/on{dir = 1; frequency = 1441; id_tag = "outpost_o2_out"},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/outpost/engineering/atmospherics) "Cm" = (/obj/machinery/door/airlock{name = "Toilet"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/outpost/mining_main/west_hall) "Cn" = (/obj/structure/sink{pixel_y = 30},/obj/machinery/light/small,/obj/structure/mirror{pixel_y = -32},/turf/simulated/floor{icon_state = "showroomfloor"},/area/outpost/mining_main/west_hall) "Co" = (/obj/structure/toilet{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/outpost/mining_main/west_hall) "Cp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/mining_main/west_hall) "Cq" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_west"},/obj/structure/plasticflaps/mining,/turf/simulated/floor,/area/outpost/mining_west) -"Cr" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/blue,/turf/simulated/floor,/area/outpost/mining_main/eva) +"Cr" = (/obj/machinery/atmospherics/unary/vent_pump/siphon/on{dir = 1; frequency = 1441; id_tag = "outpost_n2_out"},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/outpost/engineering/atmospherics) "Cs" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/eva) "Ct" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/mining_main/east_hall) "Cu" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor,/area/outpost/mining_main/eva) @@ -1481,7 +1481,7 @@ "Cy" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/mining_main/east_hall) "Cz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/mining_main/east_hall) "CA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/outpost/mining_main/east_hall) -"CB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera{c_tag = "Production Line External"; dir = 1; network = list("MINE")},/turf/simulated/floor/plating,/area/outpost/mining_main/eva) +"CB" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "outpost_o2_sensor"},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/outpost/engineering/atmospherics) "CC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "CD" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_east_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/explored) "CE" = (/obj/structure/ore_box,/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_east_sensor"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_east_pump"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/outpost/mining_main/eva) @@ -1497,7 +1497,7 @@ "CO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/outpost/mining_main/west_hall) "CP" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_mining{name = "Mining Station EVA"; req_access = list(54)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/outpost/mining_main/eva) "CQ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/outpost/engineering/hallway) -"CR" = (/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/outpost/mining_main/west_hall) +"CR" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "outpost_n2_sensor"},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/outpost/engineering/atmospherics) "CS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/west_hall) "CT" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_east_inner"; locked = 1; name = "Mining External Access"},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/mining_main/eva) "CU" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/outpost/mining_main/west_hall) @@ -1506,7 +1506,7 @@ "CX" = (/obj/structure/cable/blue{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,/area/outpost/mining_main/west_hall) "CY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/mining_main/west_hall) "CZ" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor,/area/outpost/mining_main/west_hall) -"Da" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) +"Da" = (/obj/machinery/light{dir = 1},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor,/area/outpost/mining_west) "Db" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/mining_main/east_hall) "Dc" = (/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/outpost/mining_main/east_hall) "Dd" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/firealarm{dir = 4; layer = 3.3; pixel_x = 26},/turf/simulated/floor,/area/outpost/engineering/atmospherics) @@ -1575,20 +1575,20 @@ "Eo" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light{dir = 1},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/wood,/area/outpost/engineering/meeting) "Ep" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 28},/turf/simulated/floor/wood,/area/outpost/engineering/meeting) "Eq" = (/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 28},/turf/simulated/floor,/area/outpost/engineering/storage) -"Er" = (/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/camera/autoname/engineering_outpost,/obj/machinery/status_display{pixel_y = 32},/turf/simulated/floor/wood,/area/outpost/engineering/meeting) +"Er" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "mining_west_outpost_pump"},/obj/structure/sign/vacuum{pixel_y = 32},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_west) "Es" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/sign/vacuum{pixel_x = 32},/turf/simulated/floor,/area/outpost/engineering/hallway) "Et" = (/obj/structure/sign/electricshock,/turf/simulated/wall,/area/outpost/engineering/hallway) -"Eu" = (/obj/machinery/light/small{dir = 4},/obj/machinery/camera/autoname/engineering_outpost{dir = 8},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) +"Eu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera/network/mining{c_tag = "Mining Outpost West - Airlock"; dir = 1},/turf/simulated/floor/plating,/area/outpost/mining_west) "Ev" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/outpost/engineering/hallway) -"Ew" = (/obj/structure/table/rack,/obj/item/clothing/head/helmet/space/void/engineering,/obj/item/clothing/suit/space/void/engineering,/obj/item/clothing/shoes/magboots,/obj/item/clothing/gloves/yellow,/obj/machinery/camera/autoname/engineering_outpost{dir = 1},/obj/machinery/firealarm{dir = 4; layer = 3.3; pixel_x = 26},/obj/item/weapon/storage/briefcase/inflatable,/turf/simulated/floor,/area/outpost/engineering/storage) -"Ex" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/camera/autoname/engineering_outpost{dir = 1},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 82.1472; oxygen = 21.8366; temperature = 293.15},/area/outpost/engineering/telecomms) +"Ew" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/network/mining{c_tag = "Mining Outpost Crew Area"; dir = 1},/turf/simulated/floor{icon_state = "bar"},/area/outpost/mining_main/dorms) +"Ex" = (/obj/machinery/camera/network/mining{c_tag = "Mining Outpost Storage Room"; dir = 1},/turf/simulated/floor,/area/outpost/mining_main/west_hall) "Ey" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; specialfunctions = 4},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/mining_main/dorms) "Ez" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm3"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; specialfunctions = 4},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/mining_main/dorms) -"EA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/light{dir = 1},/obj/machinery/alarm{frequency = 1439; pixel_y = 22},/obj/machinery/camera/autoname/engineering_outpost,/turf/simulated/floor,/area/outpost/engineering/power) +"EA" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera/network/mining{c_tag = "Mining Outpost EVA"; dir = 4},/turf/simulated/floor,/area/outpost/mining_main/eva) "EB" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/outpost/engineering/meeting) "EC" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/outpost/engineering/hallway) "ED" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/wall,/area/space) -"EE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/camera/autoname/mining_outpost{dir = 8},/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) +"EE" = (/obj/machinery/light_switch{pixel_x = 25; pixel_y = -9},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 10},/turf/simulated/floor,/area/outpost/mining_main/eva) "EF" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/space) "EG" = (/obj/structure/window/reinforced,/obj/structure/lattice,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/space,/area/space) "EH" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/turf/space,/area/space) @@ -1600,6 +1600,26 @@ "EN" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plating/airless,/area/space) "EO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/east_hall) "EP" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor,/area/outpost/mining_main/east_hall) +"EQ" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "mining_east_pump"},/obj/structure/sign/vacuum{pixel_y = 32},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_main/eva) +"ER" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable,/obj/machinery/camera/network/mining{c_tag = "Mining Outpost West"; dir = 1},/turf/simulated/floor,/area/outpost/mining_west) +"ES" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"},/area/outpost/mining_west) +"ET" = (/obj/machinery/camera/network/mining{c_tag = "Mining Outpost Crew Area Hallway"},/turf/simulated/floor,/area/outpost/mining_main/west_hall) +"EU" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/blue,/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor,/area/outpost/mining_main/eva) +"EV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera/network/mining{c_tag = "Mining Outpost Airlock East"; dir = 1},/turf/simulated/floor/plating,/area/outpost/mining_main/eva) +"EW" = (/obj/machinery/conveyor_switch{id = "mining_west"; pixel_y = 10},/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_y = 32},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) +"EX" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/outpost/mining_main/west_hall) +"EY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) +"EZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) +"Fa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) +"Fb" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air/airlock,/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor,/area/outpost/mining_main/east_hall) +"Fc" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/camera/network/mining{c_tag = "Mining Outpost Medical"; dir = 1},/turf/simulated/floor{icon_state = "white"},/area/outpost/mining_main/medbay) +"Fd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/camera/network/mining{c_tag = "Mining Outpost Maintenance"; dir = 8},/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) +"Fe" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) +"Ff" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) +"Fg" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) +"Fh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera/network/mining{c_tag = "Mining Outpost Airlock West"; dir = 4},/turf/simulated/floor/plating,/area/outpost/mining_main/west_hall) +"Fi" = (/obj/machinery/conveyor_switch/oneway{id = "mining_internal"; name = "mining conveyor"},/obj/machinery/light{dir = 4},/obj/machinery/camera/network/mining{c_tag = "Mining Outpost - Shuttle Airlock"; dir = 8},/turf/simulated/floor,/area/outpost/mining_main/east_hall) +"Fj" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/mining{c_tag = "Mining Outpost Production Room"; dir = 8},/turf/simulated/floor,/area/outpost/mining_main/refinery) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -1643,39 +1663,39 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababiLiKiKiJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaJaJaJaJaJababababababababiMeOeOdHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaabababababababaJiNiOiPaJaJaJaJaJaJaGaGaGaGiQiRaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaababababababababaJjbiTiUiViWaKaKaKiSaiiZjfaiiYeOaijaiZaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaabababababaAaAaAaAjpjhiTjrjgjdjdjdmraijojmjnjkjljijjjcaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababbaabababaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababbbababababababiLiKiKiJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaJaJaJaJaJabbbababababababiMeOeOdHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaabababababababaJiNiOiPaJaJbcaJaJaJaGaGaGaGiQiRaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaababababababababaJjbbiiUiViWbpaKaKiSaiiZjfaibXeOaijaiZaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaabababababaAaAaAaAjpjhiTjrjgjdjdjdccaijojmjnjkjljijjjcaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaababababaAaAaNaOaAaJaJaJaJaKaKaLaLaMaiaiaiaiaIaHaiaiaiaGazazazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahagafaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaababababaAaBaCaDaEaFasaraqapawavauataiakajaiaoanaiamayaUaxamazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkbmblaeaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaababababaAaWbobpaAbnbAbgbBbAbybxaubzaibubwbvbrbqbtbsbjbhbhfJazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPaRaQaSaeaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaabababaAaWaTbiaAaVbgbfbebdbbbcbbbaaGaGaGaGaZaYaiaXbjbhbhdvazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkdldleubWbVblaeaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababaeaeaeaeaeaeaeaeaeabababaAaWcmcnaAclbYbXcabZcccbcecdcgcfchaGcjcickamamiXamjeazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadQdRdSdTbDbCbEaeaeababababababababababababababababababababababababababababababababababababababababababababababababababalalalaeaeaeaeaeaeaeaebTaGaGaGaGaGaGbUaGaGaGaGbFaGaGbIbHbGbLbKbJaGbPbObNbMbRbSbQbRazalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaetdldlfycPbVcrabababababababababababababababababababababababababababababababababababababababababababababababababababalalalaaaaaaexexexexexexexaicWcXcUcVcScTcQcRdcdbdeddaGcYdacZdidhdjaGdgdfbNbMbMbMbMazazalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaecocqcpcrabababababababababababababababababababababababababababababababababababababababababababababababababababababalaaaaaaexexexexexexexcscwcxcyctctcucvctcycFcEcDcCcBcAczcMcMcLcKcJcIcHcGcOkrcNazalalalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaefxemelekcrababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaexexexexexexexejcwdAdBdCeheidFdGdYaGeadZaGebedecdOdNdPaGdVdUaidWdWdWdWeeefegalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaedLdKdMcrdJdIcrcrcrcrabababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaexexexexexexexdHcwdAdBdCdDdEdFdGdyaGdxdwaGdzbbbbbbbbdsaGlyduaidtdodpdmdndqdrdqdqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaacacacacacaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkbmblaeaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaababababaAaWbocVaAbnbAbgbBbAbybxaubzaibubwbvbrbqbtbsbjddbhfJazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPaRaQaSaeaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaabababaAaWaTdsaAaVbgbfbebdaJbcaJdzaGaGaGaGaZaYaiaXbjbhbhdvazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkdldleubWbVblaeaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababaeaeaeaeaeaeaeaeaeabababaAaWcmcnaAclbYdPcabZgxcbcecdcgcfchaGcjcickamamiXamhgazhpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadQdRdSdTbDbCbEaeaeababababababababababababababababababababababababababababababababababababababababababababababababababalalalaeaeaeaeaeaeaeaebTaGaGaGaGaGaGbUaGaGaGaGbFaGaGbIbHbGbLbKbJaGbPbObNbMbRbSbQhVjeiYalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaetdldlfycPbVcrabababababababababababababababababababababababababababababababababababababababababababababababababababalalalaaaaaaexexexexexexexaicWcXcUjBcScTcQcRdcdbdejIaGcYdacZdidhdjaGdgdfbNbMbMbMbMbMazalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaecocqcpcrabababababababababababababababababababababababababababababababababababababababababababababababababababababalaaaaaaexexexexexexexcscwcxcyctctcucvctcycFcEcDcCcBcAczcMcMcLcKcJcIcHcGcOkrcNazazalalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaefxemelekcrababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaexexexexexexexejcwdAdBdCeheidFdGdYaGeadZaGebedecdOdNjQaGdVdUaidWdWdWdWeeefegalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaedLdKdMcrdJdIcrcrcrcrabababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaexexexexexexexdHcwdAdBdCdDdEdFdGdyaGdxdwaGkaaGaGaGaGcCaGkoduaidtdodpdmdndqdrdqdqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaacacacacacaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaegzfefEfHfGfFafbCeYcrfbfacrabababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaexexexexexexexaifkflfjdCfhfidFfgfvaGfzfwfsfrfuftfoaGeLeKfmeRaifnfAfBfCfDdqalalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaacacacacacaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefcfdfeffeUeTeWeVeYeXfaeZfbcrabababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaeAereseyezeresevewepeqeneneneoeoeoeoeoeSeReQePeOeNeMaGfqfpeJeIaieHeFeGeDeEeCaGaGeBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahSfchbfcfEfEdJheeUcrekhdcrfahccrabababababababababababababababababababababababababababababababababababababababababababababababdXaaaaaaaaaagMgPgQgNgOgTgQgRgSgWgXgUgVhaeogYgZgweogxeRgBgAgDgCgEaGgGgFgIgHaiaigJaiaiaieReRgKeBeBeBeBgLeBeBeBeBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaegugvfEgsgtfEcpgqeTgrgpgocrcrcrcrcrcrababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaagngbgcgcgcgcgdgegfggghgigjgkeoglgmfVfUfTeIfXfWeReRfYfweReReJeIgafZfKfLfIlzeReRfMeBfOfPeBfNfRfSfQeBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeiCiBhRfEgtiDffiGeUiFcriIiHcrhOhKbCiEcrabababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaagngQgQgQhWgQhVhUgQibgXhZiahYeogmhXihigijiiidicifieilieimieikieieieirisitiuinioipiqixiyiziAivhAiweBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeababcrfFhLhPhQhRhThNeThOafbChKcrhOhLhKhMcrababababababababababababababababababababababababababababababababababalalalalalalababababababkDkEaaaaaahrgQgQhihjhfhggRhhhnhohphqhkeohlhmhHeoeohGhGhFhuhEhxhuhJhuhIhwhwhwhwhxhuhvhththseBhChDeBhBhzhAhyeBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecrcrcrcrcrcrfGeUnWhLeUgqnUhOhOeVeYiIcrhOcpeknVcrababababababababababababababababababababababababababababababababalalalgygygygyalalalababsEgygyaaaaaaaanwereseynwnwnwnwnwpMnwnununueopJeonSnTnRhGsesjhunMnKnLnInJnGnHkmkmkmnFhunEnChtnBlulululurVnznyfQeBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecrmPeUhRoEcriCoDiBcrgrcroGoHoFcrbClLiFmOcpeleUcrabababababababababababababababababababababababababababababababalalgygygygygygygygyalalabgygyaaaaaaaaaaaaaaaeaekBohogoflnoeodocqOoanZnYqhoqorosrIrfrvhuopokollDkmnGoiojkmkmmghuoCozhtoBoAovoulueBeBeBeBeBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahSfchbfcfEfEdJheeUcrekhdcrfahccrabababababababababababababababababababababababababababababababababababababababababababababababdXaaaaaaaaaagMgPgQgNgOgTgQgRgSgWgXgUgVhaeogYgZgweoloeRgBgAgDgCgEaGgGgFgIgHaiaigJaiaiaieReRgKeBeBeBeBgLeBeBeBeBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaegugvfEgsgtfEcpgqeTgrgpgocrcrcrcrcrcrababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaagngbgcgcgcgcgdgegfggghgigjgkeoglgmfVfUfTeIfXfWeReRfYfweReReJeIgafZfKfLfIlyeReRfMeBfOfPeBfNfRfSfQeBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeiCiBhRfEgtiDffiGeUiFcriIiHcrhOhKbCiEcrabababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaagngQgQgQhWgQlzhUgQibgXhZiahYeogmhXihigijiiidicifieillQimmrikieieieirisitiuinioipiqixiyiziAivmFiweBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeababcrfFhLhPhQhRhThNeThOafbChKcrhOhLhKhMcrababababababababababababababababababababababababababababababababababalalalalalalababababababkDkEaaaaaahrgQgQhihjhfocgRhhhnhopdhqhkeohlhmhHeoeohGhGhFhuhEhxhuhJhuhIhwhwhwhwhxhuhvhththseBhChDeBhBhzhAhyeBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecrcrcrcrcrcrfGeUnWhLeUgqnUhOhOeVeYiIcrhOcpeknVcrababababababababababababababababababababababababababababababababalalalgygygygyalalalababsEgygyaaaaaaaanwereseynwnwnwnwnwpMnwnununueopJeonSnTnRhGpmsjhunMnKnLnInJnGnHkmkmkmnFhunEnChtnBlulululupHnznyfQeBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecrmPeUhRoEcriCoDiBcrgrcroGoHoFcrbClLiFmOcpeleUcrabababababababababababababababababababababababababababababababalalgygygygygygygygyalalabgygyaaaaaaaaaaaaaaaeaekBohogoflnoeodpLqOoanZnYqhoqorosrIrfrvhuopokollDkmnGoiojkmkmmghuoCozhtoBoAovoulueBeBeBeBeBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcrmPcphRcpmUlLhLmShLmTbCbCmNeYbCcpcpcreUmOeUeUcrababababababababababababababababababababababababababababababalalgygygygygygygygygygymQmRgygyaaaaaaaaaaaaaaaaaekBmLllmMlOmImHmJkBkBllmKeomCmDhGhGnPnXhumEmxmbmvmwmAmBmynAmsnfhumqmuhtmtmpmpmoluabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababcrlMhReUcpnscpnrdJcpnqmTnrhKntcpkNekcrlIcpgobCcrabababababababababababababababababababababababababababababalmRgygygygygygygygygygygynDnjgyaeaaaaaaaaaaaaaaaaaekBmLllnppGnmnlllnkkBnneoeonNnOhGoXotoKhupPmVmWmXnQonoomEobmGquhungnhhtnineneneluabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababcrlMlNeUfFcrkPcrlJlKcrcpcrlJlKcreUlLcrdIlHiFlIcrabababababababababababababababababababababababababababababalomgygygygygygygygygygygygygygyaeaaaaaaaaaaaaaaaaaekBlmlllolnmzlqltlskBlpeoowoxoyhGnamYmZhulxlFlGlDlElBlCkmnbkmkmhulwlvhtlululululuabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababcrcrcrcrcrcrkPcrgokNcphTmmeUhTeUgoffcrmnmknxmjcrabababababababababababababababababababababababababababababalmQgygygygygygygygygygygygygygyaeaaaaaaaaaaaaaaaeaekBlRlQlPlOnolqndlTkBlSeooYoxoyhGnvhGnchulWmbmcmdmelYlZmamamhmghumimfhtababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababcrkPcrkNekkOhTkMcphKcreUekcrkLkJkJkKcradababababababababababababababababababababababababababababalalgygygyprgygygygygygygygygygyaeaaaaaaaaaaaaaeaeaekBkBkCkFkBkBkGlhkGkBkIeoowpBpCkokpmFkshukVkvkwkYkukzkAlckyknkmhuhththtababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababcrlMlNeUfFcrkPcrlJlKcrcpcrlJlKcreUlLcrdIlHiFlIcrabababababababababababababababababababababababababababababalomgygygygygygygygygygygygygygyaeaaaaaaaaaaaaaaaaaekBlmllqWlnmzlqltlskBlpeoowoxoyhGnamYmZhulxlFlGlDlElBlCkmnbkmkmhulwlvhtlululululuabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababcrcrcrcrcrcrkPcrgokNcphTmmeUhTeUgoffcrmnmknxmjcrabababababababababababababababababababababababababababababalmQgygygygygygygygygygygygygygyaeaaaaaaaaaaaaaaaeaekBqZlRlPlOnolqndlTkBlSeooYoxoyhGnvhGnchulWmbmcmdmelYlZmamamhmghumimfhtababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababcrkPcrkNekkOhTkMcphKcreUekcrkLkJkJkKcradababababababababababababababababababababababababababababalalgygygyprgygygygygygygygygygyaeaaaaaaaaaaaaaeaeaekBkBkCkFkBkBkGlhkGkBkIeoowpBrVhGkpsekshukVkvkwkYkukzkAlckyknkmhuhththtababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababcrkPcrhTcpbVljeUekgocrkPcrcrhOeUkJkKlkadababababababababababababababababababababababababababababalpSpTgypUpSpQgygygygygygygygygytjaaaaaaaaaaaetjtjtjgygyqdqeqfkBmllglfkBlieogylrlAhGkSkTkTkUlUkWkXkUlVkZlalblXleldlbababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababcrkPcrcrcrcrcrcrcrcrcrkPcrphbCeUbCkKpiadababababababababababababababababababababababababababababalpSgygygypSpQgygygygygygygyqwqCpjsWsWsWsWsWsWpoqwqCgygygygygykBplpnpmkBpkgygygygyhGpApxpykUpwpupvkUptpqpslbpppEpDlbababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLaaaaaaaaaaqLababababababababababababababcrkPkPkPkPkPkPkPkPkPkPkPcrhOeUiFeUiEcradababababababababababababababababababababababababababababalgygygygyqMqNgygygygygygygygyrWqPqPqPqPqPqPqPqPrWgygygygygygykBpHrUkGkBpFrigygygyhGpXkTkTkUpWpOtykUpRpLtllbpNpKsIlbababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababababababababababababababcrcrcrcrcrcrcrcrcrcrcrcrcrcrmjrOoMcrcradababababababababababababababababababababababababababababalgygygygygygygygygygygygygyqwqCrdrerererererereqwqCgygygygygygypBrSpCpdpcpeoVoVoVoToUsyoZkUoWoOoPkUoNoRoSlboQpbpalbabababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababcrkPcrcrcrcrcrcrcrcrcrkPcrphbCeUbCkKpiadababababababababababababababababababababababababababababalpSgygygypSpQgygygygygygygyqwqCpjsWsWsWsWsWsWpoqwqCgygygygygykBplpnsIkBpkgygygygyhGpApxpykUpwpupvkUptpqpslbpppEpDlbababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLaaaaaaaaaaqLababababababababababababababcrkPkPkPkPkPkPkPkPkPkPkPcrhOeUiFeUiEcradababababababababababababababababababababababababababababalgygygygyqMqNgygygygygygygygyrWqPqPqPqPqPqPqPqPrWgygygygygygykBtlrUkGkBpFrigygygyhGpXkTkTkUpWpOtykUpRuStZlbpNpKuWlbababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababababababababababababababcrcrcrcrcrcrcrcrcrcrcrcrcrcrmjrOoMcrcradababababababababababababababababababababababababababababalgygygygygygygygygygygygygyqwqCrdrerererererereqwqCgygygygygyuXpBrSpCvcpcpeoVoVoVoToUsyoZkUoWoOoPkUoNoRoSlboQpbpalbabababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababadadadcrkJkJeUcradadababababababababababababababababababababababababababababalpSpTgygygygygygygygygygyaaaaaaaaaaaaaaaaalalalalalalalalgygygygygygypBpgpCgygyalhGhGhGhGkUkUkUkUkUpfpfpflblblblblbabababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababadadadcroJoIoJcradabababababababababababababababababababababababababababababalpSgygygygygygygygygygygyaaaaaaaaaaaaaaaaalalalababababalalalalalalalgyjHgygyalalababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababadadcroLrOmjcradabababababababababababababababababababababababababababababalalpVryrxgygygygygyalalalaaaaaaaaaaaaaaaaaaababababababababalalalalalgyjHgygyalabababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -1685,10 +1705,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLabababababab aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLababababababqLqLqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaabababaaaaaaababababababababababalalgygyjHgyalabababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaababaaaaaaababababababababababalalalgyjHgyalalalalalababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaabababababababababalalalgyjHgygygygyrHjFjFjFjFjFjFjFjFjFjFjFjFabababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaabababababababababalalalgyjHgygygygyrJkakQjYjXkgkfkekdjFkckbjFababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLababqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaabababababababababalalalgykHjSjSjSoVjVjOjNjQjPkqjZkxktjWjRjTjFababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababqLqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaabaaaaaaaaababababababababababalalgykigygygygyjFjFjFjFjFjFjKjJjIjFjMjLjFababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababqLqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaabababaaaaababababababababababalalgyqqjsjujtjtjvjxjwjzjyjBjAjUjCjEjDjGjFababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaabababababababababalalalgyjHgygygygyrJvtkQjYjXkgkfkekdjFkckbjFababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLababqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaabababababababababalalalgykHjSjSjSoVjVjOjNvHjPkqjZkxktjWjRjTjFababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababqLqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaabaaaaaaaaababababababababababalalgykigygygygyjFjFjFjFjFjFjKjJwOjFjMjLjFababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababqLqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaabababaaaaababababababababababalalgyqqjsjujtjtjvjxjwjzjyxajAjUjCjEjDjGjFababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLabqLqLqLqLqLqLqLqLqLqLqLqLqLababababqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaabababaaaaaaabababababababababalalgygygykigygyjFjFjFjFkljFjFjFjFjFjFjFjFabababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaabababababababababalalalalgykigygygygysAkRsCsCalababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaabababababababababalalalrJkkrigygygygygygygyalababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -1729,16 +1749,16 @@ aaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqL aaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababqLqLqLqLqLqLabababababqLqLqLqLqLqLababababababqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaagygygygygygygygypBpCgygygykigygygygyalababababababababababababababababababababababababababababababababqjqkqmqlrXqiqjababaaaaaaaeaaaaaaaeaaaeaaaeaeaeaeaaaaqgqcqbaaqgqcqbaaqgqcqbaaqaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLabababababqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaalalgysLgygygygygygygygyqqjsqngygyalalabababababababababababababababababababababababababababababababqjqkqvtzqjqjqjababaaaaaaaeaeaeaeaeaeaeaeaeaaaaaeaeaaqgqcqbaeqgqcqbaeqgqcqbaeqaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaabalalmRalalalalalalgygygygykigygygyalalalabababababababababababababababababababababababababababababqjqkqtqsrXqrqjabababaaaaaeaaaeaaaaaaaeaaaaaaaaaeaaaaqgqcqbaaqgqcqbaaqgqcqbaaqaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLababababababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababababqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaababababababababalalgygygykigygygygygyalalababababababababababababababababababababababababuyuyuyuyuyvewkveveveqjqjqjababaaaeaaaeaeaaaaaeaaaaaaaaaaaaaaqgqcqbaaqgqcqbaaqgqcqbaaqaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLababababqLqLqLqLqLqLababababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababalalalaeaeaeaeaeaeaeaeaeaeaealalalalabababababalalgygyqqjsjsqngygygyalalababababababalalalababababababababababababababuyvbuZEqvJEpuVEoErvcuOuOqjababaaaeaaaeaaaaaaaeaeaeaeaeaeaeaeqgqcqbaeqgqcqbaeqgqcqbaeqaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLababababqLqLqLqLqLababababqLqLqLqLqLqLqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababalalalalsHsHsHsHsHsHsHsHsHsHsHsHsHsHalalalalababababalgygygygygykigygygygyalalabababalalalgyalababababababababababababababuyuQuRuSuTuUuAuPuNuMuPuOqjababaaaeaaaaaaaaaaaeaaaaaeaaaaaaaaqgqcqbaaqgqcqbaaqgqcqbaaaeaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLababababababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababababqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaababababababababalalgygygykigygygygygyalalababababababababababababababababababababababababuyuyuyuyuyvewkveveveqjqjqjabalaaaeaaaeaeaaaaaeaaaaaaaaaaaaaaqgqcqbaaqgqcqbaaqgqcqbaaqaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLababababqLqLqLqLqLqLababababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababalalalaeaeaeaeaeaeaeaeaeaeaealalalalabababababalalgygyqqjsjsqngygygyalalababababababalalalababababababababababababababuyvbuZEqvJEpuVEoxnxbuOuOqjalalxyaeaaaeaaaaaaaeaeaeaeaeaeaeaeqgqcqbaeqgqcqbaeqgqcqbaeqaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLababababqLqLqLqLqLababababqLqLqLqLqLqLqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababalalalalsHsHsHsHsHsHsHsHsHsHsHsHsHsHalalalalababababalgygygygygykigygygygyalalabababalalalgyalababababababababababababababuyuQuRxDuTuUuAuPuNuMuPxLypxMxMiYaeaaaaaaaaaaaeaaaaaeaaaaaaaaqgqcqbaaqgqcqbaaqgqcqbaaaeaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLabababqLqLqLqLqLabababababqLqLqLqLqLqLqLqLqLqLqLqLqLababababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababalaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaealalabababababalalgygygygyqqjsjsqngygyalabalalalgygygyalababababababababababababababuyuzuwuxuFuGuAuBuKuJuIuHqjuLuLuLuLuLrMrLrLrNrtrMrNrtaaaaaaaaqgqcqbaaqgqcqbaaqgqcqbaaqaqaqaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLabababqLqLqLqLqLababababqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababqLqLqLqLqLabqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababalalalalgysMgygykigygyalalalgygygygygypzpzpzpzabababababababvMvMvMvMuywJuwwKwHwIEBuPwFwEuIwGvewBwDEAwywxwAwzshwawwwvECrMrLrNaaaaaewLaeaaaewLaeaaaewLaeaaaeaaqaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLabababqLqLqLqLqLababababqLqLqLqLqLqLqLqLqLqLababababababababqLqLqLqLqLqLababqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaababababababababababalalmRgygykigygygygygygygygygygyAwwuwtpzabababababababvMvXvVvWuyvUuwvTvRvSuAuPwjwiuPwhvewgwfwewdwcwbtEshwavZvYxlxmxnxqxewlsNsNsNsNsNsNsNsNsNsNwrwqwsaeqaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLababababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababababqLqLabqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaababababababababababababalalgyqqjsqngygygygygygygygyAwAevQpzababrtrtrtrtabvMvNvOExuyvHvIEwuTvKuAvLvCvBuAvDvevEvGvFvwvvvgvxvzvysvvAEvrMrLrNaaaaaevuaeaaaevuaeaaaevuaeaaaeaaqaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababqLqLqLqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaabababababababababababababalgygygyqygygygygygygygygyAwAeEurtrtrtrtvivirtrtrtrtwnrtrtrGrGrGrGvhrNrGwRrGvhrNrGvsvrrGwpEtvlvkvpvorGvnEsrtaaaaaaaaqgrgqbaaqgrgqbaaqgrgqbaaqaqaqaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLabababababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaaaabababababababababababababalalalrJqzrigygygygygygygypBAzuDuvvPsxulwosJuXwCwmsDsFsGtdtetctfsYtctctctrtqtctcxCtktntmtAzgtDtCtvtuxMtwtEtFaaaeaaaaqgrgqbaaqgrgqbaaqgrgqbaaaeaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLabababababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaabababababababababababababababalalAwrQrPrRrRrRrRrRrRrRrRrTswsztZsKsBuksdsdsdvtsoslsmstsdsdsssqsrsdsdvauYuWsdscsbsarZskvdrZsishshtYsQsusvaeaeaeaeqgrgqbaeqgrgqbaeqgrgqbaeqaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLabababqLqLqLqLqLababababqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababqLqLqLqLqLabqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababalalalalgysMgygykigygyalalalgygygygygypzpzpzpzabababababababvMvMvMvMuywJuwwKwHwIEBuPwFwEuIwGvewBwDyqwywxwAwzshwawwwvECrMrLrNaaaaaewLaeaaaewLaeaaaewLaeaaaeaaqaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLabababqLqLqLqLqLababababqLqLqLqLqLqLqLqLqLqLababababababababqLqLqLqLqLqLababqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaababababababababababalalmRgygykigygygygygygygygygygyAwwuwtpzabababababababvMvXvVvWuyvUuwvTvRvSuAuPwjwiuPwhvewgwfwewdwcwbtEshwavZvYxlxmzoxqxewlsNsNsNsNsNsNsNsNsNsNwrwqwsaeqaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLababababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababababqLqLabqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaababababababababababababalalgyqqjsqngygygygygygygygyAwAevQpzababrtrtrtrtabvMvNvOztuyAfvIAyuTvKuAvLvCvBuAvDvevEvGvFvwvvvgvxvzvysvvAEvrMrLrNaaaaaevuaeaaaevuaeaaaevuaeaaaeaaqaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababqLqLqLqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaabababababababababababababalgygygyqygygygygygygygygyAwAeACrtrtrtrtviAWrtrtrtrtwnrtrtrGrGrGrGvhrNrGwRrGvhrNrGvsvrrGwpEtvlvkvpvorGvnEsrtaaaaaaaaqgrgqbaaqgrgqbaaqgrgqbaaqaqaqaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLabababababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaaaabababababababababababababalalalrJqzrigygygygygygygypBAzuDuvvPsxulwosJBawCwmsDsFsGtdtetctfsYtctctctrtqtctcxCtktntmtAzgtDtCtvtuBbtwtEtFaaaeaaaaqgrgqbaaqgrgqbaaqgrgqbaaaeaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLabababababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaabababababababababababababababalalAwrQrPrRrRrRrRrRrRrRrRrTswszBzsKsBuksdsdsdBLsoslsmstsdsdsssqsrsdsdvauYBMsdscsbsarZskvdrZsishshtYsQsusvaeaeaeaeqgrgqbaeqgrgqbaeqgrgqbaeqaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaabababababaaaaaaaaaaaaabababababababababababababababababalalpBqApCgygygygygygygyrJsCrurtrtrtrtrtrtrtrtrtrwrzrArErzrFrGsnrGrKrtrtrtrtrtrtrtrtrtrtrtrMrLrLrNrtspsgrtaaaaaeaaqgrgqbaaqgrgqbaaqgrgqbaaqaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababqLqLqLqLababababababababqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababalalalalgyqygygygygygygygygyAwowowalabababababababqDrlrjrkrorprmrnrrrsrqqDababababababababababaaaaaaaarcrhrbrcaaaaaeaaqgrgqbaaqgrgqbaaqgrgqbaaqaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLqLqLabqLababababqLqLabababqLqLqLqLqLababababababababqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababalalalalalalgyqygygygygygygygygyAwumalalabababababababqDrlurusuqqQqQqQunuoupqDababababababababababaaaaaaaauuutvquuaeaeaeaeqgrgqbaeqgrgqbaeqgrgqbaeqaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -1746,8 +1766,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLqL aaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababqLqLqLqLqLqLqLqLqLqLqLqLqLababababababababababqLqLqLqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababalgypZjsjsjsjsragyalalgygygygyalalalalababababababababqDrltXqQqQqQtTtUtVtWCgqDabababababababababaaaaaaaaqBqBqBqBqBqBqBaaaaqgrgqbaaqgrgqbaaqgrgqbaaqaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLabababababababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaabababababababababababababababalgykigygygygysLgyalalalalalalalabababababababababababqDtStOtJtJBZtHtItMtNtLqDababababababababaaaaaaaaaaqBqBqBqBqBqBqBaaaaqgrgqbaeqgrgqbaeqgrgqbaeqaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLababababababababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaabababababababababababababababalgykigyalalalmRalalabababababababababababababababababqDqGqIqHqQqDqSqRqDqJqKqDabababababababaaaaaaaaaaaaqBqBqBqBqBqBqBaaaaqgqEqbaaqgqEqbaaqgqEqbaaqaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLababababababababqLqLqLqLqLqLqLqLqLabababqLqLqLqLqLqLababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaababababababababababababababalgykigyalalalalabababababababababababababababababababqDqVqUqTqQqDqZqYqDqXqWqDababababababaaaaaaaaaaaaaaqBqBqBqBqBqBqBaaaaaaaeaaaaaaaeaaaaaaaeaaaaqaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLababababababababqLqLqLqLqLqLqLqLqLabababqLqLqLqLqLabababababqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaabababababababababababababalgykigyalalalababababababababababababababababababababqDqDqDqDqDqDrYrYqDsfsfqDababababaaaaaaaaaaaaaaaaaaqBqBqBqBqBqBqBaatKqaqaqaqaqaqaqaqaqaqaqaqaqaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLababababababababqLqLqLqLqLqLqLqLqLabababqLqLqLqLqLqLababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaababababababababababababababalgykigyalalalalabababababababababababababababababababqDqVqUqTqQqDClqYqDqXCrqDababababababaaaaaaaaaaaaaaqBqBqBqBqBqBqBaaaaaaaeaaaaaaaeaaaaaaaeaaaaqaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLababababababababqLqLqLqLqLqLqLqLqLabababqLqLqLqLqLabababababqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaabababababababababababababalgykigyalalalababababababababababababababababababababqDqDqDqDqDqDCBrYqDsfCRqDababababaaaaaaaaaaaaaaaaaaqBqBqBqBqBqBqBaatKqaqaqaqaqaqaqaqaqaqaqaqaqaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababqLqLqLqLababababababqLqLqLqLqLqLabababqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaababababababababababalalgykigyalalababababababababababababababababababababababababababqDqDqDqDqDqDqDababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLababqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababqLqLqLqLababababqLabqLqLqLqLqLqLqLababqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaabababababababababalgygykigyalalabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLabqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababqLqLqLqLqLqLabababqLqLqLqLqLqLabababababqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaababababababababalgygykigyalabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -1777,19 +1797,19 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLabababqLqLqLqLqLqLqLqLqLqL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLababababababqLqLqLqLqLqLqLqLqLqLabababababqLqLqLqLqLqLqLqLqLgygygygygygygygyDEDEDEgyalalalababababababababababababababababababababababababababababababababababababababababababababababababababababababababpIababzizMzLDDzJDCgygygygygygygygygyaaaaaaaaaaaaaaaaaaaaababababababkDmRmRmRmRmRgygyqygygygygygygygyalabalalabababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLababababababababqLqLqLqLqLqLqLababababababqLqLqLqLqLqLqLqLqLgygygygygygygygyDVDUDTgyalalalababababababababababababababababababababababababababababababalalalalalalalababababababababababababababababababziDSziziziziziziArDRgygygygygygygygygygygyaaaaaaaaaaaaaaaaaaabababababmRtPsCtQtQtRgyrJqzrigygygygygygygyadabalababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLababababababqLqLqLqLqLqLqLababababababqLqLqLqLalgyzyzyzyzyzyzyDPDQDOzyzyzyzyzygygygyalabababababababababababababababababababababababababababababalalalalalalalalalalalalabababababababababababziziziziDLDMDNziDwEzziDzzixhxhDJCcCdxhgygygygygygyaaaaaaaaaaaaaaaaaaabababalmRudowueueufgyAwDIrPDHAjAjAjAkgygygygygyalabababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLababababababqLqLqLqLqLqLqLabababababqLqLalalalgyzyzxzqzpzszrzuztzwzvznzozlzmsCsCrialalalalabababababababababababababababababababababababababalalalalalalalalalalalalalalalalalabababababababzizhzkzjzIzHzGzizMzLzKzJzizPzOzNzRzNzQgygygygygygygyaaaaaaaaaaaaaaaaaaalalalmRuCuDuEuEpCgyAwzBzAzFzEzAzAzzgygygygygyalababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLababababababqLqLqLqLqLqLqLabababababqLqLalalalgyzyzxzqzpzszrzuDazwzvznErzlzmsCsCrialalalalabababababababababababababababababababababababababalalalalalalalalalalalalalalalalalabababababababzizhzkzjzIzHzGzizMzLzKzJzizPzOzNzRzNzQgygygygygygygyaaaaaaaaaaaaaaaaaaalalalmRuCuDuEuEpCgyAwzBzAzFzEzAzAzzgygygygygyalababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLabababqLqLqLqLqLqLqLqLabababqLqLabalalalgyzyAdzYAbzZAJBfBeBeBdzXAcAAAIzVzWufalalalalalalabababababababababababababababababababababalalalalalalalalalalalalalalalalalalalalababababababzizTzkzSAoAnAqziziziziArzizPAsAsAuAtAvgygygygygygygyaaaaaaaaaaaaaaaaaagygygygygygygygygygypBzBAgAgAgAizAAlAmAjAkgynDmRalabababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLabababqLqLqLqLqLqLqLqLqLqLqLqLqLabalalalgyzyAKAHBnBFBEBkAEAGAFznBgAxAyxvBhufalalalalalalalalalabababababababababababababababababalalalmRalalalalalalalalalalalalalalalalalalalalabababziABADACASARAQAPAOANAMALzizPAsAWAVAUATgygygygygygyaaaaaaaaaaaaaaaaaaaaaaaagygygygygywNwNyKxQzBBbAZAYBazAzAzAzAAXgygygyalalabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababalalalgyzyBjBiBIzsBHBGzYBczyzyzyzyzyzyBhufgygygygygygygyalalalalabababababababababababababababalalgytGgygygygygygygygyrJrigygygygygygyalalalalalababziziziziziziziBmBlBJBmBlzixhxhxhBKxhxhxhBoBpgygyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagygyxOxQBqBxBwBvBuBuBtBsBrBzBAByAXgygygymQalabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLabababalalgyzyBBBDBCzZzYBLzYzYBMBXBYBRBVBNBQqpjsjsjsjsjsqngyalalalalalalababababababababababababalalalgypZjsjsjsjsjsjsjsjsqoqpjsjsjsjsqngyalalalalalabababababxhCoCnCmAsAsCpAsAsCjCiAsChAVClCkCkCeCfCcCdEGEFEFEFEFEFEFEFEFEFEFEFEFEFEFyKycCaCbxPBTBSCPBUBWBWDfCTBOBPCxCDgygygymQalabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLabababalalgyzyzyzyzyzyzyzyzyzyzyCqzyzyzyzyowufgygygygygykigygygygyalalalalababababababababababalalgygygykigygygygygygygygypBpCgygygygykigyalalalalalalalalalabxhxhxhxhCLCNCMCGCGCGCFCGCGCICHCKCJCODlCGDlCyCyCyCyCyCyCyCyCyCyCyCyCyCyCyDgCzDgCACzCtxPCsCrCwCvCuBrDjCECBCCsCsCrigyalalababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLabababalalgygygygygygygygygygygyAwAfAhowowowufgysMgygygyqqjsjsqngyalalalalababababababababababalgygypZjspYgygygygyalgygysMgygygygygygykigyalalalalalalalalalalalalalxhCZCYAsAsAsAsCXAsCWCVCUDmAsCRCSCcCdEHEHEHEHEHEHEHEHEHEHEHEHEHEHEIyKycyMDcxPDbxPzBzAzAzAzAzAzAzAzADauDxJpCqFmQalababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLabababqLqLqLqLqLqLqLqLqLqLqLqLqLabalalalgyzyAKAHBnBFBEBkAEAGAFznBgAxEuxvBhufalalalalalalalalalabababababababababababababababababalalalmRalalalalalalalalalalalalalalalalalalalalabababziABADEwASARAQAPAOANAMALzizPAsExAVAUATgygygygygygyaaaaaaaaaaaaaaaaaaaaaaaagygygygygywNwNyKxQzBEAAZAYEEzAzAzAzAAXgygygyalalabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababalalalgyzyBjBiBIzsBHBGzYBczyzyzyzyzyzyBhufgygygygygygygyalalalalabababababababababababababababalalgytGgygygygygygygygyrJrigygygygygygyalalalalalababziziziziziziziBmBlBJBmBlzixhxhxhBKxhxhxhBoBpgygyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagygyxOxQBqBxBwBvBuBuBtBsBrEQBAByAXgygygymQalabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLabababalalgyzyBBBDBCzZzYERzYzYESBXBYBRBVBNBQqpjsjsjsjsjsqngyalalalalalalababababababababababababalalalgypZjsjsjsjsjsjsjsjsqoqpjsjsjsjsqngyalalalalalabababababxhCoCnCmAsAsCpAsAsCjCiAsChAVETCkCkCeCfCcCdEGEFEFEFEFEFEFEFEFEFEFEFEFEFEFyKycCaCbxPBTBSCPBUBWBWDfCTBOBPCxCDgygygymQalabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLabababalalgyzyzyzyzyzyzyzyzyzyzyCqzyzyzyzyowufgygygygygykigygygygyalalalalababababababababababalalgygygykigygygygygygygygypBpCgygygygykigyalalalalalalalalalabxhxhxhxhCLCNCMCGCGCGCFCGCGCICHCKCJCODlCGDlCyCyCyCyCyCyCyCyCyCyCyCyCyCyCyDgCzDgCACzCtxPCsEUCwCvCuBrDjCEEVCCsCsCrigyalalababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLabababalalgygygygygygygygygygygyAwEWAhowowowufgysMgygygyqqjsjsqngyalalalalababababababababababalgygypZjspYgygygygyalgygysMgygygygygygykigyalalalalalalalalalalalalalxhCZCYAsAsAsAsCXAsCWCVCUDmAsEXCSCcCdEHEHEHEHEHEHEHEHEHEHEHEHEHEHEIyKycyMDcxPDbxPzBzAzAzAzAzAzAzAzAEYuDxJpCqFmQalababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababalalalalalalalalalgygygypBuDuDuDuDDeApalmRalalgygygygykigyalalalalalabababababalalalalalgypZpYgygygyalalalalalalmRalalalalalgykigyalalalalalalmRalalalalalwVwVDiDuDiwXwXDhDtwXwXwXxIDsxIxhDkgygygyaaaaaaaaaeaaaaaaaeaaaaaaaaaaaeaayTxQxPDqDpDoDnxixixjDvDKEgDxDGDrDrDrqFgyalababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababalalalalalalalalalalalalabalalalalalgykigygygygygyalalalalalalalalalalalgykigygyalalalabababababalalalalalalgykigygygyrJrigygytGgygyalalalwVwUwTwZwYwXwWxdxcxbxawXxgxfxtxhgygygygygygyaaaaaeaaaaaaEDaeaeaeaeaeEDaeaewNwMwPwOwQwQwQwQxrwQwSwQwQxsqFqFqFqFgyalababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababalalalalgyqqjsjsjsqngygygygygygygygygygygygygykigyalalabababababababalalalalalalgyqqjsjsjsqoqpjsjsjsqngyalalalwVxwxuxyxxwXxzxBxAxDEEwXxExGxFxhgygygygygygyaeaeaeaeaeaeaeyIyIyIyIyIaeaaaawNxkxoxPxWxRykxixixpxixjwQxKgygygygyalalababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababalalalgygygygygyqqqngygyrJrigygypZjsjsjsjsjspYgyalabababababababababalalalalalgygygygygypBpCgygygykigygygygywVwVwVwVwVwXxHxNxAxDxLwXxIymxIxhgygygygygygyaaaaaeaaaaaaaeyIyIyIyIyIaeaaxOxQxPxSypwQwQwQwQwQwQxTxUwQxKgygygyalalabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababalalalalalalalalalalalalabalalalalalgykigygygygygyalalalalalalalalalalalgykigygyalalalabababababalalalalalalgykigygygyrJrigygytGgygyalalalwVwUwTwZwYwXwWxdxcFaEZwXxgxfxtxhgygygygygygyaaaaaeaaaaaaEDaeaeaeaeaeEDaeaewNwMwPFbwQwQwQwQxrwQwSwQwQxsqFqFqFqFgyalababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababalalalalgyqqjsjsjsqngygygygygygygygygygygygygykigyalalabababababababalalalalalalgyqqjsjsjsqoqpjsjsjsqngyalalalwVxwxuFcxxwXxzxBxAFeFdwXxExGxFxhgygygygygygyaeaeaeaeaeaeaeyIyIyIyIyIaeaaaawNxkxoxPxWxRykxixixpxixjwQxKgygygygyalalababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababalalalgygygygygyqqqngygyrJrigygypZjsjsjsjsjspYgyalabababababababababalalalalalgygygygygypBpCgygygykigygygygywVwVwVwVwVwXxHxNxAFgFfwXFhymxIxhgygygygygygyaaaaaeaaaaaaaeyIyIyIyIyIaeaaxOxQxPxSFiwQwQwQwQwQwQxTxUwQxKgygygyalalabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababalalalgysMgygyqqjsjsqoqpjsjspYgygygygygygygyalabababababababababababalalalalalalalgygygygyalgyqqjsjsqngygygygygygywXxVxXwXwXwXwXowysufyZgygygygygyaaaaaaaeaaaaaaaeyIyIyIyIyIydycybyaxZylytyjyiyhygyfyexYxUwQxKgygygyalalabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababalalmRalgygygygypBpCgygygygysMgyalalalalalababababababababababababababalalalalalalalalalgygygygykigygygygygygygygyyAowowowowowowufgygygygygygyaeaeaeaeaeaeaeaeyIyIyIyIyIywyEyxyJyvynxPxPxPyuyoyryqyyyzwQxKgygygyalabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababalalmRalgygygygypBpCgygygygysMgyalalalalalababababababababababababababalalalalalalalalalgygygygykigygygygygygygygyyAowowowowowowufgygygygygygyaeaeaeaeaeaeaeaeyIyIyIyIyIywyEyxyJyvynxPxPxPyuyoyrFjyyyzwQxKgygygyalabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababalalalalalalalalalalalmRalalabababababababababababababababababababababababababalalalalalgykigygygygygygygygyyNuDuDuDuDuDuDpCgygygygygygygyaaaaaaaaaaaaaeyIyIyIyIyIyKycyMyLxPyFyDyDyDzDyHyHyGyByCwQxKgygyzCmRabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababalalalalalalalalalalalababababababababababababababababababababababababababababalalalalgyqqjsjsjsjsjsjsjsjsyOjsjsjsjsjsjsjsjsyPgygygygygygyaaaaaaaaaaaeyIyIyIyIyIzUaayTxQyUySxPxPxPyRyQyryrxTyVwQxKgygygyalabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababalalalalalababababababababababababababababababababababababababababababababalalalalgygygygygygygygygygygygygygygygygygygyqygyrJrigygygypzyWaaaaaaEDyIyIyIyIyIEDaaaaaazfzeytzdzczbzayYyXyyxUwQxKgygygyalababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/sound/effects/cascade.ogg b/sound/effects/cascade.ogg new file mode 100644 index 00000000000..9de7b01b0cd Binary files /dev/null and b/sound/effects/cascade.ogg differ diff --git a/sound/effects/supermatter.ogg b/sound/effects/supermatter.ogg new file mode 100644 index 00000000000..83081a5e9bf Binary files /dev/null and b/sound/effects/supermatter.ogg differ diff --git a/sound/effects/teleport.ogg b/sound/effects/teleport.ogg new file mode 100644 index 00000000000..650867782b7 Binary files /dev/null and b/sound/effects/teleport.ogg differ diff --git a/sound/items/goggles_charge.ogg b/sound/items/goggles_charge.ogg new file mode 100644 index 00000000000..b41bbf1d060 Binary files /dev/null and b/sound/items/goggles_charge.ogg differ diff --git a/sound/weapons/heavysmash.ogg b/sound/weapons/heavysmash.ogg new file mode 100644 index 00000000000..609e20fd967 Binary files /dev/null and b/sound/weapons/heavysmash.ogg differ diff --git a/sound/weapons/rapidslice.ogg b/sound/weapons/rapidslice.ogg new file mode 100644 index 00000000000..a428c18efe2 Binary files /dev/null and b/sound/weapons/rapidslice.ogg differ diff --git a/sound/weapons/spiderlunge.ogg b/sound/weapons/spiderlunge.ogg new file mode 100644 index 00000000000..fc2d91e079d Binary files /dev/null and b/sound/weapons/spiderlunge.ogg differ