diff --git a/SQL/updates/Readme.md b/SQL/updates/Readme.md new file mode 100644 index 00000000000..29d7ad0287a --- /dev/null +++ b/SQL/updates/Readme.md @@ -0,0 +1,7 @@ +### UPDATING SQL +The contents of this directory contain update sql scripts for the paracode SQL database. + +Files following the naming convention -.sql +Files are designed to be run sequentialy, moving from version 2, to version 4 would require running the following SQL scripts. +2-3.sql +3-4.sql \ No newline at end of file diff --git a/_maps/cyberiad.dm b/_maps/cyberiad.dm index 3e03a5036e7..7e7c9a2b896 100644 --- a/_maps/cyberiad.dm +++ b/_maps/cyberiad.dm @@ -18,9 +18,9 @@ z7 = empty #include "map_files\cyberiad\z2.dmm" #include "map_files\cyberiad\z3.dmm" #include "map_files\cyberiad\z4.dmm" - #include "map_files\cyberiad\z5.dmm" + #include "map_files\generic\z5.dmm" #include "map_files\cyberiad\z6.dmm" - #include "map_files\cyberiad\z7.dmm" + #include "map_files\generic\z7.dmm" #define MAP_FILE "cyberiad.dmm" #define MAP_NAME "Cyberiad" diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm index a7cfe6afb3e..1dcfe2e9476 100644 --- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm +++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm @@ -77,7 +77,7 @@ "aby" = (/obj/machinery/door/window{dir = 8; name = "Tool Storage"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "abz" = (/obj/structure/closet/crate/internals,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "abA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport) -"abB" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/prison) +"abB" = (/turf/simulated/wall/r_wall,/area/security/permabrig) "abC" = (/obj/structure/table,/obj/item/weapon/gun/syringe,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "abD" = (/obj/structure/table,/obj/item/weapon/reagent_containers/syringe/charcoal,/obj/item/weapon/reagent_containers/syringe/charcoal{pixel_y = 2},/obj/item/weapon/reagent_containers/syringe/charcoal{pixel_y = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "abE" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) @@ -108,80 +108,80 @@ "acd" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r"; icon_state = "propulsion_r"},/turf/space,/area/shuttle/syndicate) "ace" = (/obj/structure/cable,/obj/machinery/power/solar{id = "foreport"; name = "Fore-Port Solar Array"},/turf/simulated/floor/plating/airless{icon_state = "solarpanel"},/area/solar/auxport) "acf" = (/obj/item/stack/cable_coil,/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport) -"acg" = (/turf/simulated/wall/r_wall,/area/security/prison) -"ach" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/prison) -"aci" = (/obj/machinery/seed_extractor,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"acj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "applebush"; layer = 4.1; tag = "icon-applebush"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"ack" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/security/prison) -"acl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/twohanded/required/kirbyplants{layer = 4.1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"acm" = (/obj/machinery/biogenerator,/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Prison Hydroponics"; network = list("SS13","Prison")},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"acn" = (/obj/item/seeds/ambrosia,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"aco" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/prison) -"acp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/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/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"acq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"acr" = (/obj/item/weapon/reagent_containers/glass/bucket,/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/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"acs" = (/obj/item/seeds/glowshroom,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"act" = (/obj/item/weapon/cultivator,/obj/item/seeds/carrot,/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) +"acg" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/permabrig) +"ach" = (/obj/machinery/seed_extractor,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"aci" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/security/permabrig) +"acj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "applebush"; layer = 4.1; tag = "icon-applebush"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"ack" = (/obj/machinery/biogenerator,/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Prison Hydroponics"; network = list("SS13","Prison")},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"acl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/twohanded/required/kirbyplants{layer = 4.1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"acm" = (/obj/item/seeds/ambrosia,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"acn" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/permabrig) +"aco" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"acp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/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/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"acq" = (/obj/item/seeds/glowshroom,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"acr" = (/obj/item/weapon/reagent_containers/glass/bucket,/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/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"acs" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/permabrig) +"act" = (/obj/item/weapon/cultivator,/obj/item/seeds/carrot,/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) "acu" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/shuttle/pod_2) "acv" = (/obj/structure/window/full/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/pod_2) "acw" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/shuttle/pod_2) "acx" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) "acy" = (/obj/docking_port/stationary{dir = 2; dwidth = 2; height = 18; id = "skipjack_nw"; name = "northwest of SS13"; width = 19},/turf/space,/area/space) "acz" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport) -"acA" = (/turf/simulated/wall/r_wall,/area/prison/solitary{name = "Prisoner Education Chamber"}) -"acB" = (/obj/item/device/plant_analyzer,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"acC" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"acD" = (/turf/simulated/floor/plasteel,/area/security/prison) -"acE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"acF" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/prison) +"acA" = (/turf/simulated/floor/plasteel,/area/security/permabrig) +"acB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"acC" = (/obj/item/device/plant_analyzer,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"acD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"acE" = (/obj/structure/lattice,/turf/space,/area/security/permabrig) +"acF" = (/obj/machinery/door/airlock/glass{id_tag = "permahydro"; name = "Hydroponics Module"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) "acG" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/space) "acH" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/pod_2) "acI" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/light{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/pod_2) "acJ" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/space) "acK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard) -"acL" = (/obj/machinery/door/poddoor{density = 1; icon_state = "pdoor1"; id_tag = "SecJusticeChamber"; name = "Justice Vent"; opacity = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"acM" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/security/prison) -"acN" = (/obj/machinery/door/airlock/glass{id_tag = "permahydro"; name = "Hydroponics Module"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"acO" = (/obj/machinery/camera{c_tag = "Prison Chamber"; network = list("SS13","Prison")},/obj/item/device/radio/intercom/locked/prison{dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = 24},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel,/area/security/prison) +"acL" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/permabrig) +"acM" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/security/permabrig) +"acN" = (/turf/simulated/wall,/area/security/permabrig) +"acO" = (/obj/machinery/door/poddoor{density = 1; icon_state = "pdoor1"; id_tag = "SecJusticeChamber"; name = "Justice Vent"; opacity = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/security/permabrig) "acP" = (/obj/structure/stool/bed/chair{dir = 1},/obj/item/device/radio/intercom{pixel_x = 25},/turf/simulated/shuttle/floor,/area/shuttle/pod_2) -"acQ" = (/turf/simulated/wall,/area/security/prison) -"acR" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{tag = "icon-warndark (NORTHWEST)"; icon_state = "warndark"; dir = 9},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"acS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{tag = "icon-warndark (NORTH)"; icon_state = "warndark"; dir = 1},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"acT" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{tag = "icon-warndark (NORTHEAST)"; icon_state = "warndark"; dir = 5},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"acU" = (/obj/item/weapon/soap/nanotrasen,/obj/item/weapon/bikehorn/rubberducky,/obj/machinery/shower{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/prison) -"acV" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/prison) -"acW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/twohanded/required/kirbyplants{tag = "icon-plant-13"; icon_state = "plant-13"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"acX" = (/obj/structure/table,/obj/item/weapon/folder,/obj/item/weapon/paper/hydroponics,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/pen,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"acY" = (/obj/structure/table,/obj/machinery/computer/library/public,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"acZ" = (/obj/machinery/computer/arcade,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"ada" = (/obj/item/weapon/beach_ball/holoball,/obj/structure/holohoop{pixel_y = 28},/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/security/prison) -"adb" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"adc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"add" = (/obj/structure/stool/bed,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/device/radio/electropack,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"ade" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/security/prison) -"adf" = (/obj/machinery/washing_machine,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/security/prison) +"acQ" = (/obj/item/weapon/soap/nanotrasen,/obj/item/weapon/bikehorn/rubberducky,/obj/machinery/shower{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/permabrig) +"acR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/twohanded/required/kirbyplants{tag = "icon-plant-13"; icon_state = "plant-13"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"acS" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/permabrig) +"acT" = (/obj/structure/table,/obj/machinery/computer/library/public,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"acU" = (/obj/structure/table,/obj/item/weapon/folder,/obj/item/weapon/paper/hydroponics,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"acV" = (/obj/machinery/camera{c_tag = "Prison Chamber"; network = list("SS13","Prison")},/obj/item/device/radio/intercom/locked/prison{dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = 24},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel,/area/security/permabrig) +"acW" = (/obj/machinery/computer/arcade,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"acX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"acY" = (/obj/item/weapon/beach_ball/holoball,/obj/structure/holohoop{pixel_y = 28},/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/security/permabrig) +"acZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"ada" = (/obj/machinery/washing_machine,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/security/permabrig) +"adb" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/security/permabrig) +"adc" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{tag = "icon-warndark (NORTHWEST)"; icon_state = "warndark"; dir = 9},/area/security/permabrig) +"add" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{tag = "icon-warndark (NORTHEAST)"; icon_state = "warndark"; dir = 5},/area/security/permabrig) +"ade" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{tag = "icon-warndark (NORTH)"; icon_state = "warndark"; dir = 1},/area/security/permabrig) +"adf" = (/obj/machinery/shower{dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/permabrig) "adg" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/shuttle/pod_2) "adh" = (/obj/machinery/door/airlock/shuttle{name = "Escape Pod Airlock"},/obj/docking_port/mobile/pod{id = "pod2"; name = "escape pod 2"},/turf/simulated/shuttle/floor,/area/shuttle/pod_2) "adi" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/shuttle/pod_2) "adj" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "forestarboard"; name = "Fore-Starboard Solar Array"},/turf/simulated/floor/plating/airless{icon_state = "solarpanel"},/area/solar/auxstarboard) "adk" = (/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard) -"adl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light/small{dir = 8},/obj/machinery/sparker{dir = 2; id = "executionburn"; pixel_x = -25},/turf/simulated/floor/plasteel{tag = "icon-warndark (WEST)"; icon_state = "warndark"; dir = 8},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"adm" = (/turf/simulated/floor/plating/airless/catwalk,/turf/space,/turf/simulated/floor/plating/airless/catwalk,/area/space) -"adn" = (/obj/machinery/flasher{id = "justiceflash"; name = "mounted justice flash"; pixel_x = 28},/turf/simulated/floor/plasteel{tag = "icon-warndark (EAST)"; icon_state = "warndark"; dir = 4},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"ado" = (/obj/machinery/shower{dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/prison) -"adp" = (/obj/machinery/door/window/westleft{base_state = "right"; dir = 4; icon_state = "right"; name = "Unisex Showers"; req_access_txt = "0"},/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/prison) -"adq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"adr" = (/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"ads" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"adt" = (/obj/structure/table,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 3},/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/plasteel,/area/security/prison) -"adu" = (/obj/structure/table,/obj/item/toy/cards/deck,/obj/item/toy/cards/deck,/turf/simulated/floor/plasteel,/area/security/prison) -"adv" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"adw" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"adx" = (/obj/structure/window/reinforced,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/security/prison) -"ady" = (/obj/structure/table,/obj/structure/bedsheetbin,/obj/structure/window/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/security/prison) -"adz" = (/turf/simulated/floor/plating,/area/security/prison) -"adA" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/security/prison) -"adB" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/security/prison) +"adl" = (/obj/machinery/door/window/westleft{base_state = "right"; dir = 4; icon_state = "right"; name = "Unisex Showers"; req_access_txt = "0"},/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/permabrig) +"adm" = (/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"adn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"ado" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"adp" = (/obj/structure/table,/obj/item/toy/cards/deck,/obj/item/toy/cards/deck,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adq" = (/obj/structure/table,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 3},/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/plasteel,/area/security/permabrig) +"adr" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"ads" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"adt" = (/obj/structure/table,/obj/structure/bedsheetbin,/obj/structure/window/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/security/permabrig) +"adu" = (/obj/structure/window/reinforced,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/security/permabrig) +"adv" = (/turf/simulated/floor/plating,/area/security/permabrig) +"adw" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/security/permabrig) +"adx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light/small{dir = 8},/obj/machinery/sparker{dir = 2; id = "executionburn"; pixel_x = -25},/turf/simulated/floor/plasteel{tag = "icon-warndark (WEST)"; icon_state = "warndark"; dir = 8},/area/security/permabrig) +"ady" = (/obj/machinery/flasher{id = "justiceflash"; name = "mounted justice flash"; pixel_x = 28},/turf/simulated/floor/plasteel{tag = "icon-warndark (EAST)"; icon_state = "warndark"; dir = 4},/area/security/permabrig) +"adz" = (/obj/structure/stool/bed,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/device/radio/electropack,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig) +"adA" = (/obj/machinery/door/airlock{name = "Unisex Restroom"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/permabrig) +"adB" = (/obj/structure/table,/obj/item/weapon/book/manual/chef_recipes{pixel_x = 2; pixel_y = 6},/obj/item/clothing/head/chefhat,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) "adC" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard) "adD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard) "adE" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard) @@ -196,21 +196,21 @@ "adN" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_northeast_lock"; locked = 1; req_access_txt = "152"; req_one_access = null; req_one_access_txt = "0"},/obj/docking_port/mobile{dir = 2; dwidth = 2; height = 18; id = "skipjack"; name = "Vox Skipjack"; roundstart_move = "skipjack_away"; width = 19},/obj/docking_port/stationary{dir = 2; dwidth = 2; height = 18; id = "skipjack_ne"; name = "northeast of SS13"; width = 19},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox) "adO" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1331; master_tag = "vox_east_control"; req_access_txt = "152"},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/vox) "adP" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport) -"adQ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{tag = "icon-warndark (SOUTHWEST)"; icon_state = "warndark"; dir = 10},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"adR" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{tag = "icon-warndark"; icon_state = "warndark"; dir = 2},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"adS" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 2; name = "justice injector"},/turf/simulated/floor/plasteel{tag = "icon-warndark (SOUTHEAST)"; icon_state = "warndark"; dir = 6},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"adT" = (/obj/machinery/door/airlock{name = "Unisex Restroom"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/prison) -"adU" = (/obj/structure/table,/obj/item/weapon/book/manual/chef_recipes{pixel_x = 2; pixel_y = 6},/obj/item/clothing/head/chefhat,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"adV" = (/obj/structure/table,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/toy/cards/deck,/obj/item/toy/cards/deck,/turf/simulated/floor/plasteel,/area/security/prison) -"adW" = (/obj/structure/table,/obj/item/weapon/storage/pill_bottle/dice,/turf/simulated/floor/plasteel,/area/security/prison) -"adX" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/security/prison) -"adY" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"adZ" = (/obj/machinery/vending/sustenance{desc = "A vending machine normally reserved for work camps."; name = "\improper sustenance vendor"; product_slogans = "Enjoy your meal.;Enough calories to support any worker."},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"aea" = (/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/security/prison) -"aeb" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/security/prison) -"aec" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/security/prison) -"aed" = (/obj/machinery/door/airlock/external{name = "Security External Airlock"; req_access_txt = "1"},/turf/simulated/floor/plating,/area/security/prison) -"aee" = (/obj/machinery/light/small{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 = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/security/prison) +"adQ" = (/obj/structure/table,/obj/item/weapon/storage/pill_bottle/dice,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adR" = (/obj/structure/table,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/toy/cards/deck,/obj/item/toy/cards/deck,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adS" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adT" = (/obj/machinery/vending/sustenance{desc = "A vending machine normally reserved for work camps."; name = "\improper sustenance vendor"; product_slogans = "Enjoy your meal.;Enough calories to support any worker."},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"adU" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"adV" = (/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/security/permabrig) +"adW" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/security/permabrig) +"adX" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/security/permabrig) +"adY" = (/obj/machinery/light/small{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 = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/security/permabrig) +"adZ" = (/obj/machinery/door/airlock/external{name = "Security External Airlock"; req_access_txt = "1"},/turf/simulated/floor/plating,/area/security/permabrig) +"aea" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{tag = "icon-warndark (SOUTHWEST)"; icon_state = "warndark"; dir = 10},/area/security/permabrig) +"aeb" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 2; name = "justice injector"},/turf/simulated/floor/plasteel{tag = "icon-warndark (SOUTHEAST)"; icon_state = "warndark"; dir = 6},/area/security/permabrig) +"aec" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{tag = "icon-warndark"; icon_state = "warndark"; dir = 2},/area/security/permabrig) +"aed" = (/obj/machinery/light/small{dir = 4},/obj/structure/toilet{dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/permabrig) +"aee" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 2; pixel_y = 1},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/security/permabrig) "aef" = (/turf/simulated/floor/plating/airless/catwalk,/turf/space,/area/space) "aeg" = (/obj/structure/cable,/obj/machinery/power/solar{id = "forestarboard"; name = "Fore-Starboard Solar Array"},/turf/simulated/floor/plating/airless{icon_state = "solarpanel"},/area/solar/auxstarboard) "aeh" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/shuttle/vox) @@ -221,19 +221,19 @@ "aem" = (/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "voxshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/shuttle/window{tag = "icon-window5_end (NORTH)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; dir = 1},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox) "aen" = (/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "vox_east_sensor"; pixel_x = -25; req_access_txt = "152"},/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox) "aeo" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{frequency = 1331; id_tag = "vox_east_vent"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox) -"aep" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/preopen{id_tag = "executionfireblast"; layer = 2.9; name = "blast door"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 4; icon_state = "darkredfull"; tag = "icon-whitehall (WEST)"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"aeq" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/poddoor/preopen{id_tag = "executionfireblast"; layer = 2.9; name = "blast door"},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 4; icon_state = "darkredfull"; tag = "icon-whitehall (WEST)"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"aer" = (/obj/machinery/door/window/brigdoor{dir = 2; name = "Justice Chamber"; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/brigdoor{dir = 1; name = "Justice Chamber"; req_access_txt = "3"},/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/preopen{id_tag = "executionfireblast"; layer = 2.9; name = "blast door"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"aes" = (/obj/machinery/light/small{dir = 4},/obj/structure/toilet{dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/prison) -"aet" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 2; pixel_y = 1},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/security/prison) -"aeu" = (/obj/structure/stool,/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{id = "permabolt2"; name = "Cell Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"aev" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel,/area/security/prison) -"aew" = (/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"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"aex" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"aey" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"aez" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"aeA" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"aeB" = (/obj/machinery/door/airlock/external{name = "Escape Pod Two"},/turf/simulated/floor/plating,/area/security/prison) +"aep" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/security/permabrig) +"aeq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel,/area/security/permabrig) +"aer" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"aes" = (/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"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"aet" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"aeu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"aev" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"aew" = (/obj/machinery/door/airlock/external{name = "Escape Pod Two"},/turf/simulated/floor/plating,/area/security/permabrig) +"aex" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "executionfireblast"; layer = 2.9; name = "blast door"; opacity = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "darkredfull"; tag = "icon-whitehall (WEST)"},/area/security/permabrig) +"aey" = (/obj/machinery/door/window/brigdoor{dir = 2; name = "Justice Chamber"; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/brigdoor{dir = 1; name = "Justice Chamber"; req_access_txt = "3"},/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "executionfireblast"; layer = 2.9; name = "blast door"; opacity = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig) +"aez" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "executionfireblast"; layer = 2.9; name = "blast door"; opacity = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "darkredfull"; tag = "icon-whitehall (WEST)"},/area/security/permabrig) +"aeA" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/security/permabrig) +"aeB" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/light,/turf/simulated/floor/plasteel,/area/security/permabrig) "aeC" = (/obj/item/stack/cable_coil,/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard) "aeD" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox) "aeE" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1331; id_tag = "vox_west_control"; pixel_x = 24; req_access_txt = "152"; tag_airpump = "vox_west_vent"; tag_chamber_sensor = "vox_west_sensor"; tag_exterior_door = "vox_northwest_lock"; tag_interior_door = "vox_southwest_lock"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1331; id_tag = "vox_west_vent"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox) @@ -244,24 +244,24 @@ "aeJ" = (/obj/structure/table,/obj/machinery/door_control{id = "voxshutters"; name = "remote shutter control"; req_access_txt = "152"},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "aeK" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1331; id_tag = "vox_east_control"; pixel_x = -24; req_access_txt = "152"; tag_airpump = "vox_east_vent"; tag_chamber_sensor = "vox_east_sensor"; tag_exterior_door = "vox_northeast_lock"; tag_interior_door = "vox_southeast_lock"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1331; id_tag = "vox_east_vent"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox) "aeL" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox) -"aeM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/item/device/radio/intercom/locked/prison{dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) +"aeM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/item/device/radio/intercom/locked/prison{dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) "aeN" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) -"aeO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/table,/obj/item/weapon/folder/red{pixel_x = 3},/obj/item/device/taperecorder{pixel_x = -3; pixel_y = 0},/obj/item/weapon/storage/fancy/cigarettes,/obj/item/device/flash,/obj/item/weapon/reagent_containers/spray/pepper,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"aeP" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/security/prison) -"aeQ" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/machinery/flasher{id = "PCell 3"; pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"aeR" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/light,/turf/simulated/floor/plasteel,/area/security/prison) -"aeS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"aeT" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bottle/morphine{pixel_x = -4; pixel_y = 1},/obj/item/weapon/reagent_containers/glass/bottle/morphine{name = "chloral hydrate bottle"},/obj/item/weapon/reagent_containers/glass/bottle/toxin{pixel_x = 6; pixel_y = 8},/obj/item/weapon/reagent_containers/glass/bottle/morphine{pixel_x = 5; pixel_y = 1},/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/glass/bottle/facid{name = "fluorosulfuric acid bottle"; pixel_x = -3; pixel_y = 6},/obj/item/weapon/reagent_containers/syringe{pixel_y = 5},/obj/item/weapon/reagent_containers/dropper,/obj/item/device/assembly/signaler{pixel_x = -3; pixel_y = 2},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/alarm{desc = "This particular atmos control unit appears to have no access restrictions."; dir = 4; icon_state = "alarm0"; locked = 0; name = "all-access air alarm"; pixel_x = -24; req_access = "0"; req_one_access = "0"},/obj/machinery/door_control{dir = 2; id = "SecJusticeChamber"; layer = 4; name = "Justice Vent Control"; pixel_x = -26; pixel_y = 25; req_access_txt = "3"},/obj/machinery/door_control{id = "executionfireblast"; name = "Justice Area Lockdown"; pixel_x = -38; pixel_y = 25; req_access_txt = "2"},/obj/machinery/ignition_switch{id = "executionburn"; name = "Justice Ignition Switch"; pixel_x = -25; pixel_y = 36; req_access_txt = "1"},/obj/machinery/ignition_switch{id = "justiceflash"; name = "Justice Flash Control"; pixel_x = -38; pixel_y = 36; req_access_txt = "1"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"aeU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"aeV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/security/prison) -"aeW" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"aeX" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"aeY" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"aeZ" = (/obj/structure/table/glass,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/glass/bottle/morphine{pixel_y = 6},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitered"},/area/security/prison) -"afa" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/structure/table/glass,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 4; pixel_y = 4},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = -5; pixel_y = 6},/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitered"},/area/security/prison) +"aeO" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"aeP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/security/permabrig) +"aeQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"aeR" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"aeS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"aeT" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"aeU" = (/obj/structure/table/glass,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/glass/bottle/morphine{pixel_y = 6},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitered"},/area/security/permabrig) +"aeV" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/structure/table/glass,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 4; pixel_y = 4},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = -5; pixel_y = 6},/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitered"},/area/security/permabrig) +"aeW" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bottle/morphine{pixel_x = -4; pixel_y = 1},/obj/item/weapon/reagent_containers/glass/bottle/morphine{name = "chloral hydrate bottle"},/obj/item/weapon/reagent_containers/glass/bottle/toxin{pixel_x = 6; pixel_y = 8},/obj/item/weapon/reagent_containers/glass/bottle/morphine{pixel_x = 5; pixel_y = 1},/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/glass/bottle/facid{name = "fluorosulfuric acid bottle"; pixel_x = -3; pixel_y = 6},/obj/item/weapon/reagent_containers/syringe{pixel_y = 5},/obj/item/weapon/reagent_containers/dropper,/obj/item/device/assembly/signaler{pixel_x = -3; pixel_y = 2},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/alarm{desc = "This particular atmos control unit appears to have no access restrictions."; dir = 4; icon_state = "alarm0"; locked = 0; name = "all-access air alarm"; pixel_x = -24; req_access = "0"; req_one_access = "0"},/obj/machinery/door_control{dir = 2; id = "SecJusticeChamber"; layer = 4; name = "Justice Vent Control"; pixel_x = -26; pixel_y = 25; req_access_txt = "3"},/obj/machinery/door_control{id = "executionfireblast"; name = "Justice Area Lockdown"; pixel_x = -38; pixel_y = 25; req_access_txt = "2"},/obj/machinery/ignition_switch{id = "executionburn"; name = "Justice Ignition Switch"; pixel_x = -25; pixel_y = 36; req_access_txt = "1"},/obj/machinery/ignition_switch{id = "justiceflash"; name = "Justice Flash Control"; pixel_x = -38; pixel_y = 36; req_access_txt = "1"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig) +"aeX" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig) +"aeY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/table,/obj/item/weapon/folder/red{pixel_x = 3},/obj/item/device/taperecorder{pixel_x = -3; pixel_y = 0},/obj/item/weapon/storage/fancy/cigarettes,/obj/item/device/flash,/obj/item/weapon/reagent_containers/spray/pepper,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig) +"aeZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/power/apc{cell_type = 2500; dir = 1; name = "Prisoner Education Chamber APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/closet/secure_closet/injection{name = "educational injections"; pixel_x = 2},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig) +"afa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig) "afb" = (/turf/simulated/wall,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) -"afc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/power/apc{cell_type = 2500; dir = 1; name = "Prisoner Education Chamber APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/closet/secure_closet/injection{name = "educational injections"; pixel_x = 2},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"afd" = (/obj/structure/table/reinforced,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/item/clothing/head/beret/sec,/obj/item/clothing/suit/jacket/pilot,/obj/machinery/alarm{pixel_y = 24},/obj/item/device/spacepod_key{id = 100000},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) +"afc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/wall/r_wall,/area/security/permabrig) +"afd" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "permacell3"; name = "Cell Shutters"; opacity = 0},/obj/machinery/door/airlock/glass{id_tag = "permabolt3"; name = "Cell 3"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) "afe" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_southwest_lock"; locked = 1; req_access_txt = "152"; req_one_access = null; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/shuttle/plating/vox,/area/shuttle/vox) "aff" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_west_control"; req_one_access_txt = "152"},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/vox) "afg" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/vox) @@ -277,18 +277,18 @@ "afq" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport) "afr" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/security/podbay) "afs" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/security/podbay) -"aft" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"afu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"afv" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/stool/bed/chair/office/dark{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"afw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/wall/r_wall,/area/security/prison) -"afx" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "permacell3"; name = "Cell Shutters"; opacity = 0},/obj/machinery/door/airlock/glass{id_tag = "permabolt3"; name = "Cell 3"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"afy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/security/prison) -"afz" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "permacell2"; name = "Cell Shutters"; opacity = 0},/obj/machinery/door/airlock/glass{id_tag = "permabolt2"; name = "Cell 2"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"afA" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "permacell1"; name = "Cell Shutters"; opacity = 0},/obj/machinery/door/airlock/glass{id_tag = "permabolt1"; name = "Cell 1"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"afB" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/security/prison) -"afC" = (/obj/structure/stool/bed,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/obj/machinery/camera{c_tag = "Prison Sanitatium"; dir = 4; network = list("SS13","Prison"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/prison) -"afD" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/prison) -"afE" = (/obj/structure/stool/bed,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/prison) +"aft" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/security/permabrig) +"afu" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "permacell2"; name = "Cell Shutters"; opacity = 0},/obj/machinery/door/airlock/glass{id_tag = "permabolt2"; name = "Cell 2"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"afv" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "permacell1"; name = "Cell Shutters"; opacity = 0},/obj/machinery/door/airlock/glass{id_tag = "permabolt1"; name = "Cell 1"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"afw" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/security/permabrig) +"afx" = (/obj/structure/stool/bed,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/obj/machinery/camera{c_tag = "Prison Sanitatium"; dir = 4; network = list("SS13","Prison"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/permabrig) +"afy" = (/obj/structure/stool/bed,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/permabrig) +"afz" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/permabrig) +"afA" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/space,/area/security/podbay) +"afB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/table,/obj/item/device/flashlight/lamp,/obj/structure/reagent_dispensers/peppertank{pixel_x = -29; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig) +"afC" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig) +"afD" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/stool/bed/chair/office/dark{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig) +"afE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 4; pixel_x = 28},/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig) "afF" = (/obj/structure/closet/emcloset,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "afG" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 8},/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/shuttle/pod_3) "afH" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/pod_3) @@ -298,49 +298,49 @@ "afL" = (/obj/machinery/light/spot,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "afM" = (/obj/item/clothing/head/collectable/petehat{desc = "It smells faintly of reptile."; name = "fancy leader hat"},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "afN" = (/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id_tag = "voxshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/shuttle/window{tag = "icon-window5_end (EAST)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; dir = 4},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox) -"afO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/table,/obj/item/device/flashlight/lamp,/obj/structure/reagent_dispensers/peppertank{pixel_x = -29; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"afP" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"afQ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"afR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 4; pixel_x = 28},/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"afS" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"afT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/prison/solitary{name = "Prisoner Education Chamber"}) -"afU" = (/obj/structure/stool/bed,/obj/machinery/camera{c_tag = "Prison Cell 3"; network = list("SS13","Prison")},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"afV" = (/obj/structure/stool,/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{id = "permabolt3"; name = "Cell Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"afW" = (/obj/structure/stool/bed,/obj/machinery/camera{c_tag = "Prison Cell 2"; network = list("SS13","Prison")},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"afX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) +"afO" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig) +"afP" = (/obj/structure/stool/bed,/obj/machinery/camera{c_tag = "Prison Cell 3"; network = list("SS13","Prison")},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"afQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/security/permabrig) +"afR" = (/obj/structure/stool,/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{id = "permabolt3"; name = "Cell Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"afS" = (/obj/structure/stool/bed,/obj/machinery/camera{c_tag = "Prison Cell 2"; network = list("SS13","Prison")},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"afT" = (/obj/structure/stool,/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{id = "permabolt2"; name = "Cell Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"afU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"afV" = (/obj/structure/stool/bed,/obj/machinery/camera{c_tag = "Prison Cell 1"; network = list("SS13","Prison")},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"afW" = (/obj/structure/stool,/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{id = "permabolt1"; name = "Cell Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"afX" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/light{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/permabrig) "afY" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "hosspace"; layer = 2.7; name = "privacy shutters"; opacity = 0},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/security/hos) -"afZ" = (/obj/structure/stool/bed,/obj/machinery/camera{c_tag = "Prison Cell 1"; network = list("SS13","Prison")},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"aga" = (/obj/structure/stool,/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{id = "permabolt1"; name = "Cell Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) +"afZ" = (/obj/machinery/flasher{id = "insaneflash"; pixel_x = 26},/obj/machinery/atmospherics/unary/vent_pump{dir = 7; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/permabrig) +"aga" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/permabrig) "agb" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "hosspace"; layer = 2.7; name = "privacy shutters"; opacity = 0},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/security/hos) -"agc" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/light{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/prison) -"agd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/prison) -"age" = (/obj/machinery/flasher{id = "insaneflash"; pixel_x = 26},/obj/machinery/atmospherics/unary/vent_pump{dir = 7; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/prison) -"agf" = (/obj/machinery/camera/motion{c_tag = "Armory - External"; dir = 4; network = list("SS13")},/turf/space,/area/space) +"agc" = (/obj/machinery/camera{c_tag = "Atmospherics - Starboard Aft"; dir = 1; network = list("SS13")},/obj/structure/lattice,/turf/space,/area/security/armoury) +"agd" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/engine,/area/security/podbay) +"age" = (/obj/structure/table,/obj/item/weapon/storage/backpack/duffel/security{contents = newlist(/obj/item/weapon/scalpel,/obj/item/weapon/hemostat,/obj/item/weapon/retractor,/obj/item/weapon/cautery,/obj/item/weapon/circular_saw,/obj/item/weapon/surgical_drapes,/obj/item/clothing/mask/surgical); desc = "A large duffelbag for holding extra supplies - this one has a material inlay with space for various sharp-looking tools."; name = "duffelbag"; pixel_y = 5},/obj/item/clothing/mask/balaclava,/obj/item/weapon/reagent_containers/spray/cleaner{pixel_x = 5},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -28; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig) +"agf" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig) "agg" = (/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "agh" = (/obj/machinery/door/airlock/shuttle{name = "Escape Pod Airlock"},/obj/docking_port/mobile/pod{dir = 4; id = "pod3"; name = "escape pod 3"},/turf/simulated/shuttle/floor,/area/shuttle/pod_3) "agi" = (/obj/structure/stool/bed/chair{dir = 4},/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/shuttle/floor,/area/shuttle/pod_3) "agj" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Pods"; req_access_txt = "71"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) "agk" = (/obj/structure/grille,/obj/structure/window/full/shuttle,/turf/simulated/shuttle/plating,/area/shuttle/pod_3) "agl" = (/obj/machinery/door/airlock/hatch{req_access_txt = "152"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox) -"agm" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"agn" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/obj/machinery/meter,/obj/machinery/door/window/westleft{base_state = "left"; dir = 1; icon_state = "left"; name = "gas ports"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"ago" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "justice gas pump"},/obj/machinery/door/window/westleft{base_state = "right"; dir = 1; icon_state = "right"; name = "gas ports"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"agp" = (/obj/structure/table,/obj/item/weapon/storage/backpack/duffel/security{contents = newlist(/obj/item/weapon/scalpel,/obj/item/weapon/hemostat,/obj/item/weapon/retractor,/obj/item/weapon/cautery,/obj/item/weapon/circular_saw,/obj/item/weapon/surgical_drapes,/obj/item/clothing/mask/surgical); desc = "A large duffelbag for holding extra supplies - this one has a material inlay with space for various sharp-looking tools."; name = "duffelbag"; pixel_y = 5},/obj/item/clothing/mask/balaclava,/obj/item/weapon/reagent_containers/spray/cleaner{pixel_x = 5},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -28; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"agq" = (/obj/machinery/door_control{id = "prisonereducation"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) +"agm" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig) +"agn" = (/obj/machinery/light_switch{pixel_x = 26; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig) +"ago" = (/obj/machinery/door_control{id = "prisonereducation"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig) +"agp" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/machinery/flasher{id = "PCell 3"; pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"agq" = (/obj/structure/table,/obj/item/weapon/paper,/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) "agr" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "hosspace"; layer = 2.7; name = "privacy shutters"; opacity = 0},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/security/hos) -"ags" = (/obj/structure/table,/obj/item/weapon/paper,/obj/item/weapon/pen,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"agt" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/wall,/area/security/prison) -"agu" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/flasher{id = "PCell 2"; pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"agv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"agw" = (/obj/structure/table,/obj/item/weapon/paper,/obj/item/weapon/pen,/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"agx" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/machinery/flasher{id = "PCell 1"; pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"agy" = (/obj/item/weapon/folder/red,/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitered"},/area/security/prison) -"agz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitered"},/area/security/prison) -"agA" = (/obj/structure/stool/bed/roller,/obj/structure/stool/bed/roller,/obj/machinery/iv_drip,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitered"},/area/security/prison) +"ags" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/flasher{id = "PCell 2"; pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"agt" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/wall,/area/security/permabrig) +"agu" = (/obj/structure/table,/obj/item/weapon/paper,/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"agv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"agw" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/machinery/flasher{id = "PCell 1"; pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"agx" = (/obj/item/weapon/folder/red,/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitered"},/area/security/permabrig) +"agy" = (/obj/structure/stool/bed/roller,/obj/structure/stool/bed/roller,/obj/machinery/iv_drip,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitered"},/area/security/permabrig) +"agz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitered"},/area/security/permabrig) +"agA" = (/turf/simulated/wall/r_wall,/area/security/armoury) "agB" = (/turf/simulated/wall/r_wall,/area/security/warden) "agC" = (/turf/simulated/wall/r_wall,/area/security/hos) -"agD" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"agE" = (/obj/machinery/light_switch{pixel_x = 26; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) +"agD" = (/obj/item/device/radio/intercom/department/security,/turf/simulated/wall/r_wall,/area/security/hos) +"agE" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport) "agF" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "hosprivacy"; layer = 2.7; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/security/hos) "agG" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "agH" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 8},/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/pod_3) @@ -349,28 +349,28 @@ "agK" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox) "agL" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "hosprivacy"; layer = 2.7; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/security/hos) "agM" = (/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access = null; req_access_txt = "10; 13"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) -"agN" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"agO" = (/obj/item/weapon/tank/oxygen{pixel_x = -4; pixel_y = -1},/obj/item/weapon/tank/oxygen{pixel_x = 4; pixel_y = -1},/obj/item/weapon/tank/anesthetic{pixel_x = 2},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/machinery/atmospherics/pipe/manifold/visible,/obj/item/weapon/wrench,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"agP" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/obj/machinery/space_heater,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"agQ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{aiControlDisabled = 1; id_tag = "prisonereducation"; name = "Prisoner Education Chamber"; req_access = null; req_access_txt = "3"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"agR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/security/prison) -"agS" = (/obj/machinery/door/airlock/glass_security{name = "Long-Term Cell 3"; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"agT" = (/obj/machinery/door/airlock/glass_security{name = "Long-Term Cell 2"; req_access_txt = "2"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"agU" = (/obj/machinery/door/airlock/glass_security{name = "Long-Term Cell 1"; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"agV" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Insanity Ward"; req_access_txt = "2"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/prison) +"agN" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig) +"agO" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "justice gas pump"},/obj/machinery/door/window/westleft{base_state = "right"; dir = 1; icon_state = "right"; name = "gas ports"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig) +"agP" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/obj/machinery/meter,/obj/machinery/door/window/westleft{base_state = "left"; dir = 1; icon_state = "left"; name = "gas ports"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig) +"agQ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{aiControlDisabled = 1; id_tag = "prisonereducation"; name = "Prisoner Education Chamber"; req_access = null; req_access_txt = "3"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/permabrig) +"agR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/security/permabrig) +"agS" = (/obj/machinery/door/airlock/glass_security{name = "Long-Term Cell 3"; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"agT" = (/obj/machinery/door/airlock/glass_security{name = "Long-Term Cell 2"; req_access_txt = "2"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"agU" = (/obj/machinery/door/airlock/glass_security{name = "Long-Term Cell 1"; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"agV" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Insanity Ward"; req_access_txt = "2"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/permabrig) "agW" = (/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/plating,/area/maintenance/auxsolarport) "agX" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/auxsolarport) -"agY" = (/obj/structure/closet/secure_closet{name = "contraband locker"; req_access_txt = "3"},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) +"agY" = (/obj/vehicle/secway,/obj/item/key/security,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/armoury) "agZ" = (/obj/structure/table/woodentable,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = 32},/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/machinery/keycard_auth{pixel_x = -26; pixel_y = 23},/obj/machinery/door_control{id = "hosspace"; name = "Space Shutters Control"; pixel_x = -26; pixel_y = 34},/obj/item/device/spacepod_key{id = 100000},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) "aha" = (/obj/machinery/computer/prisoner,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) "ahb" = (/obj/machinery/computer/security,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) "ahc" = (/obj/machinery/computer/secure_data,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) "ahd" = (/obj/structure/table/woodentable,/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Security's Desk"; departmentType = 5; name = "Head of Security RC"; pixel_x = 0; pixel_y = 30},/obj/machinery/computer/med_data/laptop,/obj/item/weapon/storage/secure/safe{pixel_x = 36; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) -"ahe" = (/turf/simulated/wall,/area/security/range) -"ahf" = (/obj/machinery/alarm{pixel_y = 28},/obj/structure/rack,/obj/item/weapon/gun/energy/ionrifle,/obj/item/clothing/suit/armor/laserproof,/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) +"ahe" = (/obj/structure/closet/secure_closet{name = "contraband locker"; req_access_txt = "3"},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/armoury) +"ahf" = (/obj/machinery/alarm{pixel_y = 28},/obj/structure/rack,/obj/item/weapon/gun/energy/ionrifle,/obj/item/clothing/suit/armor/laserproof,/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/armoury) "ahg" = (/obj/machinery/door/airlock/external{name = "Escape Pod Three"},/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "ahh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/wall,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) -"ahi" = (/obj/vehicle/secway,/obj/item/key/security,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) +"ahi" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/permabrig) "ahj" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "ahk" = (/obj/effect/spawner/window/reinforced,/obj/effect/landmark{name = "Syndicate Breach Area"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "ahl" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard) @@ -387,29 +387,29 @@ "ahw" = (/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id_tag = "voxshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/shuttle/window{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_mid"; tag = "icon-window5 (EAST)"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox) "ahx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/auxsolarport) "ahy" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) -"ahz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/sign/securearea{desc = "A warning sign which reads 'WARNING: Do Not Enter When Red Light Shows', detailing the penalties that any NanoTrasen employee or silicon will suffer if violating this rule."; name = "WARNING: Do Not Enter When Red Light Shows"; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/prison) -"ahA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/prison) -"ahB" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/prison) -"ahC" = (/obj/machinery/door_control{id = "permacell3"; name = "Cell 3 Lockdown"; pixel_x = -4; pixel_y = 25; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/flasher_button{id = "PCell 3"; pixel_x = 6; pixel_y = 24},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/prison) -"ahD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/obj/machinery/camera{c_tag = "Prison Hallway Port"; network = list("SS13","Prison")},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/prison) -"ahE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/prison) -"ahF" = (/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/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/prison) -"ahG" = (/obj/machinery/door_control{id = "permacell2"; name = "Cell 2 Lockdown"; pixel_x = -4; pixel_y = 25; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/flasher_button{id = "PCell 2"; pixel_x = 6; pixel_y = 24},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/prison) -"ahH" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/prison) -"ahI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/prison) -"ahJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/prison) -"ahK" = (/obj/machinery/door_control{id = "permacell1"; name = "Cell 1 Lockdown"; pixel_x = -4; pixel_y = 25; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/flasher_button{id = "PCell 1"; pixel_x = 6; pixel_y = 24},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/prison) -"ahL" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Prison Wing APC"; pixel_x = 1; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/camera{c_tag = "Prison Hallway Starboard"; dir = 2; network = list("SS13","Prison")},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/prison) -"ahM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/prison) -"ahN" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/sign/pods{pixel_y = 30},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/prison) -"ahO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/flasher_button{id = "insaneflash"; pixel_y = 26},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/prison) -"ahP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/prison) -"ahQ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-16"; layer = 4.1; tag = "icon-plant-16"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'WARNING: Criminally Insane Inmates', describing the possible hazards of those contained within."; name = "WARNING: Criminally Insane Inmates"; pixel_y = 32},/turf/simulated/floor/plasteel,/area/security/prison) -"ahR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/prison) -"ahS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/secure/safe{name = "armory safe A"; pixel_x = 6; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/warden) -"ahT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/warden) -"ahU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/warden) -"ahV" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/secure/safe{name = "armory safe B"; pixel_x = 6; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/warden) +"ahz" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/obj/machinery/space_heater,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/permabrig) +"ahA" = (/obj/item/weapon/tank/oxygen{pixel_x = -4; pixel_y = -1},/obj/item/weapon/tank/oxygen{pixel_x = 4; pixel_y = -1},/obj/item/weapon/tank/anesthetic{pixel_x = 2},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/machinery/atmospherics/pipe/manifold/visible,/obj/item/weapon/wrench,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/permabrig) +"ahB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/permabrig) +"ahC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/permabrig) +"ahD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/sign/securearea{desc = "A warning sign which reads 'WARNING: Do Not Enter When Red Light Shows', detailing the penalties that any NanoTrasen employee or silicon will suffer if violating this rule."; name = "WARNING: Do Not Enter When Red Light Shows"; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/permabrig) +"ahE" = (/obj/machinery/door_control{id = "permacell3"; name = "Cell 3 Lockdown"; pixel_x = -4; pixel_y = 25; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/flasher_button{id = "PCell 3"; pixel_x = 6; pixel_y = 24},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/permabrig) +"ahF" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/permabrig) +"ahG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/permabrig) +"ahH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/obj/machinery/camera{c_tag = "Prison Hallway Port"; network = list("SS13","Prison")},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/permabrig) +"ahI" = (/obj/machinery/door_control{id = "permacell2"; name = "Cell 2 Lockdown"; pixel_x = -4; pixel_y = 25; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/flasher_button{id = "PCell 2"; pixel_x = 6; pixel_y = 24},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/permabrig) +"ahJ" = (/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/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/permabrig) +"ahK" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/permabrig) +"ahL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/permabrig) +"ahM" = (/obj/machinery/door_control{id = "permacell1"; name = "Cell 1 Lockdown"; pixel_x = -4; pixel_y = 25; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/flasher_button{id = "PCell 1"; pixel_x = 6; pixel_y = 24},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/permabrig) +"ahN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/permabrig) +"ahO" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Prison Wing APC"; pixel_x = 1; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/camera{c_tag = "Prison Hallway Starboard"; dir = 2; network = list("SS13","Prison")},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/permabrig) +"ahP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/flasher_button{id = "insaneflash"; pixel_y = 26},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/permabrig) +"ahQ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/pods{pixel_y = 30},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/permabrig) +"ahR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-16"; layer = 4.1; tag = "icon-plant-16"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'WARNING: Criminally Insane Inmates', describing the possible hazards of those contained within."; name = "WARNING: Criminally Insane Inmates"; pixel_y = 32},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/security/permabrig) +"ahS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/permabrig) +"ahT" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/permabrig) +"ahU" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/armoury) +"ahV" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/secure/safe{name = "armory safe A"; pixel_x = 6; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/armoury) "ahW" = (/obj/structure/closet/secure_closet/hos,/obj/machinery/light{dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29; pixel_y = 23},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) "ahX" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 32},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) "ahY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) @@ -430,37 +430,37 @@ "ain" = (/obj/structure/closet/emcloset,/obj/structure/sign/pods{pixel_y = 30},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aio" = (/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aip" = (/obj/machinery/computer/arcade,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) -"aiq" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/prison) +"aiq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/armoury) "air" = (/turf/simulated/floor/plasteel{name = "Holodeck Projector Floor"},/area/holodeck/alphadeck) "ais" = (/obj/item/weapon/storage/toolbox/syndicate,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "ait" = (/obj/item/weapon/skeleton/r_arm,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "aiu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access = null; req_access_txt = "10; 13"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "aiv" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) -"aiw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/prison) -"aix" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/prison) -"aiy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/prison) -"aiz" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/prison) -"aiA" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/prison) -"aiB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/prison) -"aiC" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/prison) -"aiD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/prison) -"aiE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/prison) -"aiF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/prison) -"aiG" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/prison) -"aiH" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/prison) -"aiI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/prison) -"aiJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/prison) -"aiK" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/prison) -"aiL" = (/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/prison) -"aiM" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "applebush"; layer = 4.1; tag = "icon-applebush"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel,/area/security/prison) -"aiN" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/prison) -"aiO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/warden) -"aiP" = (/obj/structure/rack,/obj/item/weapon/gun/energy/gun/advtaser{pixel_x = -3; pixel_y = 3},/obj/item/weapon/gun/energy/gun/advtaser,/obj/item/weapon/gun/energy/gun/advtaser{pixel_x = 3; pixel_y = -3},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/security/warden) -"aiQ" = (/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = 29},/obj/machinery/deployable/barrier,/obj/machinery/deployable/barrier,/obj/machinery/deployable/barrier,/obj/machinery/deployable/barrier,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) -"aiR" = (/obj/structure/rack,/obj/item/weapon/gun/energy/laser{pixel_x = -3; pixel_y = 3},/obj/item/weapon/gun/energy/laser,/obj/item/weapon/gun/energy/laser{pixel_x = 3; pixel_y = -3},/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/security/warden) -"aiS" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/warden) -"aiT" = (/mob/living/simple_animal/bot/secbot/armsky,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/warden) -"aiU" = (/obj/structure/rack,/obj/item/weapon/shield/riot{pixel_x = -3; pixel_y = 3},/obj/item/weapon/shield/riot,/obj/item/weapon/shield/riot{pixel_x = 3; pixel_y = -3},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/warden) +"aiw" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/secure/safe{name = "armory safe B"; pixel_x = 6; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/armoury) +"aix" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "applebush"; layer = 4.1; tag = "icon-applebush"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel,/area/security/permabrig) +"aiy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/permabrig) +"aiz" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/permabrig) +"aiA" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/permabrig) +"aiB" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/permabrig) +"aiC" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/permabrig) +"aiD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/permabrig) +"aiE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/permabrig) +"aiF" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/permabrig) +"aiG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/permabrig) +"aiH" = (/obj/machinery/light,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/permabrig) +"aiI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/permabrig) +"aiJ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/permabrig) +"aiK" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/permabrig) +"aiL" = (/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = 29},/obj/machinery/deployable/barrier,/obj/machinery/deployable/barrier,/obj/machinery/deployable/barrier,/obj/machinery/deployable/barrier,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/armoury) +"aiM" = (/obj/structure/rack,/obj/item/weapon/gun/energy/gun/advtaser{pixel_x = -3; pixel_y = 3},/obj/item/weapon/gun/energy/gun/advtaser,/obj/item/weapon/gun/energy/gun/advtaser{pixel_x = 3; pixel_y = -3},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/security/armoury) +"aiN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/armoury) +"aiO" = (/obj/structure/rack,/obj/item/weapon/gun/energy/laser{pixel_x = -3; pixel_y = 3},/obj/item/weapon/gun/energy/laser,/obj/item/weapon/gun/energy/laser{pixel_x = 3; pixel_y = -3},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/security/armoury) +"aiP" = (/mob/living/simple_animal/bot/secbot/armsky,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/armoury) +"aiQ" = (/obj/structure/rack,/obj/item/weapon/shield/riot{pixel_x = -3; pixel_y = 3},/obj/item/weapon/shield/riot,/obj/item/weapon/shield/riot{pixel_x = 3; pixel_y = -3},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/armoury) +"aiR" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/device/taperecorder{pixel_x = -4; pixel_y = 0},/obj/item/device/radio/off{pixel_x = 0; pixel_y = 3},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) +"aiS" = (/obj/structure/table,/obj/item/weapon/folder/red{pixel_x = 3},/obj/item/weapon/folder/white{pixel_x = -4; pixel_y = 2},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/permabrig) +"aiT" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags{pixel_x = 4; pixel_y = 2},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/item/weapon/storage/box/prisoner,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/permabrig) +"aiU" = (/obj/structure/rack,/obj/item/weapon/restraints/handcuffs,/obj/item/device/flash,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/permabrig) "aiV" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/secure/briefcase{pixel_x = -2},/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/cartridge/detective,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) "aiW" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) "aiX" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/carpet,/area/security/hos) @@ -469,9 +469,9 @@ "aja" = (/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/plasteel{icon_state = "dark"},/area/security/hos) "ajb" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "ajc" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "hosprivacy"; layer = 2.7; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/security/hos) -"ajd" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/security/range) -"aje" = (/obj/structure/target_stake,/obj/item/target/syndicate,/turf/simulated/floor/plasteel,/area/security/range) -"ajf" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/security/range) +"ajd" = (/obj/structure/closet/secure_closet/brig{anchored = 1},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/permabrig) +"aje" = (/obj/structure/closet/secure_closet/brig{anchored = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/permabrig) +"ajf" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "1"},/turf/simulated/floor/plasteel,/area/security/permabrig) "ajg" = (/turf/simulated/wall,/area/maintenance/fore) "ajh" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/door_control{id = "FitnessShower"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; specialfunctions = 4},/obj/structure/mirror{pixel_x = -28},/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aji" = (/obj/machinery/door/airlock{id_tag = "FitnessShower"; name = "Fitness Room Shower"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) @@ -497,34 +497,34 @@ "ajC" = (/obj/machinery/power/solar_control{id = "foreport"; name = "Fore Port Solar Control"; track = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "ajD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/auxsolarport) "ajE" = (/obj/machinery/power/apc{dir = 8; name = "Fore Port Solar APC"; pixel_x = -25; pixel_y = 3},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) -"ajF" = (/obj/structure/table,/obj/item/weapon/folder/red{pixel_x = 3},/obj/item/weapon/folder/white{pixel_x = -4; pixel_y = 2},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/prison) -"ajG" = (/obj/structure/rack,/obj/item/weapon/restraints/handcuffs,/obj/item/device/flash,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/prison) -"ajH" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags{pixel_x = 4; pixel_y = 2},/obj/item/weapon/pen,/obj/item/weapon/storage/box/prisoner,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/prison) -"ajI" = (/obj/structure/closet/secure_closet/brig{anchored = 1},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/prison) -"ajJ" = (/obj/structure/closet/secure_closet/brig{anchored = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/prison) -"ajK" = (/obj/structure/sign/securearea,/turf/simulated/wall,/area/security/prison) -"ajL" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "1"},/turf/simulated/floor/plasteel,/area/security/prison) -"ajM" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/security/range) -"ajN" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "1"},/turf/simulated/floor/plasteel,/area/security/prison) -"ajO" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'WARNING: Dangerous Inmates'."; name = "\improper WARNING: Dangerous Inmates"},/turf/simulated/wall,/area/security/prison) -"ajP" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/prison) -"ajQ" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/prison) -"ajR" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/security/range) -"ajS" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/security/prison) -"ajT" = (/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/obj/structure/rack,/obj/item/weapon/storage/fancy,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/security/warden) -"ajU" = (/obj/structure/rack,/obj/item/weapon/gun/energy/gun{pixel_x = -3; pixel_y = 3},/obj/item/weapon/gun/energy/gun,/obj/item/weapon/gun/energy/gun{pixel_x = 3; pixel_y = -3},/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/security/warden) -"ajV" = (/obj/structure/rack,/obj/item/clothing/suit/armor/bulletproof,/obj/item/clothing/head/helmet/alt,/obj/item/clothing/suit/armor/bulletproof,/obj/item/clothing/head/helmet/alt,/obj/item/clothing/suit/armor/bulletproof,/obj/item/clothing/head/helmet/alt,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/warden) -"ajW" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) +"ajF" = (/obj/structure/sign/securearea,/turf/simulated/wall,/area/security/permabrig) +"ajG" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "1"},/turf/simulated/floor/plasteel,/area/security/permabrig) +"ajH" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/security/permabrig) +"ajI" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'WARNING: Dangerous Inmates'."; name = "\improper WARNING: Dangerous Inmates"},/turf/simulated/wall,/area/security/permabrig) +"ajJ" = (/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/obj/structure/rack,/obj/item/weapon/storage/fancy,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/security/armoury) +"ajK" = (/obj/structure/rack,/obj/item/weapon/storage/box/rubbershot,/obj/item/weapon/storage/box/rubbershot,/obj/item/weapon/storage/box/rubbershot,/obj/item/weapon/storage/box/rubbershot,/obj/item/weapon/gun/projectile/shotgun/riot{pixel_x = -3; pixel_y = 3},/obj/item/weapon/gun/projectile/shotgun/riot{pixel_x = 2; pixel_y = -1},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/security/armoury) +"ajL" = (/obj/structure/rack,/obj/item/weapon/gun/energy/gun{pixel_x = -3; pixel_y = 3},/obj/item/weapon/gun/energy/gun,/obj/item/weapon/gun/energy/gun{pixel_x = 3; pixel_y = -3},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/security/armoury) +"ajM" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/armoury) +"ajN" = (/obj/structure/rack,/obj/item/clothing/suit/armor/bulletproof,/obj/item/clothing/head/helmet/alt,/obj/item/clothing/suit/armor/bulletproof,/obj/item/clothing/head/helmet/alt,/obj/item/clothing/suit/armor/bulletproof,/obj/item/clothing/head/helmet/alt,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/armoury) +"ajO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/stool/bed/dogbed,/turf/simulated/floor/carpet,/area/security/hos) +"ajP" = (/obj/structure/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/hardsuit/security,/obj/item/clothing/mask/gas/sechailer,/obj/item/clothing/head/helmet/space/hardsuit/security,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/security/permabrig) +"ajQ" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/structure/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/hardsuit/security,/obj/item/clothing/mask/gas/sechailer,/obj/item/clothing/head/helmet/space/hardsuit/security,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 4},/area/security/permabrig) +"ajR" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/permabrig) +"ajS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/security/permabrig) +"ajT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/security/permabrig) +"ajU" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/security/permabrig) +"ajV" = (/turf/simulated/wall,/area/security/armoury) +"ajW" = (/obj/structure/rack,/obj/item/weapon/storage/box/teargas,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/security/armoury) "ajX" = (/obj/structure/table/woodentable,/obj/machinery/recharger,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) "ajY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) -"ajZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/carpet,/area/security/hos) +"ajZ" = (/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/armoury) "aka" = (/obj/machinery/hologram/holopad,/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark/start{name = "Head of Security"},/turf/simulated/floor/carpet,/area/security/hos) "akb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/security/hos) -"akc" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/device/taperecorder{pixel_x = -4; pixel_y = 0},/obj/item/device/radio/off{pixel_x = 0; pixel_y = 3},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) -"akd" = (/turf/simulated/floor/plasteel,/area/security/range) +"akc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{tag = "icon-vault (SOUTHEAST)"; icon_state = "vault"; dir = 6},/area/security/armoury) +"akd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/armoury) "ake" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/fore) "akf" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/fore) -"akg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"akg" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Armory APC"; pixel_x = 1; pixel_y = -24},/obj/machinery/light,/obj/machinery/camera/motion{c_tag = "Armory - Internal"; dir = 1; network = list("SS13")},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/armoury) "akh" = (/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aki" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "akj" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) @@ -538,39 +538,39 @@ "akr" = (/obj/structure/rack,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/suit/space/vox/medic,/obj/item/clothing/head/helmet/space/vox/medic,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "aks" = (/obj/structure/rack,/obj/item/weapon/pneumatic_cannon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/tank/nitrogen,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "akt" = (/turf/simulated/wall,/area/maintenance/disposal) -"aku" = (/obj/structure/rack,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/weapon/storage/box/rubbershot,/obj/item/weapon/storage/box/rubbershot,/obj/item/weapon/storage/box/rubbershot,/obj/item/weapon/storage/box/rubbershot,/obj/item/weapon/gun/projectile/shotgun/riot{pixel_x = -3; pixel_y = 3},/obj/item/weapon/gun/projectile/shotgun/riot{pixel_x = 2; pixel_y = -1},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/security/warden) +"aku" = (/obj/structure/rack,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/head/helmet/riot,/obj/item/clothing/head/helmet/riot,/obj/item/clothing/head/helmet/riot,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/armoury) "akv" = (/obj/structure/stool{pixel_y = 8},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "akw" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "akx" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/terminal,/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "aky" = (/turf/simulated/wall/r_wall,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "akz" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "hosprivacy"; layer = 2.7; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/security/hos) -"akA" = (/obj/structure/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/hardsuit/security,/obj/item/clothing/mask/gas/sechailer,/obj/item/clothing/head/helmet/space/hardsuit/security,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/security/brig) -"akB" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/brig) -"akC" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/structure/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/hardsuit/security,/obj/item/clothing/mask/gas/sechailer,/obj/item/clothing/head/helmet/space/hardsuit/security,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 4},/area/security/brig) +"akA" = (/turf/simulated/floor/plasteel{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/security/armoury) +"akB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/mob/living/simple_animal/hostile/retaliate/araneus,/turf/simulated/floor/carpet,/area/security/hos) +"akC" = (/obj/structure/table/reinforced,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/item/clothing/head/beret/sec,/obj/item/clothing/suit/jacket/pilot,/obj/machinery/alarm{pixel_y = 24},/obj/machinery/atmospherics/unary/vent_scrubber,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) "akD" = (/turf/simulated/wall,/area/security/brig) -"akE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/security/brig) -"akF" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/security/brig) -"akG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/security/brig) -"akH" = (/turf/simulated/wall,/area/security/warden) +"akE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/permabrig) +"akF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light/small,/obj/machinery/camera{c_tag = "Security - EVA Storage"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/permabrig) +"akG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/permabrig) +"akH" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security E.V.A. Storage"; req_access_txt = "3"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/security/permabrig) "akI" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/disposal) -"akJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{tag = "icon-vault (SOUTHEAST)"; icon_state = "vault"; dir = 6},/area/security/warden) -"akK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) -"akL" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Armory APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/light,/obj/machinery/camera/motion{c_tag = "Armory - Internal"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) -"akM" = (/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) -"akN" = (/turf/simulated/floor/plasteel{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/security/warden) -"akO" = (/obj/structure/rack,/obj/item/weapon/storage/box/teargas,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/security/warden) +"akJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "Prison Gate"; name = "Prison Wing Lockdown"; pixel_x = 26; pixel_y = 0; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/permabrig) +"akK" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/permabrig) +"akL" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/armoury) +"akM" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Armory"; req_access = null; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/security/armoury) +"akN" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "armoryshutter"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/armoury) +"akO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 28},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) "akP" = (/obj/machinery/disposal,/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 0},/obj/machinery/light_switch{pixel_x = -24; pixel_y = -20},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching certain areas."; dir = 1; name = "Head of Security's Monitor"; network = list("Prison","MiniSat","tcomm"); pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/hos) "akQ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/hos) -"akR" = (/obj/structure/rack,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/head/helmet/riot,/obj/item/clothing/head/helmet/riot,/obj/item/clothing/head/helmet/riot,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) +"akR" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/permabrig) "akS" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/security/hos) -"akT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/security/hos) +"akT" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "1"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/permabrig) "akU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/hos) "akV" = (/obj/machinery/photocopier,/obj/machinery/power/apc{dir = 4; name = "Head of Security's Office APC"; pixel_x = 24},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door_control{id = "hosprivacy"; name = "Privacy Shutters Control"; pixel_x = 26; pixel_y = -26},/obj/machinery/camera{c_tag = "Head of Security's Office"; dir = 8; network = list("SS13")},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/hos) -"akW" = (/obj/item/clothing/head/festive,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/fore) -"akX" = (/obj/item/weapon/cigbutt,/turf/simulated/floor/plating,/area/maintenance/fore) +"akW" = (/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/obj/machinery/light/small{dir = 1},/obj/machinery/flasher/portable,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/armoury) +"akX" = (/obj/structure/closet/bombcloset,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/armoury) "akY" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "hosprivacy"; layer = 2.7; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/security/hos) -"akZ" = (/obj/structure/table,/obj/item/weapon/contraband/poster,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fore) -"ala" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/table,/obj/item/weapon/stock_parts/manipulator,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fore) +"akZ" = (/obj/machinery/flasher/portable,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/armoury) +"ala" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/security/armoury) "alb" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "alc" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/eastright{base_state = "right"; dir = 8; icon_state = "right"; name = "Fitness Ring"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "ald" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) @@ -595,32 +595,32 @@ "alw" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes,/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "alx" = (/obj/structure/table,/obj/item/stack/medical/ointment{pixel_x = 3; pixel_y = -2},/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/weapon/reagent_containers/syringe/epinephrine,/obj/item/weapon/storage/secure/safe{pixel_x = 6; pixel_y = 28},/obj/item/weapon/restraints/handcuffs/cable/pink,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aly" = (/obj/item/weapon/storage/secure/safe{pixel_x = 6; pixel_y = 28},/obj/item/weapon/kitchen/rollingpin,/obj/structure/closet/crate,/obj/item/clothing/suit/xenos,/obj/item/clothing/suit/monkeysuit,/obj/item/clothing/head/xenos,/obj/item/clothing/mask/gas/monkeymask,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"alz" = (/obj/item/stack/sheet/cardboard,/obj/machinery/light_construct/small{dir = 1},/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/watertank,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"alz" = (/obj/item/stack/sheet/cardboard,/obj/machinery/light_construct/small{dir = 1},/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/watertank,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/poster/random_contraband,/obj/item/weapon/poster/random_contraband,/obj/item/weapon/poster/random_contraband,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "alA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/security/hos) -"alB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/brig) -"alC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light/small,/obj/machinery/camera{c_tag = "Security - EVA Storage"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/brig) -"alD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security E.V.A. Storage"; req_access_txt = "3"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/security/brig) -"alE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/brig) +"alB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/main) +"alC" = (/obj/structure/closet/secure_closet/security,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/main) +"alD" = (/obj/structure/closet/secure_closet/security,/obj/machinery/camera{c_tag = "Atmospherics - Control Room"; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/main) +"alE" = (/obj/structure/closet/secure_closet/security,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/main) "alF" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/brig) -"alG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "Prison Gate"; name = "Prison Wing Lockdown"; pixel_x = 26; pixel_y = 0; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/brig) -"alH" = (/obj/structure/closet{name = "Evidence Closet 1"},/obj/item/weapon/storage/backpack{name = "Evidence Bag 1"},/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/security/warden) -"alI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/light/small{dir = 1},/obj/effect/landmark{name = "blobstart"},/obj/machinery/camera{c_tag = "Evidence Storage"; dir = 2; network = list("SS13")},/obj/item/weapon/storage/secure/safe{name = "evidence safe"; pixel_x = 6; pixel_y = 28},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) -"alJ" = (/obj/structure/closet/secure_closet{anchored = 1; name = "Secure Evidence Closet"; req_access_txt = "0"; req_one_access_txt = "3,4"},/obj/item/weapon/storage/secure/briefcase{name = "Secure Evidence Briefcase"; pixel_x = 3; pixel_y = -3},/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/security/warden) -"alK" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Armory"; req_access = null; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/security/warden) +"alG" = (/obj/structure/closet/secure_closet/security,/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/main) +"alH" = (/obj/structure/closet/wardrobe/red,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/main) +"alI" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/podbay) +"alJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) +"alK" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) "alL" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "alM" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/brig) -"alN" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/security/warden) -"alO" = (/obj/machinery/door/poddoor/shutters{dir = 2},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) +"alN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/brig) +"alO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/brig) "alP" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/main) "alQ" = (/obj/structure/table,/obj/item/clothing/gloves/color/latex,/obj/item/clothing/mask/surgical,/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitered"},/area/security/brig) "alR" = (/obj/machinery/door/firedoor,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/command{name = "Head of Security's Office"; req_access = null; req_access_txt = "58"},/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/carpet,/area/security/hos) -"alS" = (/turf/simulated/wall/r_wall,/area/security/range) -"alT" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/security/range) -"alU" = (/obj/machinery/door/window/westleft{base_state = "right"; dir = 2; icon_state = "right"; name = "Shooting Range"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/security/range) -"alV" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/security/range) +"alS" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/camera{c_tag = "Security - Secure Gear Storage"; dir = 4; network = list("SS13")},/obj/machinery/flasher/portable,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/armoury) +"alT" = (/obj/structure/closet/l3closet/security,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/armoury) +"alU" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/armoury) +"alV" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/main) "alW" = (/turf/simulated/floor/plating,/area/maintenance/fore) -"alX" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/floor/plating,/area/maintenance/fore) -"alY" = (/obj/structure/table,/obj/item/weapon/folder,/obj/item/clothing/suit/storage/hazardvest,/turf/simulated/floor/plating,/area/maintenance/fore) +"alX" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/main) +"alY" = (/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/main) "alZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "ama" = (/obj/structure/table,/obj/item/clothing/under/sl_suit{desc = "Whoever wears this makes the rules."; name = "referee suit"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "amb" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) @@ -644,22 +644,22 @@ "amt" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/gloves/color/yellow,/obj/item/weapon/mop,/obj/item/weapon/bikehorn/rubberducky,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "amu" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "amv" = (/obj/item/weapon/vending_refill/snack,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"amw" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitered"; tag = "icon-whitehall (WEST)"},/area/security/brig) +"amw" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Gear Room"; req_access_txt = "0"; req_one_access_txt = "1;4"},/turf/simulated/floor/plasteel,/area/security/main) "amx" = (/turf/simulated/wall/r_wall,/area/security/brig) -"amy" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/brig) +"amy" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main) "amz" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"amA" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "1"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/brig) -"amB" = (/obj/structure/closet{name = "Evidence Closet 2"},/obj/item/weapon/storage/backpack{name = "Evidence Bag 2"},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/security/warden) -"amC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) -"amD" = (/obj/structure/closet{name = "Evidence Closet 5"},/obj/item/weapon/storage/backpack{name = "Evidence Bag 5"},/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/security/warden) +"amA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/main) +"amB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main) +"amC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main) +"amD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main) "amE" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/security/brig) -"amF" = (/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/obj/machinery/light/small{dir = 1},/obj/machinery/flasher/portable,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/warden) -"amG" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/security/warden) -"amH" = (/obj/structure/closet/bombcloset,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/warden) -"amI" = (/obj/machinery/alarm{pixel_y = 28},/obj/machinery/flasher/portable,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/warden) -"amJ" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/obj/structure/closet/secure_closet/security,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) +"amF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main) +"amG" = (/obj/structure/cable/yellow{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; level = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main) +"amH" = (/obj/machinery/light{dir = 1},/obj/machinery/alarm{pixel_y = 28},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main) +"amI" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Pods"; req_access_txt = "71"},/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/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) +"amJ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{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; level = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/main) "amK" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/warden) -"amL" = (/obj/structure/closet/secure_closet/security,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) +"amL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) "amM" = (/obj/machinery/computer/secure_data,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/main) "amN" = (/obj/machinery/computer/security,/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/main) "amO" = (/turf/simulated/wall,/area/security/main) @@ -669,13 +669,13 @@ "amS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/closet/secure_closet/security,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/main) "amT" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/closet/secure_closet/security,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/main) "amU" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/main) -"amV" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/space,/area/space) -"amW" = (/obj/structure/table,/obj/machinery/light/small{dir = 8},/obj/machinery/magnetic_controller{autolink = 1; pixel_y = 3},/obj/item/clothing/ears/earmuffs,/obj/item/clothing/glasses/sunglasses{pixel_x = 3; pixel_y = 3},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/security/range) -"amX" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel,/area/security/range) -"amY" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/machinery/light/small{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/security/range) -"amZ" = (/obj/structure/closet,/obj/item/clothing/gloves/color/fyellow,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/fore) -"ana" = (/obj/item/weapon/beach_ball{icon = 'icons/obj/basketball.dmi'; icon_state = "basketball"; item_state = "basketball"; name = "basket ball"},/turf/simulated/floor/plating,/area/maintenance/fore) -"anb" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"amV" = (/obj/structure/table/reinforced,/obj/item/device/spacepod_key{id = 100000},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) +"amW" = (/obj/machinery/light_switch{name = "light switch "; dir = 2; pixel_x = 0; pixel_y = -22},/obj/structure/table/reinforced,/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) +"amX" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) +"amY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/brig) +"amZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/security/armoury) +"ana" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Evidence Storage"; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/armoury) +"anb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/security/armoury) "anc" = (/obj/structure/stool{pixel_y = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "and" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/weapon/storage/firstaid/brute,/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "ane" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) @@ -705,51 +705,51 @@ "anC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "anD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "anE" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"anF" = (/obj/structure/closet/secure_closet/security,/obj/machinery/alarm{pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) +"anF" = (/obj/machinery/door/airlock/glass_security{name = "Secure Gear Storage"; req_access_txt = "3"},/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/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/security/armoury) "anG" = (/obj/item/weapon/vending_refill/cola,/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "anH" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/power/apc{dir = 1; name = "Fore Maintenance APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/fore) "anI" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/accessory/red{pixel_x = -5; pixel_y = 3},/obj/item/clothing/accessory/horrible,/obj/item/clothing/accessory/blue{pixel_x = 5; pixel_y = -2},/obj/item/weapon/dice/d8,/obj/item/device/healthanalyzer,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "anJ" = (/obj/structure/table/woodentable,/obj/machinery/photocopier/faxmachine{department = "Head of Security's Office"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) "anK" = (/obj/structure/table,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/obj/machinery/light/small{dir = 1},/obj/item/weapon/folder/red{pixel_x = 3},/obj/item/weapon/folder/white{pixel_x = -4; pixel_y = 2},/obj/item/device/healthanalyzer,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitered"},/area/security/brig) -"anL" = (/obj/machinery/atmospherics/unary/portables_connector,/turf/simulated/floor/plating,/area/maintenance/fore) -"anM" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitered"},/area/security/brig) -"anN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/brig) -"anO" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/brig) -"anP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/sign/pods{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/brig) -"anQ" = (/obj/structure/closet{name = "Evidence Closet 3"},/obj/item/weapon/storage/backpack{name = "Evidence Bag 3"},/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/security/warden) -"anR" = (/obj/structure/closet{name = "Evidence Closet 4"},/obj/item/weapon/storage/backpack{name = "Evidence Bag 4"},/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/security/warden) +"anL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel,/area/security/armoury) +"anM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/main) +"anN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/main) +"anO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/main) +"anP" = (/obj/structure/rack,/obj/item/device/taperecorder{pixel_x = 4; pixel_y = 0},/obj/item/device/flashlight/seclite,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/main) +"anQ" = (/obj/structure/table,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/restraints/handcuffs,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/machinery/firealarm{dir = 4; pixel_x = 28},/obj/item/device/taperecorder{pixel_x = -3; pixel_y = 2},/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/main) +"anR" = (/obj/machinery/vending/security,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/main) "anS" = (/obj/machinery/alarm{pixel_y = 28},/obj/structure/table,/obj/machinery/computer/med_data/laptop,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitered"},/area/security/brig) -"anT" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/camera{c_tag = "Security - Secure Gear Storage"; dir = 4; network = list("SS13")},/obj/machinery/flasher/portable,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/warden) -"anU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/security/warden) -"anV" = (/obj/structure/closet/l3closet/security,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/warden) -"anW" = (/obj/machinery/flasher/portable,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/warden) -"anX" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/closet/secure_closet/security,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"anY" = (/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"anZ" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/warden) -"aoa" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/security/warden) -"aob" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/main) -"aoc" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/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/plasteel{icon_state = "red"; dir = 1},/area/security/main) +"anT" = (/obj/machinery/newscaster/security_unit{pixel_x = -32; pixel_y = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/main) +"anU" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/weapon/pen,/turf/simulated/floor/plasteel,/area/security/main) +"anV" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/main) +"anW" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main) +"anX" = (/obj/structure/rack,/obj/item/weapon/storage/box/chemimp{pixel_x = 4; pixel_y = 3},/obj/item/weapon/storage/box/trackimp,/obj/item/weapon/storage/lockbox/mindshield,/obj/item/weapon/reagent_containers/glass/bottle/morphine,/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/armoury) +"anY" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -4; pixel_y = 4},/obj/item/weapon/storage/toolbox/emergency{pixel_x = 2; pixel_y = -3},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/armoury) +"anZ" = (/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/armoury) +"aoa" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/armoury) +"aob" = (/obj/structure/rack,/obj/item/device/lock_buster,/obj/item/weapon/storage/box/flashbangs{pixel_x = -2; pixel_y = -2},/obj/item/weapon/storage/box/handcuffs,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/armoury) +"aoc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Gear Room"; req_access_txt = "0"; req_one_access_txt = "1;4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/main) "aod" = (/obj/machinery/light{dir = 1},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main) "aoe" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main) -"aof" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main) -"aog" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main) -"aoh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main) -"aoi" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main) -"aoj" = (/obj/machinery/light{dir = 1},/obj/machinery/alarm{pixel_y = 28},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main) -"aok" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main) +"aof" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/security/main) +"aog" = (/obj/machinery/camera{c_tag = "Security - Office - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/main) +"aoh" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/main) +"aoi" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/weapon/pen,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/security/main) +"aoj" = (/turf/simulated/floor/plasteel,/area/shuttle/gamma/station) +"aok" = (/turf/simulated/wall/r_wall,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aol" = (/obj/effect/decal/warning_stripes/north,/obj/machinery/light{dir = 1},/turf/simulated/floor/engine,/area/security/podbay) "aom" = (/obj/machinery/door/poddoor/multi_tile/four_tile_ver{id_tag = "secpodbay"},/obj/structure/spacepoddoor,/turf/simulated/floor/engine,/area/security/podbay) -"aon" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/closet/secure_closet/security,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"aoo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plasteel,/area/security/range) -"aop" = (/obj/structure/rack{pixel_y = 2},/obj/item/weapon/gun/energy/laser/practice{pixel_x = 2; pixel_y = -2},/obj/item/weapon/gun/energy/laser/practice{pixel_x = -3; pixel_y = 3},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Firing Range"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/security/range) -"aoq" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/fore) +"aon" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Evidence Storage"; req_access_txt = "3"},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/armoury) +"aoo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/security/brig) +"aop" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/security/brig) +"aoq" = (/turf/simulated/wall,/area/security/evidence) "aor" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/camera{c_tag = "Brig - Infirmary"; dir = 1; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/closet/secure_closet/brigdoc,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitered"},/area/security/brig) -"aos" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/fore) -"aot" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) +"aos" = (/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) +"aot" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/evidence) "aou" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/gloves/color/fyellow,/obj/effect/spawner/lootdrop/maintenance,/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor/plating,/area/maintenance/starboard) -"aov" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/sleeper{name = "Sleepers"}) -"aow" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) -"aox" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"aov" = (/obj/structure/closet{name = "Evidence Closet"},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/evidence) +"aow" = (/obj/structure/closet{name = "Evidence Closet"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/evidence) +"aox" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/main) "aoy" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aoz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aoA" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) @@ -759,11 +759,11 @@ "aoE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera{c_tag = "Holodeck"; dir = 1},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/obj/machinery/light/small,/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aoF" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aoG" = (/turf/simulated/wall,/area/maintenance/starboard) -"aoH" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/security/range) +"aoH" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/security/main) "aoI" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/gravitygenerator) "aoJ" = (/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/engine/gravitygenerator) "aoK" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/gravitygenerator) -"aoL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/security/range) +"aoL" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/item/stack/packageWrap,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/security/main) "aoM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access = null; req_access_txt = "10; 13"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aoN" = (/turf/simulated/floor/engine,/area/engine/mechanic_workshop) "aoO" = (/obj/item/weapon/broken_bottle,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) @@ -786,41 +786,41 @@ "apf" = (/turf/simulated/wall,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "apg" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aph" = (/obj/machinery/light_construct/small{dir = 4},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/secure/briefcase,/obj/item/weapon/disk/data,/obj/item/weapon/grenade/flashbang,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"api" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/maintenance/fore) +"api" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/main) "apj" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/brig) -"apk" = (/obj/machinery/door/window/westleft{base_state = "left"; dir = 4; icon_state = "left"; name = "Infirmary"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitered"; tag = "icon-whitehall (WEST)"},/area/security/brig) -"apl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/brig) -"apm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel,/area/security/brig) +"apk" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"apl" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitered"},/area/security/brig) +"apm" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/security/brig) "apn" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) -"apo" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Evidence Storage"; req_access = null; req_access_txt = "0"; req_one_access_txt = "1;4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) -"app" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) -"apq" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) -"apr" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Evidence Storage"; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) -"aps" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/security/warden) -"apt" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/security/warden) -"apu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/security/warden) -"apv" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Secure Gear Storage"; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/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/plasteel{icon_state = "delivery"},/area/security/warden) -"apw" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"apx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"apy" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/door/airlock/glass_security{name = "Gear Room"; req_access_txt = "0"; req_one_access_txt = "1;4"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/security/warden) -"apz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/main) +"apo" = (/obj/structure/closet{name = "Evidence Closet"},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/security/warden) +"app" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) +"apq" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/security/brig) +"apr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/security/brig) +"aps" = (/obj/item/weapon/storage/fancy/donut_box,/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/security/brig) +"apt" = (/obj/structure/extinguisher_cabinet{pixel_x = 30; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) +"apu" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/evidence) +"apv" = (/obj/structure/table,/obj/item/weapon/storage/box/evidence,/obj/item/weapon/storage/box/evidence,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/evidence) +"apw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/stool/bed/chair{dir = 4},/obj/effect/landmark/start{name = "Security Officer"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/main) +"apx" = (/obj/structure/reagent_dispensers/peppertank{pixel_x = -32; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/main) +"apy" = (/obj/structure/table,/obj/machinery/syndicatebomb/training,/turf/simulated/floor/plasteel,/area/security/main) +"apz" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/item/weapon/storage/box/donkpockets,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/security/main) "apA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/main) "apB" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main) "apC" = (/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/security/main) "apD" = (/obj/structure/table/reinforced,/obj/machinery/recharger,/turf/simulated/floor/plasteel,/area/security/main) "apE" = (/obj/structure/stool/bed/chair/comfy/black,/obj/effect/landmark/start{name = "Head of Security"},/turf/simulated/floor/plasteel,/area/security/main) -"apF" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 7},/turf/simulated/floor/plasteel,/area/security/main) -"apG" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/security/main) -"apH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main) -"apI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/sortjunction{dir = 4; icon_state = "pipe-j2s"; sortType = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/main) +"apF" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/security/main) +"apG" = (/obj/machinery/camera{c_tag = "Security - Office - Starboard"; dir = 8; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/main) +"apH" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"apI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "apJ" = (/obj/effect/decal/warning_stripes/north,/obj/machinery/door_control{desc = "A remote control-switch for the pod doors."; id = "secpodbay"; name = "Pod Door Control"; pixel_x = 0; pixel_y = 24; req_access_txt = "71"},/turf/simulated/floor/engine,/area/security/podbay) "apK" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/engine,/area/security/podbay) -"apL" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/security/range) -"apM" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/security/range) -"apN" = (/obj/item/target,/obj/item/target,/obj/item/target/alien,/obj/item/target/alien,/obj/item/target/alien,/obj/item/target/syndicate,/obj/item/target/syndicate,/obj/item/target/syndicate,/obj/structure/closet/crate/secure{desc = "A secure crate containing various materials for building a customised test-site."; name = "Firing Range Gear Crate"; req_access_txt = "1"},/obj/machinery/power/apc{cell_type = 2500; dir = 4; name = "Shooting Range APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/security/range) +"apL" = (/obj/effect/landmark{name = "JoinLateCryo"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"apM" = (/obj/structure/cable/yellow{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; initialize_directions = 10; level = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"apN" = (/obj/machinery/door/airlock/glass{name = "Cryodorms"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "apO" = (/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) "apP" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fore) -"apQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/maintenance/fore) +"apQ" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitered"; tag = "icon-whitehall (WEST)"},/area/security/brig) "apR" = (/obj/machinery/prize_counter,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "apS" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "apT" = (/obj/structure/window/reinforced,/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Fitness Ring"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) @@ -830,7 +830,7 @@ "apX" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "apY" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "apZ" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) -"aqa" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/reagent_containers/glass/bottle/epinephrine,/obj/item/weapon/reagent_containers/glass/bottle/charcoal,/obj/item/weapon/reagent_containers/syringe,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteredcorner"},/area/security/brig) +"aqa" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/brig) "aqb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aqc" = (/obj/machinery/door/airlock/maintenance{name = "maintenance access"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/starboard) "aqd" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/starboard) @@ -841,7 +841,7 @@ "aqi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/engine/gravitygenerator) "aqj" = (/obj/machinery/camera{c_tag = "Gravity Generator Room"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/gravitygenerator) "aqk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/auxsolarstarboard) -"aql" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/engine,/area/space) +"aql" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitered"; tag = "icon-whitehall (WEST)"},/area/security/brig) "aqm" = (/obj/structure/stool/bed/chair{dir = 4},/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "aqn" = (/obj/item/clothing/head/collectable/xenom,/obj/item/clothing/head/chicken,/obj/item/weapon/aiModule/syndicate,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "aqo" = (/obj/item/stack/spacecash/c50,/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) @@ -853,7 +853,7 @@ "aqu" = (/mob/living/simple_animal/bot/cleanbot{name = "Mopfficer Sweepsky"; on = 0},/turf/simulated/floor/plating,/area/maintenance/fore) "aqv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aqw" = (/obj/structure/closet/crate,/obj/item/bodybag,/obj/item/device/radio,/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/fore) -"aqx" = (/obj/structure/table/reinforced,/obj/machinery/light_construct/small{dir = 8},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/window/reinforced,/obj/item/weapon/contraband/poster/legit,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aqx" = (/obj/structure/table,/obj/item/weapon/storage/box/evidence,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "aqy" = (/obj/structure/table/reinforced,/obj/item/weapon/folder,/obj/item/weapon/folder,/obj/machinery/door/window/westleft{base_state = "right"; dir = 2; icon_state = "right"; name = "windoor"; req_access_txt = "0"},/obj/item/weapon/book/manual/engineering_hacking,/obj/item/device/tape/random,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aqz" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/item/weapon/stock_parts/cell/crap,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aqA" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/item/weapon/firealarm_electronics,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -864,35 +864,35 @@ "aqF" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/brig) "aqG" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/starboard) "aqH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/brig) -"aqI" = (/obj/machinery/door/window/westleft{base_state = "right"; dir = 4; icon_state = "right"; name = "Infirmary"; req_access_txt = "0"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitered"; tag = "icon-whitehall (WEST)"},/area/security/brig) +"aqI" = (/obj/structure/table,/obj/machinery/firealarm{dir = 4; pixel_x = 28},/obj/machinery/recharger,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "aqJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/brig) -"aqK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel,/area/security/brig) -"aqL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) -"aqM" = (/obj/structure/table,/obj/item/weapon/storage/box/evidence,/obj/item/weapon/storage/box/evidence,/obj/item/weapon/storage/box/evidence,/obj/item/weapon/hand_labeler,/turf/simulated/floor/plasteel{tag = "icon-vault (SOUTHEAST)"; icon_state = "vault"; dir = 6},/area/security/warden) -"aqN" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) -"aqO" = (/obj/structure/filingcabinet/security{pixel_x = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 28},/turf/simulated/floor/plasteel{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/security/warden) -"aqP" = (/obj/structure/rack,/obj/item/weapon/storage/box/chemimp{pixel_x = 4; pixel_y = 3},/obj/item/weapon/storage/box/trackimp,/obj/item/weapon/storage/lockbox/mindshield,/obj/item/weapon/reagent_containers/glass/bottle/morphine,/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/warden) -"aqQ" = (/obj/structure/rack,/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/storage/box/flashbangs{pixel_x = -2; pixel_y = -2},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/warden) -"aqR" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/security/warden) +"aqK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) +"aqL" = (/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/security/brig) +"aqM" = (/obj/machinery/hologram/holopad,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/security/brig) +"aqN" = (/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/security/brig) +"aqO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Evidence Storage"; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/evidence) +"aqP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) +"aqQ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/evidence) +"aqR" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/evidence) "aqS" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/pod_3) -"aqT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/stool/bed/roller,/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/brig) -"aqU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"aqV" = (/obj/structure/table,/obj/item/device/taperecorder{pixel_x = 4; pixel_y = 0},/obj/item/device/taperecorder{pixel_x = -3; pixel_y = 2},/obj/item/device/flashlight/seclite,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"aqW" = (/obj/structure/table,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/restraints/handcuffs,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/machinery/firealarm{dir = 4; pixel_x = 28},/obj/machinery/camera{c_tag = "Security - Gear Room"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"aqX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/camera{c_tag = "Security - Office - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/main) +"aqT" = (/obj/structure/closet{name = "Evidence Closet"},/obj/machinery/camera{c_tag = "Security - Gear Room"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/evidence) +"aqU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/security/main) +"aqV" = (/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) +"aqW" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/security/main) +"aqX" = (/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark/start{name = "Security Officer"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) "aqY" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/warden) "aqZ" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/item/device/flash,/turf/simulated/floor/plasteel,/area/security/main) "ara" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/red{pixel_x = 3},/obj/item/weapon/folder/blue{pixel_x = -2; pixel_y = 3},/turf/simulated/floor/plasteel,/area/security/main) "arb" = (/obj/structure/table/reinforced,/obj/item/weapon/paper,/turf/simulated/floor/plasteel,/area/security/main) "arc" = (/obj/structure/table/reinforced,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/plasteel,/area/security/main) -"ard" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/security/main) -"are" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor/plasteel,/area/security/main) -"arf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/stool/bed/chair{dir = 8},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/main) -"arg" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Security Office APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable/yellow,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/main) -"arh" = (/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access_txt = "0"; req_one_access_txt = "1;4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/security/range) -"ari" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/fore) -"arj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/maintenance/fore) -"ark" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light_switch{pixel_x = -26},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"ard" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch/gamma{locked = 1; req_access_txt = "1"; use_power = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/main) +"are" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/main) +"arf" = (/obj/machinery/cryopod/right,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"arg" = (/obj/effect/landmark{name = "JoinLateCryo"},/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"arh" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"ari" = (/obj/structure/stool/bed,/obj/machinery/iv_drip,/obj/item/weapon/bedsheet/medical,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitered"; tag = "icon-whitehall (WEST)"},/area/security/brig) +"arj" = (/obj/structure/stool,/obj/effect/landmark/start{name = "Brig Physician"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/brig) +"ark" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/brig) "arl" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "arm" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "arn" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) @@ -920,46 +920,46 @@ "arJ" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "arK" = (/obj/machinery/space_heater,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "arL" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"arM" = (/obj/machinery/space_heater,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fore) +"arM" = (/obj/machinery/door/window/westleft{base_state = "left"; dir = 4; icon_state = "left"; name = "Infirmary"; req_access_txt = "0"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitered"; tag = "icon-whitehall (WEST)"},/area/security/brig) "arN" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"arO" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; level = 1},/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/fore) +"arO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/sign/pods{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) "arP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/fore) -"arQ" = (/obj/machinery/light{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/recharger/wallcharger{pixel_x = -22},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) +"arQ" = (/obj/structure/table,/obj/item/weapon/storage/box/evidence,/obj/item/weapon/hand_labeler,/obj/machinery/atmospherics/unary/vent_pump{dir = 7; on = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (SOUTHEAST)"; icon_state = "vault"; dir = 6},/area/security/warden) "arR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fore) -"arS" = (/obj/effect/landmark/start{name = "Brig Physician"},/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/brig) +"arS" = (/obj/structure/filingcabinet/security{pixel_x = 4},/turf/simulated/floor/plasteel{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/security/warden) "arT" = (/obj/machinery/power/apc{dir = 8; name = "Fore Starboard Solar APC"; pixel_x = -25; pixel_y = 3},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "arU" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"arV" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{icon_state = "whitered"},/area/security/brig) +"arV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) "arW" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/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,/area/maintenance/fore) -"arX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/brig) -"arY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/security/brig) +"arX" = (/obj/machinery/light/small{dir = 8},/obj/structure/table,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/security/brig) +"arY" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{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/plasteel,/area/security/brig) "arZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/firealarm{dir = 4; pixel_x = 28},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) "asa" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Evidence Storage"; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/security/warden) "asb" = (/obj/machinery/door/poddoor/shutters{dir = 8; id_tag = "qm_mine_warehouse"; name = "Warehouse Shutters"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) -"asc" = (/obj/machinery/door/firedoor,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_security{name = "Secure Gear Storage"; req_access_txt = "3"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/security/warden) +"asc" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/security/brig) "asd" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/warden) -"ase" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"asf" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/closet/secure_closet/security,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) +"ase" = (/obj/machinery/light/small,/obj/structure/table,/obj/item/weapon/hand_labeler,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/evidence) +"asf" = (/obj/structure/closet{name = "Evidence Closet"},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/evidence) "asg" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/engine/gravitygenerator) -"ash" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/main) +"ash" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6; level = 1},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) "asi" = (/obj/structure/table,/obj/item/weapon/restraints/handcuffs,/obj/item/device/radio/off,/turf/simulated/floor/plasteel,/area/security/main) "asj" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/engine/gravitygenerator) "ask" = (/obj/structure/spacepoddoor,/turf/simulated/floor/engine,/area/security/podbay) -"asl" = (/obj/machinery/hologram/holopad,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/security/main) -"asm" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/security/main) -"asn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/security/main) -"aso" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/item/stack/packageWrap,/turf/simulated/floor/plasteel,/area/security/main) +"asl" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/security/main) +"asm" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) +"asn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) +"aso" = (/obj/machinery/light,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) "asp" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/main) -"asq" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Security Delivery"; req_access_txt = "1"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/security/main) -"asr" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 8; location = "Security"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/main) -"ass" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/maintenance/fore) -"ast" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/maintenance/fore) +"asq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) +"asr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) +"ass" = (/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/structure/disposalpipe/sortjunction{dir = 4; icon_state = "pipe-j1s"; sortType = 21; tag = "icon-pipe-j1s (EAST)"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) +"ast" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) "asu" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "1;4;38;12"},/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "asv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) -"asw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) -"asx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) -"asy" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) -"asz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"asw" = (/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/structure/disposalpipe/sortjunction{dir = 4; icon_state = "pipe-j2s"; sortType = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) +"asx" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/security/main) +"asy" = (/obj/structure/cable/yellow{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/plasteel{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"asz" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "asA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "asB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "asC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) @@ -971,13 +971,13 @@ "asI" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/starboard) "asJ" = (/turf/simulated/floor/plating,/area/maintenance/starboard) "asK" = (/obj/structure/table,/obj/item/weapon/tank/emergency_oxygen{pixel_x = -8; pixel_y = 0},/obj/item/weapon/tank/emergency_oxygen{pixel_x = -8; pixel_y = 0},/obj/item/clothing/mask/breath{pixel_x = 4; pixel_y = 0},/obj/item/clothing/mask/breath{pixel_x = 4; pixel_y = 0},/obj/effect/decal/cleanable/cobweb,/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},/turf/simulated/floor/plating,/area/maintenance/starboard) -"asL" = (/obj/structure/table,/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; dir = 1; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = -30},/obj/machinery/computer/crew,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"asM" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/structure/closet/wardrobe/red,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/security/main) +"asL" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/reagent_containers/glass/bottle/epinephrine,/obj/item/weapon/reagent_containers/glass/bottle/charcoal,/obj/item/weapon/reagent_containers/syringe,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitered"; tag = "icon-whitehall (WEST)"},/area/security/brig) +"asM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/brig) "asN" = (/obj/structure/closet,/obj/effect/decal/cleanable/cobweb2,/obj/item/weapon/reagent_containers/food/drinks/cans/beer{desc = "Takes you to a whole new level of thinking."; name = "Meta-Cider"},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/starboard) "asO" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/engine/gravitygenerator) "asP" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/engine/gravitygenerator) "asQ" = (/obj/machinery/door/airlock/glass_command{name = "Gravity Generator Area"; req_access_txt = "19; 61"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/gravitygenerator) -"asR" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/computer/prisoner,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) +"asR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/window/westleft{base_state = "right"; dir = 4; icon_state = "right"; name = "Infirmary"; req_access_txt = "0"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitered"; tag = "icon-whitehall (WEST)"},/area/security/brig) "asS" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/warden) "asT" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 32},/turf/simulated/wall,/area/maintenance/auxsolarstarboard) "asU" = (/obj/machinery/power/solar_control{id = "forestarboard"; name = "Fore Starboard Solar Control"; track = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) @@ -1004,27 +1004,27 @@ "atp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/brig) "atq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/security/brig) "atr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) -"ats" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/photocopier,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"att" = (/obj/machinery/alarm{pixel_y = 28},/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"atu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"atv" = (/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Warden's Office"; dir = 2; network = list("SS13")},/obj/structure/rack,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -4; pixel_y = 4},/obj/item/weapon/storage/toolbox/emergency{pixel_x = 2; pixel_y = -3},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"atw" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"atx" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 29; pixel_y = 22},/obj/machinery/firealarm{dir = 4; pixel_x = 28},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/closet/secure_closet/warden,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"aty" = (/obj/machinery/door/firedoor,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_security{name = "Security Pods"; req_access_txt = "71"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) -"atz" = (/obj/machinery/door/firedoor,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_security{name = "Security Office"; req_access_txt = "0"; req_one_access_txt = "1;4"},/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/security/main) +"ats" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/security/brig) +"att" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/security/warden) +"atu" = (/obj/structure/table,/obj/item/weapon/storage/box/cups,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/security/brig) +"atv" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/security/brig) +"atw" = (/obj/machinery/camera{c_tag = "Security - Gear Room"; dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) +"atx" = (/obj/machinery/door/airlock{name = "Unisex Restroom"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/security/brig) +"aty" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Office"; req_access_txt = "0"; req_one_access_txt = "1;4"},/turf/simulated/floor/plasteel,/area/security/main) +"atz" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_security{name = "Security Office"; req_access_txt = "0"; req_one_access_txt = "1;4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/security/main) "atA" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/starboard) -"atB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/reagent_dispensers/peppertank{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/main) +"atB" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/security/main) "atC" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/storage/fancy/cigarettes,/turf/simulated/floor/plasteel,/area/security/main) "atD" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/restraints/handcuffs,/turf/simulated/floor/plasteel,/area/security/main) "atE" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/storage/secure/briefcase,/turf/simulated/floor/plasteel,/area/security/main) -"atF" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/security/main) +"atF" = (/turf/simulated/wall/r_wall,/area/maintenance/fore) "atG" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/device/flash,/turf/simulated/floor/plasteel,/area/security/main) -"atH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/recharger/wallcharger{pixel_x = -22},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"atI" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/pen,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plasteel,/area/security/main) +"atH" = (/obj/structure/table/reinforced,/obj/machinery/light_construct/small{dir = 8},/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/structure/window/reinforced,/obj/item/weapon/poster/random_official,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"atI" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/structure/morgue,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitered"; tag = "icon-whitehall (WEST)"},/area/security/brig) "atJ" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/wall,/area/security/brig) "atK" = (/turf/simulated/wall/r_wall,/area/security/main) "atL" = (/obj/machinery/door/airlock/glass{name = "space-bridge access"},/obj/machinery/door_control{id = "supplybridge"; name = "Shuttle Bay Space Bridge Control"; pixel_x = 0; pixel_y = 27; req_access_txt = "0"; req_one_access_txt = "0"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"atM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass{name = "Cryodorms"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"atM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/brig) "atN" = (/obj/structure/closet/lasertag/red,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "atO" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/ears/earmuffs,/obj/item/clothing/accessory/red,/obj/item/clothing/head/soft/red,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "atP" = (/obj/structure/rack,/obj/item/clothing/under/color/blue,/obj/item/clothing/ears/earmuffs,/obj/item/clothing/accessory/blue,/obj/item/clothing/head/soft/blue,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) @@ -1071,48 +1071,48 @@ "auE" = (/obj/item/weapon/vending_refill/cigarette,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "auF" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Labor Camp Shuttle Airlock"; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/fore) "auG" = (/obj/structure/closet/crate,/obj/item/clothing/gloves/color/fyellow,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"auH" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/syndicatebomb/training,/turf/simulated/floor/plasteel,/area/security/main) +"auH" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) "auI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/fore) "auJ" = (/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "auK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/quartermaster/miningdock{name = "\improper Mining Office"}) "auL" = (/obj/effect/decal/cleanable/blood,/obj/structure/stool/bed/chair,/obj/item/weapon/restraints/handcuffs,/obj/effect/decal/remains/human,/obj/item/clothing/under/soviet,/turf/simulated/floor/plating,/area/maintenance/fore) "auM" = (/obj/machinery/computer/security{name = "Labor Camp Monitoring"; network = list("Labor")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "auN" = (/obj/structure/table,/obj/item/weapon/storage/box/prisoner,/obj/item/weapon/razor{pixel_x = -6},/obj/item/weapon/paper{desc = ""; info = "Labor Camp Facility Operation Guide

Hello there, proud operator of an NT-Sec Prisoner Rehabilitation Center. A solution to rising crime rates and falling productivity, these facilities are specifically designed for the safe, productive imprisonment of your most dangerous criminals.

To press a long-term prisoner into the service of the station, replace his equipment with prisoners' garb at one of the prison lockers, as per normal operating procedure. Before assigning a prisoner his ID, insert the ID into a prisoner management console and assign the prisoner a quota, based on the severity of his crime.
A single sheet of most materials produces five points for the prisoner, and points can be expected to be produced at a rate of about 100 per minute, though punishments as severe as forced labor should be reserved for serious crimes of sentences not less than five minutes long.
Once you have prepared the prisoner, place him in the secure northern half of the labor shuttle, and send him to the station. Once he meets his quota by feeding sheets to the stacker, he will be allowed to return to the station, and will be able to open the secure door to the prisoner release area.

In the case of dangerous prisoners, surveilance may be needed. To that end, there is a prisoner monitoring room on the mining station, equipped with a remote flasher and a lockdown button. The mine itself is patrolled by a securibot, so the nearby security records console can also be used to secure hostile prisoners on the mine."; name = "Labor Camp Operating Guide"},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) -"auO" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Security - Office - Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/main) -"auP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/computer/secure_data,/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; dir = 1; name = "Prison Monitor"; network = list("Prison"); pixel_x = -30; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) +"auO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/filingcabinet/chestdrawer{pixel_y = 3},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24; shock_proof = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) +"auP" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; dir = 1; name = "Prison Monitor"; network = list("Prison"); pixel_x = 30; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/photocopier,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) "auQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/r_wall,/area/security/warden) "auR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"auS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) +"auS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) "auT" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"auU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"auV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"auW" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Warden"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"auX" = (/obj/structure/table/reinforced,/obj/machinery/door/window/westleft{base_state = "right"; dir = 4; icon_state = "right"; name = "Outer Window"; req_access_txt = "0"},/obj/machinery/door/window/brigdoor{dir = 8; name = "Brig Control Desk"; req_access_txt = "3"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/item/weapon/contraband/poster/legit,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"auY" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"auZ" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) +"auU" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/security/brig) +"auV" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/turf/simulated/floor/plasteel,/area/security/brig) +"auW" = (/obj/structure/reagent_dispensers/water_cooler,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/security/brig) +"auX" = (/obj/structure/table/reinforced,/obj/machinery/door/window/westleft{base_state = "right"; dir = 4; icon_state = "right"; name = "Outer Window"; req_access_txt = "0"},/obj/machinery/door/window/brigdoor{dir = 8; name = "Brig Control Desk"; req_access_txt = "3"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/item/weapon/poster/random_official,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) +"auY" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel,/area/security/brig) +"auZ" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10; initialize_directions = 10; level = 1},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) "ava" = (/obj/spacepod/sec,/turf/simulated/floor/engine,/area/security/podbay) "avb" = (/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 28},/obj/effect/decal/warning_stripes/blue/hollow,/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel,/area/security/podbay) -"avc" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) +"avc" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/brig) "avd" = (/obj/machinery/computer/security,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"ave" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) -"avf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/security/main) +"ave" = (/obj/structure/urinal{pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6; level = 1},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/brig) +"avf" = (/obj/machinery/door/airlock{name = "Unisex Restroom"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/brig) "avg" = (/obj/structure/table,/obj/machinery/computer/guestpass,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"avh" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) -"avi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/security/main) -"avj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/main) +"avh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/brig) +"avi" = (/obj/structure/sign/nosmoking_1{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/brig) +"avj" = (/obj/machinery/light/small{tag = "icon-bulb1 (EAST)"; icon_state = "bulb1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/brig) "avk" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Interrogation Monitoring"; req_access = null; req_access_txt = "0"; req_one_access_txt = "1;4"},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/main) "avl" = (/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/main) "avm" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/main) "avn" = (/obj/item/weapon/phone{desc = "Supposedly a direct line to NanoTrasen Central Command. It's not even plugged in."; pixel_x = -3; pixel_y = 3},/obj/item/weapon/cigbutt/cigarbutt{pixel_x = 5; pixel_y = -1},/obj/structure/table/woodentable,/obj/machinery/firealarm{dir = 4; pixel_x = 28},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/main) "avo" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"avp" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/landmark{name = "JoinLateCryo"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"avp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock{name = "Unisex Restroom"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/brig) "avq" = (/obj/machinery/cryopod,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "avr" = (/turf/simulated/wall,/area/crew_quarters/mrchangs) -"avs" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Recreation Area"; req_access_txt = "0"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep) -"avt" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/crew_quarters/sleep) -"avu" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Recreation Area"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/sleep) +"avs" = (/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/processing) +"avt" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/processing) +"avu" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{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/plasteel{icon_state = "red"; dir = 1},/area/security/processing) "avv" = (/turf/simulated/wall,/area/crew_quarters/sleep) -"avw" = (/obj/structure/closet,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/starboard) +"avw" = (/obj/item/weapon/storage/box/evidence,/obj/structure/disposalpipe/segment,/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/processing) "avx" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/storage/primary) "avy" = (/obj/structure/rack,/obj/item/weapon/extinguisher,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/starboard) "avz" = (/obj/structure/rack,/obj/effect/landmark/costume,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -1141,42 +1141,42 @@ "avW" = (/obj/machinery/door/airlock/maintenance_hatch{name = "Supply Bay Bridge Access"; req_access_txt = "0"; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "avX" = (/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/weapon/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "avY" = (/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"avZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"avZ" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/processing) "awa" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "awb" = (/obj/machinery/conveyor{dir = 8; id = "QMLoad2"; movedir = 8},/obj/structure/plasticflaps,/turf/simulated/floor/plating,/area/quartermaster/storage) "awc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/maintenance_hatch{name = "Supply Bay Bridge Access"; req_access_txt = "0"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"awd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/landmark/start{name = "Warden"},/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) +"awd" = (/turf/simulated/wall/r_wall,/area/security/processing) "awe" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/gravitygenerator) "awf" = (/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j2s"; sortType = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/fore) "awg" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/fore) "awh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/maintenance{name = "Brig Maintenance"; req_access_txt = "0"; req_one_access_txt = "63;12"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fore) "awi" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/machinery/camera{c_tag = "Labor Shuttle Control Desk"; dir = 4},/obj/machinery/computer/shuttle/labor,/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "awj" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/machinery/door/window/westleft{base_state = "right"; dir = 4; icon_state = "right"; name = "Labor Camp Desk"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) -"awk" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"awl" = (/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = -30},/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"awm" = (/obj/structure/disposalpipe/segment,/obj/structure/filingcabinet/chestdrawer{pixel_y = 3},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) +"awk" = (/obj/item/device/flashlight/lamp,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/processing) +"awl" = (/obj/structure/table,/obj/machinery/light/small{dir = 8},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fore) +"awm" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fore) "awn" = (/obj/structure/table,/obj/machinery/door_control{id = "Prison Gate"; name = "Prison Wing Lockdown"; pixel_x = 0; pixel_y = 7; req_access_txt = "2"},/obj/machinery/door_control{id = "Secure Gate"; name = "Cell Window Control"; normaldoorcontrol = 0; pixel_x = -5; pixel_y = -3; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/door_control{id = "briglockdown"; name = "Brig Lockdown Control"; pixel_x = 5; pixel_y = -3; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) "awo" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/wood,/area/crew_quarters/mrchangs) -"awp" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table/reinforced,/obj/item/weapon/paper,/obj/machinery/door/window/brigdoor{dir = 1; name = "Brig Control Desk"; req_access_txt = "3"},/obj/machinery/door/window/westleft{base_state = "right"; dir = 2; icon_state = "right"; name = "Reception Window"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/security/warden) -"awq" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Brig Control"; req_access_txt = "3"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/security/warden) -"awr" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/security/warden) -"aws" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"awt" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"awu" = (/obj/machinery/vending/security,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) +"awp" = (/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fore) +"awq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light_switch{pixel_x = -26},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"awr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/roller,/turf/simulated/floor/plasteel{icon_state = "whitered"},/area/security/brig) +"aws" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/brig) +"awt" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/security/brig) +"awu" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) "awv" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/starboard) "aww" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/engine,/area/security/podbay) "awx" = (/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/engine,/area/security/podbay) -"awy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/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/plasteel{icon_state = "red"},/area/security/main) -"awz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) -"awA" = (/obj/machinery/light,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -32},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) -"awB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) -"awC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) -"awD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) -"awE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) -"awF" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/security/main) +"awy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) +"awz" = (/obj/machinery/recharger/wallcharger{pixel_x = -22},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/brig) +"awA" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) +"awB" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/security/brig) +"awC" = (/obj/machinery/newscaster/security_unit{pixel_x = 32; pixel_y = 1},/obj/structure/toilet{dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/brig) +"awD" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{dir = 4; pixel_x = 0; pixel_y = -28},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/brig) +"awE" = (/obj/structure/mirror{dir = 4; pixel_x = 0; pixel_y = -28},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 12; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/brig) +"awF" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/brig) "awG" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/main) "awH" = (/obj/structure/stool/bed/chair,/obj/machinery/computer/security/telescreen{desc = "Used for watching proceedings in the interrogation room."; dir = 1; layer = 4; name = "interrogation monitor"; network = list("interrogation"); pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/main) -"awI" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/table/woodentable,/obj/item/device/radio/intercom{broadcasting = 0; frequency = 1424; listening = 1; name = "Interrogation Intercom"; pixel_x = 0; pixel_y = -31},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/main) +"awI" = (/obj/structure/toilet{dir = 8},/obj/machinery/newscaster/security_unit{pixel_x = -32; pixel_y = 1},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/brig) "awJ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/highsecurity{name = "Gravity Generator Foyer"; req_access_txt = "10"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/gravitygenerator) "awK" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fore) "awL" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/engine/engineering) @@ -1184,7 +1184,7 @@ "awN" = (/obj/machinery/light/small{dir = 8},/obj/structure/chickenstatue,/turf/simulated/floor/wood,/area/crew_quarters/mrchangs) "awO" = (/obj/machinery/vending/chinese,/turf/simulated/floor/wood,/area/crew_quarters/mrchangs) "awP" = (/obj/structure/chickenstatue,/turf/simulated/floor/wood,/area/crew_quarters/mrchangs) -"awQ" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/security/warden) +"awQ" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/processing) "awR" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep) "awS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) "awT" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep) @@ -1199,11 +1199,11 @@ "axc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/woodentable,/obj/machinery/photocopier/faxmachine/longrange,/turf/simulated/floor/wood,/area/lawoffice) "axd" = (/obj/machinery/door/airlock/engineering{icon_state = "door_closed"; locked = 0; name = "Fore Starboard Solar Access"; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "axe" = (/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) -"axf" = (/obj/structure/rack,/obj/item/device/lock_buster,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/warden) +"axf" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/processing) "axg" = (/obj/machinery/door/airlock/external{req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/starboard) "axh" = (/turf/simulated/wall/r_wall,/area/maintenance/starboard) "axi" = (/obj/structure/grille,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/maintenance/starboard) -"axj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/effect/landmark{name = "JoinLateCryo"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"axj" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/processing) "axk" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "supplybridge"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "axl" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "supplybridge"},/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHWEST)"; icon_state = "warnplate"; dir = 10},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "axm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -1227,21 +1227,21 @@ "axE" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/plating,/area/shuttle/siberia) "axF" = (/turf/space,/turf/simulated/shuttle/wall{dir = 2; icon_state = "swall_f10"; layer = 2},/area/shuttle/siberia) "axG" = (/obj/machinery/computer/prisoner,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) -"axH" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) +"axH" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/processing) "axI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/security/brig) "axJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) "axK" = (/obj/structure/sign/pods,/turf/simulated/wall/r_wall,/area/security/warden) "axL" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/main) -"axM" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/main) -"axN" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/main) -"axO" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/security/main) -"axP" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Gear Room"; req_access_txt = "0"; req_one_access_txt = "1;4"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/security/warden) +"axM" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Security Delivery"; req_access_txt = "1"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/security/processing) +"axN" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/processing) +"axO" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/fore) +"axP" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 8; location = "Security"},/obj/structure/plasticflaps{opacity = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/processing) "axQ" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/fore) -"axR" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_security{name = "Security Office"; req_access_txt = "0"; req_one_access_txt = "1;4"},/turf/simulated/floor/plasteel,/area/security/main) -"axS" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Office"; req_access_txt = "0"; req_one_access_txt = "1;4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/security/main) +"axR" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fore) +"axS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/light{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "axT" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/fore) "axU" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/fore) -"axV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/junction{dir = 4; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/turf/simulated/floor/plasteel,/area/security/brig) +"axV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "axW" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/security/main) "axX" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/door/poddoor{id_tag = "QMLoaddoor"; name = "supply dock loading door"},/turf/simulated/floor/plating,/area/quartermaster/storage) "axY" = (/obj/machinery/cryopod/right,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) @@ -1265,7 +1265,7 @@ "ayq" = (/obj/machinery/door/airlock/highsecurity{name = "Gravity Generator Room"; req_access_txt = "19;23"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/gravitygenerator) "ayr" = (/obj/machinery/camera{c_tag = "Gravity Generator Foyer"},/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; dir = 1; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/engine/gravitygenerator) "ays" = (/obj/structure/closet/secure_closet/security,/obj/item/device/spacepod_equipment/weaponry/laser,/obj/machinery/power/apc{dir = 4; name = "Security Podbay APC"; pixel_x = 25},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) -"ayt" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) +"ayt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/computer/prisoner,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) "ayu" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/locker) "ayv" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "ayw" = (/obj/machinery/atmospherics/unary/vent_pump,/turf/simulated/floor/plasteel,/area/security/podbay) @@ -1291,17 +1291,17 @@ "ayQ" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/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/plasteel{dir = 8; icon_state = "redcorner"},/area/security/brig) "ayR" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/junction,/turf/simulated/floor/plasteel,/area/security/brig) "ayS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) -"ayT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) +"ayT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) "ayU" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) -"ayV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) -"ayW" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Brig - Hallway - Entrance"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) -"ayX" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) -"ayY" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) -"ayZ" = (/obj/machinery/firealarm{pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) -"aza" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) -"azb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) +"ayV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) +"ayW" = (/obj/structure/closet/secure_closet/warden,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) +"ayX" = (/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Warden's Office"; dir = 2; network = list("SS13")},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/machinery/door_control{id = "armoryshutter"; name = "Armory Shutter"; pixel_x = 5; pixel_y = -3; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) +"ayY" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/processing) +"ayZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/security/processing) +"aza" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/processing) +"azb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10; initialize_directions = 10; level = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/processing) "azc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "whitered"},/area/security/brig) -"azd" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) +"azd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/security/processing) "aze" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "azf" = (/obj/structure/table/woodentable,/obj/machinery/alarm{dir = 4; pixel_x = -25; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/mrchangs) "azg" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/wood,/area/crew_quarters/mrchangs) @@ -1321,12 +1321,12 @@ "azu" = (/obj/effect/decal/warning_stripes/yellow/hollow,/obj/machinery/light_switch{name = "light switch "; dir = 2; pixel_x = 0; pixel_y = -22},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel,/area/security/podbay) "azv" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/security/podbay) "azw" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/turf/simulated/floor/plating,/area/security/brig) -"azx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) +"azx" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/processing) "azy" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "azz" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/security/brig) "azA" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/hardsuit/engineering,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/engineering,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/engine/engineering) "azB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"azC" = (/obj/item/weapon/twohanded/required/kirbyplants,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) +"azC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass{name = "Cryodorms"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "azD" = (/obj/structure/spacepoddoor,/obj/machinery/door/poddoor/multi_tile/three_tile_ver{id_tag = "mechpodbay"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) "azE" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) "azF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/maintenance/starboard) @@ -1354,24 +1354,24 @@ "aAb" = (/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/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/security/brig) "aAc" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/turf/simulated/floor/plasteel,/area/security/brig) "aAd" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/security/brig) -"aAe" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/security/brig) +"aAe" = (/obj/machinery/computer/secure_data,/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; dir = 1; name = "Prison Monitor"; network = list("Prison"); pixel_x = -30; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) "aAf" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/hallway/primary/fore) "aAg" = (/obj/effect/spawner/window/reinforced,/turf/simulated/wall,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aAh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/security/brig) +"aAh" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Warden"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) "aAi" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/security/brig) -"aAj" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/junction{dir = 4; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/turf/simulated/floor/plasteel,/area/security/brig) -"aAk" = (/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/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/security/brig) -"aAl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/security/brig) +"aAj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) +"aAk" = (/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/brig) +"aAl" = (/obj/structure/closet/secure_closet/brig{id = "Cell 4"; name = "Cell 4 Locker"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/brig) "aAm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/plasteel,/area/security/brig) -"aAn" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/security/brig) -"aAo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/security/brig) -"aAp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/security/brig) -"aAq" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/security/brig) +"aAn" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/brig) +"aAo" = (/obj/structure/closet/secure_closet/brig{id = "Cell 5"; name = "Cell 5 Locker"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/brig) +"aAp" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24; shock_proof = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/processing) +"aAq" = (/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/processing) "aAr" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel,/area/security/brig) "aAs" = (/turf/simulated/floor/plasteel,/area/security/brig) -"aAt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/brig) -"aAu" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Interrogation"; req_access = null; req_access_txt = "0"; req_one_access_txt = "1;4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) -"aAv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) +"aAt" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{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/plasteel{icon_state = "red"; dir = 10},/area/security/processing) +"aAu" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/security/processing) +"aAv" = (/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/processing) "aAw" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "aAx" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "aAy" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) @@ -1419,14 +1419,14 @@ "aBo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/brig) "aBp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/brig) "aBq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/brig) -"aBr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/power/apc{cell_type = 10000; dir = 2; name = "Brig APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow,/obj/machinery/flasher_button{id = "secentranceflasher"; name = "Brig Entrance Flasher"; pixel_x = -3; pixel_y = -38; req_access_txt = "1"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/brig) -"aBs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/security/brig) +"aBr" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"aBs" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/landmark{name = "JoinLateCryo"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aBt" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/security/brig) "aBu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/security/brig) "aBv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/brig) "aBw" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/brig) "aBx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/flasher_button{id = "holdingflash"; pixel_x = 0; pixel_y = -26; req_access_txt = "1"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/brig) -"aBy" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light,/obj/machinery/camera{c_tag = "Brig - Hallway - Starboard"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/brig) +"aBy" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass{name = "Recreation Area"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep) "aBz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/brig) "aBA" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/brig) "aBB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/security/brig) @@ -1458,7 +1458,7 @@ "aCb" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 4; location = "Engineering"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/maintenance/starboard) "aCc" = (/obj/machinery/door/window/southright{dir = 4; name = "Engineering Deliveries"; req_access_txt = "10"; req_one_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aCd" = (/obj/structure/sign/securearea{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/engine/engineering) -"aCe" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) +"aCe" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass{name = "Recreation Area"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/sleep) "aCf" = (/obj/machinery/light_switch{pixel_x = 23},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/obj/structure/sign/securearea{pixel_y = 32},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/engine/engineering) "aCg" = (/turf/simulated/wall/r_wall,/area/engine/engineering) "aCh" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/engine/engineering) @@ -1466,7 +1466,7 @@ "aCj" = (/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "aCk" = (/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "aCl" = (/obj/structure/grille,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) -"aCm" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/engine/engineering) +"aCm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/sleep) "aCn" = (/obj/structure/closet/crate,/obj/item/stack/sheet/glass{amount = 10},/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/space) "aCo" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/mining) "aCp" = (/obj/structure/table,/turf/simulated/shuttle/floor,/area/shuttle/mining) @@ -1510,9 +1510,9 @@ "aDb" = (/obj/structure/table,/obj/item/stack/packageWrap,/obj/item/weapon/wrench,/obj/machinery/light{dir = 8},/obj/item/weapon/hand_labeler,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aDc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/engineering) "aDd" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fore) -"aDe" = (/obj/structure/disposalpipe/sortjunction{sortType = 4},/obj/effect/landmark/start{name = "Station Engineer"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/engine/engineering) +"aDe" = (/obj/structure/closet,/obj/item/weapon/poster/random_contraband,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/starboard) "aDf" = (/obj/machinery/door/airlock/external{name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating,/area/engine/engineering) -"aDg" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) +"aDg" = (/obj/structure/table,/obj/machinery/computer/crew,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) "aDh" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "aDi" = (/turf/simulated/floor/plating/airless,/area/engine/engineering) "aDj" = (/obj/structure/cable,/obj/machinery/power/emitter{anchored = 1; state = 2},/turf/simulated/floor/plating/airless,/area/engine/engineering) @@ -1535,7 +1535,7 @@ "aDA" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "aDB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "aDC" = (/obj/machinery/camera/emp_proof{c_tag = "Fore Arm - Far"; dir = 8; network = list("Singulo")},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless,/area/engine/engineering) -"aDD" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/engine/engineering) +"aDD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/landmark/start{name = "Warden"},/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) "aDE" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/security/nuke_storage) "aDF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; luminosity = 2},/area/security/nuke_storage) "aDG" = (/obj/machinery/nuclearbomb,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/security/nuke_storage) @@ -1605,7 +1605,7 @@ "aES" = (/obj/structure/disposalpipe/segment,/obj/machinery/door_control{id = "qm_mine_warehouse"; name = "Warehouse Door Control"; pixel_x = -24; pixel_y = 28; req_access_txt = "48"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "aET" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "aEU" = (/obj/structure/closet/crate,/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) -"aEV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/carpet,/area/security/detectives_office) +"aEV" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) "aEW" = (/obj/structure/closet/crate,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "aEX" = (/obj/structure/closet/crate{name = "Gold Crate"},/obj/item/stack/sheet/mineral/gold{pixel_x = -1; pixel_y = 5},/obj/item/stack/sheet/mineral/gold{pixel_y = 2},/obj/item/stack/sheet/mineral/gold{pixel_x = 1; pixel_y = -2},/obj/item/weapon/storage/belt/champion,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/security/nuke_storage) "aEY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; luminosity = 2},/area/security/nuke_storage) @@ -1635,9 +1635,9 @@ "aFw" = (/obj/effect/landmark/start{name = "Detective"},/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/security/detectives_office) "aFx" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/computer/secure_data,/turf/simulated/floor/carpet,/area/security/detectives_office) "aFy" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/fore) -"aFz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) -"aFA" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/engine/engineering) -"aFB" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) +"aFz" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/brig) +"aFA" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/security/brig) +"aFB" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/brig) "aFC" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor/preopen{id_tag = "briglockdown"; name = "brig shutters"},/turf/simulated/floor/plating,/area/security/brig) "aFD" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aFE" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -1657,9 +1657,9 @@ "aFS" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/engine/engineering) "aFT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/engine/engineering) "aFU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/engine/engineering) -"aFV" = (/obj/machinery/door/poddoor/shutters/preopen{id_tag = "Singularity"; name = "radiation shutters"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/item/clothing/glasses/meson,/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/engine/engineering) +"aFV" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/machinery/flasher{id = "Cell 4"; pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/brig) "aFW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) -"aFX" = (/obj/machinery/door/poddoor/shutters/preopen{id_tag = "Singularity"; name = "radiation shutters"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/engine/engineering) +"aFX" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/brig) "aFY" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/engine/engineering) "aFZ" = (/obj/machinery/camera/emp_proof{c_tag = "Fore Arm - Near"; dir = 4; network = list("Singulo")},/turf/space,/area/space) "aGa" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/construction/Storage{name = "Storage Wing"}) @@ -1679,7 +1679,7 @@ "aGo" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 6},/area/security/nuke_storage) "aGp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "vault"},/area/security/nuke_storage) "aGq" = (/obj/machinery/camera/motion{c_tag = "Vault"; dir = 1; network = list("MiniSat")},/obj/machinery/light,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 10},/area/security/nuke_storage) -"aGr" = (/obj/structure/safe,/obj/item/weapon/storage/secure/briefcase{contents = newlist(/obj/item/clothing/suit/armor/vest,/obj/item/weapon/gun/projectile/automatic/pistol,/obj/item/weapon/suppressor,/obj/item/clothing/mask/balaclava,/obj/item/bodybag,/obj/item/weapon/soap/nanotrasen)},/obj/item/weapon/storage/backpack/duffel{contents = newlist(/obj/item/clothing/under/lawyer,/obj/item/clothing/accessory/waistcoat,/obj/item/clothing/shoes/laceup,/obj/item/clothing/gloves/color/black,/obj/item/clothing/glasses/sunglasses,/obj/item/clothing/head/fedora); desc = "A large duffelbag for holding extra things. There is a NanoTrasen logo on the back."; icon_state = "duffel-syndieammo"; item_state = "duffel-syndieammo"},/obj/item/weapon/card/id/silver{access = list(12); assignment = "Reaper"; name = "Thirteen's ID Card (Reaper)"; registered_name = "Thirteen"},/obj/item/weapon/lazarus_injector,/obj/item/weapon/gun/energy/gun/advtaser,/obj/item/weapon/gun/projectile/revolver/russian,/obj/item/ammo_box/a357,/obj/item/clothing/accessory/stethoscope,/obj/item/weapon/book{desc = "An undeniably handy book."; icon_state = "bookknock"; name = "A Simpleton's Guide to Safe-cracking with Stethoscopes"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 4},/area/security/nuke_storage) +"aGr" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/brig) "aGs" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1; layer = 2.9},/turf/simulated/shuttle/plating,/area/shuttle/siberia) "aGt" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "ceprivacy"; layer = 2.7; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/engine/chiefs_office) "aGu" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/construction/Storage{name = "Storage Wing"}) @@ -1692,11 +1692,11 @@ "aGB" = (/obj/machinery/door/airlock/security{name = "Court Cell"; req_access = null; req_access_txt = "63"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "aGC" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/power/apc{dir = 8; name = "Detective APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/item/device/taperecorder{pixel_x = 3; pixel_y = 0},/obj/item/weapon/storage/box/evidence,/obj/item/device/flashlight/seclite,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) "aGD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) -"aGE" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) -"aGF" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/carpet,/area/security/detectives_office) +"aGE" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/obj/machinery/flasher{id = "Cell 5"; pixel_x = 28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/brig) +"aGF" = (/obj/item/weapon/storage/box/evidence,/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/security/processing) "aGG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/security/detectives_office) "aGH" = (/obj/machinery/computer/med_data,/obj/machinery/newscaster{pixel_x = 28},/turf/simulated/floor/carpet,/area/security/detectives_office) -"aGI" = (/obj/machinery/light/small,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) +"aGI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/processing) "aGJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/urinal{pixel_y = 29},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aGK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aGL" = (/obj/machinery/door/airlock{name = "Unisex Showers"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) @@ -1709,7 +1709,7 @@ "aGS" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep) "aGT" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/machinery/door_control{id = "Cabin6"; name = "Dorm Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/effect/decal/cleanable/cobweb,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/carpet,/area/crew_quarters/sleep) "aGU" = (/obj/structure/closet/secure_closet/personal/cabinet,/obj/machinery/alarm{pixel_y = 23},/obj/item/clothing/under/suit_jacket/navy,/turf/simulated/floor/carpet,/area/crew_quarters/sleep) -"aGV" = (/obj/item/clothing/glasses/meson,/obj/structure/closet/crate,/obj/item/weapon/contraband/poster,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/starboard) +"aGV" = (/obj/item/clothing/glasses/meson,/obj/structure/closet/crate,/obj/item/weapon/poster/random_contraband,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/starboard) "aGW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/starboard) "aGX" = (/obj/structure/reagent_dispensers/fueltank,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = -30; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) "aGY" = (/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/engine/engineering) @@ -1719,15 +1719,15 @@ "aHc" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/engine/engineering) "aHd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aHe" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/structure/urinal{pixel_y = 29},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) -"aHf" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (EAST)"},/area/engine/engineering) +"aHf" = (/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/processing) "aHg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) -"aHh" = (/obj/machinery/door/poddoor/shutters/preopen{id_tag = "Singularity"; name = "radiation shutters"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/engine/engineering) +"aHh" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (Captain)"; pixel_x = 28},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/security/processing) "aHi" = (/obj/machinery/power/rad_collector{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/engine/engineering) "aHj" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/construction/Storage{name = "Storage Wing"}) "aHk" = (/turf/simulated/wall,/area/construction) "aHl" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/construction) "aHm" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aHn" = (/obj/structure/closet,/obj/item/weapon/contraband/poster,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aHn" = (/obj/structure/closet,/obj/item/weapon/poster/random_contraband,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aHo" = (/obj/structure/closet/crate,/turf/simulated/shuttle/floor,/area/shuttle/mining) "aHp" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/mining) "aHq" = (/obj/structure/ore_box,/turf/simulated/shuttle/floor,/area/shuttle/mining) @@ -1765,14 +1765,14 @@ "aHW" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) "aHX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aHY" = (/obj/structure/closet/crate/internals,/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) -"aHZ" = (/obj/machinery/door/airlock/maintenance{name = "Detective Maintenance"; req_access_txt = "4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/security/detectives_office) +"aHZ" = (/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/structure/table/woodentable,/obj/item/device/radio/intercom{broadcasting = 0; frequency = 1424; listening = 1; name = "Interrogation Intercom"; pixel_x = 0; pixel_y = -31},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/main) "aIa" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/briefcase{pixel_x = -3; pixel_y = 2},/obj/item/weapon/storage/secure/briefcase{pixel_x = 2; pixel_y = -2},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) "aIb" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "bridge blast"; layer = 2.9; name = "Bridge Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/bridge) "aIc" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 8},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/machinery/door_control{id = "Toilet3"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aId" = (/obj/machinery/door/airlock{id_tag = "Toilet3"; name = "Unit 3"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aIe" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aIf" = (/obj/structure/lattice,/turf/space,/area/engine/engineering) -"aIg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fore) +"aIg" = (/obj/effect/landmark{name = "JoinLateCryo"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aIh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aIi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aIj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) @@ -1794,13 +1794,13 @@ "aIz" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_engineering{name = "Engineering Storage"; req_access_txt = "32"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) "aIA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/engineering) "aIB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) -"aIC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fore) +"aIC" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "aID" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) "aIE" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) "aIF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/engine/engineering) "aIG" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/construction) "aIH" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "bridge blast"; layer = 2.9; name = "Bridge Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/bridge) -"aII" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/fore) +"aII" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/brig) "aIJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aIK" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/mining) "aIL" = (/obj/structure/shuttle/engine/propulsion/burst,/obj/structure/window/reinforced{dir = 1; layer = 2.9},/turf/simulated/shuttle/plating,/area/shuttle/mining) @@ -1813,7 +1813,7 @@ "aIS" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "loadingarea"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "aIT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door_control{id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "50"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "aIU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/stack/sheet/cardboard,/obj/item/stack/rods{amount = 50},/obj/item/weapon/paper,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) -"aIV" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/fore) +"aIV" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/reinforced,/obj/item/weapon/paper,/obj/machinery/door/window/brigdoor{dir = 1; name = "Brig Control Desk"; req_access_txt = "3"},/obj/machinery/door/window/westleft{base_state = "right"; dir = 2; icon_state = "right"; name = "Reception Window"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/security/warden) "aIW" = (/obj/machinery/power/apc{dir = 4; name = "Warehouse APC"; pixel_x = 27; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "aIX" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/construction/Storage{name = "Storage Wing"}) "aIY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/construction/Storage{name = "Storage Wing"}) @@ -1842,7 +1842,7 @@ "aJv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera{c_tag = "Restrooms"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aJw" = (/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aJx" = (/obj/machinery/light/small,/obj/machinery/power/apc{dir = 2; name = "Restrooms APC"; pixel_x = 0; pixel_y = -26},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) -"aJy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fore) +"aJy" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Brig Control"; req_access_txt = "3"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/security/warden) "aJz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aJA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aJB" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Unisex Restrooms"; req_access_txt = "0"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) @@ -1870,9 +1870,9 @@ "aJX" = (/turf/simulated/floor/wood,/area/lawoffice) "aJY" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "bridge blast"; layer = 2.9; name = "Bridge Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/bridge) "aJZ" = (/obj/machinery/door/window/westleft{dir = 4; name = "Bridge Deliveries"; req_access_txt = "19"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "bridge blast"; layer = 2.6; name = "Bridge Blast Doors"; opacity = 0},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/bridge) -"aKa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fore) -"aKb" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen,/obj/machinery/requests_console{department = "Mining"; departmentType = 0; pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{dir = 10; icon_state = "brown"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) -"aKc" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor/plasteel{dir = 2; icon_state = "brown"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) +"aKa" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Gear Room"; req_access_txt = "0"; req_one_access_txt = "1;4"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/security/brig) +"aKb" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/brig) +"aKc" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/brig) "aKd" = (/obj/structure/rack{dir = 1},/obj/item/weapon/pickaxe{pixel_x = 5},/obj/item/weapon/shovel{pixel_x = -5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "brown"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) "aKe" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "brown"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) "aKf" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/plasteel{dir = 6; icon_state = "brown"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) @@ -1896,8 +1896,8 @@ "aKx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "aKy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "aKz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) -"aKA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) -"aKB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Fore Primary Hallway APC"; pixel_x = 0; pixel_y = -27},/obj/structure/cable/yellow,/obj/machinery/light,/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) +"aKA" = (/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/machinery/door/window/brigdoor{dir = 2; id = "Cell 4"; name = "Cell 4"; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/brig) +"aKB" = (/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/machinery/door/window/brigdoor{dir = 2; id = "Cell 5"; name = "Cell 5"; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/brig) "aKC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "aKD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "aKE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) @@ -1910,7 +1910,7 @@ "aKL" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating,/area/engine/engineering) "aKM" = (/obj/machinery/computer/security,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "aKN" = (/obj/structure/table,/obj/item/weapon/folder/red{pixel_x = 3},/obj/item/weapon/folder/white{pixel_x = -4; pixel_y = 2},/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; dir = 1; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = -30},/obj/item/weapon/restraints/handcuffs,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) -"aKO" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) +"aKO" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/security/processing) "aKP" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "aKQ" = (/obj/structure/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/detectives_office) "aKR" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/detectives_office) @@ -1943,7 +1943,7 @@ "aLs" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/engineering) "aLt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor/plasteel,/area/engine/engineering) "aLu" = (/obj/structure/table,/obj/machinery/light_switch{pixel_x = 23},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/item/weapon/storage/toolbox/mechanical{pixel_y = 5},/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"aLv" = (/obj/machinery/door/poddoor/shutters/preopen{id_tag = "Singularity"; name = "radiation shutters"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) +"aLv" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{id_tag = "Brig"; name = "Prisoner Processing"; req_access_txt = "63"},/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/security/processing) "aLw" = (/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/engine/engineering) "aLx" = (/obj/item/weapon/wirecutters,/obj/structure/lattice,/turf/space,/area/space) "aLy" = (/obj/machinery/computer/guestpass{pixel_x = 30},/turf/simulated/floor/carpet,/area/crew_quarters/heads) @@ -1988,7 +1988,7 @@ "aMl" = (/turf/simulated/wall/r_wall,/area/crew_quarters/courtroom) "aMm" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Court Cell"; req_access = null; req_access_txt = "63"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom) "aMn" = (/turf/simulated/wall,/area/lawoffice) -"aMo" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "1;4;38;12"},/turf/simulated/floor/plating,/area/maintenance/fore) +"aMo" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{id_tag = "Brig"; name = "Prisoner Processing"; req_access_txt = "63"},/obj/structure/cable/yellow{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/plasteel{icon_state = "redfull"},/area/security/processing) "aMp" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/light_switch{pixel_x = -26},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aMq" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 28},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aMr" = (/obj/machinery/door/airlock{id_tag = "Toilet4"; name = "Unit 4"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) @@ -2040,7 +2040,7 @@ "aNl" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/security{name = "Security-Storage Backroom"; req_access = null; req_access_txt = "63"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/fore) "aNm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/fore) "aNn" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/restraints/handcuffs,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = -30},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/fore) -"aNo" = (/obj/machinery/light/small,/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/fore) +"aNo" = (/turf/simulated/wall,/area/security/processing) "aNp" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/turret_protected/ai_upload) "aNq" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/courtroom) "aNr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) @@ -2060,7 +2060,7 @@ "aNF" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/briefcase{pixel_x = -3; pixel_y = 2},/obj/item/weapon/storage/secure/briefcase{pixel_x = 2; pixel_y = -2},/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/wood,/area/lawoffice) "aNG" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "Law Office APC"; pixel_y = 24},/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-21"; layer = 4.1; tag = "icon-plant-21"},/turf/simulated/floor/wood,/area/lawoffice) "aNH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/lawoffice) -"aNI" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/locker) +"aNI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/brig) "aNJ" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 8},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/effect/landmark{name = "blobstart"},/obj/machinery/door_control{id = "Toilet1"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aNK" = (/obj/machinery/door/airlock{id_tag = "Toilet1"; name = "Unit 1"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aNL" = (/obj/structure/toilet{dir = 4},/obj/machinery/light/small{dir = 4},/obj/machinery/newscaster{pixel_x = 32},/obj/machinery/door_control{id = "Toilet4"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; specialfunctions = 4},/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) @@ -2077,7 +2077,7 @@ "aNW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating,/area/maintenance/starboard) "aNX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/engine/engineering) "aNY" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/engine/engineering) -"aNZ" = (/obj/machinery/door/poddoor/shutters/preopen{id_tag = "Singularity"; name = "radiation shutters"},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) +"aNZ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/brig) "aOa" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/engine/engineering) "aOb" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating,/area/engine/engineering) "aOc" = (/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor/plating,/area/engine/engineering) @@ -2119,7 +2119,7 @@ "aOM" = (/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 9},/area/crew_quarters/courtroom) "aON" = (/obj/structure/table/woodentable,/obj/item/device/radio/intercom{broadcasting = 1; dir = 8; listening = 0; name = "Station Intercom (Court)"; pixel_x = 0},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/crew_quarters/courtroom) "aOO" = (/obj/structure/table/woodentable,/obj/item/weapon/gavelblock,/obj/item/weapon/gavelhammer,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/crew_quarters/courtroom) -"aOP" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atm{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/brig) +"aOP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/brig) "aOQ" = (/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 5},/area/crew_quarters/courtroom) "aOR" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/crew_quarters/courtroom) "aOS" = (/obj/machinery/door/window/southleft{name = "Court Cell"; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom) @@ -2128,11 +2128,11 @@ "aOV" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/wood,/area/lawoffice) "aOW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (EAST)"},/area/engine/engineering) "aOX" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/engine/engineering) -"aOY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) +"aOY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/security/brig) "aOZ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Unisex Restrooms"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) -"aPa" = (/obj/machinery/door/firedoor,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock{name = "Dormitories"; req_access_txt = "0"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep) -"aPb" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/crew_quarters/sleep) -"aPc" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock{name = "Dormitories"; req_access_txt = "0"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/sleep) +"aPa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/brig) +"aPb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/security/brig) +"aPc" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/brig) "aPd" = (/obj/item/weapon/reagent_containers/spray/plantbgone,/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez,/obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh{pixel_x = 2; pixel_y = 1},/obj/structure/table,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) "aPe" = (/obj/machinery/biogenerator,/obj/machinery/firealarm{pixel_y = 27},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) "aPf" = (/obj/structure/table,/obj/item/weapon/hatchet,/obj/item/weapon/crowbar,/obj/machinery/light{dir = 1},/obj/item/device/plant_analyzer,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/cultivator,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) @@ -2142,7 +2142,7 @@ "aPj" = (/mob/living/simple_animal/chicken{name = "Featherbottom"; real_name = "Featherbottom"},/turf/simulated/floor/grass,/area/hallway/secondary/construction{name = "\improper Garden"}) "aPk" = (/obj/effect/decal/cleanable/cobweb,/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/wirecutters,/obj/item/weapon/weldingtool,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/starboard) "aPl" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor/plating,/area/engine/engineering) -"aPm" = (/obj/machinery/door/poddoor{id_tag = "Secure Storage"; name = "Secure Storage"},/turf/simulated/floor/plating,/area/engine/engineering) +"aPm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door_timer{dir = 1; id = "Cell 4"; name = "Cell 4"; pixel_y = 32},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Brig - Hallway - Entrance"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/brig) "aPn" = (/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/engine/engineering) "aPo" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/engine/engineering) "aPp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/engine/engineering) @@ -2206,7 +2206,7 @@ "aQv" = (/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/obj/effect/landmark/start{name = "Civilian"},/obj/structure/curtain/open/shower,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aQw" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/lawoffice) "aQx" = (/obj/machinery/photocopier,/obj/machinery/camera{c_tag = "Law Office"; dir = 8; network = list("SS13")},/turf/simulated/floor/wood,/area/lawoffice) -"aQy" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) +"aQy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) "aQz" = (/obj/structure/closet/secure_closet/personal,/obj/item/clothing/under/assistantformal,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/locker) "aQA" = (/obj/structure/closet/secure_closet/personal,/obj/machinery/light/small{dir = 1},/obj/item/clothing/under/assistantformal,/obj/structure/sign/double/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/locker) "aQB" = (/obj/structure/closet/secure_closet/personal,/obj/item/clothing/under/assistantformal,/obj/structure/sign/double/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/locker) @@ -2275,7 +2275,7 @@ "aRM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/wood,/area/lawoffice) "aRN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/wood,/area/lawoffice) "aRO" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/wood,/area/lawoffice) -"aRP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) +"aRP" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/security/brig) "aRQ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/mob/living/simple_animal/mouse,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "aRR" = (/obj/structure/table,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/item/device/t_scanner,/turf/simulated/floor/plasteel{dir = 4; icon_state = "brown"},/area/storage/primary) "aRS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/landmark/start{name = "Station Engineer"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plasteel,/area/engine/engineering) @@ -2323,7 +2323,7 @@ "aSI" = (/obj/structure/closet/secure_closet/quartermaster,/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "brown"},/area/quartermaster/qm) "aSJ" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/power/apc{dir = 1; name = "Quartermaster's Office APC"; pixel_x = 0; pixel_y = 30},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/quartermaster/qm) "aSK" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/alarm{pixel_y = 23},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/quartermaster/qm) -"aSL" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/quartermaster/qm) +"aSL" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/brig) "aSM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/weapon/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aSN" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/structure/closet/crate/internals,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/storage/primary) "aSO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel,/area/storage/primary) @@ -2372,7 +2372,7 @@ "aTF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/hallway/secondary/construction{name = "\improper Garden"}) "aTG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) "aTH" = (/obj/machinery/power/apc{dir = 4; name = "Garden APC"; pixel_x = 27; pixel_y = 2},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/disposal,/obj/machinery/camera{c_tag = "Garden"; dir = 8; network = list("SS13")},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/hallway/secondary/construction{name = "\improper Garden"}) -"aTI" = (/obj/machinery/power/apc{cell_type = 10000; dir = 8; name = "Engine Room APC"; pixel_x = -26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/engineering) +"aTI" = (/obj/machinery/power/apc{cell_type = 25000; dir = 8; name = "Engine Room APC"; pixel_x = -26; pixel_y = 0; shock_proof = 1},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/engineering) "aTJ" = (/obj/item/weapon/storage/toolbox/emergency,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/extinguisher_cabinet{pixel_x = -31; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/incinerator) "aTK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) "aTL" = (/obj/structure/table,/obj/item/weapon/book/manual/engineering_hacking{pixel_x = 4; pixel_y = 5},/obj/item/weapon/book/manual/engineering_construction{pixel_x = 0; pixel_y = 3},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/item/weapon/book/manual/engineering_singularity_safety{pixel_x = -4},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) @@ -2413,7 +2413,7 @@ "aUu" = (/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aUv" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Law Office"; req_access_txt = "38"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/lawoffice) "aUw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/window/northleft{dir = 4; icon_state = "left"; name = "Inner Pipe Access"; req_access_txt = "24"},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/atmos) -"aUx" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/light/small{dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) +"aUx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door_timer{dir = 1; id = "Cell 5"; name = "Cell 5"; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/brig) "aUy" = (/obj/structure/table,/obj/item/weapon/storage/pill_bottle/dice,/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "aUz" = (/obj/structure/stool{pixel_y = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "aUA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/crew_quarters/locker) @@ -2434,7 +2434,7 @@ "aUP" = (/obj/machinery/vending/tool,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aUQ" = (/obj/structure/closet/secure_closet/engineering_welding,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aUR" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) -"aUS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) +"aUS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) "aUT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/crowbar,/obj/item/stack/cable_coil,/obj/item/weapon/screwdriver,/obj/item/weapon/weldingtool,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aUU" = (/obj/structure/window/reinforced,/turf/space,/area/space) "aUV" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/space) @@ -2480,8 +2480,8 @@ "aVJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "aVK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "aVL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Crew Quarters Entrance"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) -"aVM" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock{name = "Locker Room"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/crew_quarters/locker) -"aVN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/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/plasteel,/area/crew_quarters/locker) +"aVM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/security/brig) +"aVN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/brig) "aVO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "aVP" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/stool{pixel_y = 8},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "aVQ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/crew_quarters/locker) @@ -2508,7 +2508,7 @@ "aWl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/engine/engineering) "aWm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/engine/engineering) "aWn" = (/obj/machinery/light,/obj/machinery/camera{c_tag = "Engineering - Aft"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) -"aWo" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/engine/engineering) +"aWo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/security/brig) "aWp" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "aWq" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aWr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) @@ -2560,9 +2560,9 @@ "aXl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/crew_quarters/locker) "aXm" = (/obj/structure/rack,/obj/item/weapon/storage/briefcase,/obj/item/weapon/storage/briefcase{pixel_x = 4; pixel_y = -2},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "aXn" = (/obj/structure/table,/obj/item/weapon/hatchet,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/item/weapon/paper/hydroponics,/obj/item/weapon/coin/silver,/obj/item/weapon/cultivator,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) -"aXo" = (/obj/structure/table,/obj/item/weapon/hatchet,/obj/item/weapon/crowbar,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/device/plant_analyzer,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) -"aXp" = (/obj/structure/table,/obj/item/weapon/cultivator,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) -"aXq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) +"aXo" = (/obj/machinery/vending/crittercare,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) +"aXp" = (/obj/structure/table,/obj/item/weapon/hatchet,/obj/item/weapon/crowbar,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/device/plant_analyzer,/obj/item/weapon/cultivator,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) +"aXq" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/security/brig) "aXr" = (/obj/structure/table,/obj/machinery/light,/obj/item/device/plant_analyzer,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) "aXs" = (/obj/item/weapon/book/manual/engineering_hacking{pixel_x = 4; pixel_y = 5},/obj/item/weapon/book/manual/engineering_construction{pixel_x = 0; pixel_y = 3},/obj/structure/closet/crate,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/starboard) "aXt" = (/obj/machinery/power/terminal,/obj/structure/cable,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/engine/engineering) @@ -2573,9 +2573,9 @@ "aXy" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) "aXz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/engine/engineering) "aXA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/engine/engineering) -"aXB" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) -"aXC" = (/obj/effect/landmark/start{name = "Station Engineer"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/engine/engineering) -"aXD" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/engine/engineering) +"aXB" = (/obj/machinery/atm{pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/firealarm{pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/brig) +"aXC" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) +"aXD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/r_wall,/area/security/brig) "aXE" = (/obj/machinery/camera/emp_proof{c_tag = "Aft Arm - Far"; dir = 8; network = list("Singulo")},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "aXF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) "aXG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/engine/engineering) @@ -2635,7 +2635,7 @@ "aYI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "aYJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=14.3-Lockers-Dorms"; location = "14.2-Central-CrewQuarters"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "aYK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) -"aYL" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock{name = "Locker Room"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/crew_quarters/locker) +"aYL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/security/brig) "aYM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/power/apc{dir = 2; name = "Locker Room APC"; pixel_x = -1; pixel_y = -26},/obj/structure/cable/yellow,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "aYN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/machinery/camera{c_tag = "Locker Room Port"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "aYO" = (/obj/structure/table,/obj/item/clothing/gloves/color/fyellow,/obj/item/device/gps{gpstag = "AUX0"},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/simulated/floor/plasteel{dir = 9; icon_state = "brown"},/area/storage/primary) @@ -2650,8 +2650,8 @@ "aYX" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) "aYY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) "aYZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) -"aZa" = (/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/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/engine/engineering) -"aZb" = (/obj/machinery/light/small,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) +"aZa" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/security/brig) +"aZb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/junction{dir = 4; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/security/brig) "aZc" = (/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "aZd" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "aZe" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -29},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots/advance,/obj/item/clothing/suit/space/hardsuit/elite,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/elite,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) @@ -2718,7 +2718,7 @@ "ban" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "bao" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering{dir = 8}) "bap" = (/obj/machinery/requests_console{announcementConsole = 0; department = "Engineering"; departmentType = 4; name = "Engineering RC"; pixel_y = 0},/turf/simulated/wall,/area/engine/engineering) -"baq" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) +"baq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/security/brig) "bar" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) "bas" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/obj/item/weapon/storage/firstaid/fire,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "bat" = (/obj/machinery/light_switch,/turf/simulated/wall,/area/engine/engineering) @@ -2833,7 +2833,7 @@ "bcy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/quartermaster/storage) "bcz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "bcA" = (/obj/machinery/recharger{pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) -"bcB" = (/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/table/reinforced,/obj/machinery/camera{c_tag = "Security Post - Cargo"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) +"bcB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/junction{dir = 4; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/security/brig) "bcC" = (/obj/item/weapon/book/manual/security_space_law,/obj/machinery/newscaster{hitstaken = 1; pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "bcD" = (/obj/machinery/computer/secure_data,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "bcE" = (/obj/machinery/power/apc{dir = 8; name = "Aft Port Solar APC"; pixel_x = -26; pixel_y = 3},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/portsolar) @@ -2955,7 +2955,7 @@ "beQ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/engine/engineering) "beR" = (/obj/structure/filingcabinet,/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = 30},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/checkpoint/engineering) "beS" = (/obj/structure/table,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 29},/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/checkpoint/engineering) -"beT" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -1; pixel_y = 5},/obj/item/weapon/pen,/obj/machinery/newscaster/security_unit{pixel_x = 30; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/checkpoint/engineering) +"beT" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/security/brig) "beU" = (/obj/machinery/door/airlock/external{name = "South Containment Arm Access"},/turf/simulated/floor/plating,/area/engine/engineering) "beV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "beW" = (/obj/structure/window/reinforced{dir = 8},/turf/space,/area/construction/hallway{name = "\improper MiniSat Exterior"}) @@ -2972,9 +2972,9 @@ "bfh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bfi" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "bfj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;48;50;1"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bfk" = (/obj/machinery/light_construct,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bfk" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/security/brig) "bfl" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/weapon/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bfm" = (/obj/structure/noticeboard{pixel_y = 32},/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker/large{pixel_y = 3},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/bottle/charcoal{pixel_x = -5; pixel_y = 0},/obj/item/weapon/reagent_containers/glass/bottle/morphine,/obj/item/weapon/reagent_containers/syringe/epinephrine{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/screwdriver{pixel_y = 6},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) +"bfm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/security/brig) "bfn" = (/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,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bfo" = (/obj/machinery/door/airlock/maintenance{name = "Cargo Bay Maintenance"; req_access_txt = "0"; req_one_access_txt = "48;50"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/quartermaster/storage) "bfp" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/quartermaster/storage) @@ -2988,12 +2988,12 @@ "bfx" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{glass = 0; icon = 'icons/obj/doors/Doormining.dmi'; name = "Cargo Bay"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/quartermaster/office{name = "\improper Cargo Office"}) "bfy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{glass = 0; icon = 'icons/obj/doors/Doormining.dmi'; name = "Cargo Bay"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/quartermaster/office{name = "\improper Cargo Office"}) "bfz" = (/obj/item/weapon/stamp{pixel_x = -3; pixel_y = 3},/obj/item/weapon/stamp/denied{pixel_x = 4; pixel_y = -2},/obj/structure/table/reinforced,/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; pixel_x = 32; pixel_y = 32},/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{dir = 9; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) -"bfA" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen/red,/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{dir = 5; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) +"bfA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/security/brig) "bfB" = (/obj/machinery/computer/ordercomp,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/primary/port) "bfC" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/status_display{density = 0; pixel_x = 0; pixel_y = 32},/obj/structure/table,/obj/item/weapon/folder/yellow,/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/hallway/primary/port) "bfD" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/hallway/primary/port) "bfE" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/hallway/primary/port) -"bfF" = (/obj/machinery/alarm{pixel_y = 23},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor/plasteel{dir = 5; icon_state = "brown"},/area/hallway/primary/port) +"bfF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/security/brig) "bfG" = (/turf/simulated/wall,/area/hallway/primary/port) "bfH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore - Port Corner"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bfI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/hallway/primary/central) @@ -3025,7 +3025,7 @@ "bgi" = (/obj/structure/closet/toolcloset,/turf/simulated/floor/plasteel{dir = 5; icon_state = "yellow"},/area/storage/tools) "bgj" = (/obj/effect/decal/cleanable/cobweb,/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "bgk" = (/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/machinery/vending/artvend,/turf/simulated/floor/plasteel{dir = 8; icon_state = "brown"},/area/storage/primary) -"bgl" = (/obj/structure/closet/secure_closet/medical3,/obj/machinery/light{dir = 1},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) +"bgl" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/security/brig) "bgm" = (/obj/structure/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/plasteel{icon_state = "vault"; dir = 4},/area/storage/tech) "bgn" = (/obj/machinery/camera{c_tag = "Secure Tech Storage"; dir = 8},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/storage/tech) "bgo" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/storage/tech) @@ -3048,7 +3048,7 @@ "bgF" = (/obj/structure/table,/obj/item/weapon/book/manual/security_space_law,/obj/machinery/light{dir = 4},/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_x = 30; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/checkpoint/engineering) "bgG" = (/obj/item/weapon/cigbutt,/turf/simulated/floor/plating,/area/engine/engineering) "bgH" = (/obj/structure/closet/secure_closet/medical3,/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) -"bgI" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/medbay{name = "Medbay Central"}) +"bgI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/security/brig) "bgJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plating,/area/maintenance/starboard) "bgK" = (/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},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engineering) "bgL" = (/obj/machinery/door/airlock/external{req_access_txt = "13"},/turf/simulated/floor/plating,/area/engine/engineering) @@ -3216,7 +3216,7 @@ "bjR" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "AI Core Shutters"; name = "AI Chamber Entrance Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/turret_protected/ai) "bjS" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "vault"},/area/turret_protected/ai) "bjT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"bjU" = (/obj/structure/lattice,/obj/structure/grille,/obj/structure/lattice,/turf/space,/area/space) +"bjU" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/brig) "bjV" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/turret_protected/ai) "bjW" = (/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom/custom{pixel_y = 25},/obj/item/device/radio/intercom/private{pixel_y = -28},/obj/item/device/radio/intercom{pixel_x = -28},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bjX" = (/obj/machinery/door/window/southright{base_state = "left"; dir = 8; icon_state = "left"; name = "AI Core Door"; req_access = null; req_access_txt = "16"},/obj/machinery/turretid/lethal{check_synth = 1; name = "AI Chamber Turret Control"; pixel_x = -5; pixel_y = -24; req_access_txt = "75"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 6},/area/turret_protected/ai) @@ -3325,7 +3325,7 @@ "blW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "blX" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/closet,/obj/item/weapon/crowbar,/obj/item/device/flash,/obj/item/device/radio,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/security/checkpoint2{name = "Customs"}) "blY" = (/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/checkpoint2{name = "Customs"}) -"blZ" = (/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/structure/table/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/checkpoint2{name = "Customs"}) +"blZ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Interrogation"; req_access = null; req_access_txt = "0"; req_one_access_txt = "1;4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "bma" = (/obj/item/weapon/paper,/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{dir = 2; name = "Arrivals Security Checkpoint"; pixel_y = -8; req_access_txt = "1"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/checkpoint2{name = "Customs"}) "bmb" = (/obj/machinery/recharger{pixel_y = 4},/obj/structure/table/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/checkpoint2{name = "Customs"}) "bmc" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/security/checkpoint2{name = "Customs"}) @@ -3360,14 +3360,14 @@ "bmF" = (/obj/item/weapon/tank/air,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"}) "bmG" = (/obj/effect/landmark{name = "blobstart"},/obj/machinery/power/apc{cell_type = 2500; dir = 4; name = "Central Maintenance APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"}) "bmH" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"bmI" = (/obj/machinery/door_control{id = "lawyer_blast"; name = "Privacy Shutters"; pixel_x = 0; pixel_y = -26},/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen/multi,/turf/simulated/floor/wood,/area/lawoffice) +"bmI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/security/brig) "bmJ" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/device/assembly/signaler,/obj/item/device/multitool{pixel_x = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "browncorner"},/area/storage/primary) "bmK" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/device/assembly/signaler,/obj/item/device/multitool{pixel_x = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "browncorner"},/area/storage/primary) "bmL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light,/obj/machinery/atm{pixel_y = -32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bmM" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/maintenance/starboard) "bmN" = (/obj/structure/table/reinforced,/obj/machinery/photocopier/faxmachine{department = "Chief Engineer's Office"},/turf/simulated/floor/plasteel{icon_state = "neutral"},/area/engine/chiefs_office) "bmO" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) -"bmP" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/clipboard,/obj/item/weapon/paper/monitorkey,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 8},/area/engine/chiefs_office) +"bmP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/flasher_button{id = "secentranceflasher"; name = "Brig Entrance Flasher"; pixel_x = -3; pixel_y = -38; req_access_txt = "1"},/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/brig) "bmQ" = (/obj/machinery/power/apc{dir = 8; name = "Custodial Closet APC"; pixel_x = -24},/obj/structure/table,/obj/item/clothing/gloves/color/orange,/obj/item/weapon/storage/box/mousetraps,/obj/item/weapon/storage/box/mousetraps,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/item/key/janitor,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/janitor) "bmR" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/weapon/wrench,/obj/item/clothing/mask/gas,/obj/item/device/multitool{pixel_x = 3},/obj/machinery/computer/guestpass{pixel_y = 30},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/lab) "bmS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atm{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -3398,7 +3398,7 @@ "bnr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "bns" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=14-Starboard-Central"; location = "13.3-Engineering-Central"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "bnt" = (/turf/simulated/wall/r_wall,/area/engine/break_room) -"bnu" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/engine/break_room) +"bnu" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/light,/obj/machinery/camera{c_tag = "Brig - Hallway - Starboard"; dir = 1; network = list("SS13")},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/brig) "bnv" = (/obj/item/weapon/book/manual/engineering_hacking{pixel_x = 4; pixel_y = 5},/obj/item/weapon/book/manual/engineering_construction{pixel_y = 3},/obj/item/weapon/book/manual/engineering_guide{pixel_x = -4; pixel_y = 0},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/engine/break_room) "bnw" = (/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/obj/machinery/light{dir = 1},/obj/structure/sign/securearea{pixel_y = 32},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/engine/break_room) "bnx" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/engine/break_room) @@ -3468,7 +3468,7 @@ "boJ" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/weapon/bikehorn/rubberducky,/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/obj/item/weapon/card/id/captains_spare,/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "boK" = (/obj/machinery/door/window{dir = 1; name = "Captain's Bedroom"; req_access_txt = "20"},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "boL" = (/obj/structure/closet/secure_closet/captains,/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"boM" = (/obj/structure/rack,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/clothing/suit/space/captain,/obj/item/clothing/mask/gas,/obj/item/clothing/head/helmet/space/capspace,/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) +"boM" = (/obj/structure/rack,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/jetpack/oxygen/captain,/obj/item/clothing/suit/space/captain,/obj/item/clothing/mask/gas,/obj/item/clothing/head/helmet/space/capspace,/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "boN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "boO" = (/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/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "boP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -3544,7 +3544,7 @@ "bqh" = (/obj/machinery/computer/atmos_alert,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) "bqi" = (/obj/item/device/radio/beacon,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) "bqj" = (/obj/machinery/computer/secure_data,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) -"bqk" = (/obj/machinery/computer/security,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) +"bqk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) "bql" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/computer/prisoner,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) "bqm" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/machinery/door/window/westright{dir = 4},/obj/item/weapon/soap/deluxe,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bqn" = (/obj/structure/mirror{pixel_y = 28},/obj/structure/sink{pixel_y = 17},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -3669,7 +3669,7 @@ "bsC" = (/obj/structure/table/glass,/turf/simulated/floor/plasteel,/area/engine/break_room) "bsD" = (/obj/structure/stool{pixel_y = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/engine/break_room) "bsE" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Engineering - Foyer - Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel,/area/engine/break_room) -"bsF" = (/obj/machinery/alarm{pixel_y = 23},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/break_room) +"bsF" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/engine/engineering) "bsG" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/break_room) "bsH" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/table,/obj/machinery/camera{c_tag = "Engineering - Transit Tube Access"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/space) "bsI" = (/obj/structure/transit_tube{tag = "icon-E-SW"; icon_state = "E-SW"},/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area/space) @@ -3754,7 +3754,7 @@ "buj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/camera{c_tag = "Central Primary Hallway - Starboard - Art Storage"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "buk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "bul" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 2},/obj/machinery/door_control{id = "turbinevent"; name = "Turbine Vent Control"; pixel_x = -6; pixel_y = -24; req_access_txt = "12"},/obj/machinery/door_control{id = "auxincineratorvent"; name = "Auxiliary Vent Control"; pixel_x = 6; pixel_y = -24; req_access_txt = "12"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) -"bum" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Personnel's Desk"; departmentType = 5; name = "Head of Personnel RC"; pixel_y = 30},/obj/machinery/light{dir = 1},/obj/item/weapon/storage/secure/briefcase,/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen,/turf/simulated/floor/wood,/area/crew_quarters/heads) +"bum" = (/obj/structure/disposalpipe/sortjunction{sortType = 4},/obj/effect/landmark/start{name = "Station Engineer"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/engine/engineering) "bun" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/civilian/barber) "buo" = (/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/civilian/barber) "bup" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/simulated/floor/wood,/area/crew_quarters/bar) @@ -3846,7 +3846,7 @@ "bvX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/window{dir = 2; name = "HoP's Desk"; pixel_y = 0; req_access_txt = "57"},/turf/simulated/floor/wood,/area/crew_quarters/heads) "bvY" = (/obj/structure/filingcabinet/chestdrawer{pixel_y = 6},/obj/structure/window/reinforced,/turf/simulated/floor/wood,/area/crew_quarters/heads) "bvZ" = (/obj/machinery/vending/cart{req_access_txt = "57"},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor/wood,/area/crew_quarters/heads) -"bwa" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/obj/structure/stool/bed/dogbed/ian,/turf/simulated/floor/wood,/area/crew_quarters/heads) +"bwa" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/engine/engineering) "bwb" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/computer/ordercomp,/turf/simulated/floor/wood,/area/crew_quarters/heads) "bwc" = (/obj/structure/closet/secure_closet/hop,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/heads) "bwd" = (/turf/simulated/wall,/area/crew_quarters/heads) @@ -3862,7 +3862,7 @@ "bwn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) "bwo" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/displaycase/captains_laser,/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bwp" = (/obj/structure/table/woodentable,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/weapon/gun/projectile/revolver/doublebarrel,/obj/machinery/camera{c_tag = "Maltese Falcon - Backroom"; dir = 2; network = list("SS13")},/obj/item/device/eftpos,/turf/simulated/floor/wood,/area/crew_quarters/bar) -"bwq" = (/obj/structure/closet/fireaxecabinet{pixel_y = -32},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 7},/obj/item/weapon/pen{pixel_y = 3},/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) +"bwq" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Singularity"; layer = 2.9; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/engine/engineering) "bwr" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law,/obj/machinery/power/apc{dir = 8; name = "Captain's Quarters APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light/small{dir = 8},/obj/item/weapon/paper{info = "Congratulations,

Your station has been selected to carry out the Gateway Project.

The equipment will be shipped to you at the start of the next quarter.
You are to prepare a secure location to house the equipment as outlined in the attached documents.

--Nanotrasen Blue Space Research"; name = "Confidential Correspondence, Pg 1"; pixel_x = 0; pixel_y = 0},/obj/item/weapon/coin/plasma,/obj/item/weapon/melee/chainofcommand,/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bws" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bwt" = (/obj/structure/table/woodentable,/obj/item/weapon/stamp/captain,/obj/machinery/computer/security/wooden_tv,/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -3960,7 +3960,7 @@ "byh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=7-Command-Starboard"; location = "6-Port-Central"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "byi" = (/obj/machinery/door_control{id = "hop"; name = "Privacy Shutters Control"; pixel_x = -24; pixel_y = -6; req_access_txt = "28"},/obj/machinery/light_switch{pixel_x = -25; pixel_y = 5},/turf/simulated/floor/carpet,/area/crew_quarters/heads) "byj" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/crew_quarters/heads) -"byk" = (/mob/living/simple_animal/pet/corgi/Ian,/turf/simulated/floor/carpet,/area/crew_quarters/heads) +"byk" = (/obj/structure/safe,/obj/item/weapon/storage/secure/briefcase{contents = newlist(/obj/item/clothing/suit/armor/vest,/obj/item/weapon/gun/projectile/automatic/pistol,/obj/item/weapon/suppressor,/obj/item/clothing/mask/balaclava,/obj/item/bodybag,/obj/item/weapon/soap/nanotrasen)},/obj/item/weapon/storage/backpack/duffel{contents = newlist(/obj/item/clothing/under/lawyer,/obj/item/clothing/accessory/waistcoat,/obj/item/clothing/shoes/laceup,/obj/item/clothing/gloves/color/black,/obj/item/clothing/glasses/sunglasses,/obj/item/clothing/head/fedora); desc = "A large duffelbag for holding extra things. There is a NanoTrasen logo on the back."; icon_state = "duffel-syndieammo"; item_state = "duffel-syndieammo"},/obj/item/weapon/lazarus_injector,/obj/item/weapon/gun/energy/gun/advtaser,/obj/item/weapon/gun/projectile/revolver/russian,/obj/item/ammo_box/a357,/obj/item/clothing/accessory/stethoscope,/obj/item/weapon/book{desc = "An undeniably handy book."; icon_state = "bookknock"; name = "A Simpleton's Guide to Safe-cracking with Stethoscopes"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 4},/area/security/nuke_storage) "byl" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "Head of Personnel APC"; pixel_y = 24},/obj/machinery/light{dir = 1},/turf/simulated/floor/carpet,/area/crew_quarters/heads) "bym" = (/turf/simulated/floor/carpet,/area/crew_quarters/heads) "byn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/carpet,/area/crew_quarters/heads) @@ -3976,10 +3976,10 @@ "byx" = (/obj/machinery/light,/obj/structure/rack,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/toolbox/emergency{pixel_x = -2; pixel_y = -3},/obj/item/weapon/wrench,/obj/item/device/multitool,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) "byy" = (/obj/structure/table/woodentable,/obj/structure/window/reinforced,/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/obj/item/weapon/storage/secure/briefcase{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/lockbox/medal{pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "byz" = (/obj/machinery/door/window{dir = 2; name = "Captain's Desk"; req_access_txt = "20"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"byA" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/structure/window/reinforced,/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) +"byA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/carpet,/area/security/detectives_office) "byB" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/blue,/obj/machinery/door/window{base_state = "right"; dir = 2; icon_state = "right"; name = "Captain's Desk"; req_access_txt = "20"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/disposalpipe/segment,/obj/item/weapon/stamp/captain,/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "byC" = (/obj/structure/table/woodentable,/obj/item/weapon/hand_tele,/obj/structure/window/reinforced,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 27; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"byD" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/maintcentral{name = "Central Maintenance"}) +"byD" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/carpet,/area/security/detectives_office) "byE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "20;12"},/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"}) "byF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "byG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/hallway/primary/central) @@ -4091,7 +4091,7 @@ "bAI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{icon_state = "caution"; dir = 4},/area/hallway/primary/starboard) "bAJ" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "bAK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) -"bAL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/sleeper{name = "Sleepers"}) +"bAL" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/engine/engineering) "bAM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/weapon/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bAN" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "telelab"; name = "test chamber blast door"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/explab) "bAO" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/engine/break_room) @@ -4145,7 +4145,7 @@ "bBK" = (/turf/simulated/wall,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "bBL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "bBM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bBN" = (/obj/structure/closet,/obj/effect/decal/cleanable/cobweb2,/obj/item/weapon/contraband/poster,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bBN" = (/obj/structure/closet,/obj/effect/decal/cleanable/cobweb2,/obj/item/weapon/poster/random_contraband,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bBO" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/wood,/area/library) "bBP" = (/obj/structure/table/woodentable,/obj/machinery/computer/library/public,/turf/simulated/floor/wood,/area/library) "bBQ" = (/turf/simulated/floor/carpet,/area/library) @@ -4167,7 +4167,7 @@ "bCg" = (/obj/machinery/hologram/holopad,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) "bCh" = (/obj/machinery/camera{c_tag = "Council Chamber"; dir = 2; network = list("SS13")},/obj/machinery/light{dir = 1},/obj/machinery/ai_status_display{pixel_y = 32},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) "bCi" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) -"bCj" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) +"bCj" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/engine/engineering) "bCk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -26; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) "bCl" = (/obj/item/weapon/hand_labeler,/obj/item/stack/packageWrap,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table/woodentable,/obj/item/device/eftpos,/turf/simulated/floor/wood,/area/crew_quarters/heads) "bCm" = (/obj/machinery/vending/cigarette{pixel_y = 2; products = list(/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate = 7, /obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 2, /obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 1, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/lighter/random = 4)},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -4276,7 +4276,7 @@ "bEl" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/shaker,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bEm" = (/obj/structure/stool/bed/chair/comfy/brown{tag = "icon-comfychair (WEST)"; icon_state = "comfychair"; dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bEn" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/carpet{tag = "icon-carpet11-12"; icon_state = "carpet11-12"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"bEo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/maintcentral{name = "Central Maintenance"}) +"bEo" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/engine/engineering) "bEp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "bEq" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bEr" = (/obj/effect/landmark/start{name = "Bartender"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) @@ -4299,7 +4299,7 @@ "bEI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/device/radio/beacon,/turf/simulated/floor/plasteel{dir = 8; icon_state = "caution"},/area/hallway/primary/starboard) "bEJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera{c_tag = "Arrivals - Middle Arm"; dir = 1; network = list("SS13")},/obj/machinery/atm{pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bEK" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/item/weapon/crowbar/red,/obj/item/weapon/wrench,/obj/item/clothing/mask/gas,/obj/machinery/alarm{pixel_y = 23},/obj/structure/table,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/turf/simulated/floor/plasteel{dir = 9; icon_state = "caution"},/area/atmos) -"bEL" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{dir = 1; icon_state = "caution"},/area/atmos) +"bEL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/item/clothing/glasses/meson,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Singularity"; layer = 2.9; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/engine/engineering) "bEM" = (/obj/machinery/computer/atmos_alert,/obj/structure/sign/double/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/camera{c_tag = "Atmospherics - Control Room"; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "caution"},/area/atmos) "bEN" = (/obj/structure/sign/double/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/obj/machinery/computer/atmoscontrol,/turf/simulated/floor/plasteel{dir = 1; icon_state = "caution"},/area/atmos) "bEO" = (/obj/structure/sign/atmosplaque{pixel_x = 0; pixel_y = 32},/obj/item/weapon/phone{pixel_x = -3; pixel_y = 3},/obj/item/weapon/cigbutt/cigarbutt{pixel_x = 5; pixel_y = -1},/obj/structure/table,/obj/machinery/light_switch{pixel_x = 26; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "caution"; dir = 5},/area/atmos) @@ -4370,7 +4370,7 @@ "bGb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/maintcentral{name = "Central Maintenance"}) "bGc" = (/obj/structure/table/reinforced,/obj/item/weapon/lighter/zippo,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = -31; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bGd" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) -"bGe" = (/obj/structure/table/reinforced,/obj/item/clothing/head/that{throwforce = 1; throwing = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) +"bGe" = (/obj/structure/table/reinforced,/obj/item/clothing/head/that,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bGf" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/matches{pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bGg" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bGh" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 3},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) @@ -4420,7 +4420,7 @@ "bGZ" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/plating,/area/shuttle/transport) "bHa" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/shuttle/transport) "bHb" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bHc" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) +"bHc" = (/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) "bHd" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bHe" = (/obj/structure/table/woodentable,/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/weapon/folder,/turf/simulated/floor/wood,/area/security/vacantoffice) "bHf" = (/turf/simulated/floor/wood,/area/security/vacantoffice) @@ -4471,7 +4471,7 @@ "bHY" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/pie,/turf/simulated/floor/wood,/area/crew_quarters/theatre) "bHZ" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/pump,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "arrival"; dir = 8},/area/hallway/primary/starboard) "bIa" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "caution"; dir = 4},/area/hallway/primary/starboard) -"bIb" = (/obj/structure/table/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/door/window/northleft{dir = 4; icon_state = "left"; name = "Atmospherics Desk"; req_access_txt = "24"},/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "atmos"; name = "Atmos Blast Door"; opacity = 0},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/atmos) +"bIb" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) "bIc" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/landmark/start{name = "Life Support Specialist"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "caution"},/area/atmos) "bId" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/atmos) "bIe" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/atmos) @@ -4563,7 +4563,7 @@ "bJM" = (/obj/structure/stool{pixel_y = 8},/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bJN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "bJO" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/crew_quarters/theatre) -"bJP" = (/obj/structure/table/woodentable,/obj/item/weapon/lipstick{pixel_y = 5},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/camera{c_tag = "Theatre - Stage"; dir = 8; network = list("SS13")},/obj/machinery/light/small{dir = 4},/obj/item/device/guitar,/turf/simulated/floor/wood,/area/crew_quarters/theatre) +"bJP" = (/obj/structure/table/woodentable,/obj/item/weapon/lipstick{pixel_y = 5},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/camera{c_tag = "Theatre - Stage"; dir = 8; network = list("SS13")},/obj/machinery/light/small{dir = 4},/obj/item/device/instrument/guitar,/turf/simulated/floor/wood,/area/crew_quarters/theatre) "bJQ" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "escape"},/area/hallway/primary/starboard) "bJR" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/starboard) "bJS" = (/obj/structure/dispenser{pixel_x = -1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "blackcorner"},/area/atmos) @@ -4662,7 +4662,7 @@ "bLH" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "bLI" = (/obj/structure/stool/bed/chair/wood/wings{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/landmark/start{name = "Clown"},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "bLJ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) -"bLK" = (/obj/structure/closet/crate,/obj/item/weapon/contraband/poster/legit,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bLK" = (/obj/structure/closet/crate,/obj/item/weapon/poster/random_official,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bLL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "bLM" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Doormaint.dmi'; name = "Theatre Stage"; req_access_txt = "0"; req_one_access_txt = "12;46"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/theatre) "bLN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) @@ -4670,7 +4670,7 @@ "bLP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/starboard) "bLQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "caution"; dir = 4},/area/hallway/primary/starboard) "bLR" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 4; location = "Atmospherics"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "atmos"; name = "Atmos Blast Door"; opacity = 0},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/atmos) -"bLS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/surgery) +"bLS" = (/obj/machinery/light/small,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) "bLT" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/atmos) "bLU" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/atmos) "bLV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "blackcorner"},/area/atmos) @@ -4712,13 +4712,13 @@ "bMF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/wood,/area/security/vacantoffice) "bMG" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/machinery/door_control{id = "AuxShower"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4},/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "bMH" = (/obj/machinery/shower{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) -"bMI" = (/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"bMI" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (EAST)"},/area/engine/engineering) "bMJ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/weapon/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bMK" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bML" = (/obj/machinery/door/airlock/maintenance{name = "Library Maintenance"; req_access_txt = "0"; req_one_access_txt = "12;37"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bMM" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/carpet,/area/library) "bMN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/wood,/area/library) -"bMO" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/surgery) +"bMO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Singularity"; layer = 2.9; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/engine/engineering) "bMP" = (/obj/machinery/bookbinder,/turf/simulated/floor/wood,/area/library) "bMQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "bMR" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -4743,7 +4743,7 @@ "bNk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/gateway) "bNl" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bNm" = (/obj/machinery/vending/cigarette,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -29},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) -"bNn" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters/preopen{dir = 2; id_tag = "kitchen"; name = "Serving Hatch"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) +"bNn" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters/preopen{dir = 2; id_tag = "kitchen"; name = "Serving Hatch"},/obj/machinery/door/window/eastleft{dir = 2; name = "Kitchen Window"; req_access_txt = "28"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bNo" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;17"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"}) "bNp" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bNq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/central) @@ -4777,7 +4777,7 @@ "bNS" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/gateway) "bNT" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/gateway) "bNU" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/gateway) -"bNV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/surgery) +"bNV" = (/obj/machinery/door/airlock/maintenance{name = "Detective Maintenance"; req_access_txt = "4"},/turf/simulated/floor/plating,/area/security/detectives_office) "bNW" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "bNX" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bNY" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/space,/area/space) @@ -4788,7 +4788,7 @@ "bOd" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/transport) "bOe" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/hallway/secondary/entry{name = "Arrivals"}) "bOf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bOg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/sleeper{name = "Sleepers"}) +"bOg" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/turf/simulated/floor/plasteel{dir = 2; icon_state = "brown"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) "bOh" = (/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/security/vacantoffice) "bOi" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/carpet,/area/security/vacantoffice) "bOj" = (/obj/item/weapon/folder/white,/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/security/vacantoffice) @@ -4836,13 +4836,13 @@ "bOZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/stool{pixel_y = 8},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bPa" = (/obj/machinery/light,/obj/machinery/camera{c_tag = "Kitchen Hatch"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bPb" = (/obj/structure/stool{pixel_y = 8},/obj/machinery/firealarm{dir = 4; pixel_x = 28},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) -"bPc" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "cmoprivacy"; layer = 2.7; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/cmo) +"bPc" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/machinery/requests_console{department = "Mining"; departmentType = 0; pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{dir = 10; icon_state = "brown"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) "bPd" = (/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "Theatre Stage"; req_access_txt = "0"},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "bPe" = (/obj/machinery/light_switch{pixel_y = -28},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/light,/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "bPf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "bPg" = (/obj/structure/table/woodentable,/obj/machinery/light/small,/obj/item/clothing/glasses/regular/hipster{name = "Hipster Glasses"},/turf/simulated/floor/wood,/area/crew_quarters/theatre) -"bPh" = (/obj/item/device/violin,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/crew_quarters/theatre) -"bPi" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "cmoprivacy"; layer = 2.7; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/cmo) +"bPh" = (/obj/item/device/instrument/violin,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/crew_quarters/theatre) +"bPi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Fore Primary Hallway APC"; pixel_x = 0; pixel_y = -27},/obj/structure/cable/yellow,/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "bPj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 10; icon_state = "yellow"},/area/hallway/primary/starboard) "bPk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 2; icon_state = "yellow"},/area/hallway/primary/starboard) "bPl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 6; icon_state = "yellow"},/area/hallway/primary/starboard) @@ -4883,7 +4883,7 @@ "bPU" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/simulated/floor/carpet,/area/security/vacantoffice) "bPV" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/security/vacantoffice) "bPW" = (/obj/machinery/light/small{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/wood,/area/library) -"bPX" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "cmoprivacy"; layer = 2.7; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/cmo) +"bPX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/light,/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "bPY" = (/obj/machinery/door/window/northright{base_state = "left"; dir = 8; icon_state = "left"; name = "Library Desk Door"; pixel_x = 3; req_access_txt = "37"},/turf/simulated/floor/wood,/area/library) "bPZ" = (/obj/effect/landmark/start{name = "Librarian"},/obj/structure/stool/bed/chair/office/dark{dir = 1},/turf/simulated/floor/wood,/area/library) "bQa" = (/obj/structure/table/woodentable,/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; pixel_x = 32; pixel_y = 0},/obj/machinery/computer/library/checkout,/turf/simulated/floor/wood,/area/library) @@ -4916,15 +4916,15 @@ "bQB" = (/obj/machinery/gateway{dir = 9},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/gateway) "bQC" = (/obj/machinery/gateway{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/gateway) "bQD" = (/obj/machinery/gateway{dir = 5},/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/gateway) -"bQE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/maintcentral{name = "Central Maintenance"}) +"bQE" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "bQF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bQG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/hallway/primary/central) "bQH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "bQI" = (/turf/simulated/wall,/area/crew_quarters/kitchen) -"bQJ" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters/preopen{dir = 2; id_tag = "kitchen"; name = "Serving Hatch"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/weapon/reagent_containers/food/snacks/pie,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) -"bQK" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters/preopen{dir = 2; id_tag = "kitchen"; name = "Serving Hatch"},/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) +"bQJ" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters/preopen{dir = 2; id_tag = "kitchen"; name = "Serving Hatch"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/weapon/reagent_containers/food/snacks/pie,/obj/machinery/door/window/eastleft{dir = 2; name = "Kitchen Window"; req_access_txt = "28"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) +"bQK" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters/preopen{dir = 2; id_tag = "kitchen"; name = "Serving Hatch"},/obj/item/weapon/storage/fancy/donut_box,/obj/machinery/door/window/eastleft{dir = 2; name = "Kitchen Window"; req_access_txt = "28"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bQL" = (/obj/machinery/computer/security/telescreen/entertainment,/turf/simulated/wall,/area/crew_quarters/kitchen) -"bQM" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters/preopen{dir = 2; id_tag = "kitchen"; name = "Serving Hatch"},/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 3},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) +"bQM" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters/preopen{dir = 2; id_tag = "kitchen"; name = "Serving Hatch"},/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 3},/obj/machinery/door/window/eastleft{dir = 2; name = "Kitchen Window"; req_access_txt = "28"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bQN" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Pod Bay"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "bQO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock{icon = 'icons/obj/doors/Doorsilver.dmi'; name = "Kitchen"; req_access_txt = "28"},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "bQP" = (/obj/machinery/vending/snack,/obj/machinery/newscaster{pixel_y = -29},/turf/simulated/floor/carpet,/area/crew_quarters/bar) @@ -5051,14 +5051,14 @@ "bTg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) "bTh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/computer/account_database,/turf/simulated/floor/bluegrid,/area/bridge) "bTi" = (/obj/item/stack/sheet/cardboard,/obj/item/device/flashlight,/obj/effect/decal/cleanable/cobweb2,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/maintenance/starboard) -"bTj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) -"bTk" = (/obj/machinery/light_switch{name = "light switch "; dir = 2; pixel_x = 0; pixel_y = -22},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) -"bTl" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) +"bTj" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fore) +"bTk" = (/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/fore) +"bTl" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Singularity"; layer = 2.9; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) "bTm" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/sign/double/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = -32},/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-03"; layer = 4.1; tag = "icon-plant-03"},/turf/simulated/floor/plasteel{icon_state = "arrival"; dir = 6},/area/hallway/secondary/entry{name = "Arrivals"}) "bTn" = (/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor/wood,/area/security/vacantoffice) "bTo" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/turf/simulated/floor/wood,/area/security/vacantoffice) "bTp" = (/obj/structure/mirror{pixel_x = -28},/obj/item/weapon/lipstick/black,/obj/item/weapon/lipstick/jade{pixel_x = 2; pixel_y = 2},/obj/item/weapon/lipstick/purple{pixel_x = -2; pixel_y = -2},/obj/structure/table,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bTq" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/cryo) +"bTq" = (/obj/machinery/light/small,/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/fore) "bTr" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/rack_parts,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bTs" = (/obj/machinery/light/small,/obj/machinery/power/apc{dir = 8; name = "Library APC"; pixel_x = -25},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/wood,/area/library) "bTt" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/library) @@ -5147,20 +5147,20 @@ "bUY" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin,/obj/item/weapon/pen/blue,/obj/item/weapon/folder/blue{pixel_x = 4; pixel_y = 6},/obj/item/weapon/paper/blueshield,/turf/simulated/floor/plasteel{icon_state = "bcarpet05"},/area/blueshield) "bUZ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; layer = 2.4; on = 1},/turf/simulated/floor/plasteel{icon_state = "bcarpet05"},/area/blueshield) "bVa" = (/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/blueshield) -"bVb" = (/obj/structure/sign/poster/legit{pixel_x = -32},/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/ntrep) +"bVb" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Singularity"; layer = 2.9; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) "bVc" = (/obj/structure/table/woodentable,/obj/machinery/computer/skills{req_access_txt = "57"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/ntrep) "bVd" = (/obj/structure/table/woodentable,/obj/item/weapon/folder,/obj/item/weapon/stamp/centcom,/obj/item/weapon/pen/multi/fountain,/turf/simulated/floor/carpet,/area/ntrep) "bVe" = (/obj/machinery/door/window{dir = 1; name = "Desk Door"; req_access_txt = "73"},/obj/machinery/keycard_auth{pixel_x = 24; pixel_y = 0},/turf/simulated/floor/wood,/area/ntrep) "bVf" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/stack/medical/ointment,/obj/item/stack/medical/bruise_pack,/obj/item/weapon/reagent_containers/syringe/charcoal,/obj/item/weapon/reagent_containers/syringe/epinephrine{pixel_x = -1; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/gateway) "bVg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/gateway) "bVh" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/gateway) -"bVi" = (/obj/structure/closet/secure_closet/CMO,/obj/item/weapon/storage/secure/safe{pixel_x = 5; pixel_y = 26},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 30; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) +"bVi" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "1;4;38;12"},/turf/simulated/floor/plating,/area/maintenance/fore) "bVj" = (/obj/machinery/telecomms/server/presets/common,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "bVk" = (/obj/machinery/telecomms/server/presets/engineering,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "bVl" = (/obj/machinery/telecomms/server/presets/medical,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) -"bVm" = (/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/maintcentral{name = "Central Maintenance"}) +"bVm" = (/obj/machinery/door/firedoor,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass{name = "Dormitories"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep) "bVn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) -"bVo" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/security/checkpoint/medical) +"bVo" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass{name = "Dormitories"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/sleep) "bVp" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/binary/volume_pump/on{dir = 4; name = "External to Filter"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "caution"},/area/atmos) "bVq" = (/obj/effect/landmark/start{name = "Cook"},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen) "bVr" = (/obj/structure/table,/obj/machinery/door_control{id = "kitchenwindow"; name = "Window Shutter Control"; pixel_x = -26; pixel_y = 0; req_access_txt = "28"},/obj/machinery/kitchen_machine/microwave,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) @@ -5213,7 +5213,7 @@ "bWm" = (/obj/structure/rack,/obj/item/weapon/storage/box,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bWn" = (/obj/machinery/door/airlock/maintenance{name = "Kitchen Maintenance"; req_access_txt = "28"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/kitchen) "bWo" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bWp" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen,/turf/simulated/floor/wood,/area/library) +"bWp" = (/obj/structure/disposalpipe/segment,/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/sleep) "bWq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/wood,/area/library) "bWr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/wood,/area/library) "bWs" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/wood,/area/library) @@ -5270,7 +5270,7 @@ "bXr" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "bXs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/weapon/wrench,/turf/simulated/floor/plating,/area/maintenance/starboard) "bXt" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plating,/area/maintenance/starboard) -"bXu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/surgery) +"bXu" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{id_tag = "Secure Storage"; name = "Secure Storage Blast Doors"},/turf/simulated/floor/plating,/area/engine/engineering) "bXv" = (/obj/structure/sign/nosmoking_2,/turf/simulated/wall,/area/atmos) "bXw" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4; initialize_directions = 11},/obj/machinery/meter,/turf/simulated/floor/plasteel,/area/atmos) "bXx" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/atmos) @@ -5292,7 +5292,7 @@ "bXN" = (/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor/wood,/area/library) "bXO" = (/obj/machinery/camera{active_power_usage = 0; c_tag = "Turbine Vent"; dir = 4; network = list("Turbine"); use_power = 0},/obj/structure/lattice,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/insulated{dir = 5},/turf/space,/area/space) "bXP" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 30; pixel_y = 0},/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/library) -"bXQ" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen/invisible,/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) +"bXQ" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/locker) "bXR" = (/obj/item/device/taperecorder{pixel_y = 0},/obj/item/device/camera,/obj/item/device/radio/intercom{pixel_y = -25},/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) "bXS" = (/obj/structure/bookcase{name = "Forbidden Knowledge"},/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) "bXT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -5333,7 +5333,7 @@ "bYC" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "green"},/area/hydroponics) "bYD" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Hydroponics Backroom"; req_access_txt = "35"; req_one_access_txt = "0"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/hydroponics) "bYE" = (/obj/machinery/cooker/deepfryer,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) -"bYF" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "cmoprivacy"; layer = 2.7; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/cmo) +"bYF" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bYG" = (/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plating,/area/maintenance/starboard) "bYH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/starboard) "bYI" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "rdprivacy"; layer = 2.7; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/hor) @@ -5354,10 +5354,10 @@ "bYX" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "rdprivacy"; layer = 2.7; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/hor) "bYY" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "rdprivacy"; layer = 2.7; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/hor) "bYZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bZa" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bZa" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/quartermaster/qm) "bZb" = (/obj/machinery/newscaster{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/wood,/area/library) "bZc" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/library) -"bZd" = (/obj/structure/table/woodentable,/obj/item/weapon/folder,/obj/item/weapon/folder,/obj/item/weapon/pen,/turf/simulated/floor/wood,/area/library) +"bZd" = (/obj/machinery/door_control{id = "lawyer_blast"; name = "Privacy Shutters"; pixel_x = 0; pixel_y = -26},/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/weapon/pen/multi,/turf/simulated/floor/wood,/area/lawoffice) "bZe" = (/obj/item/toy/cards/deck,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/library) "bZf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/library) "bZg" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor/wood,/area/library) @@ -5376,7 +5376,7 @@ "bZt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "greencorner"},/area/hallway/primary/central) "bZu" = (/turf/simulated/wall,/area/hallway/primary/central) "bZv" = (/turf/simulated/wall,/area/hydroponics) -"bZw" = (/obj/machinery/door/poddoor/shutters/preopen{dir = 2; id_tag = "kitchenhydro"; name = "Service Shutter"},/obj/machinery/door/airlock/glass{name = "Service Door"; req_one_access_txt = "35;28"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/hydroponics) +"bZw" = (/obj/structure/table/glass,/obj/item/weapon/book/manual/sop_service{pixel_x = 2; pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics) "bZx" = (/obj/structure/table/reinforced,/obj/machinery/door/window/eastleft{dir = 1; name = "Kitchen Window"; req_access_txt = "28"; req_one_access_txt = "0"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/weapon/paper,/obj/machinery/door/window/eastleft{dir = 2; name = "Hydroponics Window"; req_access_txt = "0"; req_one_access_txt = "30;35"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/hydroponics) "bZy" = (/obj/machinery/smartfridge,/turf/simulated/wall,/area/hydroponics) "bZz" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/crew_quarters/kitchen) @@ -5401,9 +5401,9 @@ "bZS" = (/turf/simulated/wall/r_wall,/area/maintenance/portsolar) "bZT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bZU" = (/turf/simulated/wall,/area/maintenance/aft{name = "Aft Maintenance"}) -"bZV" = (/obj/item/weapon/storage/box,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bZW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bZX" = (/obj/structure/rack,/obj/item/weapon/paper,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bZV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) +"bZW" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/machinery/light/small{dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) +"bZX" = (/obj/machinery/power/smes/engineering,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "bZY" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/wood,/area/library) "bZZ" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/wood,/area/library) "caa" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/item/weapon/storage/pill_bottle/dice,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/library) @@ -5438,8 +5438,8 @@ "caD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "caE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "caF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/sign/botany{pixel_x = 32; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/hallway/primary/central) -"caG" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{icon_state = "greenfull"},/area/hallway/primary/central) -"caH" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/security/checkpoint/medical) +"caG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) +"caH" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/glass{name = "Locker Room"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/crew_quarters/locker) "caI" = (/obj/machinery/vending/hydroseeds{slogan_delay = 700},/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics) "caJ" = (/obj/machinery/vending/hydronutrients,/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics) "caK" = (/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics) @@ -5462,7 +5462,7 @@ "cbb" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/kitchen_machine/oven,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "cbc" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/atmos) "cbd" = (/obj/machinery/pipedispenser,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/atmos) -"cbe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "isola"; layer = 2.7; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/patients_rooms{name = "Patient Room A"}) +"cbe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "cbf" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "rdprivacy"; layer = 2.7; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/hor) "cbg" = (/obj/machinery/atmospherics/binary/pump{dir = 8; name = "Port to Filter"; on = 0},/turf/simulated/floor/plasteel,/area/atmos) "cbh" = (/obj/machinery/atmospherics/pipe/manifold/visible,/obj/item/weapon/cigbutt,/turf/simulated/floor/plasteel,/area/atmos) @@ -5506,7 +5506,7 @@ "cbT" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/hydroponics) "cbU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/starboard) "cbV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/starboard) -"cbW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "isolb"; layer = 2.7; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/exam_room{name = "Patient Room B"}) +"cbW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/engine/engineering) "cbX" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/starboard) "cbY" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/genetics) "cbZ" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "toxins_blastdoor"; layer = 2.7; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) @@ -5534,8 +5534,8 @@ "ccv" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "ccw" = (/turf/simulated/floor/plating{tag = "icon-warnplatecorner (EAST)"; icon_state = "warnplatecorner"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "ccx" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"ccy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"ccz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"ccy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/engine/engineering) +"ccz" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) "ccA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ccB" = (/obj/structure/disposalpipe/sortjunction{dir = 4; icon_state = "pipe-j2s"; sortType = 16},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ccC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;37;25;28"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -5543,7 +5543,7 @@ "ccE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "ccF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/camera{c_tag = "Central Primary Hallway - Aft-Port Corner"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "ccG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) -"ccH" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) +"ccH" = (/turf/simulated/floor/plasteel,/area/engine/engineering) "ccI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "ccJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "ccK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -5593,20 +5593,20 @@ "cdC" = (/obj/machinery/power/solar_control{id = "aftport"; name = "Aft Port Solar Control"; track = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/portsolar) "cdD" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/portsolar) "cdE" = (/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/plating,/area/maintenance/portsolar) -"cdF" = (/obj/structure/rack,/obj/item/weapon/contraband/poster,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"cdF" = (/obj/structure/rack,/obj/item/weapon/poster/random_contraband,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cdG" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cdH" = (/obj/structure/closet,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cdI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/medbay3{name = "Medbay Aft"}) +"cdI" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/engine/engineering) "cdJ" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cdK" = (/obj/structure/stool,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cdL" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cdM" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "toxins_blastdoor"; layer = 2.7; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cdN" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cdO" = (/obj/structure/girder,/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cdP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"cdQ" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/obj/item/device/flashlight,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"cdR" = (/obj/structure/closet,/obj/item/clothing/accessory/stethoscope,/obj/item/weapon/hemostat,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"cdS" = (/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"cdP" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/glass{name = "Locker Room"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/crew_quarters/locker) +"cdQ" = (/obj/effect/landmark/start{name = "Station Engineer"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/engine/engineering) +"cdR" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) +"cdS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/engine/engineering) "cdT" = (/turf/simulated/wall,/area/medical/medbay2{name = "Medbay Storage"}) "cdU" = (/turf/simulated/wall,/area/security/checkpoint/medical) "cdV" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "applebush"; layer = 4.1; tag = "icon-applebush"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central) @@ -5626,7 +5626,7 @@ "cej" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/obj/machinery/newscaster{pixel_y = -29},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "cek" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;7;35;8;47"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cel" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/security/checkpoint/science{name = "Security Post - Research Division"}) -"cem" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Hydroponics Storage"},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hallway/primary/central) +"cem" = (/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/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/engine/engineering) "cen" = (/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/item/weapon/book/manual/hydroponics_pod_people,/obj/item/weapon/paper/hydroponics,/obj/machinery/requests_console{department = "Hydroponics"; departmentType = 2; pixel_x = -31; pixel_y = -2},/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "greenfull"},/area/hydroponics) "ceo" = (/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/weapon/hand_labeler,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "greenfull"},/area/hydroponics) "cep" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/tcommsat/server) @@ -5654,32 +5654,32 @@ "ceL" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/security/checkpoint/science{name = "Security Post - Research Division"}) "ceM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access = null; req_access_txt = "10; 13"},/turf/simulated/floor/plating,/area/maintenance/portsolar) "ceN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"ceO" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/contraband/poster,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"ceP" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"ceO" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/poster/random_contraband,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"ceP" = (/obj/machinery/light/small,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) "ceQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "toxins_blastdoor"; layer = 2.7; name = "privacy shutters"; opacity = 0},/obj/machinery/door/airlock/research{name = "Toxins Launch Room Access"; req_access_txt = "8"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "ceR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) -"ceS" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"ceS" = (/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/table/reinforced,/obj/machinery/camera{c_tag = "Security Post - Cargo"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "ceT" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "ceU" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/maintenance/aft{name = "Aft Maintenance"}) "ceV" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/bluegrid,/area/maintenance/aft{name = "Aft Maintenance"}) -"ceW" = (/obj/machinery/space_heater,/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"}) -"ceX" = (/obj/item/weapon/vending_refill/cola,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"ceY" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/storage/box/donkpockets,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"ceW" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -1; pixel_y = 5},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/machinery/newscaster/security_unit{pixel_x = 30; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/checkpoint/engineering) +"ceX" = (/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/weapon/pen/red,/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{dir = 5; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) +"ceY" = (/obj/machinery/alarm{pixel_y = 23},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/turf/simulated/floor/plasteel{dir = 5; icon_state = "brown"},/area/hallway/primary/port) "ceZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;25;28"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cfa" = (/obj/machinery/vending/medical,/turf/simulated/floor/plasteel{dir = 9; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "cfb" = (/obj/item/clothing/gloves/color/latex/nitrile,/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/storage/labcoat,/obj/item/clothing/mask/surgical,/obj/item/clothing/mask/breath/medical,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cfc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/item/weapon/cigbutt,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cfd" = (/obj/machinery/camera{c_tag = "Medbay Hallway Aft"; dir = 4; network = list("SS13","Medbay")},/obj/machinery/computer/guestpass{pixel_x = -30},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) +"cfd" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/item/weapon/clipboard,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 8},/area/engine/chiefs_office) "cfe" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = 30},/obj/structure/closet/wardrobe/medical_white,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "cff" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) -"cfg" = (/obj/machinery/power/apc{dir = 8; name = "Medical Security Checkpoint APC"; pixel_x = -24; pixel_y = 0},/obj/machinery/alarm{pixel_y = 28},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/closet/secure_closet/security/med,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/checkpoint/medical) -"cfh" = (/obj/machinery/recharger{pixel_y = 4},/obj/structure/table/reinforced,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Security Post - Medbay"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/checkpoint/medical) -"cfi" = (/obj/item/weapon/pen,/obj/structure/table/reinforced,/obj/structure/reagent_dispensers/peppertank{pixel_x = 30; pixel_y = 0},/obj/item/weapon/folder/red,/obj/item/weapon/book/manual/security_space_law{pixel_x = 3; pixel_y = 4},/obj/machinery/newscaster/security_unit{pixel_y = 32},/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/device/radio/off,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/checkpoint/medical) -"cfj" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteyellow"},/area/medical/medbay{name = "Medbay Central"}) -"cfk" = (/obj/structure/sign/greencross,/turf/simulated/wall,/area/medical/medbay{name = "Medbay Central"}) -"cfl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"}) -"cfm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"}) -"cfn" = (/obj/structure/sign/directions/evac{pixel_y = 6},/turf/simulated/wall,/area/medical/medbay{name = "Medbay Central"}) +"cfg" = (/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/structure/table/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/checkpoint2{name = "Customs"}) +"cfh" = (/obj/machinery/computer/security{network = list("SS13","Research Outpost","Mining Outpost","Telecomms")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) +"cfi" = (/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/engine/break_room) +"cfj" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Personnel's Desk"; departmentType = 5; name = "Head of Personnel RC"; pixel_y = 30},/obj/machinery/light{dir = 1},/obj/item/weapon/storage/secure/briefcase,/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/wood,/area/crew_quarters/heads) +"cfk" = (/obj/machinery/alarm{pixel_y = 23},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/break_room) +"cfl" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/obj/structure/stool/bed/dogbed/ian,/mob/living/simple_animal/pet/corgi/Ian,/turf/simulated/floor/wood,/area/crew_quarters/heads) +"cfm" = (/obj/structure/closet/fireaxecabinet{pixel_y = -32},/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/weapon/pen{pixel_y = 3},/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) +"cfn" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/structure/window/reinforced,/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "cfo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass,/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/aft) "cfp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass,/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cfq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass,/turf/simulated/floor/plasteel{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/aft) @@ -5725,21 +5725,21 @@ "cge" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "cgf" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) "cgg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) -"cgh" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) -"cgi" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) -"cgj" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Medbay Security Post"; req_access_txt = "63"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/security/checkpoint/medical) -"cgk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/checkpoint/medical) -"cgl" = (/turf/simulated/floor/plasteel,/area/security/checkpoint/medical) -"cgm" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/checkpoint/medical) +"cgh" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"}) +"cgi" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) +"cgj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"}) +"cgk" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/plasteel{dir = 1; icon_state = "caution"},/area/atmos) +"cgl" = (/obj/structure/table/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/door/window/northleft{dir = 4; icon_state = "left"; name = "Atmospherics Desk"; req_access_txt = "24"},/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "atmos"; name = "Atmos Blast Door"; opacity = 0},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/atmos) +"cgm" = (/obj/item/weapon/cigbutt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cgn" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor/plating,/area/atmos) -"cgo" = (/obj/structure/table,/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"cgp" = (/obj/machinery/light/small{dir = 1},/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bottle/epinephrine{pixel_x = 7; pixel_y = -3},/obj/item/weapon/reagent_containers/glass/bottle/charcoal{pixel_x = -4; pixel_y = -3},/obj/item/weapon/reagent_containers/syringe/epinephrine{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"cgq" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"cgr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cgs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cgt" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"cgu" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags{pixel_x = 3; pixel_y = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"cgv" = (/obj/structure/table,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/ointment,/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) +"cgo" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"cgp" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"cgq" = (/obj/structure/sign/poster/official/random{pixel_x = -32},/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/ntrep) +"cgr" = (/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"}) +"cgs" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/wood,/area/library) +"cgt" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/weapon/pen/invisible,/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) +"cgu" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"cgv" = (/obj/structure/table/woodentable,/obj/item/weapon/folder,/obj/item/weapon/folder,/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/wood,/area/library) "cgw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/aft) "cgx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cgy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/aft) @@ -5751,10 +5751,10 @@ "cgE" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cgF" = (/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/device/assembly/igniter{pixel_x = -4; pixel_y = -4},/obj/item/weapon/screwdriver{pixel_y = 16},/obj/item/device/gps{gpstag = "RD0"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cgG" = (/obj/structure/table,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/airlock_electronics,/obj/item/device/assembly/timer{pixel_x = -4; pixel_y = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) -"cgH" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Research Division - Lobby"; dir = 2; network = list("SS13","RD")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) +"cgH" = (/obj/structure/girder,/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cgI" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/machinery/light_switch{pixel_x = -27; pixel_y = 6},/obj/machinery/newscaster/security_unit{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/checkpoint/science{name = "Security Post - Research Division"}) "cgJ" = (/obj/structure/table,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/machinery/door_control{id = "Biohazard"; name = "Biohazard Shutter Control"; pixel_x = 0; pixel_y = 7; req_access_txt = "47"},/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "ResearchFoyer"; name = "Research Door Button"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -2},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/checkpoint/science{name = "Security Post - Research Division"}) -"cgK" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/checkpoint/science{name = "Security Post - Research Division"}) +"cgK" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "greenfull"},/area/hallway/primary/central) "cgL" = (/obj/machinery/sparker{dir = 2; id = "mixingsparker"; pixel_x = 25},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine/insulated/vacuum,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cgM" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hallway/primary/central) "cgN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hallway/primary/central) @@ -5764,8 +5764,8 @@ "cgR" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 6},/area/hydroponics) "cgS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "green"},/area/hydroponics) "cgT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "green"},/area/hydroponics) -"cgU" = (/obj/machinery/light{dir = 1},/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 30},/obj/structure/table,/obj/machinery/computer/med_data/laptop,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/sleeper{name = "Sleepers"}) -"cgV" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/sleeper{name = "Sleepers"}) +"cgU" = (/obj/item/weapon/vending_refill/cola,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"cgV" = (/obj/machinery/space_heater,/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cgW" = (/obj/machinery/power/compressor{comp_id = "incineratorturbine"; dir = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/engine/insulated/vacuum,/area/maintenance/incinerator) "cgX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab) "cgY" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab) @@ -5783,19 +5783,19 @@ "chk" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 1},/turf/simulated/floor/plasteel,/area/atmos) "chl" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 4},/turf/simulated/floor/plasteel,/area/atmos) "chm" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/visible/green,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/turf/simulated/floor/plasteel{dir = 4; icon_state = "caution"},/area/atmos) -"chn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cho" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/optable,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"chp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"chn" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/storage/box/donkpockets,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"cho" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"chp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "chq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "chr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"chs" = (/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cht" = (/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/machinery/light_construct{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"chs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "loadingarea"; tag = "loading"},/area/hallway/primary/central) +"cht" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light,/obj/machinery/door_control{id = "paramedic"; name = "Garage Door Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "66"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "chu" = (/turf/simulated/floor/engine/insulated/vacuum,/area/toxins/mixing{name = "\improper Toxins Lab"}) -"chv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"chw" = (/obj/machinery/mecha_part_fabricator{dir = 1; id = "0"; name = "counterfeit fabricator"; req_access = "0"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"chx" = (/obj/structure/rack,/obj/item/stack/sheet/cardboard,/obj/item/device/radio/off,/obj/machinery/light_construct{dir = 1},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"chv" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"chw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"chx" = (/obj/structure/closet,/obj/item/clothing/accessory/stethoscope,/obj/item/weapon/hemostat,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "chy" = (/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"chz" = (/obj/structure/closet,/obj/item/stack/sheet/metal{amount = 34},/obj/item/weapon/extinguisher/mini,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"chz" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/obj/item/device/flashlight,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "chA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j1s"; sortType = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "chB" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "chC" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -5808,21 +5808,21 @@ "chJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) "chK" = (/obj/effect/landmark{name = "lightsout"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) "chL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) -"chM" = (/obj/machinery/hologram/holopad,/obj/effect/landmark/start{name = "Medical Doctor"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) -"chN" = (/obj/machinery/camera{c_tag = "Medbay Storage"; dir = 8; network = list("SS13","Medbay")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) -"chO" = (/obj/machinery/requests_console{announcementConsole = 0; department = "Medbay"; departmentType = 1; name = "Medbay RC"; pixel_x = 0; pixel_y = 0; pixel_z = 0},/turf/simulated/wall,/area/security/checkpoint/medical) -"chP" = (/obj/machinery/computer/secure_data,/obj/machinery/computer/security/telescreen{desc = "Used for monitoring medbay to ensure patient safety."; dir = 1; name = "Medbay Monitor"; network = list("Medbay"); pixel_x = 0; pixel_y = -29},/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27; pixel_y = -10},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/checkpoint/medical) -"chQ" = (/obj/structure/stool/bed/chair/office/dark,/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = 24; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/security/checkpoint/medical) +"chM" = (/turf/simulated/wall,/area/medical/paramedic) +"chN" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "paramedic"; name = "Paramedic Garage"},/turf/simulated/floor/plasteel,/area/medical/paramedic) +"chO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Hydroponics Storage"; req_access_txt = "35"},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hallway/primary/central) +"chP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"chQ" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "chR" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating,/area/atmos) -"chS" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"chT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"chU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"chV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"chW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"chX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"chY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"chZ" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cia" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"}) +"chS" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/light_construct,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"chT" = (/obj/structure/noticeboard{pixel_y = 32},/obj/structure/closet/secure_closet/medical3,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) +"chU" = (/obj/structure/table,/obj/item/weapon/screwdriver{pixel_y = 6},/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/machinery/alarm{pixel_y = 24},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Medbay Surgery 1 North"; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) +"chV" = (/obj/vehicle/ambulance,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/paramedic) +"chW" = (/obj/machinery/computer/crew,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/paramedic) +"chX" = (/obj/machinery/door_control{id = "paramedic"; name = "Garage Door Control"; pixel_x = -1; pixel_y = 24; req_access_txt = "66"},/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/paramedic) +"chY" = (/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/structure/table/reinforced,/obj/structure/reagent_dispensers/peppertank{pixel_x = 30; pixel_y = 0},/obj/item/weapon/folder/red,/obj/item/weapon/book/manual/security_space_law{pixel_x = 3; pixel_y = 4},/obj/machinery/newscaster/security_unit{pixel_y = 32},/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/device/radio/off,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/checkpoint/medical) +"chZ" = (/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/machinery/camera{c_tag = "Security Post - Medbay"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/checkpoint/medical) +"cia" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/reception) "cib" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/research{name = "Research Division"}) "cic" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cid" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -5877,36 +5877,36 @@ "cja" = (/turf/simulated/floor/plating,/area/atmos) "cjb" = (/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "glass door"; req_access_txt = "24"},/obj/machinery/door/window/northleft{dir = 4; icon_state = "left"; name = "glass door"; req_access_txt = "24"},/turf/simulated/floor/plating,/area/atmos) "cjc" = (/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) -"cjd" = (/obj/structure/girder,/obj/structure/grille,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cjd" = (/obj/structure/sign/greencross,/turf/simulated/wall,/area/medical/reception) "cje" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cjf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "cjg" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cjh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"cjh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/reception) "cji" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cjj" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cjj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/reception) "cjk" = (/obj/structure/closet,/obj/item/stack/sheet/glass{amount = 12},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cjl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cjm" = (/obj/item/trash/semki,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cjm" = (/obj/structure/sign/directions/evac{pixel_y = 6},/turf/simulated/wall,/area/medical/reception) "cjn" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cjo" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cjp" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cjq" = (/obj/machinery/light_switch{pixel_x = -26; pixel_y = 0},/obj/machinery/light/small{dir = 8},/obj/structure/closet/l3closet,/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) -"cjr" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/closet/l3closet,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) -"cjs" = (/obj/item/weapon/storage/box/bodybags{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/rxglasses{pixel_x = 1; pixel_y = 1},/obj/item/weapon/reagent_containers/spray/cleaner,/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay2{name = "Medbay Storage"}) +"cjr" = (/obj/machinery/mecha_part_fabricator{dir = 1; id = "0"; name = "counterfeit fabricator"; req_access = "0"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cjs" = (/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,/area/maintenance/aft{name = "Aft Maintenance"}) "cjt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) -"cju" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) -"cjv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/medbay2{name = "Medbay Storage"}) -"cjw" = (/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/clothing/accessory/stethoscope,/obj/item/clothing/accessory/stethoscope,/obj/item/weapon/gun/syringe,/obj/structure/table/glass,/obj/item/clothing/suit/straight_jacket,/obj/item/weapon/gun/syringe,/obj/item/clothing/glasses/eyepatch,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/ears/earmuffs,/obj/item/clothing/mask/muzzle,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) -"cjx" = (/turf/simulated/wall,/area/medical/medbay{name = "Medbay Central"}) -"cjy" = (/obj/machinery/computer/crew,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/medbay{name = "Medbay Central"}) -"cjz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/shower{dir = 4; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cjA" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cjB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cjC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cjD" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cjE" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cjF" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cjG" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"}) +"cju" = (/obj/structure/closet,/obj/item/stack/sheet/metal{amount = 34},/obj/item/weapon/extinguisher/mini,/obj/effect/spawner/lootdrop/maintenance,/obj/machinery/light_construct{dir = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cjv" = (/obj/structure/rack,/obj/item/stack/sheet/cardboard,/obj/item/device/radio/off,/obj/effect/spawner/lootdrop/maintenance,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cjw" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) +"cjx" = (/obj/structure/stool/bed/amb_trolley,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/paramedic) +"cjy" = (/obj/effect/landmark/start{name = "Paramedic"},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24; shock_proof = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/paramedic) +"cjz" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/paramedic) +"cjA" = (/obj/structure/closet/secure_closet/security/med,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/checkpoint/medical) +"cjB" = (/obj/machinery/computer/security/telescreen{desc = "Used for monitoring medbay to ensure patient safety."; dir = 1; name = "Medbay Monitor"; network = list("Medbay"); pixel_x = -29; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/checkpoint/medical) +"cjC" = (/obj/structure/table,/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) +"cjD" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/security/checkpoint/medical) +"cjE" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) +"cjF" = (/obj/machinery/light/small{dir = 1},/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bottle/epinephrine{pixel_x = 7; pixel_y = -3},/obj/item/weapon/reagent_containers/glass/bottle/charcoal{pixel_x = -4; pixel_y = -3},/obj/item/weapon/reagent_containers/syringe/epinephrine{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) +"cjG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "cjH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/aft) "cjI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cjJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/aft) @@ -5929,6 +5929,7 @@ "cka" = (/obj/structure/sign/nosmoking_2{pixel_x = -28},/obj/machinery/atmospherics/unary/portables_connector{dir = 4; name = "input gas connector port"},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "ckb" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "input port pump"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "ckc" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/insulated{dir = 6},/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) +"ckd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "cke" = (/obj/machinery/sparker{dir = 2; id = "mixingsparker"; pixel_x = 25},/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 4; frequency = 1443; id = "air_in"},/turf/simulated/floor/engine/insulated/vacuum,/area/toxins/mixing{name = "\improper Toxins Lab"}) "ckf" = (/obj/machinery/meter,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "ckg" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -5948,30 +5949,30 @@ "cku" = (/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},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "ckv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "ckw" = (/obj/structure/girder,/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"ckx" = (/obj/structure/girder,/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cky" = (/obj/structure/rack,/obj/item/weapon/screwdriver{pixel_y = 16},/obj/item/weapon/hand_labeler,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"ckx" = (/obj/structure/table,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/ointment,/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) +"cky" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) "ckz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/assembly/robotics) "ckA" = (/obj/structure/rack,/obj/item/stack/rods{amount = 23},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"ckB" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"ckB" = (/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "ckC" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/weapon/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "ckD" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"ckE" = (/turf/simulated/wall,/area/medical/sleeper{name = "Sleepers"}) +"ckE" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Research Division - Lobby"; dir = 2; network = list("SS13","RD")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "ckF" = (/obj/item/weapon/storage/firstaid/regular{pixel_x = 3; pixel_y = -3},/obj/item/weapon/storage/firstaid/fire{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/fire{pixel_x = -3; pixel_y = -3},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) -"ckG" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) -"ckH" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) +"ckG" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/checkpoint/science{name = "Security Post - Research Division"}) +"ckH" = (/obj/structure/rack,/obj/item/weapon/screwdriver{pixel_y = 16},/obj/item/weapon/hand_labeler,/obj/effect/spawner/lootdrop/maintenance,/obj/machinery/light_construct{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "ckI" = (/obj/item/weapon/storage/firstaid/regular{pixel_x = 3; pixel_y = -3},/obj/item/weapon/storage/firstaid/toxin{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/toxin{pixel_x = -3; pixel_y = -3},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) -"ckJ" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 28},/obj/machinery/light{dir = 1},/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"ckK" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Medical Doctor"},/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = 24; pixel_y = 24},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"ckL" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/door/firedoor,/obj/item/weapon/reagent_containers/glass/bottle/epinephrine,/obj/item/weapon/reagent_containers/syringe,/turf/simulated/floor/plasteel{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) -"ckM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"ckN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"ckO" = (/obj/structure/stool/bed/roller,/obj/item/device/radio/intercom{broadcasting = 0; frequency = 1485; listening = 1; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"ckP" = (/obj/machinery/light,/obj/structure/stool/bed/roller,/obj/machinery/camera{c_tag = "Medbay Foyer"; dir = 1; network = list("SS13","Medbay")},/obj/machinery/firealarm{dir = 1; pixel_y = -28},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"ckQ" = (/obj/structure/stool/bed/roller,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"ckR" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteyellow"},/area/medical/medbay{name = "Medbay Central"}) +"ckJ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"ckK" = (/obj/machinery/hologram/holopad,/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) +"ckL" = (/obj/item/weapon/storage/box/bodybags{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/rxglasses{pixel_x = 1; pixel_y = 1},/obj/item/weapon/reagent_containers/spray/cleaner,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) +"ckM" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/paramedic) +"ckN" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/paramedic) +"ckO" = (/obj/machinery/camera{c_tag = "Paramedic"; dir = 8; network = list("SS13","Medbay")},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/firealarm{dir = 4; pixel_x = 28; pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/paramedic) +"ckP" = (/obj/machinery/computer/secure_data,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/security/checkpoint/medical) +"ckQ" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27; pixel_y = -10},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/checkpoint/medical) +"ckR" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "ckS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/explab) -"ckT" = (/obj/item/weapon/twohanded/required/kirbyplants{tag = "icon-plant-11"; icon_state = "plant-11"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteyellow"},/area/medical/medbay{name = "Medbay Central"}) -"ckU" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/medical/medbay2{name = "Medbay Storage"}) +"ckT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"ckU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "ckV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "ckW" = (/obj/machinery/autolathe{icon_state = "autolathe"; name = "public autolathe"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "ckX" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) @@ -6000,54 +6001,54 @@ "clu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/starboard) "clv" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "clw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) -"clx" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/plating,/area/maintenance/incinerator) +"clx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "cly" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "clz" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/insulated,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "clA" = (/turf/simulated/wall/r_wall,/area/maintenance/incinerator) "clB" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 2},/turf/simulated/wall/r_wall,/area/maintenance/incinerator) "clC" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/assembly/robotics) "clD" = (/obj/machinery/atmospherics/pipe/simple/insulated{dir = 10},/turf/simulated/wall/r_wall,/area/maintenance/incinerator) -"clE" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/medical/medbay{name = "Medbay Central"}) +"clE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "clF" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/insulated,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/incinerator) "clG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "clH" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/lattice,/turf/space,/area/space) "clI" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "clJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/external{req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"clK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) -"clL" = (/obj/item/trash/pistachios,/obj/structure/closet,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/extinguisher,/obj/item/weapon/storage/belt/utility,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"clM" = (/obj/item/weapon/twohanded/required/kirbyplants{tag = "icon-plant-25"; icon_state = "plant-25"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"clK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"clL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"clM" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/reception) "clN" = (/obj/item/weapon/storage/box,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"clO" = (/obj/structure/closet/crate,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"clO" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "clP" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"clQ" = (/obj/structure/closet/wardrobe/pjs,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/sleeper{name = "Sleepers"}) -"clR" = (/obj/structure/closet/wardrobe/pjs,/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/sleeper{name = "Sleepers"}) +"clQ" = (/obj/structure/girder,/obj/structure/grille,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"clR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "clS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab) -"clT" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/power/apc{dir = 1; name = "Sleeper Room APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/item/clothing/accessory/stethoscope,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/sleeper{name = "Sleepers"}) -"clU" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 23},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/sleeper{name = "Sleepers"}) +"clT" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"clU" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "clV" = (/obj/item/weapon/storage/firstaid/regular{pixel_x = 3; pixel_y = -3},/obj/item/weapon/storage/firstaid/brute{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/brute,/obj/item/weapon/storage/firstaid/brute{pixel_x = -3; pixel_y = -3},/obj/machinery/power/apc{dir = 2; name = "Medbay Storage APC"; pixel_y = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light_switch{pixel_x = -26; pixel_y = 0},/obj/machinery/light/small,/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) -"clW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) -"clX" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/mob/living/simple_animal/bot/cleanbot{name = "Scrubs, MD"; on = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) -"clY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) -"clZ" = (/obj/item/weapon/storage/firstaid/regular{pixel_x = 3; pixel_y = -3},/obj/item/weapon/storage/firstaid/o2{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/o2,/obj/item/weapon/storage/firstaid/o2{pixel_x = -3; pixel_y = -3},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) -"cma" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"cmb" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"cmc" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/item/weapon/reagent_containers/food/drinks/britcup,/turf/simulated/floor/plasteel{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) -"cmd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/medbay{name = "Medbay Central"}) -"cme" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/medbay{name = "Medbay Central"}) -"cmf" = (/obj/structure/sign/directions/medical{pixel_y = -7},/turf/simulated/wall,/area/medical/chemistry) -"cmg" = (/turf/simulated/wall,/area/medical/chemistry) -"cmh" = (/obj/structure/sign/chemistry,/turf/simulated/wall,/area/medical/chemistry) +"clW" = (/obj/item/trash/semki,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"clX" = (/obj/structure/closet/secure_closet/medical3,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) +"clY" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/closet/secure_closet/medical3,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) +"clZ" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) +"cma" = (/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/clothing/accessory/stethoscope,/obj/item/clothing/accessory/stethoscope,/obj/item/weapon/gun/syringe,/obj/structure/table/glass,/obj/item/weapon/gun/syringe,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) +"cmb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/paramedic) +"cmc" = (/obj/structure/closet/paramedic,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/paramedic) +"cmd" = (/obj/structure/closet/secure_closet/paramedic,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/paramedic) +"cme" = (/obj/machinery/computer/crew,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/checkpoint/medical) +"cmf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/checkpoint/medical) +"cmg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/shower{dir = 4; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"cmh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "cmi" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cmj" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/machinery/door/window/northleft{dir = 2; name = "Chemistry Desk"; req_access_txt = "5; 33"},/obj/machinery/door/firedoor,/obj/item/weapon/folder/white,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) -"cmk" = (/obj/structure/sign/greencross,/turf/simulated/wall,/area/medical/chemistry) -"cml" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"cmk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"cml" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "cmm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cmn" = (/obj/structure/sign/science,/turf/simulated/wall/r_wall,/area/toxins/lab) "cmo" = (/turf/simulated/wall/r_wall,/area/toxins/lab) -"cmp" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/toxins/lab) -"cmq" = (/obj/structure/table/reinforced,/obj/item/weapon/pen,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters/preopen{dir = 2; id_tag = "rndshuttersup"; name = "research and development lab shutters"},/obj/machinery/door/window/eastright{dir = 2; name = "Research and Development Desk"; req_access_txt = "7"},/turf/simulated/floor/plating,/area/toxins/lab) +"cmp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"cmq" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "cmr" = (/obj/structure/sign/directions/science{pixel_y = -8},/turf/simulated/wall/r_wall,/area/toxins/lab) -"cms" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cms" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/reception) "cmt" = (/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/plating,/area/maintenance/starboardsolar) "cmu" = (/obj/machinery/power/apc{dir = 8; name = "Security Post - Research Division APC"; pixel_x = -24},/obj/structure/cable/yellow,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/security/checkpoint/science{name = "Security Post - Research Division"}) "cmv" = (/obj/structure/closet/secure_closet/security/science,/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/checkpoint/science{name = "Security Post - Research Division"}) @@ -6074,31 +6075,31 @@ "cmQ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/atmos) "cmR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "cmS" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"cmT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/weapon/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cmT" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "cmU" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cmV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cmW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/weapon/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cmX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cmX" = (/turf/simulated/wall,/area/medical/exam_room) "cmY" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cmZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) -"cna" = (/obj/machinery/door/airlock/maintenance{name = "Medbay Maintenance"; req_access_txt = "5"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/medical/sleeper{name = "Sleepers"}) -"cnb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) -"cnc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) -"cnd" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) -"cne" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) -"cnf" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) -"cng" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Medbay Storage"; req_access_txt = "5"},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/medbay2{name = "Medbay Storage"}) +"cna" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) +"cnb" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Paramedic"; req_access_txt = "66"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/paramedic) +"cnc" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = 24; pixel_y = 24},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/checkpoint/medical) +"cnd" = (/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 28},/obj/machinery/power/apc{dir = 8; name = "Medical Security Checkpoint APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/checkpoint/medical) +"cne" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception) +"cnf" = (/obj/machinery/door/firedoor,/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/security/checkpoint/medical) +"cng" = (/obj/structure/stool/bed/roller,/obj/item/device/radio/intercom{broadcasting = 0; frequency = 1485; listening = 1; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception) "cnh" = (/obj/machinery/light{dir = 1},/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/chem_dispenser,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cni" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Medbay Storage"; req_access_txt = "5"},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/medbay2{name = "Medbay Storage"}) +"cni" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception) "cnj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cnk" = (/obj/structure/sink{pixel_y = 22},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cnl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5"},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/medbay{name = "Medbay Central"}) -"cnm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5"},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/medbay{name = "Medbay Central"}) -"cnn" = (/obj/structure/closet/wardrobe/chemistry_white,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/item/weapon/storage/backpack/satchel_chem,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/chemistry) -"cno" = (/obj/structure/closet/secure_closet/chemical,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/chemistry) +"cnl" = (/obj/structure/stool/bed/roller,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception) +"cnm" = (/obj/machinery/light,/obj/structure/stool/bed/roller,/obj/machinery/camera{c_tag = "Medbay Foyer"; dir = 1; network = list("SS13","Medbay")},/obj/machinery/firealarm{dir = 1; pixel_y = -28},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception) +"cnn" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception) +"cno" = (/obj/item/weapon/twohanded/required/kirbyplants{tag = "icon-plant-11"; icon_state = "plant-11"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception) "cnp" = (/obj/machinery/chem_dispenser,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "cnq" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/effect/landmark/start{name = "Chemist"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) -"cnr" = (/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; pixel_x = 32; pixel_y = 0},/obj/machinery/chem_master{pixel_x = -2},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) +"cnr" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/plating,/area/maintenance/incinerator) "cns" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cnt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cnu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) @@ -6137,34 +6138,34 @@ "cob" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/unary/portables_connector,/turf/simulated/floor/plating,/area/atmos) "coc" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/unary/portables_connector,/turf/simulated/floor/plating,/area/atmos) "cod" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"coe" = (/turf/simulated/wall,/area/medical/surgery) -"cof" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/wall,/area/medical/surgery) -"cog" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/medical/surgery) -"coh" = (/obj/machinery/door/airlock/maintenance{name = "Medbay Maintenance"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/turf/simulated/floor/plating,/area/medical/surgery) -"coi" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) -"coj" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/sleeper{name = "Sleepers"}) -"cok" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/sleeper{name = "Sleepers"}) -"col" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/sleeper{name = "Sleepers"}) -"com" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) -"con" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/sleeper{name = "Sleepers"}) -"coo" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"cop" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"coq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"cor" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"cos" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 28},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) -"cot" = (/obj/machinery/power/apc{dir = 1; name = "Medbay Central APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera{c_tag = "Medbay Hallway Fore"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) -"cou" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"cov" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) -"cow" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Exit Button"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 26},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) -"cox" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"coy" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"coz" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Chemistry Lab"; req_access_txt = "5; 33"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) -"coA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whiteyellow"},/area/medical/chemistry) -"coB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) -"coC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/chem_heater,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) -"coD" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) -"coE" = (/obj/machinery/disposal{pixel_x = 5},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) -"coF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"coe" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cof" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"cog" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"coh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"coi" = (/obj/machinery/bodyscanner,/turf/simulated/floor/plasteel{dir = 9; icon_state = "whiteblue"},/area/medical/exam_room) +"coj" = (/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/medical/exam_room) +"cok" = (/obj/machinery/body_scanconsole,/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Medbay Surgery 1 North"; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/exam_room) +"col" = (/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Medbay Surgery 1 North"; network = list("SS13")},/obj/machinery/body_scanconsole,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/exam_room) +"com" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) +"con" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/mob/living/simple_animal/bot/cleanbot{name = "Scrubs, MD"; on = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) +"coo" = (/turf/simulated/wall,/area/medical/reception) +"cop" = (/obj/item/weapon/storage/firstaid/regular{pixel_x = 3; pixel_y = -3},/obj/item/weapon/storage/firstaid/o2{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/o2,/obj/item/weapon/storage/firstaid/o2{pixel_x = -3; pixel_y = -3},/obj/structure/table/glass,/obj/machinery/light/small,/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) +"coq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) +"cor" = (/obj/machinery/requests_console{announcementConsole = 0; department = "Medbay"; departmentType = 1; name = "Medbay RC"; pixel_x = 0; pixel_y = 30; pixel_z = 0},/obj/structure/table/glass,/obj/item/weapon/storage/toolbox/emergency,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whiteblue"},/area/medical/reception) +"cos" = (/obj/machinery/alarm{pixel_y = 24},/obj/structure/table/glass,/obj/item/roller{pixel_x = 3; pixel_y = 3},/obj/item/roller{pixel_x = -4; pixel_y = 4},/obj/item/roller,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/medical/reception) +"cot" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/security/checkpoint/medical) +"cou" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/security/checkpoint/medical) +"cov" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/reception) +"cow" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/reception) +"cox" = (/obj/structure/table,/obj/machinery/door/window/northright{name = "Medbay Lobby"; req_access_txt = "5"},/obj/item/weapon/folder/white,/obj/item/weapon/pen,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"coy" = (/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 0},/turf/simulated/wall,/area/medical/reception) +"coz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/aft) +"coA" = (/obj/structure/table/reinforced,/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters/preopen{dir = 2; id_tag = "rndshuttersup"; name = "research and development lab shutters"},/obj/machinery/door/window/eastright{dir = 2; name = "Research and Development Desk"; req_access_txt = "7"},/turf/simulated/floor/plating,/area/toxins/lab) +"coB" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters/preopen{dir = 2; id_tag = "rndshuttersup"; name = "research and development lab shutters"},/turf/simulated/floor/plating,/area/toxins/lab) +"coC" = (/turf/simulated/wall,/area/medical/surgery1) +"coD" = (/obj/structure/girder,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"coE" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/exam_room) +"coF" = (/obj/machinery/door_control{id = "acutesep"; name = "Acute Separation Shutters Control"; pixel_x = 23; pixel_y = 23},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/exam_room) "coG" = (/obj/machinery/r_n_d/destructive_analyzer,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/lab) "coH" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/lab) "coI" = (/obj/machinery/r_n_d/protolathe,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/lab) @@ -6186,7 +6187,7 @@ "coY" = (/obj/machinery/r_n_d/experimentor,/turf/simulated/floor/engine,/area/toxins/explab) "coZ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/turf/simulated/floor/engine,/area/toxins/explab) "cpa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/engine,/area/toxins/explab) -"cpb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table/glass,/obj/item/weapon/folder/white{pixel_y = 4},/obj/item/weapon/paper_bin{pixel_x = -1; pixel_y = 8},/obj/item/weapon/pen,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurplecorner"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cpb" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/exam_room) "cpc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cpd" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table/glass,/obj/item/device/slime_scanner,/obj/item/device/slime_scanner,/turf/simulated/floor/plasteel{tag = "icon-warnwhitecorner"; icon_state = "warnwhitecorner"; dir = 2},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cpe" = (/obj/machinery/reagentgrinder,/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) @@ -6210,35 +6211,35 @@ "cpw" = (/obj/structure/rack,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka{pixel_x = 3; pixel_y = 2},/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth{pixel_x = -4; pixel_y = 3},/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cpx" = (/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 4; pixel_y = 5},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 6; pixel_y = -1},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -4; pixel_y = 6},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -5; pixel_y = 2},/obj/structure/table/woodentable,/obj/machinery/light_construct/small{dir = 1},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cpy" = (/obj/structure/stool,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) -"cpz" = (/obj/machinery/slot_machine{pixel_y = 2},/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cpz" = (/obj/machinery/door_control{id = "acutesep"; name = "Acute Separation Shutters Control"; pixel_x = -23; pixel_y = 23},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/exam_room) "cpA" = (/obj/machinery/computer/arcade,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cpB" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/surgery) -"cpC" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/surgery) -"cpD" = (/obj/item/weapon/cigbutt,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/surgery) -"cpE" = (/obj/structure/stool/bed/chair,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/surgery) -"cpF" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/surgery) -"cpG" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/surgery) -"cpH" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/surgery) -"cpI" = (/obj/structure/stool/bed/chair,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/surgery) -"cpJ" = (/obj/structure/stool/bed/roller,/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = -30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/camera{c_tag = "Medbay Sleepers"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) -"cpK" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitebluecorner"},/area/medical/sleeper{name = "Sleepers"}) -"cpL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/sleeper{name = "Sleepers"}) -"cpM" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitebluecorner"},/area/medical/sleeper{name = "Sleepers"}) -"cpN" = (/obj/structure/stool/bed/roller,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) -"cpO" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/sleeper{name = "Sleepers"}) -"cpP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"cpQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cpR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cpS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cpT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cpU" = (/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/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cpV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cpW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteyellowcorner"},/area/medical/medbay{name = "Medbay Central"}) -"cpX" = (/obj/machinery/smartfridge/medbay,/turf/simulated/wall,/area/medical/chemistry) -"cpY" = (/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/obj/structure/table/glass,/obj/item/weapon/reagent_containers/glass/bottle/epinephrine,/obj/item/weapon/reagent_containers/glass/bottle/charcoal{pixel_x = 7; pixel_y = 4},/obj/item/weapon/storage/pill_bottle/charcoal{pixel_x = 3},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) +"cpB" = (/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "acutesep"; name = "Acute Separation Privacy Shutters"; opacity = 0},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/exam_room) +"cpC" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 25; pixel_y = 0; req_access_txt = "0"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/exam_room) +"cpD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Medbay Storage"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/medbay2{name = "Medbay Storage"}) +"cpE" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/medical/medbay2{name = "Medbay Storage"}) +"cpF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"cpG" = (/obj/structure/stool/bed/roller,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/reception) +"cpH" = (/obj/structure/stool/bed/roller,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/reception) +"cpI" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/security/checkpoint/medical) +"cpJ" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass_security{name = "Medbay Security Post"; req_access_txt = "63"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/checkpoint/medical) +"cpK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5"},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/reception) +"cpL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5"},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/reception) +"cpM" = (/obj/structure/table,/obj/item/device/radio/intercom/department/medbay{pixel_y = 4},/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = 4; pixel_y = -4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) +"cpN" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6; level = 1},/obj/machinery/computer/guestpass,/obj/machinery/camera{c_tag = "Medbay Surgery 1 North"; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whiteblue"},/area/medical/reception) +"cpO" = (/obj/structure/table,/obj/machinery/computer/crew,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) +"cpP" = (/obj/structure/stool/bed/chair/office/light{dir = 1; pixel_y = 3},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) +"cpQ" = (/obj/structure/table,/obj/item/device/flashlight/lamp/green,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/medical/reception) +"cpR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/aft) +"cpS" = (/obj/machinery/slot_machine{pixel_y = 2},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cpT" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"cpU" = (/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"cpV" = (/obj/item/weapon/surgicaldrill,/obj/item/stack/medical/bruise_pack/advanced,/obj/structure/table/glass,/obj/machinery/camera{c_tag = "Medbay Surgery 1 North"; network = list("SS13","Medbay")},/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"cpW" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"cpX" = (/obj/item/weapon/hemostat,/obj/item/weapon/scalpel,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"cpY" = (/obj/item/weapon/bonegel,/obj/item/weapon/bonesetter,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) "cpZ" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) -"cqa" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) -"cqb" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) +"cqa" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -25; pixel_y = 0; req_access_txt = "0"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/exam_room) +"cqb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/exam_room) "cqc" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #1"; req_access_txt = "55"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "xenobio3"; layer = 2.5; name = "containment blast door"; opacity = 0},/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cqd" = (/obj/machinery/computer/rdconsole/core,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/toxins/lab) "cqe" = (/turf/simulated/floor/plasteel{icon_state = "warning"},/area/toxins/lab) @@ -6292,37 +6293,37 @@ "cra" = (/turf/simulated/floor/wood{tag = "icon-wood-broken7"; icon_state = "wood-broken7"},/area/maintenance/aft{name = "Aft Maintenance"}) "crb" = (/obj/item/weapon/reagent_containers/glass/rag,/obj/structure/table/woodentable,/turf/simulated/floor/wood{tag = "icon-wood-broken4"; icon_state = "wood-broken4"},/area/maintenance/aft{name = "Aft Maintenance"}) "crc" = (/turf/simulated/floor/wood{tag = "icon-wood-broken5"; icon_state = "wood-broken5"},/area/maintenance/aft{name = "Aft Maintenance"}) -"crd" = (/obj/structure/stool,/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cre" = (/obj/structure/stool/bed/chair,/obj/structure/sign/nosmoking_2{pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/surgery) -"crf" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/surgery) -"crg" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/surgery) -"crh" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/surgery) -"cri" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/surgery) -"crj" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Medbay Desk"; req_access_txt = "5"},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/medbay{name = "Medbay Central"}) -"crk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/surgery) -"crl" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/surgery) -"crm" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/sign/nosmoking_2{pixel_x = 28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/surgery) -"crn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) -"cro" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/sleeper,/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/sleeper{name = "Sleepers"}) -"crp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) +"crd" = (/obj/machinery/sleeper{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/exam_room) +"cre" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/exam_room) +"crf" = (/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id_tag = "acutesep"; name = "Acute Separation Privacy Shutters"; opacity = 0},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/exam_room) +"crg" = (/obj/machinery/sleeper{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/exam_room) +"crh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whiteblue"},/area/medical/reception) +"cri" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "acute1"; name = "Acute 1 Privacy Shutters"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/exam_room) +"crj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) +"crk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) +"crl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 28},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) +"crm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) +"crn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"cro" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"},/area/medical/reception) +"crp" = (/obj/machinery/power/apc{dir = 1; name = "Medbay Central APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera{c_tag = "Medbay Hallway Fore"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) "crq" = (/obj/machinery/door_control{id = "telelab"; name = "Test Chamber Blast Doors"; pixel_x = 0; pixel_y = 25},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/bottle/epinephrine{pixel_x = 7; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/bottle/charcoal{pixel_x = -2; pixel_y = -1},/obj/item/weapon/reagent_containers/dropper,/obj/item/stack/medical/bruise_pack/advanced,/obj/item/stack/medical/ointment/advanced,/obj/item/device/healthanalyzer,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/explab) "crr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/radio/beacon,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "crs" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "xenobio2"; layer = 2.5; name = "containment blast door"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"crt" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) -"cru" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) +"crt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/reception) +"cru" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) "crv" = (/obj/structure/closet/firecloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"crw" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"crx" = (/obj/machinery/vending/medical,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) -"cry" = (/obj/structure/stool/bed/roller,/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"crz" = (/obj/machinery/light,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) -"crA" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteyellowcorner"},/area/medical/medbay{name = "Medbay Central"}) -"crB" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"}) -"crC" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/window/eastright{name = "Chemistry Desk"; req_access_txt = "5; 33"},/obj/machinery/door/window/eastright{dir = 8; name = "Chemistry Desk"; req_access_txt = "5"},/obj/item/weapon/reagent_containers/glass/bottle/morphine,/obj/item/weapon/reagent_containers/glass/bottle/toxin{pixel_x = 5; pixel_y = 4},/obj/item/weapon/reagent_containers/glass/bottle/epinephrine{pixel_x = 8},/obj/item/weapon/reagent_containers/glass/bottle/charcoal{pixel_x = -5; pixel_y = 0},/obj/item/weapon/reagent_containers/syringe/epinephrine,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) -"crD" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/effect/landmark/start{name = "Chemist"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) -"crE" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark/start{name = "Chemist"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) +"crw" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) +"crx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) +"cry" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Exit Button"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 26},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) +"crz" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/medical/reception) +"crA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/medical/reception) +"crB" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/reception) +"crC" = (/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/reception) +"crD" = (/obj/structure/table,/obj/item/device/radio/intercom/department/medbay{pixel_y = 4},/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = 4; pixel_y = -4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/reception) +"crE" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) "crF" = (/obj/effect/landmark{name = "blobstart"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"crG" = (/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/dropper,/obj/structure/extinguisher_cabinet{pixel_x = 24; pixel_y = 0},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) -"crH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"crG" = (/obj/structure/closet/secure_closet/medical3,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"crH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) "crI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/camera{c_tag = "Aft Primary Hallway - Fore"; dir = 8; network = list("SS13")},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "crJ" = (/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,/obj/structure/table,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/lab) "crK" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/toxins/lab) @@ -6336,7 +6337,7 @@ "crS" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "crT" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 2; location = "Research Division"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/maintenance/aft{name = "Aft Maintenance"}) "crU" = (/turf/simulated/wall/r_wall,/area/maintenance/aft{name = "Aft Maintenance"}) -"crV" = (/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/weapon/hand_labeler,/obj/structure/table/glass,/obj/item/weapon/folder/white{pixel_y = 2},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) +"crV" = (/obj/item/weapon/retractor,/obj/item/weapon/cautery,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) "crW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atm{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "crX" = (/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/structure/table/glass,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "crY" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) @@ -6369,23 +6370,23 @@ "csz" = (/obj/machinery/door/airlock/maintenance{name = "Experimentation Lab Maintenance"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/toxins/explab) "csA" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "xenobio7"; layer = 2.5; name = "containment blast door"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "csB" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "xenobio1"; layer = 2.5; name = "containment blast door"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"csC" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Observation"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel,/area/medical/surgery) +"csC" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24; shock_proof = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/exam_room) "csD" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "xenobio6"; layer = 2.5; name = "containment blast door"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"csE" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/sleeper{name = "Sleepers"}) +"csE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/exam_room) "csF" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #5"; req_access_txt = "55"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "xenobio1"; layer = 2.5; name = "containment blast door"; opacity = 0},/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"csG" = (/obj/machinery/door/firedoor,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"csH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"csI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) +"csG" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/exam_room) +"csH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/exam_room) +"csI" = (/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id_tag = "acutesep"; name = "Acute Separation Privacy Shutters"; opacity = 0},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/exam_room) "csJ" = (/turf/simulated/wall,/area/medical/cmo) "csK" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #6"; req_access_txt = "55"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "xenobio6"; layer = 2.5; name = "containment blast door"; opacity = 0},/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "csL" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "xenobio1"; layer = 2.5; name = "containment blast door"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "csM" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "xenobio6"; layer = 2.5; name = "containment blast door"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"csN" = (/obj/machinery/door/airlock/maintenance{name = "Medbay Maintenance"; req_access_txt = "5"},/turf/simulated/floor/plating,/area/medical/medbay{name = "Medbay Central"}) -"csO" = (/obj/machinery/reagentgrinder,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/requests_console{department = "Chemistry"; departmentType = 2; pixel_x = -30; pixel_y = 0},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) -"csP" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) -"csQ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) +"csN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/exam_room) +"csO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/reception) +"csP" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "acute1"; name = "Acute 1 Privacy Shutters"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/exam_room) +"csQ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "csR" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Xenolab"; layer = 2.5; name = "test chamber blast door"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"csS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/sign/chemistry{pixel_x = -32},/turf/simulated/floor/plasteel{dir = 8; icon_state = "yellowcorner"},/area/hallway/primary/aft) +"csS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "csT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/sign/science{pixel_x = 32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/aft) "csU" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/toxins/lab) "csV" = (/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 6},/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) @@ -6399,7 +6400,7 @@ "ctd" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Xenolab"; layer = 2.5; name = "test chamber blast door"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cte" = (/turf/simulated/wall,/area/toxins/explab) "ctf" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/explab) -"ctg" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 6},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/explab) +"ctg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "cth" = (/obj/structure/table/reinforced,/obj/item/weapon/hand_labeler,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/device/taperecorder{pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/explab) "cti" = (/obj/machinery/computer/rdconsole/experiment,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/explab) "ctj" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/book/manual/experimentor,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/explab) @@ -6409,7 +6410,7 @@ "ctn" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "cto" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "ctp" = (/obj/structure/rack,/obj/item/clothing/under/color/white,/obj/item/clothing/head/soft/mime,/obj/item/clothing/under/color/white,/obj/item/clothing/head/soft/mime,/obj/item/clothing/mask/surgical,/obj/item/clothing/mask/surgical,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"ctq" = (/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"}) +"ctq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "ctr" = (/obj/machinery/chem_heater,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cts" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/space,/area/space) "ctt" = (/obj/structure/disposaloutlet{dir = 2},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plating/airless,/area/space) @@ -6419,43 +6420,43 @@ "ctx" = (/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cty" = (/turf/simulated/floor/wood{tag = "icon-wood-broken"; icon_state = "wood-broken"},/area/maintenance/aft{name = "Aft Maintenance"}) "ctz" = (/obj/structure/mineral_door/wood{name = "The Gobbetting Barmaid"},/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) -"ctA" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"ctB" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) -"ctC" = (/obj/structure/table,/obj/item/weapon/scalpel{pixel_y = 12},/obj/item/weapon/circular_saw,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/medical/surgery) -"ctD" = (/obj/structure/table,/obj/item/weapon/cautery{pixel_x = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/weapon/razor{pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/medical/surgery) +"ctA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"ctB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"ctC" = (/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/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"ctD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "ctE" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/atmospherics/unary/portables_connector{dir = 1},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) -"ctF" = (/obj/machinery/computer/med_data,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/surgery) -"ctG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/surgery) -"ctH" = (/obj/structure/table/reinforced,/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/obj/structure/bedsheetbin{pixel_x = 2},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/surgery) -"ctI" = (/obj/machinery/power/apc{dir = 1; name = "Cryogenics APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -2; pixel_y = 9},/obj/machinery/light/small{dir = 8},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 5; pixel_y = 9},/obj/structure/table/glass,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -3; pixel_y = 1},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 6; pixel_y = 2},/obj/item/weapon/reagent_containers/syringe/epinephrine{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/cryo) -"ctJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/obj/structure/closet/secure_closet/medical1{pixel_x = -3},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) -"ctK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/medical/cryo) +"ctF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"ctG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"ctH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"ctI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"ctJ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Medical Reception"; req_access_txt = "5"},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/reception) +"ctK" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/reception) "ctL" = (/obj/machinery/atmospherics/unary/cryo_cell{layer = 3.3},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/medical/cryo) -"ctM" = (/obj/machinery/atmospherics/unary/cryo_cell,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/medical/cryo) +"ctM" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/reception) "ctN" = (/obj/machinery/door/window/southleft{dir = 2; name = "Maximum Security Test Chamber"; req_access_txt = "55"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Xenolab"; layer = 2.5; name = "test chamber blast door"; opacity = 0},/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"ctO" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) -"ctP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"ctQ" = (/obj/structure/filingcabinet/filingcabinet,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"ctR" = (/obj/item/weapon/cartridge/medical{pixel_x = -2; pixel_y = 6},/obj/item/weapon/cartridge/medical{pixel_x = 6; pixel_y = 3},/obj/item/weapon/cartridge/medical,/obj/item/weapon/cartridge/chemistry{pixel_y = 2},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) +"ctO" = (/obj/structure/table,/obj/machinery/door/window/eastright{name = "Medical Reception"; req_access_txt = "5"},/obj/item/weapon/folder/white,/obj/item/weapon/pen,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"ctP" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/reception) +"ctQ" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"ctR" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) "ctS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/item/weapon/storage/box/lights/mixed,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) -"ctT" = (/obj/item/weapon/folder/white,/obj/item/weapon/stamp/cmo,/obj/item/clothing/glasses/hud/health,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) +"ctT" = (/obj/structure/closet/crate/freezer,/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/device/radio/intercom{frequency = 1459; name = "station intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) "ctU" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Xenolab"; layer = 2.5; name = "test chamber blast door"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"ctV" = (/obj/item/clothing/glasses/science{pixel_x = 2; pixel_y = 4},/obj/item/clothing/glasses/science,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/structure/table/glass,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/machinery/camera{c_tag = "Chemistry"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) -"ctW" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) -"ctX" = (/obj/machinery/disposal{pixel_x = 5},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) -"ctY" = (/obj/machinery/chem_dispenser,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) -"ctZ" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 6},/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellowfull"; tag = "icon-whitehall (WEST)"},/area/hallway/primary/aft) -"cua" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "yellow"},/area/hallway/primary/aft) +"ctV" = (/obj/machinery/optable,/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"ctW" = (/obj/machinery/computer/operating,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"ctX" = (/obj/item/weapon/circular_saw,/obj/item/weapon/FixOVein,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"ctY" = (/obj/machinery/door_control{id = "acute2"; name = "Acute 2 Shutters Control"; pixel_x = -23; pixel_y = 4},/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteblue"},/area/medical/exam_room) +"ctZ" = (/obj/structure/stool/bed,/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteblue"},/area/medical/exam_room) +"cua" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/exam_room) "cub" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cuc" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 4; icon_state = "purple"},/area/hallway/primary/aft) "cud" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "purplefull"},/area/hallway/primary/aft) -"cue" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/toxins/lab) +"cue" = (/obj/structure/stool/bed,/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteblue"},/area/medical/exam_room) "cuf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/toxins/lab) "cug" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "cuh" = (/obj/structure/disposalpipe/segment,/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "cui" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"},/area/toxins/lab) "cuj" = (/obj/structure/table,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/toxins/lab) -"cuk" = (/obj/machinery/computer/security/telescreen{desc = "Used for monitoring medbay to ensure patient safety."; dir = 8; name = "Medbay Monitor"; network = list("Medbay"); pixel_x = 29; pixel_y = 0},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = -29},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/structure/table/glass,/obj/item/weapon/stamp/cmo,/obj/item/key/ambulance{name = "spare ambulance key"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) +"cuk" = (/obj/machinery/door_control{id = "acute1"; name = "Acute One Shutters Control"; pixel_x = 23; pixel_y = 4},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteblue"},/area/medical/exam_room) "cul" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cum" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cun" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) @@ -6476,42 +6477,42 @@ "cuC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab) "cuD" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/explab) "cuE" = (/obj/structure/girder,/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cuF" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 0; pixel_y = 6},/obj/item/weapon/pen,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cuF" = (/obj/machinery/vending/medical,/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteblue"},/area/medical/reception) "cuG" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/empty{pixel_x = -3; pixel_y = -3},/obj/item/weapon/reagent_containers/blood/empty{pixel_x = -3; pixel_y = -3},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cuH" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cuI" = (/obj/structure/stool/bed,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cuJ" = (/obj/structure/mineral_door/wood{name = "The Gobbetting Barmaid"},/turf/simulated/floor/wood{tag = "icon-wood-broken6"; icon_state = "wood-broken6"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cuK" = (/obj/structure/table,/obj/item/clothing/gloves/color/latex,/obj/item/clothing/mask/surgical,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/surgery) -"cuL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cuM" = (/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cuN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cuO" = (/obj/machinery/power/apc{dir = 4; name = "Surgery APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor/plasteel{tag = "icon-whitehall (WEST)"; icon_state = "whitehall"; dir = 8},/area/medical/surgery) -"cuP" = (/obj/structure/stool/bed/roller,/obj/machinery/light/small{dir = 8},/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cuQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cuR" = (/obj/structure/stool/bed,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/weapon/bedsheet/medical,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cuS" = (/obj/vehicle/ambulance,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cuT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/cryo) -"cuU" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) -"cuV" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/medical/cryo) -"cuW" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 2},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel,/area/medical/cryo) -"cuX" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/medical/cryo) -"cuY" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/cryo) -"cuZ" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"cva" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cvb" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cvc" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/effect/landmark/start{name = "Chief Medical Officer"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cvd" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/mob/living/simple_animal/pet/cat/Runtime,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cve" = (/obj/machinery/power/apc{dir = 4; name = "CMO's Office APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/camera{c_tag = "CMO's Office"; dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cvf" = (/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) -"cvg" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) -"cvh" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) -"cvi" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Chemist"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) -"cvj" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/machinery/door/firedoor,/obj/machinery/door/window/eastright{dir = 8; name = "Chemistry Desk"; req_access_txt = "5; 33"},/obj/item/weapon/folder/white,/obj/item/weapon/pen,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) -"cvk" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellowfull"; tag = "icon-whitehall (WEST)"},/area/hallway/primary/aft) -"cvl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "yellow"},/area/hallway/primary/aft) +"cuK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"cuL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitebluecorner"},/area/medical/reception) +"cuM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 3; icon_state = "whitebluecorner"},/area/medical/reception) +"cuN" = (/obj/structure/sign/chemistry{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception) +"cuO" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception) +"cuP" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception) +"cuQ" = (/obj/machinery/light,/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Exit Button"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -26},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception) +"cuR" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/medical/reception) +"cuS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteblue"},/area/medical/reception) +"cuT" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/reception) +"cuU" = (/obj/structure/table,/obj/machinery/computer/crew,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/reception) +"cuV" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cuW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"cuX" = (/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"cuY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"cuZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"cva" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 12; pixel_y = 2},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"cvb" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"cvc" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id_tag = "acute2"; name = "Acute 2 Privacy Shutters"; opacity = 0},/obj/machinery/door/airlock/medical{name = "Acute Treatment 2"; req_access_txt = "5"},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/exam_room) +"cvd" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "acute2"; name = "Acute 2 Privacy Shutters"; opacity = 0},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/exam_room) +"cve" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "acute1"; name = "Acute 1 Privacy Shutters"; opacity = 0},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/exam_room) +"cvf" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Acute Treatment 1"; req_access_txt = "5"},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/exam_room) +"cvg" = (/obj/machinery/status_display,/turf/simulated/wall,/area/medical/medbay3) +"cvh" = (/obj/machinery/door/firedoor,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) +"cvi" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) +"cvj" = (/turf/simulated/wall,/area/medical/chemistry) +"cvk" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) +"cvl" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "7;12;47"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/maintenance/aft{name = "Aft Maintenance"}) "cvm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "purple"},/area/hallway/primary/aft) "cvn" = (/turf/simulated/floor/plasteel{icon_state = "purplefull"},/area/hallway/primary/aft) -"cvo" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/door/firedoor,/obj/item/weapon/pen,/obj/machinery/door/poddoor/shutters/preopen{dir = 8; id_tag = "rndshutters"; name = "research and development lab shutters"},/obj/machinery/door/window/eastright{dir = 4; name = "Research and Development Desk"; req_access_txt = "7"},/turf/simulated/floor/plating,/area/toxins/lab) +"cvo" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/reception) "cvp" = (/obj/effect/landmark/start{name = "Scientist"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/toxins/lab) "cvq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "cvr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) @@ -6534,51 +6535,51 @@ "cvI" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cvJ" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/research{name = "Experimentation Lab"; req_access_txt = "8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/explab) "cvK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/toxins/explab) -"cvL" = (/obj/structure/stool/bed/amb_trolley,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cvM" = (/obj/structure/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/hardsuit/medical,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/medical,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cvN" = (/obj/effect/landmark/start{name = "Paramedic"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cvO" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/machinery/camera{c_tag = "Medbay Recovery Room"; dir = 1; network = list("SS13","Medbay")},/obj/structure/closet/paramedic,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) +"cvL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/reception) +"cvM" = (/obj/structure/table,/obj/machinery/computer/crew,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception) +"cvN" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteblue"},/area/medical/reception) +"cvO" = (/obj/structure/table,/obj/item/device/radio/intercom/department/medbay{pixel_y = 4},/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = 4; pixel_y = -4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception) "cvP" = (/turf/space,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "cvQ" = (/turf/space,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/airless/catwalk,/area/space) -"cvR" = (/obj/structure/table,/obj/machinery/power/apc{dir = 4; name = "Morgue APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/item/weapon/folder/white,/obj/item/clothing/gloves/color/latex,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/weapon/autopsy_scanner,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cvR" = (/obj/structure/stool/bed/chair/office/light,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception) "cvS" = (/obj/structure/rack,/obj/item/weapon/crowbar/red,/obj/machinery/light_switch{pixel_x = 0; pixel_y = 26},/obj/item/weapon/wrench,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/item/weapon/restraints/handcuffs/cable/zipties,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitegreen"},/area/medical/virology) "cvT" = (/obj/structure/stool/bed/roller,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "cvU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/aft{name = "Aft Maintenance"}) "cvV" = (/obj/structure/barricade/wooden,/obj/structure/girder,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cvW" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cvX" = (/obj/effect/decal/cleanable/blood/gibs/limb,/obj/structure/rack,/obj/item/weapon/storage/firstaid/regular{pixel_x = 0; pixel_y = 0},/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/ointment,/obj/item/clothing/glasses/hud/health,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cvY" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"cvY" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cvZ" = (/obj/structure/stool,/turf/simulated/floor/wood{tag = "icon-wood-broken7"; icon_state = "wood-broken7"},/area/maintenance/aft{name = "Aft Maintenance"}) "cwa" = (/turf/simulated/floor/wood{tag = "icon-wood-broken6"; icon_state = "wood-broken6"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cwb" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) -"cwc" = (/obj/machinery/door/airlock/maintenance{name = "Surgery Maintenance"; req_access_txt = "45"},/turf/simulated/floor/plating,/area/medical/surgery) -"cwd" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cwe" = (/obj/machinery/optable,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cwf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cwg" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre"; req_access_txt = "45"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cwh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cwi" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/effect/landmark/start{name = "Medical Doctor"},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cwj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cwk" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = ""; name = "Surgery Observation"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cwl" = (/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/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/cryo) -"cwm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) -"cwn" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/medical/cryo) -"cwo" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/medical/cryo) -"cwp" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/medical/cryo) -"cwq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/cryo) -"cwr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"cws" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cwt" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "7;12;47"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cwu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cwv" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cww" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cwx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cwy" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{name = "CMO Maintenance"; req_access_txt = "40"},/turf/simulated/floor/plating,/area/medical/cmo) -"cwz" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) -"cwA" = (/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/weapon/screwdriver{pixel_x = -2; pixel_y = 6},/obj/machinery/power/apc{dir = 8; name = "Chemistry APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/item/device/radio/headset/headset_med,/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteyellow"},/area/medical/chemistry) -"cwB" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) -"cwC" = (/obj/machinery/chem_heater{pixel_x = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) -"cwD" = (/obj/machinery/chem_master{pixel_x = -2},/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; dir = 1; name = "requests board"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) +"cwb" = (/obj/structure/table,/obj/item/device/flashlight/lamp/green,/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteblue"},/area/medical/reception) +"cwc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/aft) +"cwd" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 6},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/explab) +"cwe" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"cwf" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"cwg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"cwh" = (/obj/machinery/door_control{id = "surgeryobs2"; name = "Privacy Shutters Control"; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"cwi" = (/turf/simulated/floor/plasteel{dir = 9; icon_state = "whiteblue"},/area/medical/medbay3) +"cwj" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay3) +"cwk" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay3) +"cwl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay3) +"cwm" = (/obj/machinery/camera{c_tag = "Medbay Hallway Fore"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay3) +"cwn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) +"cwo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay3) +"cwp" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/medbay3) +"cwq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) +"cwr" = (/obj/machinery/chem_master{pixel_x = -2},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) +"cws" = (/obj/structure/closet/secure_closet/chemical,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/chemistry) +"cwt" = (/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cwu" = (/obj/structure/closet/wardrobe/chemistry_white,/obj/item/weapon/storage/backpack/satchel_chem,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/chemistry) +"cwv" = (/obj/structure/sign/chemistry{pixel_x = -32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/reception) +"cww" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/reception) +"cwx" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/door/window/northleft{dir = 2; icon_state = "left"; name = "Medbay Reception"; req_access_txt = "5"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"cwy" = (/obj/machinery/status_display,/turf/simulated/wall,/area/medical/reception) +"cwz" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/aft) +"cwA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters/preopen{dir = 8; id_tag = "rndshutters"; name = "research and development lab shutters"},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/toxins/lab) +"cwB" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 0; pixel_y = 6},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cwC" = (/obj/structure/table,/obj/item/weapon/reagent_containers/blood/AMinus,/obj/item/weapon/reagent_containers/blood/APlus,/obj/item/weapon/reagent_containers/blood/BMinus,/obj/item/weapon/reagent_containers/blood/BPlus,/obj/item/weapon/reagent_containers/blood/OPlus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/machinery/alarm{dir = 1; pixel_y = -24},/obj/machinery/light,/obj/machinery/camera{c_tag = "Locker Room Port"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"cwD" = (/obj/structure/table,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/masks,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; name = "Surgery Cleaner"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light_switch{pixel_x = 5; pixel_y = -27},/obj/machinery/holosign_switch{id = "surgery2"; pixel_x = -5; pixel_y = -27},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) "cwE" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 6},/turf/simulated/floor/plasteel{icon_state = "purplefull"},/area/hallway/primary/aft) "cwF" = (/obj/machinery/cell_charger,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/power/apc{dir = 2; name = "Research Lab APC"; pixel_x = 0; pixel_y = -26},/obj/structure/cable/yellow,/obj/machinery/door_control{dir = 2; id = "rndshutters"; name = "Shutters Control Button"; pixel_x = -24; pixel_y = -25},/obj/structure/table,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/lab) "cwG" = (/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/structure/table,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/lab) @@ -6613,30 +6614,30 @@ "cxj" = (/obj/structure/stool/bed,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cxk" = (/obj/item/toy/cards/deck,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cxl" = (/turf/simulated/floor/wood{tag = "icon-wood-broken4"; icon_state = "wood-broken4"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cxm" = (/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/reagent_containers/food/drinks/cans/beer{pixel_x = -3; pixel_y = 2},/obj/structure/table/woodentable,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) -"cxn" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cxo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cxp" = (/obj/machinery/computer/operating,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cxq" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cxr" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cxs" = (/obj/structure/stool/bed/roller,/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cxt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cxu" = (/obj/machinery/light_switch{pixel_x = 26; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cxv" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/cryo) -"cxw" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/machinery/camera{c_tag = "Medbay Cryo"; dir = 1; network = list("SS13","Medbay")},/obj/item/weapon/screwdriver{pixel_y = 6},/obj/item/clothing/accessory/stethoscope,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) -"cxx" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 1},/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/obj/machinery/light,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/cryo) -"cxy" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1; name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/medical/cryo) +"cxm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"cxn" = (/obj/machinery/body_scanconsole,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"cxo" = (/obj/machinery/bodyscanner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"cxp" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) +"cxq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3) +"cxr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6; level = 1},/turf/simulated/floor/plasteel{dir = 3; icon_state = "whitebluecorner"},/area/medical/medbay3) +"cxs" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3) +"cxt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3) +"cxu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/obj/machinery/light,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3) +"cxv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) +"cxw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay3) +"cxx" = (/obj/machinery/vending/cola,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/medbay3) +"cxy" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) "cxz" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1; name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/light_switch{pixel_x = 0; pixel_y = -24},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/medical/cryo) -"cxA" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) -"cxB" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) -"cxC" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cxD" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cxE" = (/obj/structure/table/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/weapon/storage/secure/briefcase,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cxF" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cxG" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/keycard_auth{pixel_x = 26; pixel_y = -7},/obj/machinery/computer/med_data/laptop,/obj/structure/table/glass,/obj/machinery/door_control{id = "cmoprivacy"; name = "Privacy Shutters Control"; pixel_x = 26; pixel_y = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cxH" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cxI" = (/obj/machinery/door/airlock/maintenance{name = "Chemistry Lab Maintenance"; req_access_txt = "5; 33"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating,/area/medical/chemistry) -"cxJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/aft) +"cxA" = (/obj/machinery/chem_heater,/obj/machinery/camera{c_tag = "Chemistry"; dir = 4; network = list("SS13","Medbay")},/obj/structure/reagent_dispensers/fueltank/chem{pixel_x = -30},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) +"cxB" = (/obj/machinery/disposal{pixel_x = 0},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) +"cxC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) +"cxD" = (/obj/machinery/smartfridge/medbay,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/chemistry) +"cxE" = (/obj/structure/stool/bed/roller,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) +"cxF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) +"cxG" = (/obj/structure/stool/bed/roller,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) +"cxH" = (/obj/structure/stool/bed/roller,/obj/machinery/camera{c_tag = "Medbay Surgery 1 North"; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) +"cxI" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) +"cxJ" = (/obj/item/weapon/twohanded/required/kirbyplants{tag = "icon-plant-11"; icon_state = "plant-11"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) "cxK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cxL" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Aft Hallway APC"; pixel_x = 24; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "purplecorner"},/area/hallway/primary/aft) "cxM" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 1; location = "Research and Development"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/toxins/lab) @@ -6644,9 +6645,9 @@ "cxO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "cxP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cxQ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"cxR" = (/obj/machinery/door/airlock/research{name = "Research Shuttle Dock"; req_access_txt = "47"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"cxR" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/door/firedoor,/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/machinery/door/poddoor/shutters/preopen{dir = 8; id_tag = "rndshutters"; name = "research and development lab shutters"},/obj/machinery/door/window/eastright{dir = 4; name = "Research and Development Desk"; req_access_txt = "7"},/turf/simulated/floor/plating,/area/toxins/lab) "cxS" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/preopen{id_tag = "researchrangeshutters"; name = "blast door"},/turf/simulated/floor/plating,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) -"cxT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) +"cxT" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 8},/turf/simulated/floor/plating/airless,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cxU" = (/turf/simulated/wall,/area/crew_quarters/hor) "cxV" = (/turf/simulated/wall/r_wall,/area/toxins/storage) "cxW" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/toxins/storage) @@ -6662,34 +6663,32 @@ "cyg" = (/obj/machinery/iv_drip,/obj/item/roller,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cyh" = (/obj/structure/rack,/obj/item/weapon/tank/anesthetic,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cyi" = (/obj/machinery/light_construct/small,/obj/item/toy/cards/deck,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) -"cyj" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cyj" = (/obj/item/weapon/poster/random_contraband,/obj/item/weapon/reagent_containers/food/drinks/cans/beer{pixel_x = -3; pixel_y = 2},/obj/structure/table/woodentable,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "cyk" = (/obj/item/weapon/dice/d20,/obj/item/weapon/dice,/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "cyl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/maintenance/aft{name = "Aft Maintenance"}) -"cym" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cym" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cyn" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 8},/turf/simulated/floor/plating/airless,/area/space) -"cyo" = (/obj/structure/table,/obj/item/weapon/scalpel{pixel_y = 12},/obj/item/weapon/circular_saw,/obj/structure/window/reinforced/polarized{tag = "icon-rwindow (NORTH)"; icon_state = "rwindow"; dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cyp" = (/obj/structure/table,/obj/item/weapon/cautery{pixel_x = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/weapon/razor{pixel_y = 5},/obj/structure/window/reinforced/polarized{tag = "icon-rwindow (NORTH)"; icon_state = "rwindow"; dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cyq" = (/obj/machinery/light{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) -"cyr" = (/obj/structure/stool/bed/roller,/obj/machinery/light/small{dir = 8},/obj/structure/sign/nosmoking_2{pixel_x = -28},/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cys" = (/obj/machinery/light/small{dir = 4; pixel_y = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cyt" = (/turf/simulated/wall,/area/medical/cryo) -"cyu" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera{c_tag = "Medbay Hallway Central"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) -"cyv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cyw" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"cyx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Chief Medical Officer's Office"; req_access_txt = "40"; req_one_access_txt = "0"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cyy" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cyz" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cyA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/table/glass,/obj/item/weapon/folder/blue,/obj/item/weapon/folder/blue,/obj/item/weapon/pen,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cyB" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Medical Officer's Desk"; departmentType = 5; name = "Chief Medical Officer RC"; pixel_x = 0; pixel_y = -32},/obj/effect/landmark/start{name = "Chief Medical Officer"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cyC" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) -"cyD" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cyo" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "surgeryobs2"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgery1) +"cyp" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre"; req_access_txt = "45"},/obj/machinery/holosign/surgery{id = "surgery2"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"cyr" = (/obj/machinery/door/firedoor,/obj/machinery/status_display{dir = 4; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) +"cys" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "cmoprivacy"; layer = 2.7; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/cmo) +"cyt" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) +"cyu" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = -30; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) +"cyv" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/medbay3) +"cyw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) +"cyx" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) +"cyy" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Chemistry Lab"; req_access_txt = "5; 33"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) +"cyz" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) +"cyA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) +"cyB" = (/obj/machinery/chem_master{pixel_x = -2},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) +"cyC" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) +"cyD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "cyE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cyF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) -"cyG" = (/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j1s"; sortType = 11},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"cyH" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/weapon/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cyI" = (/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 23},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cyJ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;9"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cyK" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"cyG" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/medical/chemistry) +"cyH" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"cyI" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"cyJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"cyK" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters/preopen{dir = 8; id_tag = "rndshutters"; name = "research and development lab shutters"},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/toxins/lab) "cyL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cyM" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cyN" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock{name = "Aft Emergency Storage"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6704,7 +6703,7 @@ "cyW" = (/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "cyX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 13},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cyY" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"cyZ" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/medical/genetics_cloning) +"cyZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cza" = (/obj/item/weapon/folder/white,/obj/item/weapon/stamp/rd{pixel_x = 3; pixel_y = -2},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "czb" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the RD's goons from the safety of his office."; name = "Research Monitor"; network = list("RD"); pixel_x = 0; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "czc" = (/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/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) @@ -6716,31 +6715,29 @@ "czi" = (/obj/machinery/computer/area_atmos,/obj/machinery/light/small{dir = 1},/obj/structure/sign/nosmoking_2{pixel_y = 32},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/storage) "czj" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Toxins Storage APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/toxins/storage) "czk" = (/obj/machinery/portable_atmospherics/scrubber/huge,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/toxins/storage) -"czl" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) "czm" = (/obj/structure/grille/broken,/turf/space,/area/space) "czn" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "czo" = (/obj/machinery/vending/assist,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"czp" = (/obj/structure/table,/obj/item/weapon/surgicaldrill,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/weapon/FixOVein,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/medical/surgery) -"czq" = (/obj/structure/table,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel,/turf/simulated/floor/plasteel,/area/medical/surgery) -"czr" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"czs" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/patients_rooms{name = "Patient Room A"}) -"czt" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/vending/wallmed1{pixel_x = 0; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/patients_rooms{name = "Patient Room A"}) -"czu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/patients_rooms{name = "Patient Room A"}) -"czv" = (/obj/machinery/door/airlock/medical{name = "Patient Room A"; req_access_txt = "5"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/patients_rooms{name = "Patient Room A"}) -"czw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"czx" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) -"czy" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -30},/obj/machinery/light/small,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"czz" = (/obj/machinery/light{dir = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) -"czA" = (/obj/structure/table/glass,/obj/item/weapon/pen,/obj/item/clothing/accessory/stethoscope,/obj/structure/extinguisher_cabinet{pixel_x = 6; pixel_y = -30},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"czB" = (/turf/simulated/wall/r_wall,/area/medical/genetics) +"czp" = (/turf/simulated/wall,/area/medical/surgeryobs) +"czq" = (/obj/machinery/camera{c_tag = "Medbay Hallway Fore"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) +"czr" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) +"czs" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) +"czt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) +"czu" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/medical/surgeryobs) +"czv" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Chemistry"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) +"czw" = (/obj/structure/table/glass,/obj/item/weapon/cartridge/medical{pixel_x = -2; pixel_y = 6},/obj/item/weapon/cartridge/medical{pixel_x = 6; pixel_y = 3},/obj/item/weapon/cartridge/chemistry{pixel_y = 2},/obj/item/clothing/accessory/stethoscope,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) +"czx" = (/obj/structure/filingcabinet/filingcabinet,/obj/machinery/light_switch{pixel_x = -25; pixel_y = -5},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) +"czy" = (/obj/structure/table/glass,/obj/item/weapon/folder/white,/obj/item/weapon/stamp/cmo,/obj/item/clothing/glasses/hud/health,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) +"czA" = (/obj/structure/table/glass,/obj/machinery/photocopier/faxmachine{department = "Chief Medical Officer's Office"},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 30},/obj/machinery/camera{c_tag = "Medbay Surgery 1 North"; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) +"czB" = (/obj/structure/closet/secure_closet/CMO,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) "czC" = (/turf/simulated/wall,/area/medical/genetics) -"czD" = (/obj/machinery/door/airlock/maintenance{name = "Genetics Maintenance"; req_access_txt = "9"; req_one_access_txt = "0"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/medical/genetics) -"czE" = (/obj/structure/sign/directions/evac{pixel_y = 0},/turf/simulated/wall,/area/medical/genetics) +"czD" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) +"czE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) "czF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/aft) "czG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "czH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "czI" = (/obj/structure/sign/directions/evac{pixel_y = 0},/turf/simulated/wall,/area/maintenance/aft{name = "Aft Maintenance"}) -"czJ" = (/obj/structure/table,/obj/item/weapon/retractor,/obj/item/weapon/hemostat,/turf/simulated/floor/plasteel,/area/medical/surgery) +"czJ" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/medbay3) "czK" = (/obj/item/weapon/storage/toolbox/emergency,/obj/structure/closet/firecloset,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "czL" = (/obj/item/weapon/tank/air,/obj/item/weapon/tank/air,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/machinery/space_heater,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "czM" = (/turf/simulated/wall/r_wall,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) @@ -6764,26 +6761,27 @@ "cAe" = (/obj/structure/closet,/obj/item/weapon/storage/toolbox/emergency,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cAf" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "aftport"; name = "Aft-Port Solar Array"},/turf/simulated/floor/plating/airless{icon_state = "solarpanel"},/area/solar/port) "cAg" = (/obj/structure/closet,/obj/item/weapon/extinguisher,/obj/effect/decal/cleanable/cobweb,/obj/item/device/flashlight,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cAh" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre"; req_access_txt = "45"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cAi" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cAj" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/clothing/accessory/stethoscope,/obj/machinery/light/small{dir = 8},/obj/machinery/power/apc{dir = 8; name = "Patient Room A APC"; pixel_x = -26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/patients_rooms{name = "Patient Room A"}) -"cAk" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/patients_rooms{name = "Patient Room A"}) -"cAl" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/door_control{id = "isola"; name = "Privacy Shutters"; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/patients_rooms{name = "Patient Room A"}) -"cAm" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/medical/genetics) -"cAn" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) -"cAo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cAp" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) +"cAh" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) +"cAi" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) +"cAj" = (/obj/item/stack/packageWrap,/obj/item/weapon/hand_labeler,/obj/structure/table/glass,/obj/item/weapon/folder/white{pixel_y = 2},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j1s"; sortType = 23},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) +"cAk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) +"cAl" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Chemist"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) +"cAm" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) +"cAn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"cAo" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/machinery/door/firedoor,/obj/machinery/door/window/eastright{dir = 8; name = "Chemistry Desk"; req_access_txt = "5; 33"},/obj/item/weapon/folder/white,/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) +"cAp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "cAq" = (/obj/item/weapon/storage/box/rxglasses{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/bodybags,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/structure/table/glass,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) -"cAr" = (/obj/item/clothing/gloves/color/latex,/obj/item/clothing/gloves/color/latex,/obj/item/weapon/storage/box/disks{pixel_x = 2; pixel_y = 2},/obj/structure/table/glass,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) -"cAs" = (/obj/machinery/power/apc{dir = 2; name = "Research Shuttle Dock APC"; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"cAr" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"cAs" = (/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) +"cAt" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/reception) "cAu" = (/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/structure/table/glass,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) -"cAv" = (/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor/plasteel{dir = 9; icon_state = "blue"},/area/medical/genetics) -"cAw" = (/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; pixel_x = -32; pixel_y = 32},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 5; icon_state = "blue"},/area/medical/genetics) -"cAx" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/medical/genetics) -"cAy" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 6},/turf/simulated/floor/plasteel{icon_state = "bluefull"},/area/medical/genetics) -"cAz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/hallway/primary/aft) +"cAv" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/aft) +"cAw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cAx" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/maintenance{name = "Surgery Maintenance"; req_access_txt = "45"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/medical/surgeryobs) +"cAy" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"cAz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/surgeryobs) "cAA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"cAB" = (/obj/structure/table/glass,/obj/machinery/photocopier/faxmachine{department = "Chief Medical Officer's Office"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) +"cAB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warnwhitecorner"; icon_state = "warnwhitecorner"; dir = 2},/area/medical/surgeryobs) "cAC" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/effect/spawner/lootdrop/maintenance,/obj/item/weapon/wrench,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cAD" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/storage/box/lights/mixed,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cAE" = (/obj/structure/reagent_dispensers/fueltank,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6794,7 +6792,7 @@ "cAJ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cAK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) "cAL" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/toxins/test_area) -"cAM" = (/obj/structure/table,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/light{dir = 8},/obj/structure/window/reinforced/polarized{tag = "icon-rwindow (NORTH)"; icon_state = "rwindow"; dir = 1},/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) +"cAM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/surgeryobs) "cAN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "cAO" = (/obj/machinery/computer/mecha,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "cAP" = (/obj/structure/table,/obj/item/device/aicard,/obj/item/weapon/circuitboard/aicore{pixel_x = -2; pixel_y = 4},/obj/item/weapon/circuitboard/teleporter,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) @@ -6817,18 +6815,18 @@ "cBg" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "cBh" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "cBi" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) -"cBj" = (/obj/structure/closet/crate,/obj/item/weapon/crowbar/red,/obj/item/weapon/pen,/obj/item/device/flashlight/pen{pixel_x = 4; pixel_y = 3},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cBj" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/surgeryobs) "cBk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cBl" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/surgery) -"cBm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cBn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cBo" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{tag = "icon-whitehall (WEST)"; icon_state = "whitehall"; dir = 8},/area/medical/surgery) -"cBp" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/light/small{dir = 4; pixel_y = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cBq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/medical/patients_rooms{name = "Patient Room A"}) -"cBr" = (/turf/simulated/wall,/area/medical/patients_rooms{name = "Patient Room A"}) -"cBs" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/sign/examroom{pixel_x = -32},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cBt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cBu" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) +"cBl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/surgeryobs) +"cBm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhitecorner"},/area/medical/surgeryobs) +"cBn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay3) +"cBo" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Recovery Ward"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) +"cBp" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Chief Medical Officer's Office"; req_access_txt = "40"; req_one_access_txt = "0"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) +"cBq" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) +"cBr" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) +"cBs" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) +"cBt" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/effect/landmark/start{name = "Chief Medical Officer"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) +"cBu" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) "cBv" = (/turf/simulated/wall,/area/medical/genetics_cloning) "cBw" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/machinery/door/window/southleft{dir = 2; name = "Cloning Shower"},/obj/structure/mirror{pixel_x = -28},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics_cloning) "cBx" = (/obj/machinery/door/window/southleft{base_state = "right"; dir = 2; icon_state = "right"; name = "Cloning Shower"},/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "sink"; pixel_y = 28},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics_cloning) @@ -6838,10 +6836,10 @@ "cBB" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/genetics) "cBC" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark/start{name = "Geneticist"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/medical/genetics) "cBD" = (/obj/machinery/computer/scan_consolenew,/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/genetics) -"cBE" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/weapon/storage/box/syringes,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/medical/genetics) -"cBF" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/structure/disposalpipe/segment,/obj/effect/landmark/start{name = "Geneticist"},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 4},/area/medical/genetics) -"cBG" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters/preopen{id_tag = "genetics"; name = "genetics desk shutters"},/obj/machinery/door/window/eastright{dir = 8; name = "Genetics Desk"; req_access_txt = "5;9"},/obj/machinery/door/window/southleft{dir = 4; name = "Outer Window"},/turf/simulated/floor/plating,/area/medical/genetics) -"cBH" = (/turf/simulated/floor/plasteel{icon_state = "bluefull"},/area/medical/genetics) +"cBE" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Chief Medical Officer's Office"; req_access_txt = "40"; req_one_access_txt = "0"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) +"cBF" = (/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) +"cBG" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) +"cBH" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) "cBI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cBJ" = (/turf/simulated/wall,/area/assembly/chargebay) "cBK" = (/obj/machinery/door/airlock/maintenance{name = "Mech Bay Maintenance"; req_access_txt = "29"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/assembly/chargebay) @@ -6860,39 +6858,43 @@ "cBX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/storage) "cBY" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "cBZ" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/toxins/storage) +"cCa" = (/obj/machinery/disposal{pixel_x = 5},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/medbay3) "cCb" = (/obj/structure/rack,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cCc" = (/obj/item/clothing/glasses/science{pixel_x = 2; pixel_y = 4},/obj/item/clothing/glasses/science,/obj/structure/table/glass,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/machinery/power/apc{dir = 8; name = "Chemistry APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable/yellow,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteyellow"},/area/medical/chemistry) "cCd" = (/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "cCe" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/obj/item/device/flashlight/seclite,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cCf" = (/obj/structure/cable,/obj/machinery/power/solar{id = "aftport"; name = "Aft-Port Solar Array"},/turf/simulated/floor/plating/airless{icon_state = "solarpanel"},/area/solar/port) -"cCg" = (/obj/structure/closet/secure_closet/medical2,/obj/structure/sign/nosmoking_2{pixel_x = -28},/turf/simulated/floor/plasteel,/area/medical/surgery) -"cCh" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/bodyscanner,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 1},/area/medical/surgery) -"cCi" = (/obj/machinery/light,/obj/machinery/camera{c_tag = "Medbay Surgery"; dir = 1; network = list("SS13","Medbay")},/obj/machinery/body_scanconsole,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cCj" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 1},/area/medical/surgery) -"cCk" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty{pixel_x = -3; pixel_y = -3},/obj/item/weapon/reagent_containers/blood/AMinus,/obj/item/weapon/reagent_containers/blood/BMinus{pixel_x = -4; pixel_y = 4},/obj/item/weapon/reagent_containers/blood/BPlus{pixel_x = 1; pixel_y = 2},/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OPlus{pixel_x = -2; pixel_y = -1},/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel,/area/medical/surgery) -"cCl" = (/obj/structure/stool/bed/roller,/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/sign/nosmoking_2{pixel_x = -28},/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cCm" = (/obj/machinery/bodyscanner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cCn" = (/obj/machinery/body_scanconsole,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cCp" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/clothing/accessory/stethoscope,/obj/machinery/light/small{dir = 8},/obj/machinery/power/apc{dir = 8; name = "Patient Room B APC"; pixel_x = -26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/exam_room{name = "Patient Room B"}) -"cCq" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/landmark/start{name = "Medical Doctor"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/vending/wallmed1{pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/exam_room{name = "Patient Room B"}) -"cCr" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/door_control{id = "isolb"; name = "Privacy Shutters"; pixel_y = 25},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/exam_room{name = "Patient Room B"}) -"cCt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay3{name = "Medbay Aft"}) -"cCu" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cCv" = (/obj/structure/disposalpipe/segment,/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) +"cCg" = (/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/dropper,/obj/structure/table/glass,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; name = "Chemistry Cleaner"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) +"cCh" = (/obj/machinery/reagentgrinder,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/table/glass,/obj/machinery/requests_console{department = "Chemistry"; departmentType = 2; pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) +"cCi" = (/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; dir = 1; name = "requests board"; pixel_x = 0; pixel_y = -32},/obj/machinery/chem_dispenser,/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) +"cCj" = (/obj/machinery/chem_heater{pixel_x = 4},/obj/machinery/light,/obj/structure/reagent_dispensers/fueltank/chem{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteyellow"},/area/medical/chemistry) +"cCk" = (/obj/structure/table,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception) +"cCl" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception) +"cCm" = (/obj/structure/table,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/machinery/light/small,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception) +"cCn" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/light,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception) +"cCo" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception) +"cCp" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/aft) +"cCq" = (/obj/structure/flora/ausbushes/fernybush,/obj/structure/flora/ausbushes/fullgrass,/obj/structure/flora/ausbushes/ppflowers,/obj/structure/flora/ausbushes/palebush,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/grass,/area/medical/surgeryobs) +"cCr" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24; shock_proof = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/surgeryobs) +"cCs" = (/obj/structure/flora/ausbushes/fernybush,/obj/structure/flora/ausbushes/fullgrass,/obj/structure/flora/ausbushes/brflowers,/obj/structure/flora/ausbushes/sunnybush,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/grass,/area/medical/surgeryobs) +"cCt" = (/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/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 0},/turf/simulated/wall,/area/medical/surgeryobs) +"cCu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) +"cCv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/surgeryobs) "cCw" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whiteblue"},/area/medical/genetics_cloning) -"cCx" = (/obj/effect/landmark/start{name = "Geneticist"},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/genetics_cloning) -"cCy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/computer/cloning,/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/medical/genetics_cloning) +"cCx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) +"cCy" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Recovery Ward"; req_access_txt = "0"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) "cCz" = (/obj/machinery/dna_scannernew,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/genetics) "cCA" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/genetics) "cCB" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/genetics) "cCC" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/genetics) "cCD" = (/obj/machinery/dna_scannernew,/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/genetics) -"cCE" = (/obj/item/weapon/storage/box/disks{pixel_x = 2; pixel_y = 2},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/machinery/camera{c_tag = "Genetics Desk"; dir = 4; network = list("SS13","Medbay")},/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/medical/genetics) -"cCF" = (/obj/machinery/door_control{dir = 2; id = "genetics"; name = "Shutter Control"; pixel_x = 26; pixel_y = 6; req_access_txt = "5;9"; req_one_access_txt = "0"},/obj/machinery/light{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 4},/area/medical/genetics) -"cCG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{dir = 1; icon_state = "bluecorner"},/area/hallway/primary/aft) +"cCE" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) +"cCF" = (/obj/effect/landmark/start{name = "Chief Medical Officer"},/obj/structure/stool/bed/chair/office/light{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) +"cCG" = (/obj/structure/table/glass,/obj/machinery/computer/med_data/laptop,/obj/machinery/door_control{id = "cmoprivacy"; name = "Privacy Shutters Control"; pixel_x = -26; pixel_y = 4},/obj/machinery/keycard_auth{pixel_x = -26; pixel_y = -7},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) "cCH" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_Toxins = 0},/obj/structure/sign/nosmoking_2{pixel_x = -28; pixel_y = 0},/turf/simulated/floor/plasteel,/area/assembly/chargebay) "cCI" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/assembly/chargebay) "cCJ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 31},/turf/simulated/floor/mech_bay_recharge_floor,/area/assembly/chargebay) -"cCK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Observation"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/surgery) +"cCK" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) "cCL" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) "cCM" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) "cCN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera{c_tag = "Research Division Hallway - Mech Bay"; dir = 4; network = list("SS13","RD")},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) @@ -6900,7 +6902,7 @@ "cCP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) "cCQ" = (/obj/machinery/power/apc{dir = 2; name = "RD Office APC"; pixel_x = 0; pixel_y = -27},/obj/structure/cable/yellow,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/item/weapon/twohanded/required/kirbyplants/dead,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "cCR" = (/obj/machinery/hologram/holopad,/obj/machinery/light,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) -"cCS" = (/obj/structure/table,/obj/item/weapon/retractor,/obj/machinery/light{dir = 4},/obj/structure/window/reinforced/polarized{tag = "icon-rwindow (NORTH)"; icon_state = "rwindow"; dir = 1},/obj/item/weapon/hemostat,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) +"cCS" = (/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) "cCT" = (/obj/structure/closet/secure_closet/RD,/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = -24},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "cCU" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "cCV" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) @@ -6911,27 +6913,28 @@ "cDa" = (/obj/machinery/door/airlock/maintenance{name = "airlock access"; req_access_txt = "0"; req_one_access_txt = "8;12"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cDb" = (/obj/item/stack/cable_coil,/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "cDc" = (/obj/structure/closet/emcloset,/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/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cDd" = (/obj/machinery/door/airlock/maintenance{name = "Medbay Maintenance"; req_access_txt = "5"},/turf/simulated/floor/plating,/area/medical/surgery) -"cDe" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/exam_room{name = "Patient Room B"}) -"cDf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/exam_room{name = "Patient Room B"}) -"cDg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/exam_room{name = "Patient Room B"}) -"cDh" = (/obj/machinery/door/airlock/medical{name = "Patient Room B"; req_access_txt = "5"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/exam_room{name = "Patient Room B"}) -"cDi" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3{name = "Medbay Aft"}) -"cDj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cDk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitebluecorner"},/area/medical/medbay3{name = "Medbay Aft"}) -"cDl" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/medical/genetics_cloning) -"cDm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/genetics_cloning) -"cDn" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/genetics_cloning) -"cDo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/machinery/dna_scannernew,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/genetics_cloning) +"cDd" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) +"cDe" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) +"cDf" = (/turf/simulated/wall/r_wall,/area/medical/cryo) +"cDg" = (/turf/simulated/wall/r_wall,/area/medical/genetics_cloning) +"cDh" = (/obj/structure/sign/directions/medical{pixel_y = -7},/turf/simulated/wall,/area/medical/genetics_cloning) +"cDi" = (/obj/structure/sign/greencross,/turf/simulated/wall,/area/medical/genetics) +"cDj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cDk" = (/obj/structure/closet/crate,/obj/item/weapon/crowbar/red,/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/item/device/flashlight/pen{pixel_x = 4; pixel_y = 3},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cDl" = (/obj/effect/landmark{name = "blobstart"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"cDm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/medical/surgeryobs) +"cDn" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warnwhitecorner (WEST)"; icon_state = "warnwhitecorner"; dir = 8},/area/medical/surgeryobs) +"cDo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/medical/surgeryobs) "cDp" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/preopen{id_tag = "researchrangeshutters"; name = "blast door"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) -"cDq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whiteblue"},/area/medical/genetics) -"cDr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"},/area/medical/genetics) -"cDs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/genetics) +"cDq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/medical/surgeryobs) +"cDr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 3; icon_state = "whitebluecorner"},/area/medical/surgeryobs) +"cDs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhitecorner"},/area/medical/surgeryobs) "cDt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/genetics) "cDu" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/medical/genetics) -"cDw" = (/obj/item/weapon/folder/white,/obj/item/stack/packageWrap,/obj/item/weapon/pen,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/medical/genetics) -"cDx" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "bluecorner"},/area/medical/genetics) -"cDy" = (/obj/structure/sign/nosmoking_2{pixel_x = 28},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 5; icon_state = "blue"},/area/medical/genetics) +"cDv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay3) +"cDw" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Recovery Ward"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) +"cDx" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) +"cDy" = (/obj/structure/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/hardsuit/medical,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/medical,/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) "cDz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cDA" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cDB" = (/obj/machinery/door/poddoor/shutters{dir = 8; id_tag = "Skynet_launch"; name = "Mech Bay"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/chargebay) @@ -6942,34 +6945,37 @@ "cDG" = (/obj/machinery/camera{c_tag = "Research Testing Range"; dir = 8; network = list("SS13","RD"); pixel_y = -22},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) "cDH" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cDI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/toxins/storage) +"cDJ" = (/obj/structure/table/glass,/obj/item/weapon/folder/blue,/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/structure/extinguisher_cabinet{pixel_x = 6; pixel_y = -30},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = -30; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) "cDK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cDL" = (/obj/machinery/light/small{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 = 32},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cDM" = (/obj/machinery/door/airlock/external{req_access_txt = "0"; req_one_access_txt = "13,8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cDN" = (/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/light/small{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"cDO" = (/obj/structure/stool/bed/dogbed,/mob/living/simple_animal/pet/cat/Runtime,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) +"cDP" = (/obj/structure/table/glass,/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Medical Officer's Desk"; departmentType = 5; name = "Chief Medical Officer RC"; pixel_x = 0; pixel_y = -32},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) "cDQ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "cDR" = (/obj/machinery/door/airlock/external{req_access_txt = "13"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cDS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cDS" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/power/apc{dir = 4; name = "CMO's Office APC"; pixel_x = 26; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) "cDT" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cDU" = (/turf/simulated/wall,/area/medical/medbay3{name = "Medbay Aft"}) -"cDV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay3{name = "Medbay Aft"}) -"cDW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cDX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3{name = "Medbay Aft"}) +"cDV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera{c_tag = "Chemistry"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) +"cDW" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/medical/cryo) +"cDX" = (/obj/structure/closet/secure_closet/medical1{pixel_x = -3},/obj/machinery/camera{c_tag = "Medbay Surgery 1 North"; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/medical/cryo) "cDY" = (/obj/machinery/door/firedoor,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/glass_medical{id_tag = "CloningDoor"; name = "Cloning Lab"; req_access_txt = "0"; req_one_access_txt = "5"},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/genetics_cloning) "cDZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/genetics_cloning) -"cEa" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/genetics_cloning) -"cEb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/genetics_cloning) -"cEc" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_research{name = "Genetics Lab"; req_access_txt = "5;9"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/genetics) -"cEd" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/genetics) -"cEe" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/genetics) -"cEf" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/effect/landmark/start{name = "Geneticist"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/genetics) +"cEa" = (/obj/machinery/power/apc{dir = 1; name = "Cryogenics APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 5; pixel_y = 9},/obj/structure/table/glass,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 6; pixel_y = 2},/obj/item/weapon/reagent_containers/syringe/epinephrine{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) +"cEb" = (/obj/machinery/atmospherics/unary/cryo_cell,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/medical/cryo) +"cEc" = (/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/machinery/camera{c_tag = "Medbay Cryo"; dir = 1; network = list("SS13","Medbay")},/obj/item/weapon/screwdriver{pixel_y = 6},/obj/item/clothing/accessory/stethoscope,/obj/machinery/firealarm{dir = 4; pixel_x = 28; pixel_y = 5},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) +"cEd" = (/obj/item/clothing/gloves/color/latex,/obj/item/clothing/gloves/color/latex,/obj/item/weapon/storage/box/disks{pixel_x = 2; pixel_y = 2},/obj/structure/table/glass,/obj/structure/noticeboard{desc = "A board for pinning important notices upon."; name = "notice board"; pixel_x = -32; pixel_y = 32},/obj/machinery/requests_console{department = "Genetics"; departmentType = 0; name = "Genetics Requests Console"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) +"cEe" = (/obj/item/weapon/storage/box/monkeycubes,/obj/structure/table/glass,/obj/item/weapon/storage/box/monkeycubes/farwacubes{pixel_y = -2},/obj/item/weapon/storage/box/monkeycubes/neaeracubes{pixel_x = 2},/obj/item/weapon/storage/box/monkeycubes/stokcubes{pixel_x = -2},/obj/item/weapon/storage/box/monkeycubes/wolpincubes{pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/genetics) +"cEf" = (/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/structure/table/reinforced,/obj/item/weapon/cartridge/signal/toxins{pixel_x = 4; pixel_y = 6},/obj/item/weapon/cartridge/signal/toxins{pixel_x = 4; pixel_y = 6},/obj/item/weapon/paper/monitorkey,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "cEg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/genetics) "cEh" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/genetics) -"cEi" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{icon_state = "door_closed"; id_tag = "AuxGenetics"; locked = 0; name = "Genetics Lab"; req_access_txt = "9"; req_one_access_txt = "0"},/turf/simulated/floor/plasteel,/area/medical/genetics) -"cEj" = (/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/medical/genetics) -"cEk" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel,/area/medical/genetics) -"cEl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 4},/area/medical/genetics) -"cEm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{icon_state = "door_closed"; id_tag = "AuxGenetics"; locked = 0; name = "Genetics Access"; req_access_txt = "9"; req_one_access_txt = "0"},/turf/simulated/floor/plasteel,/area/medical/genetics) -"cEn" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"cEi" = (/obj/machinery/camera{c_tag = "Medbay Foyer"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) +"cEj" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteblue"},/area/medical/surgeryobs) +"cEk" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) +"cEl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) +"cEm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/power/apc{dir = 8; name = "Chemistry APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) +"cEn" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/cryo) "cEo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cEp" = (/obj/machinery/door/poddoor/shutters{dir = 8; id_tag = "Skynet_launch"; name = "Mech Bay"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/chargebay) "cEq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel,/area/assembly/chargebay) @@ -6996,28 +7002,28 @@ "cEL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "cEM" = (/obj/machinery/door/airlock/research{name = "Toxins Space Access"; req_access_txt = "8"},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "cEN" = (/obj/structure/rack,/obj/item/weapon/tank/air,/obj/item/weapon/wrench,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cEO" = (/obj/item/trash/chips,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cEP" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cEO" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) +"cEP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/medical/cryo) "cEQ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cER" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/alarm{pixel_y = 24},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/medical/medbay3{name = "Medbay Aft"}) -"cES" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/medical/medbay3{name = "Medbay Aft"}) -"cET" = (/obj/machinery/vending/coffee,/obj/structure/sign/double/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/medical/medbay3{name = "Medbay Aft"}) -"cEU" = (/obj/structure/sign/double/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/medical/medbay3{name = "Medbay Aft"}) -"cEV" = (/obj/machinery/vending/cigarette,/obj/structure/noticeboard{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/medical/medbay3{name = "Medbay Aft"}) -"cEW" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay3{name = "Medbay Aft"}) -"cEX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cEY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/sign/nosmoking_2{pixel_x = 28},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/medbay3{name = "Medbay Aft"}) -"cEZ" = (/obj/machinery/door_control{desc = "A remote control switch for the cloning door."; id = "CloningDoor"; name = "Cloning Exit Button"; normaldoorcontrol = 1; pixel_x = -23; pixel_y = 8},/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteblue"},/area/medical/genetics_cloning) -"cFa" = (/obj/effect/landmark/start{name = "Geneticist"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/genetics_cloning) +"cER" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) +"cES" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/medical/cryo) +"cET" = (/obj/effect/landmark/start{name = "Medical Doctor"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor/plasteel,/area/medical/cryo) +"cEU" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) +"cEV" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/genetics_cloning) +"cEW" = (/obj/machinery/computer/cloning,/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/medical/genetics_cloning) +"cEX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"cEY" = (/turf/simulated/wall,/area/medical/surgery2) +"cEZ" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "surgeryobs1"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgery2) +"cFa" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre"; req_access_txt = "45"},/obj/machinery/holosign/surgery{id = "surgery1"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cFb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/power/apc{dir = 4; name = "Cloning Lab APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable/yellow,/obj/machinery/camera{c_tag = "Genetics Cloning Lab"; dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteblue"},/area/medical/genetics_cloning) -"cFc" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteblue"},/area/medical/genetics) -"cFd" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/genetics) -"cFe" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 28},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteblue"},/area/medical/genetics) -"cFf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{dir = 10; icon_state = "blue"},/area/medical/genetics) -"cFg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/medical/genetics) -"cFh" = (/obj/machinery/light_switch{pixel_x = 23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 6},/area/medical/genetics) -"cFi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/medical/genetics) -"cFj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -26},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"cFc" = (/obj/machinery/status_display{dir = 4; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) +"cFd" = (/turf/simulated/wall,/area/medical/medbreak) +"cFe" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/medical/medbreak) +"cFf" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/alarm{pixel_y = 24},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/medical/medbreak) +"cFg" = (/obj/structure/sign/double/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/obj/machinery/vending/cola,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/medical/medbreak) +"cFh" = (/obj/machinery/vending/coffee,/obj/structure/sign/double/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/medical/medbreak) +"cFi" = (/obj/machinery/vending/cigarette,/obj/structure/noticeboard{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/medical/medbreak) +"cFj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) "cFk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cFl" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/obj/machinery/door_control{dir = 2; id = "Skynet_launch"; name = "Mech Bay Door Control"; pixel_x = 26; pixel_y = 6; req_one_access_txt = "29"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cFm" = (/obj/machinery/door_control{dir = 2; id = "Skynet_launch"; name = "Mech Bay Door Control"; pixel_x = -26; pixel_y = 6},/obj/machinery/light_switch{pixel_x = -23; pixel_y = -2},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/assembly/chargebay) @@ -7049,32 +7055,33 @@ "cFM" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'BOMB RANGE"; name = "BOMB RANGE"},/turf/simulated/wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cFN" = (/turf/simulated/wall,/area/toxins/test_area) "cFO" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/assembly/chargebay) +"cFP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) "cFQ" = (/obj/structure/rack,/obj/item/clothing/mask/gas,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cFR" = (/obj/item/latexballon,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cFS" = (/obj/item/clothing/suit/ianshirt,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cFT" = (/obj/structure/rack,/obj/item/clothing/glasses/sunglasses,/obj/item/device/flashlight/pen{pixel_x = 0},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cFU" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) -"cFV" = (/obj/machinery/door/airlock/maintenance{name = "Medbay Maintenance"; req_access_txt = "5"},/turf/simulated/floor/plating,/area/medical/medbay3{name = "Medbay Aft"}) -"cFW" = (/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) -"cFX" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) -"cFY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) -"cFZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) -"cGa" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/weapon/cigbutt,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) -"cGb" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/medical{name = "Medbay Break Room"; req_access_txt = "5"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) -"cGc" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3{name = "Medbay Aft"}) -"cGd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cGe" = (/obj/machinery/power/apc{dir = 4; name = "Medbay Aft APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/disposalpipe/junction,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) +"cFU" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/cryo) +"cFV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) +"cFW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible{dir = 6; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/medical/cryo) +"cFX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) +"cFY" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/medical/cryo) +"cFZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/manifold4w/visible,/turf/simulated/floor/plasteel,/area/medical/cryo) +"cGa" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/genetics_cloning) +"cGb" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/genetics_cloning) +"cGc" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/genetics_cloning) +"cGd" = (/obj/machinery/dna_scannernew,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/genetics_cloning) +"cGe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -26},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cGf" = (/obj/item/weapon/book/manual/medical_cloning{pixel_y = 6},/obj/item/weapon/paper,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/table/glass,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics_cloning) -"cGg" = (/obj/item/weapon/storage/box/rxglasses{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/table/glass,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics_cloning) +"cGg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cGh" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics_cloning) -"cGi" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/closet/wardrobe/genetics_white,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) +"cGi" = (/obj/structure/table,/obj/item/weapon/reagent_containers/blood/AMinus,/obj/item/weapon/reagent_containers/blood/APlus,/obj/item/weapon/reagent_containers/blood/BMinus,/obj/item/weapon/reagent_containers/blood/BPlus,/obj/item/weapon/reagent_containers/blood/OPlus,/obj/machinery/alarm{pixel_y = 23},/obj/item/weapon/reagent_containers/blood/OMinus,/obj/machinery/light{dir = 1; in_use = 1},/obj/machinery/camera{c_tag = "Medbay Surgery 1 North"; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cGj" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/stool/bed/roller,/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/mob/living/carbon/human/monkey,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/genetics) "cGk" = (/obj/structure/stool/bed/roller,/obj/machinery/door/window/westleft{dir = 1; name = "Monkey Pen"; pixel_y = 2; req_access_txt = "9"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/genetics) "cGl" = (/obj/machinery/light,/obj/machinery/door/window/westleft{base_state = "right"; dir = 1; icon_state = "right"; name = "Monkey Pen"; pixel_y = 2; req_access_txt = "9"},/obj/structure/stool/bed/roller,/mob/living/carbon/human/monkey,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/genetics) "cGm" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/stool/bed/roller,/mob/living/carbon/human/monkey,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/genetics) -"cGn" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) -"cGo" = (/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) -"cGp" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera{c_tag = "Aft Primary Hallway - Middle"; dir = 4; network = list("SS13")},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"cGn" = (/obj/structure/table,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/masks,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; name = "Surgery Cleaner"},/obj/machinery/light_switch{pixel_x = -5; pixel_y = 27},/obj/machinery/holosign_switch{id = "surgery1"; pixel_x = 5; pixel_y = 27},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) +"cGo" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) +"cGp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cGq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cGr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cGs" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Mech Bay"; req_access_txt = "29"; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/assembly/chargebay) @@ -7089,6 +7096,7 @@ "cGB" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cGC" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cGD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) +"cGE" = (/obj/machinery/body_scanconsole,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cGF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cGG" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cGH" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) @@ -7098,6 +7106,7 @@ "cGL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cGM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/hologram/holopad,/obj/effect/landmark/start{name = "Scientist"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cGN" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cGO" = (/obj/machinery/bodyscanner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cGP" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cGQ" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cGR" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/mixing{name = "\improper Toxins Lab"}) @@ -7109,19 +7118,19 @@ "cGX" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/medical/virology) "cGY" = (/obj/structure/window/reinforced,/obj/item/target,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/toxins/test_area) "cGZ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/weapon/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cHa" = (/obj/structure/stool,/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = -30; pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) -"cHb" = (/obj/structure/stool,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) -"cHc" = (/obj/item/weapon/cigbutt,/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) -"cHd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) -"cHe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) +"cHa" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = ""; name = "Staff Room"; req_access_txt = "5"; req_one_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbreak) +"cHb" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) +"cHc" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak) +"cHd" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak) +"cHe" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak) "cHf" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/space) -"cHg" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay3{name = "Medbay Aft"}) -"cHh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cHi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) +"cHg" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak) +"cHh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = ""; name = "Staff Room"; req_access_txt = "5"; req_one_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbreak) +"cHi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak) "cHj" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/medical/virology) -"cHk" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Genetics"; opacity = 1; req_access_txt = "9"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/genetics) -"cHl" = (/obj/structure/sign/directions/evac{pixel_y = 0},/turf/simulated/wall,/area/hallway/primary/aft) -"cHm" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"cHk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) +"cHl" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) +"cHm" = (/obj/machinery/door/firedoor,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/cryo) "cHn" = (/obj/structure/sign/directions/evac{pixel_y = 0},/turf/simulated/wall,/area/assembly/chargebay) "cHo" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/chargebay) "cHp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/assembly/chargebay) @@ -7133,16 +7142,19 @@ "cHv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "cHw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cHx" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) +"cHy" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) "cHz" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHA" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHB" = (/obj/item/device/assembly/prox_sensor{pixel_x = -4; pixel_y = 1},/obj/item/device/assembly/prox_sensor{pixel_x = 8; pixel_y = 9},/obj/item/device/assembly/prox_sensor{pixel_x = 9; pixel_y = -2},/obj/item/device/assembly/prox_sensor{pixel_x = 0; pixel_y = 2},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHC" = (/obj/structure/stool,/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cHD" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/medical/cryo) "cHE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHF" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHH" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cHK" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) "cHL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) @@ -7160,25 +7172,26 @@ "cHZ" = (/turf/simulated/wall/r_wall,/area/medical/virology) "cIa" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/medical/virology) "cIb" = (/obj/item/weapon/cigbutt,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cIc" = (/obj/machinery/light{dir = 8},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -30},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 5},/obj/structure/table/glass,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) -"cId" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -30},/obj/item/weapon/reagent_containers/spray/cleaner,/obj/structure/table/glass,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) -"cIe" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light/small,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -29},/obj/machinery/camera{c_tag = "Medbay Break Room"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) -"cIf" = (/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/structure/table/glass,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) -"cIg" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cIh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cIi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) -"cIj" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitecorner"},/area/medical/medbay3{name = "Medbay Aft"}) -"cIk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) -"cIl" = (/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitecorner"},/area/medical/medbay3{name = "Medbay Aft"}) +"cIc" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/medical/cryo) +"cId" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/medical/cryo) +"cIe" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) +"cIf" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/genetics_cloning) +"cIg" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_research{name = "Genetics Lab"; req_access_txt = "5;9"},/obj/structure/cable/yellow{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/plasteel{icon_state = "whitebluefull"},/area/medical/genetics_cloning) +"cIh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/genetics_cloning) +"cIi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"},/area/medical/genetics) +"cIj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whiteblue"},/area/medical/genetics) +"cIk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/genetics) +"cIl" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 6},/obj/machinery/door/window/eastright{name = "Genetics Desk"; req_access_txt = "5;9"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/genetics) "cIm" = (/turf/simulated/wall,/area/medical/morgue) "cIn" = (/obj/structure/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cIo" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cIp" = (/obj/machinery/camera{c_tag = "Morgue"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cIq" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cIr" = (/obj/machinery/alarm{pixel_y = 32},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cIp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "yellowcorner"},/area/hallway/primary/aft) +"cIq" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) +"cIr" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cIs" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/aft) "cIt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plasteel{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/aft) "cIu" = (/turf/simulated/wall/r_wall,/area/assembly/chargebay) +"cIv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cIw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access_txt = "29"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/assembly/chargebay) "cIx" = (/turf/simulated/wall/r_wall,/area/assembly/robotics) "cIy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -7203,19 +7216,20 @@ "cIR" = (/mob/living/carbon/human/monkey,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/virology) "cIS" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/virology) "cIT" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/virology) -"cIV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cIW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) -"cIX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/medical/medbay3{name = "Medbay Aft"}) -"cIY" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) -"cIZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cJa" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) -"cJb" = (/obj/machinery/light/small{dir = 8},/obj/structure/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cJc" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cJd" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cJe" = (/obj/effect/landmark/start{name = "Medical Doctor"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cJf" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/pen,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cIU" = (/obj/machinery/door_control{id = "surgeryobs1"; name = "Privacy Shutters Control"; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) +"cIV" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) +"cIW" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) +"cIX" = (/obj/structure/stool,/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak) +"cIY" = (/obj/structure/stool,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24; shock_proof = 0},/obj/structure/cable/yellow,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak) +"cIZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak) +"cJa" = (/obj/item/weapon/cigbutt,/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak) +"cJb" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; level = 1},/obj/item/device/radio/intercom{dir = 4; name = "station intercom (General)"; pixel_x = 28},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak) +"cJc" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/atmospherics/unary/portables_connector{dir = 1; name = "Connector Port (Air Supply)"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/cryo) +"cJd" = (/obj/machinery/vending/medical,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) +"cJe" = (/obj/machinery/light,/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/medical/cryo) +"cJf" = (/obj/structure/table,/obj/item/roller,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) "cJg" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/aft) -"cJh" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/assembly/robotics) +"cJh" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/genetics_cloning) "cJi" = (/obj/structure/filingcabinet/chestdrawer{pixel_x = -2; pixel_y = 2},/obj/machinery/door_control{dir = 2; id = "robotics"; name = "Shutter Control"; pixel_x = -26; pixel_y = 26},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/robotics) "cJj" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/assembly/robotics) "cJk" = (/obj/machinery/mecha_part_fabricator{dir = 2},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/robotics) @@ -7252,29 +7266,29 @@ "cJP" = (/obj/machinery/reagentgrinder{pixel_y = 8},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitegreen"},/area/medical/virology) "cJQ" = (/obj/item/clothing/gloves/color/latex,/obj/item/device/healthanalyzer,/obj/item/clothing/glasses/hud/health,/obj/structure/reagent_dispensers/virusfood{density = 0; pixel_x = 0; pixel_y = 30},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitegreen"},/area/medical/virology) "cJR" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cJS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cJU" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cJV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) -"cJW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{name = "Medbay Maintenance"; req_access_txt = "5"},/turf/simulated/floor/plating,/area/medical/medbay3{name = "Medbay Aft"}) -"cJX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) -"cJY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cJZ" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) -"cKa" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/medical/medbay3{name = "Medbay Aft"}) -"cKb" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j1"; dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) -"cKc" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cKd" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) -"cKe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/centcom{name = "Morgue"; opacity = 1; req_access_txt = "5"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cKf" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cKg" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cKh" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cKi" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cKj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cKl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/medical/morgue) -"cKm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/hallway/primary/aft) -"cKn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"cKo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 4; icon_state = "purple"},/area/hallway/primary/aft) +"cJS" = (/obj/item/weapon/storage/box/rxglasses{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/table/glass,/obj/machinery/door_control{desc = "A remote control switch for the cloning door."; id = "CloningDoor"; name = "Cloning Exit Button"; normaldoorcontrol = 1; pixel_x = -23; pixel_y = 8},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics_cloning) +"cJT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/genetics) +"cJU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/mirror{dir = 4; pixel_x = -28; pixel_y = 0},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/genetics) +"cJV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/landmark/start{name = "Geneticist"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/genetics) +"cJW" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "yellow"},/area/hallway/primary/aft) +"cJX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) +"cJY" = (/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) +"cJZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) +"cKa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) +"cKb" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 12; pixel_y = 2},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) +"cKc" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) +"cKd" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) +"cKe" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/medbreak) +"cKf" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) +"cKg" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -30},/obj/item/weapon/reagent_containers/spray/cleaner,/obj/structure/table/glass,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak) +"cKh" = (/obj/machinery/light{dir = 8},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -30},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 5},/obj/structure/table/glass,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak) +"cKi" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -29},/obj/machinery/camera{c_tag = "Medbay Break Room"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak) +"cKj" = (/obj/structure/stool,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak) +"cKk" = (/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/structure/table/glass,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak) +"cKn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics_cloning) +"cKo" = (/obj/structure/closet/wardrobe/black,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/genetics) "cKp" = (/turf/simulated/floor/plasteel{icon_state = "purplefull"},/area/assembly/robotics) -"cKq" = (/obj/structure/table/reinforced,/obj/item/weapon/pen,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters/preopen{dir = 8; id_tag = "robotics"; name = "robotics lab shutters"},/obj/machinery/door/window/eastright{dir = 4; name = "Robotics Desk"; req_access_txt = "29"},/turf/simulated/floor/plating,/area/assembly/robotics) +"cKq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -26},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "yellow"},/area/hallway/primary/aft) "cKr" = (/obj/effect/landmark/start{name = "Roboticist"},/obj/structure/stool/bed/chair/office/light{dir = 8},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/assembly/robotics) "cKs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/assembly/robotics) "cKt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/assembly/robotics) @@ -7282,11 +7296,16 @@ "cKv" = (/obj/structure/table,/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/machinery/ai_status_display{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/robotics) "cKw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "cKx" = (/obj/structure/lattice,/turf/space,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cKy" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) +"cKz" = (/obj/structure/closet/crate/freezer,/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/device/radio/intercom{frequency = 1459; name = "station intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) +"cKA" = (/obj/machinery/optable,/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cKB" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cKC" = (/obj/machinery/light,/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hydroponics) +"cKD" = (/obj/machinery/computer/operating,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cKE" = (/obj/machinery/atmospherics/binary/valve{dir = 4; name = "manual outlet valve"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cKF" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cKG" = (/obj/structure/closet/wardrobe/grey,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cKH" = (/obj/item/weapon/circular_saw,/obj/item/weapon/FixOVein,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cKI" = (/turf/simulated/wall,/area/space) "cKJ" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating/airless{dir = 10; icon_state = "warnplate"},/area/toxins/test_area) "cKK" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating/airless{dir = 6; icon_state = "warnplate"},/area/toxins/test_area) @@ -7301,19 +7320,21 @@ "cKT" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Virologist"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreencorner"},/area/medical/virology) "cKU" = (/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/pen/red,/obj/machinery/requests_console{department = "Virology"; name = "Virology Requests Console"; pixel_x = 29; pixel_y = 0},/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/medical/virology) "cKV" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cKW" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) -"cKX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cKZ" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitecorner"},/area/medical/medbay3{name = "Medbay Aft"}) -"cLa" = (/obj/item/device/healthanalyzer{pixel_x = 1; pixel_y = 4},/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = -30},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) -"cLb" = (/obj/machinery/vending/medical,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitecorner"},/area/medical/medbay3{name = "Medbay Aft"}) -"cLc" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/structure/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cLe" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cLf" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cLg" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Morgue"; opacity = 1; req_access_txt = "6"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cLh" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/aft) -"cLi" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"cLj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) -"cLk" = (/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/sign/science{name = "\improper ROBOTICS!"; pixel_x = 32},/turf/simulated/floor/plasteel{dir = 4; icon_state = "purplecorner"},/area/hallway/primary/aft) +"cKW" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) +"cKX" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) +"cKY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) +"cKZ" = (/turf/simulated/wall,/area/medical/patient_a) +"cLa" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/camera{c_tag = "Medbay Surgery 1 North"; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/patient_a) +"cLb" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/status_display{dir = 4; layer = 4; pixel_x = -32; pixel_y = 0},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/patient_a) +"cLc" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/status_display{dir = 4; layer = 4; pixel_x = -32; pixel_y = 0},/obj/machinery/camera{c_tag = "Medbay Surgery 1 North"; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/patient_b) +"cLd" = (/turf/simulated/wall,/area/medical/patient_b) +"cLe" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/firealarm{dir = 4; pixel_x = 28; pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/patient_b) +"cLf" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Morgue"; opacity = 1; req_access_txt = "6"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/genetics_cloning) +"cLg" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera{c_tag = "Aft Primary Hallway - Middle"; dir = 4; network = list("SS13")},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "yellow"},/area/hallway/primary/aft) +"cLh" = (/obj/structure/closet/secure_closet/medical3,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) +"cLi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) +"cLj" = (/obj/item/weapon/retractor,/obj/item/weapon/cautery,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) +"cLk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay3) "cLl" = (/obj/structure/noticeboard{dir = 4; pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/assembly/robotics) "cLm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/assembly/robotics) "cLn" = (/obj/effect/landmark/start{name = "Roboticist"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/assembly/robotics) @@ -7324,6 +7345,8 @@ "cLs" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/camera{c_tag = "Research Division Hallway - Robotics"; dir = 4; network = list("SS13","RD")},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cLt" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cLu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) +"cLv" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/medbay3) +"cLw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay3) "cLx" = (/obj/machinery/atmospherics/binary/dp_vent_pump/high_volume{dir = 2; frequency = 1449; id_tag = "tox_airlock_pump"},/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cLy" = (/obj/machinery/door/airlock/glass_research{autoclose = 0; frequency = 1449; glass = 1; icon_state = "door_locked"; id_tag = "tox_airlock_interior"; locked = 1; name = "Mixing Room Interior Airlock"; req_access_txt = "8"},/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cLz" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"},/area/toxins/mixing{name = "\improper Toxins Lab"}) @@ -7337,6 +7360,7 @@ "cLH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "cLI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "cLJ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreen"},/area/medical/virology) +"cLK" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay3) "cLL" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "cLM" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"},/area/medical/virology) "cLN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) @@ -7348,16 +7372,16 @@ "cLT" = (/obj/structure/sign/biohazard{pixel_y = 32},/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology) "cLU" = (/obj/structure/sink{pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/medical/virology) "cLV" = (/obj/structure/sign/securearea{pixel_x = 0; pixel_y = 32},/obj/machinery/shower{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/medical/virology) -"cLW" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"}) -"cLX" = (/obj/machinery/light/small{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/medical/medbay3{name = "Medbay Aft"}) -"cLY" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-21"; layer = 4.1; pixel_x = -3; pixel_y = 3; tag = "icon-plant-21"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay3{name = "Medbay Aft"}) -"cLZ" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cMa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cMb" = (/obj/structure/table,/obj/item/clothing/gloves/color/latex,/obj/item/clothing/mask/surgical,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) -"cMc" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cMd" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cMe" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cMf" = (/obj/machinery/disposal,/obj/machinery/light_switch{pixel_x = 23; pixel_y = 0},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cLW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay3) +"cLX" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) +"cLY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay3) +"cLZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/patient_a) +"cMa" = (/obj/structure/stool/bed/chair/office/light,/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -25; pixel_y = 0; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/patient_a) +"cMb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/patient_b) +"cMc" = (/obj/structure/stool/bed/chair/office/light,/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 25; pixel_y = 0; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/patient_b) +"cMd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cMe" = (/obj/structure/filingcabinet/chestdrawer{desc = "A large drawer filled with autopsy reports."; name = "Autopsy Reports"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cMf" = (/obj/machinery/camera{c_tag = "Morgue"; dir = 2; network = list("SS13","Medbay")},/obj/structure/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cMg" = (/obj/structure/closet,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/aft) "cMh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cMi" = (/obj/machinery/computer/rdconsole/robotics,/obj/machinery/requests_console{department = "Robotics"; departmentType = 2; name = "Robotics RC"; pixel_x = -31; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/assembly/robotics) @@ -7369,10 +7393,12 @@ "cMo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cMp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cMq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 10; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) +"cMr" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/obj/machinery/requests_console{department = "Morgue"; departmentType = 5; name = "Morgue Requests Console"; pixel_x = 0; pixel_y = 30},/obj/item/weapon/storage/box/bodybags{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/box/bodybags,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cMs" = (/obj/machinery/power/apc{dir = 1; name = "Genetics Lab APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/structure/table/glass,/obj/item/device/radio/headset/headset_medsci,/obj/item/device/flashlight/pen,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) "cMt" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/meter,/obj/machinery/door_control{id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -25; pixel_y = 5; req_access_txt = "7"},/obj/machinery/ignition_switch{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhitecorner"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cMu" = (/obj/machinery/atmospherics/binary/valve{dir = 4; name = "manual inlet valve"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cMv" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cMw" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/light/small{dir = 1},/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cMx" = (/obj/structure/closet/crate,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cMy" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/item/target,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/toxins/test_area) "cMz" = (/obj/structure/table/glass,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/pen/red,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"},/area/medical/virology) @@ -7387,29 +7413,30 @@ "cMI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "cMJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/medical/virology) "cMK" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/medical{name = "Virology Access"; req_access_txt = "39"},/turf/simulated/floor/plasteel{icon_state = "whitegreenfull"},/area/medical/virology) -"cML" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"cML" = (/obj/machinery/alarm{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cMM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "cMN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/medical/virology) "cMO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "virology_airlock_interior"; locked = 1; name = "Virology Interior Airlock"; req_access_txt = "39"},/obj/machinery/embedded_controller/radio/airlock/access_controller{frequency = 1449; id_tag = "virology_airlock_control"; name = "Virology Access Controller"; pixel_y = 25; req_access_txt = "39"; tag_exterior_door = "virology_airlock_exterior"; tag_interior_door = "virology_airlock_interior"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1449; master_tag = "virology_airlock_control"; pixel_x = 10; pixel_y = 25; req_access_txt = "39"},/turf/simulated/floor/plasteel{icon_state = "whitegreenfull"},/area/medical/virology) "cMP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology) "cMQ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology) "cMR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "virology_airlock_exterior"; locked = 1; name = "Virology Exterior Airlock"; req_access_txt = "39"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1449; master_tag = "virology_airlock_control"; pixel_x = 10; pixel_y = 25; req_access = null; req_access_txt = "39"},/turf/simulated/floor/plasteel{icon_state = "whitegreenfull"},/area/medical/virology) -"cMS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"}) -"cMT" = (/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/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/medical/medbay3{name = "Medbay Aft"}) -"cMU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Virology Access"; req_access_txt = "39"},/turf/simulated/floor/plasteel{icon_state = "whitegreenfull"},/area/medical/medbay3{name = "Medbay Aft"}) -"cMV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cMW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cMX" = (/obj/structure/table,/obj/machinery/button/windowtint{pixel_x = 25},/obj/item/weapon/surgicaldrill,/obj/item/weapon/FixOVein,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery) +"cMS" = (/turf/simulated/wall,/area/hallway/primary/aft) +"cMT" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/aft) +"cMU" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cMV" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) +"cMW" = (/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) +"cMX" = (/obj/item/weapon/surgicaldrill,/obj/item/stack/medical/bruise_pack/advanced,/obj/machinery/camera{c_tag = "Medbay Surgery 1 South"; dir = 1; network = list("SS13"); pixel_x = 0},/obj/machinery/light,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cMY" = (/obj/structure/disposalpipe/segment,/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/weapon/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cMZ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "cNa" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/backpack/duffel/medical,/obj/item/device/flashlight/pen{pixel_x = 4; pixel_y = 3},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/aft{name = "Aft Maintenance"}) "cNb" = (/obj/structure/table,/obj/item/weapon/retractor,/obj/item/weapon/hemostat,/obj/item/device/healthanalyzer,/obj/item/clothing/glasses/eyepatch,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka{pixel_x = 3; pixel_y = 2},/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cNc" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/maintenance{name = "Morgue Maintenance"; req_access_txt = "6"},/turf/simulated/floor/plating,/area/medical/morgue) +"cNc" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cNd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cNe" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/r_n_d/circuit_imprinter,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/assembly/robotics) "cNf" = (/obj/effect/landmark/start{name = "Roboticist"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/assembly/robotics) "cNg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/assembly/robotics) "cNh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/rack,/obj/item/weapon/storage/firstaid/regular{empty = 1; name = "First-Aid (empty)"},/obj/item/weapon/storage/firstaid/regular{empty = 1; name = "First-Aid (empty)"},/obj/item/weapon/storage/firstaid/regular{empty = 1; name = "First-Aid (empty)"},/obj/item/device/healthanalyzer{pixel_x = 4; pixel_y = -4},/obj/item/device/healthanalyzer{pixel_x = 4; pixel_y = -4},/obj/item/device/healthanalyzer{pixel_x = 4; pixel_y = -4},/obj/item/device/radio/headset/headset_sci{pixel_x = -3},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/robotics) +"cNi" = (/obj/item/weapon/hemostat,/obj/item/weapon/scalpel,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cNj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "cNk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cNl" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) @@ -7419,6 +7446,7 @@ "cNp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cNq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/poddoor/shutters/preopen{dir = 2; id_tag = "toxins_blastdoor"; name = "biohazard containment shutters"},/obj/machinery/door/airlock/maintenance{name = "Toxins Lab Maintenance"; req_access_txt = "8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cNr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/wall/r_wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cNs" = (/obj/item/weapon/bonegel,/obj/item/weapon/bonesetter,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cNt" = (/obj/structure/cable,/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless,/area/solar/port) "cNu" = (/obj/structure/table/glass,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/extinguisher_cabinet{pixel_x = -25; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 10; icon_state = "whitegreen"},/area/medical/virology) "cNv" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/plasteel{icon_state = "whitegreen"},/area/medical/virology) @@ -7434,18 +7462,19 @@ "cNF" = (/obj/structure/closet/emcloset,/obj/item/device/radio/intercom{pixel_x = -28; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology) "cNG" = (/obj/machinery/camera{c_tag = "Virology - Airlock"; dir = 1; network = list("SS13","Medbay")},/obj/machinery/light,/obj/structure/closet/l3closet,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology) "cNH" = (/obj/structure/closet/l3closet,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology) -"cNI" = (/obj/structure/sign/biohazard{pixel_x = -32},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"}) -"cNJ" = (/obj/machinery/camera{c_tag = "Virology - Entrance"; dir = 8; network = list("SS13","Medbay")},/obj/machinery/light/small{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/medical/medbay3{name = "Medbay Aft"}) -"cNK" = (/obj/structure/sign/biohazard{pixel_x = -32},/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreencorner"},/area/medical/medbay3{name = "Medbay Aft"}) -"cNL" = (/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = -30},/obj/item/weapon/storage/box/beakers{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/bodybags,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cNM" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/light,/obj/item/weapon/hand_labeler,/obj/item/weapon/pen,/obj/item/weapon/pen,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cNN" = (/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 8},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 10; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) +"cNI" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteblue"},/area/medical/medbay3) +"cNJ" = (/obj/machinery/camera{c_tag = "Medbay Foyer"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3) +"cNK" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3) +"cNL" = (/obj/machinery/light,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3) +"cNM" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3) +"cNN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3) "cNO" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/aft{name = "Aft Maintenance"}) "cNP" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/aft{name = "Aft Maintenance"}) "cNQ" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/blood/empty{pixel_x = 0; pixel_y = 0},/obj/item/weapon/reagent_containers/blood/empty{pixel_x = 0; pixel_y = 0},/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/dropper,/obj/structure/sign/biohazard{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/aft{name = "Aft Maintenance"}) "cNR" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cNS" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3) "cNT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cNU" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"cNU" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) "cNV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cNW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cNX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) @@ -7467,6 +7496,7 @@ "cOn" = (/obj/machinery/r_n_d/server/robotics,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server{name = "\improper Research Division Server Room"}) "cOo" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; external_pressure_bound = 140; on = 1; pressure_checks = 0},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server{name = "\improper Research Division Server Room"}) "cOp" = (/turf/simulated/wall/r_wall,/area/toxins/server{name = "\improper Research Division Server Room"}) +"cOq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay3) "cOr" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "cOs" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/sign/biohazard{pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cOt" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/weapon/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -7483,10 +7513,11 @@ "cOE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) "cOF" = (/obj/structure/closet/secure_closet/medical1,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) "cOG" = (/obj/structure/closet/l3closet/virology,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) -"cOH" = (/obj/structure/sign/biohazard{pixel_x = -32},/turf/space,/area/space) -"cOI" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cOH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/power/apc{dir = 4; name = "CMO's Office APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/patient_a) +"cOI" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/clothing/accessory/stethoscope,/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light_switch{pixel_x = 0; pixel_y = -24},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/patient_a) "cOJ" = (/obj/structure/stool/bed/roller,/obj/structure/stool/bed/roller,/obj/machinery/iv_drip,/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/aft{name = "Aft Maintenance"}) "cOK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cOL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24; shock_proof = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/patient_b) "cOM" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cON" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "escape"},/area/hallway/primary/aft) "cOO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "escape"},/area/hallway/primary/aft) @@ -7495,10 +7526,11 @@ "cOR" = (/obj/structure/table,/obj/item/weapon/circular_saw,/obj/item/weapon/scalpel{pixel_y = 12},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/item/weapon/razor{pixel_y = 5},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitehall"},/area/assembly/robotics) "cOS" = (/obj/effect/landmark/start{name = "Roboticist"},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics) "cOT" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics) -"cOU" = (/obj/machinery/requests_console{department = "Genetics"; departmentType = 0; name = "Genetics Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/light{dir = 1},/obj/item/weapon/storage/box/monkeycubes,/obj/structure/noticeboard{desc = "A board for pinning important notices upon."; name = "notice board"; pixel_x = -32; pixel_y = 32},/obj/structure/table/glass,/obj/item/weapon/storage/box/monkeycubes/farwacubes{pixel_y = -2},/obj/item/weapon/storage/box/monkeycubes/neaeracubes{pixel_x = 2},/obj/item/weapon/storage/box/monkeycubes/stokcubes{pixel_x = -2},/obj/item/weapon/storage/box/monkeycubes/wolpincubes{pixel_y = 2},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) +"cOU" = (/obj/machinery/light/small{dir = 4},/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/clothing/accessory/stethoscope,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light_switch{pixel_x = 0; pixel_y = -24},/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/patient_b) "cOV" = (/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/robotics) "cOW" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table,/obj/item/weapon/storage/box/bodybags{pixel_x = 2; pixel_y = 2},/obj/item/borg/upgrade/rename,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/robotics) "cOX" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/electrical{pixel_x = -1; pixel_y = 4},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 2; pixel_y = -1},/obj/item/clothing/head/welding{pixel_x = -3; pixel_y = 5},/obj/item/clothing/glasses/welding,/obj/item/device/multitool{pixel_x = 3},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/robotics) +"cOY" = (/obj/effect/landmark/start{name = "Coroner"},/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cOZ" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cPa" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cPb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) @@ -7510,7 +7542,8 @@ "cPh" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server{name = "\improper Research Division Server Room"}) "cPi" = (/obj/effect/landmark{name = "blobstart"},/obj/machinery/light/small{dir = 4},/obj/machinery/alarm/server{dir = 8; pixel_x = 22; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4; initialize_directions = 11},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server{name = "\improper Research Division Server Room"}) "cPj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cPk" = (/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/structure/table/reinforced,/obj/item/weapon/cartridge/signal/toxins{pixel_x = 4; pixel_y = 6},/obj/item/weapon/cartridge/signal/toxins{pixel_x = 4; pixel_y = 6},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) +"cPk" = (/obj/machinery/photocopier,/obj/item/device/radio/intercom{dir = 8; name = "station intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cPl" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/paper_bin{pixel_y = -1},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cPm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "cPn" = (/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/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "cPo" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/space) @@ -7519,14 +7552,16 @@ "cPr" = (/obj/structure/stool/bed,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/virology) "cPs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/medical/virology) "cPt" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/medical{name = "Break Room"; req_access_txt = "39"},/turf/simulated/floor/plasteel{icon_state = "whitegreenfull"},/area/medical/virology) -"cPu" = (/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cPw" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cPx" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"cPy" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/weapon/ore/slag,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cPz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cPA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/closet/crate,/obj/item/clothing/gloves/color/fyellow,/obj/item/weapon/wrench,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cPB" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cPu" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cPv" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cPw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cPx" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cPy" = (/turf/simulated/wall,/area/medical/medbay3) +"cPz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/maintenance{name = "Surgery Maintenance"; req_access_txt = "45"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/medical/medbay3) +"cPA" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) +"cPB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) "cPC" = (/obj/structure/table,/obj/machinery/camera{c_tag = "Research Director's Office"; dir = 1; network = list("SS13","RD")},/obj/machinery/photocopier/faxmachine{department = "Research Director's Office"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) +"cPD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) "cPE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/generic,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "cPF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{name = "Medical Surplus Storeroom"; req_access_txt = "12"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cPG" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/screwdriver{pixel_y = 6},/obj/item/weapon/crowbar,/obj/item/weapon/storage/pill_bottle,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/aft{name = "Aft Maintenance"}) @@ -7550,10 +7585,11 @@ "cPY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cPZ" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) "cQa" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/machinery/computer/rdservercontrol,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) -"cQb" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) +"cQb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Isolation A"; req_access_txt = "5"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/patient_a) "cQc" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera/motion{c_tag = "AI Satellite Exterior South"; network = list("SS13","RD","AIUpload")},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "cQd" = (/obj/machinery/r_n_d/server/core,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server{name = "\improper Research Division Server Room"}) "cQe" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 120; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server{name = "\improper Research Division Server Room"}) +"cQf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Isolation B"; req_access_txt = "5"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/patient_b) "cQg" = (/obj/structure/rack,/obj/effect/landmark/costume,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/aft{name = "Aft Maintenance"}) "cQh" = (/obj/effect/decal/cleanable/dirt,/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/aft{name = "Aft Maintenance"}) "cQi" = (/obj/structure/closet,/obj/item/clothing/glasses/science,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/aft{name = "Aft Maintenance"}) @@ -7570,11 +7606,13 @@ "cQt" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 26},/obj/machinery/camera{c_tag = "Virology - Break Room"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "cQu" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/structure/table/glass,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitegreen"},/area/medical/virology) "cQv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cQw" = (/obj/machinery/light/small{dir = 8},/obj/structure/closet/wardrobe/black,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/glass/bottle/reagent/formaldehyde,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cQx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cQy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cQz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 17},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cQA" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cQC" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cQz" = (/obj/structure/table,/obj/machinery/computer/med_data/laptop,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cQA" = (/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cQB" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cQC" = (/obj/structure/morgue,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cQD" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cQE" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cQF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) @@ -7582,7 +7620,7 @@ "cQH" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cQI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cQJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cQK" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cQK" = (/obj/machinery/door/poddoor/shutters/preopen{dir = 8; id_tag = "robotics"; name = "robotics lab shutters"},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/assembly/robotics) "cQL" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cQM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cQN" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) @@ -7593,6 +7631,7 @@ "cQS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{icon_state = "door_closed"; locked = 0; name = "Storage Room"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cQT" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "cQU" = (/obj/item/weapon/storage/box/lights/mixed,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cQV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cQW" = (/turf/simulated/wall/r_wall,/area/maintenance/starboardsolar) "cQX" = (/obj/machinery/door/airlock/engineering{name = "Aft Starboard Solar Access"; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cQY" = (/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/starboardsolar) @@ -7607,11 +7646,12 @@ "cRh" = (/turf/simulated/wall,/area/chapel/office) "cRi" = (/obj/machinery/door/airlock/centcom{icon = 'icons/obj/doors/Doormaint.dmi'; layer = 2.7; name = "Crematorium Maintenance"; opacity = 1; req_access_txt = "27"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cRj" = (/obj/machinery/door/airlock/centcom{icon = 'icons/obj/doors/Doormaint.dmi'; name = "Chapel Office Maintenance"; opacity = 1; req_access_txt = "27"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cRk" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cRl" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cRk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"cRl" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cRm" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cRn" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cRo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 10; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) +"cRo" = (/obj/effect/decal/cleanable/dirt,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cRp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/weapon/twohanded/required/kirbyplants{tag = "icon-plant-11"; icon_state = "plant-11"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) "cRq" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "cRr" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cRs" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) @@ -7626,14 +7666,16 @@ "cRB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cRC" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;7;47;29"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cRD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"cRE" = (/obj/machinery/camera{c_tag = "Medbay Surgery 1 North"; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay3) "cRF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "cRG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "cRH" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "7;12;47"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cRI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cRJ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) -"cRK" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "7;12;47"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"cRL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/medbay3) +"cRM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay3) "cRN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cRO" = (/obj/structure/closet/crate,/obj/item/weapon/contraband/poster/legit,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"cRO" = (/obj/structure/closet/crate,/obj/item/weapon/poster/random_official,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "cRP" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "cRQ" = (/obj/machinery/power/apc{dir = 8; name = "Aft Starboard Solar APC"; pixel_x = -26; pixel_y = 3},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cRR" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboardsolar) @@ -7666,13 +7708,14 @@ "cSs" = (/obj/machinery/door/poddoor/preopen{id_tag = "xeno_blastdoor"; name = "biohazard containment door"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "cSt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/poddoor/preopen{id_tag = "xeno_blastdoor"; name = "biohazard containment door"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "cSu" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/door/poddoor/preopen{id_tag = "xeno_blastdoor"; name = "biohazard containment door"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) +"cSv" = (/obj/item/weapon/twohanded/required/kirbyplants{tag = "icon-plant-11"; icon_state = "plant-11"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/medical/medbay3) "cSw" = (/obj/structure/stool,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/camera{c_tag = "Aft Starboard Solar Maintenance"; dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cSx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cSy" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cSz" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless,/area/space) "cSA" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless,/area/space) -"cSB" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) -"cSC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/medical{name = "Psych Office"; req_access_txt = "64"},/turf/simulated/floor/wood,/area/medical/psych) +"cSB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cSC" = (/obj/machinery/door/window/eastright{name = "Coroner Office"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cSD" = (/obj/machinery/atmospherics/unary/tank/air{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) "cSE" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1; name = "virology air connector port"},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) "cSF" = (/obj/item/trash/popcorn,/obj/structure/table/glass,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) @@ -7682,10 +7725,10 @@ "cSJ" = (/obj/machinery/light/small{dir = 4},/obj/effect/landmark/start{name = "Chaplain"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) "cSK" = (/obj/item/device/flashlight/lamp,/obj/machinery/newscaster{pixel_x = -30},/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "cSL" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Chaplain"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) -"cSM" = (/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) +"cSM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cSN" = (/obj/machinery/light/small{dir = 4},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 30; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "cSO" = (/turf/simulated/wall,/area/chapel/main) -"cSP" = (/obj/item/candle,/obj/machinery/light_switch{pixel_x = -27},/obj/effect/decal/cleanable/cobweb,/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) +"cSP" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cSQ" = (/obj/item/weapon/storage/bible,/obj/machinery/light/small{dir = 1},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/camera{c_tag = "Chapel - Fore"; dir = 2; network = list("SS13")},/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cSR" = (/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cSS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) @@ -7700,7 +7743,7 @@ "cTb" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cTc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cTd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cTe" = (/obj/structure/table/reinforced,/obj/machinery/door/window/westleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Outer Window"; req_access_txt = "0"},/obj/machinery/door/window/brigdoor{dir = 4; name = "Security Desk"; req_access_txt = "1"},/obj/item/weapon/folder/red,/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cTe" = (/obj/machinery/power/apc{dir = 4; name = "Morgue APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cTf" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching output from station security cameras."; name = "Security Camera Monitor"; network = list("SS13"); pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cTg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cTh" = (/obj/structure/stool/bed/chair,/obj/structure/sign/double/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) @@ -7709,6 +7752,7 @@ "cTk" = (/obj/structure/sign/biohazard,/turf/simulated/wall,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cTl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Secure Lab"; req_access_txt = "47"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cTm" = (/obj/structure/sign/securearea,/turf/simulated/wall,/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cTn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cTo" = (/obj/machinery/biogenerator,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "cTp" = (/obj/structure/rack{layer = 2.8},/obj/item/seeds/wheat,/obj/item/seeds/watermelon,/obj/item/seeds/watermelon,/obj/item/seeds/grape,/obj/item/seeds/glowshroom,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "cTq" = (/obj/item/device/plant_analyzer,/obj/item/weapon/cultivator,/obj/item/weapon/reagent_containers/glass/bucket,/obj/structure/rack{layer = 2.8},/obj/item/seeds/corn,/obj/item/seeds/cabbage,/obj/item/seeds/ambrosia,/obj/item/seeds/grass,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) @@ -7717,6 +7761,7 @@ "cTt" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/device/plant_analyzer,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "cTu" = (/obj/machinery/power/solar_control{id = "aftstarboard"; name = "Aft Starboard Solar Control"; track = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cTv" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/starboardsolar) +"cTw" = (/obj/structure/table/reinforced,/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters/preopen{dir = 8; id_tag = "robotics"; name = "robotics lab shutters"},/obj/machinery/door/window/eastright{dir = 4; name = "Robotics Desk"; req_access_txt = "29"},/turf/simulated/floor/plating,/area/assembly/robotics) "cTx" = (/obj/structure/disposaloutlet,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating/airless,/area/space) "cTy" = (/obj/structure/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) "cTz" = (/obj/machinery/camera{c_tag = "Chapel Office - Backroom"; dir = 8; network = list("SS13")},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) @@ -7725,7 +7770,7 @@ "cTC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/storage/fancy/candle_box{pixel_x = 0; pixel_y = 5},/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "cTD" = (/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "cTE" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; pixel_x = -25},/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) -"cTF" = (/obj/machinery/door/morgue{name = "Confession Booth"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) +"cTF" = (/obj/effect/decal/cleanable/dirt,/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/weapon/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cTG" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/carpet,/area/chapel/main) "cTH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/chapel/main) "cTI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/carpet,/area/chapel/main) @@ -7745,11 +7790,12 @@ "cTW" = (/obj/structure/sign/vacuum{pixel_x = 32},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "cTX" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cTY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cTZ" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/preopen{id_tag = "chapelparlourshutters"; name = "chapel shutters"},/turf/simulated/floor/plating,/area/chapel/main) +"cTZ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cUa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{name = "Medbay Maintenance"; req_access_txt = "5"},/turf/simulated/floor/plating,/area/medical/medbay3) "cUb" = (/obj/item/seeds/watermelon,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cUc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cUd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/stool/bed/chair,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cUe" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/preopen{id_tag = "chapelspaceshutters"; name = "chapel shutters"},/turf/simulated/floor/plating,/area/chapel/main) +"cUe" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) "cUf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access = null; req_access_txt = "10; 13"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cUg" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) "cUh" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) @@ -7759,10 +7805,10 @@ "cUl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "cUm" = (/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/camera{c_tag = "Chapel Office"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "cUn" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) -"cUo" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "Chapel APC"; pixel_x = -25},/turf/simulated/floor/carpet,/area/chapel/main) -"cUp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/chapel/main) -"cUq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/carpet,/area/chapel/main) -"cUr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/chapel/main) +"cUo" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) +"cUp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) +"cUq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) +"cUr" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) "cUs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/carpet,/area/chapel/main) "cUt" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Chapel"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cUu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) @@ -7776,7 +7822,7 @@ "cUC" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Departure Lounge Security Post"; req_access_txt = "63"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cUD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cUE" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cUF" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{icon_state = "red"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cUF" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) "cUG" = (/obj/structure/table,/obj/machinery/newscaster/security_unit{pixel_x = 29; pixel_y = 1},/obj/machinery/camera{c_tag = "Departure Lounge - Security Post"; dir = 1; network = list("SS13")},/obj/item/weapon/book/manual/security_space_law{pixel_x = -4; pixel_y = 4},/obj/item/device/taperecorder{pixel_x = 4; pixel_y = 0},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cUH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cUI" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) @@ -7791,13 +7837,14 @@ "cUR" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "cUS" = (/obj/machinery/door/morgue{name = "Confession Booth (Chaplain)"; req_access_txt = "22"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) "cUT" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; pixel_x = 25},/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) -"cUU" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main) -"cUV" = (/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main) -"cUW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main) +"cUU" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Morgue"; opacity = 1; req_access_txt = "6"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cUV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) +"cUW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/effect/landmark/start{name = "Coroner"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cUX" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cUY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main) "cUZ" = (/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main) "cVa" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main) +"cVb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cVc" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cVd" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cVe" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) @@ -7807,15 +7854,17 @@ "cVi" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cVj" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/sign/electricshock{pixel_x = 32},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cVk" = (/turf/simulated/wall,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cVl" = (/obj/structure/morgue,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cVm" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cVn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cVo" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/glowshroom,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "cVp" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/weapon/cultivator,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "cVq" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/ambrosia,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "cVr" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/watermelon,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "cVs" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/berry,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"cVt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/chapel/office) -"cVu" = (/obj/machinery/door/airlock/centcom{name = "Chapel Office"; opacity = 1; req_access_txt = "27"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) -"cVv" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main) +"cVt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cVu" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cVv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cVw" = (/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main) "cVx" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main) "cVy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main) @@ -7824,11 +7873,13 @@ "cVB" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cVC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cVD" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cVE" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cVF" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cVG" = (/turf/simulated/wall/r_wall,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cVH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "xeno_airlock_exterior"; locked = 1; name = "Secure Lab External Airlock"; req_access_txt = "55"},/obj/machinery/access_button{command = "cycle_exterior"; master_tag = "xeno_airlock_control"; pixel_x = -25; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cVI" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cVJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"cVK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/aft) "cVL" = (/obj/structure/closet/coffin,/obj/machinery/light/small{dir = 1},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/chapel/main) "cVM" = (/obj/structure/closet/coffin,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/chapel/main) "cVN" = (/obj/structure/noticeboard{desc = "A memorial wall for pinning up momentos"; name = "memorial board"; pixel_y = 32},/obj/item/weapon/storage/fancy/candle_box,/obj/item/weapon/storage/fancy/candle_box{pixel_x = -2; pixel_y = 2},/obj/effect/decal/cleanable/cobweb,/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/chapel/main) @@ -7854,6 +7905,8 @@ "cWh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cWi" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cWj" = (/obj/structure/window/reinforced,/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"cWk" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Morgue"; opacity = 1; req_access_txt = "6"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cWl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cWm" = (/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access = null; req_access_txt = "10; 13"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cWn" = (/obj/structure/closet/coffin,/turf/simulated/floor/plating,/area/chapel/main) "cWo" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) @@ -7874,9 +7927,9 @@ "cWD" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cWE" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cWF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cWG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) -"cWH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/stool/bed/chair/comfy/beige{dir = 4},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/effect/landmark/start{name = "Psychiatrist"},/turf/simulated/floor/wood,/area/medical/psych) -"cWI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 24},/turf/simulated/floor/wood,/area/medical/psych) +"cWG" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"cWH" = (/obj/machinery/light{dir = 4},/obj/structure/sign/science{name = "\improper ROBOTICS!"; pixel_x = 32},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 4; icon_state = "purplecorner"},/area/hallway/primary/aft) +"cWI" = (/obj/effect/decal/cleanable/dirt,/obj/structure/rack{dir = 8; layer = 2.9},/obj/machinery/light/small{dir = 8},/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cWJ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/starboardsolar) "cWK" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) "cWL" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) @@ -7886,8 +7939,8 @@ "cWP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cWQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cWR" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) -"cWS" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/shuttle/research) -"cWU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main) +"cWT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cWU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) "cWV" = (/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cWW" = (/obj/item/weapon/storage/bible,/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cWX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main) @@ -7904,24 +7957,24 @@ "cXi" = (/obj/structure/closet/l3closet/scientist,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cXj" = (/obj/structure/closet/coffin,/obj/machinery/light/small,/turf/simulated/floor/plating,/area/chapel/main) "cXk" = (/obj/machinery/light/small{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Chapel - Funeral Parlour"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) +"cXl" = (/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3) "cXm" = (/obj/item/device/flashlight/lantern{pixel_y = 7},/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cXn" = (/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) -"cXo" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/shuttle/research) "cXp" = (/obj/machinery/door/airlock/external{id_tag = "emergency_home"; name = "Departure Lounge Airlock"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cXq" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 7},/obj/item/weapon/storage/box/syringes{pixel_y = 5},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cXr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 3; icon_state = "whitebluecorner"},/area/medical/medbay3) "cXs" = (/obj/machinery/chem_dispenser,/obj/machinery/light{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cXt" = (/obj/machinery/chem_master{pixel_x = -2; pixel_y = 1},/obj/structure/noticeboard{pixel_y = 30},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cXu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cXv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "xeno_airlock_interior"; locked = 1; name = "Secure Lab Internal Airlock"; req_access_txt = "55"},/obj/machinery/embedded_controller/radio/airlock/access_controller{frequency = 1449; id_tag = "xeno_airlock_control"; pixel_x = -25; pixel_y = -10; req_access_txt = "55"; tag_exterior_door = "xeno_airlock_exterior"; tag_interior_door = "xeno_airlock_interior"},/obj/machinery/access_button{command = "cycle_interior"; master_tag = "xeno_airlock_control"; pixel_x = -25; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cXw" = (/obj/machinery/vending/medical,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3) "cXx" = (/obj/machinery/camera{active_power_usage = 0; c_tag = "Bomb Test Site"; desc = "A specially-reinforced camera with a long lasting battery, used to monitor the bomb testing site. An external light is attached to the top."; dir = 8; invuln = 1; light = null; luminosity = 3; name = "Hardened Bomb-Test Camera"; network = list("Toxins","Research","SS13"); use_power = 0},/obj/item/target/alien{anchored = 1},/turf/simulated/shuttle/plating{dir = 4; icon_state = "warnplate"; luminosity = 2; nitrogen = 0.01; oxygen = 0.01; temperature = 2.7},/area/toxins/test_area) +"cXy" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3) "cXz" = (/obj/machinery/smartfridge/secure/extract,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cXB" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/research) -"cXC" = (/obj/structure/grille,/obj/structure/window/full/shuttle,/turf/simulated/shuttle/plating,/area/shuttle/research) -"cXD" = (/obj/structure/closet/crate,/turf/simulated/shuttle/floor,/area/shuttle/research) +"cXA" = (/obj/structure/table,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/machinery/light,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3) "cXE" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cXF" = (/obj/machinery/door/window{dir = 4; name = "Mass Driver"; req_access_txt = "22"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cXG" = (/obj/machinery/mass_driver{dir = 2; id_tag = "chapelgun"},/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/light/small{dir = 1},/obj/item/device/gps,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/chapel/main) -"cXH" = (/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/research) "cXI" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main) "cXJ" = (/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cXK" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) @@ -7938,12 +7991,7 @@ "cXV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cXW" = (/obj/structure/stool/bed/chair/office/light{dir = 1; pixel_y = 3},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cXX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cXZ" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/research) -"cYa" = (/obj/structure/shuttle/engine/propulsion/burst{dir = 8},/turf/space,/area/shuttle/research) -"cYb" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/research) -"cYc" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) -"cYd" = (/turf/simulated/shuttle/floor,/area/shuttle/research) -"cYe" = (/obj/structure/table,/turf/simulated/shuttle/floor,/area/shuttle/research) +"cXY" = (/obj/item/weapon/twohanded/required/kirbyplants{tag = "icon-plant-11"; icon_state = "plant-11"},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteblue"},/area/medical/medbay3) "cYf" = (/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) "cYg" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/chapel/main) "cYh" = (/obj/machinery/door/morgue{name = "Chapel Garden"; req_access_txt = "0"},/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/chapel/main) @@ -7952,7 +8000,8 @@ "cYk" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cYl" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/driver_button{id_tag = "chapelgun"; name = "Chapel Mass Driver"; pixel_x = -4; pixel_y = -26},/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cYm" = (/turf/simulated/floor/plating{icon_state = "warnplate"},/area/chapel/main) -"cYo" = (/obj/structure/table/woodentable,/obj/machinery/computer/med_data/laptop,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/wood,/area/medical/psych) +"cYn" = (/obj/machinery/optable,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cYo" = (/obj/structure/table,/obj/item/weapon/storage/box/gloves{pixel_y = 8},/obj/item/device/camera{name = "Autopsy Camera"; pixel_x = -2; pixel_y = -2},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cYp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cYq" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cYr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) @@ -7960,20 +8009,22 @@ "cYt" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cYu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cYv" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cYx" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/shuttle/research) -"cYz" = (/obj/machinery/computer/shuttle/science,/turf/simulated/shuttle/floor,/area/shuttle/research) +"cYw" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table,/obj/item/weapon/autopsy_scanner,/obj/item/weapon/scalpel,/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cYy" = (/obj/machinery/light/small,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cYA" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "aftstarboard"; name = "Aft-Starboard Solar Array"},/turf/simulated/floor/plating/airless{icon_state = "solarpanel"},/area/solar/starboard) "cYB" = (/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) "cYC" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id_tag = "psychoffice"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/psych) "cYD" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/shuttle/escape) "cYE" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/shuttle/escape) "cYF" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/plating,/area/shuttle/escape) -"cYG" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/research) "cYH" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"; dir = 2},/area/shuttle/escape) -"cYI" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_closed"; id_tag = "research_dock_outer"; locked = 0; name = "Shuttle Airlock"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) +"cYI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cYJ" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/shuttle/escape) "cYK" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1; name = "xenobiology air connector port"},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plasteel{tag = "icon-whitepurple (SOUTHWEST)"; icon_state = "whitepurple"; dir = 10},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cYL" = (/obj/machinery/disposal,/obj/machinery/light_switch{pixel_x = 23; pixel_y = 0},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cYM" = (/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = -32},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cYN" = (/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cYO" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay3) "cYP" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cYQ" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cYR" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) @@ -7981,6 +8032,7 @@ "cYT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/sign/fire{pixel_y = -32},/obj/machinery/atmospherics/binary/pump/highcap{dir = 8},/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cYU" = (/obj/machinery/monkey_recycler,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cYV" = (/obj/machinery/processor{desc = "A machine used to process slimes and retrieve their extract."; name = "Slime Processor"},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cYW" = (/obj/machinery/door/airlock/maintenance{name = "Morgue Maintenance"; req_access_txt = "6"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/medical/morgue) "cYX" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) "cYY" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) "cYZ" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) @@ -7989,27 +8041,22 @@ "cZc" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) "cZd" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) "cZe" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/escape) -"cZf" = (/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/medical/research{name = "Research Division"}) "cZg" = (/obj/structure/dispenser/oxygen{layer = 2.7; pixel_x = -1; pixel_y = 2},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) -"cZh" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/medical/research{name = "Research Division"}) -"cZi" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/medical/research{name = "Research Division"}) "cZj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) "cZk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/chapel/main) "cZl" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-24"; layer = 4.1; tag = "icon-plant-24"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) -"cZm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/stool/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main) -"cZn" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/medical/research{name = "Research Division"}) +"cZm" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/medical/virology) "cZo" = (/obj/machinery/door/airlock/shuttle{id_tag = "s_docking_airlock"; name = "Emergency Shuttle Airlock"; req_access_txt = "0"},/turf/simulated/shuttle/floor,/area/shuttle/escape) "cZp" = (/obj/docking_port/mobile/emergency{dir = 2; dwidth = 5; height = 14; width = 25},/obj/docking_port/stationary{dir = 2; dwidth = 5; height = 14; id = "emergency_home"; name = "emergency evac bay"; width = 25},/obj/machinery/door/airlock/shuttle{id_tag = "s_docking_airlock"; name = "Emergency Shuttle Airlock"; req_access_txt = "0"},/turf/simulated/shuttle/floor,/area/shuttle/escape) -"cZq" = (/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen,/turf/simulated/shuttle/plating{icon_state = "bot"},/area/shuttle/escape) +"cZq" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/maintenance/aft{name = "Aft Maintenance"}) "cZr" = (/turf/simulated/wall,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cZs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cZt" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cZu" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cZv" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) -"cZw" = (/obj/machinery/camera{c_tag = "Chapel - Port"; dir = 4; network = list("SS13")},/obj/structure/stool/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main) +"cZv" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cZw" = (/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/iv_drip,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/maintenance/aft{name = "Aft Maintenance"}) "cZx" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main) -"cZy" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_closed"; id_tag = "research_shuttle_hatch"; locked = 0; name = "External Hatch"; req_access_txt = "13"},/obj/docking_port/mobile{dwidth = 3; height = 5; id = "science"; name = "research shuttle"; width = 7},/obj/docking_port/stationary{dwidth = 3; height = 5; id = "science_home"; name = "research dock"; width = 7},/turf/simulated/shuttle/floor,/area/shuttle/research) -"cZz" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/research) +"cZy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) "cZA" = (/obj/structure/cable,/obj/machinery/power/solar{id = "aftstarboard"; name = "Aft-Starboard Solar Array"},/turf/simulated/floor/plating/airless{icon_state = "solarpanel"},/area/solar/starboard) "cZB" = (/turf/simulated/shuttle/floor,/area/shuttle/escape) "cZC" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main) @@ -8018,38 +8065,48 @@ "cZF" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "burst_l"},/turf/simulated/shuttle/plating,/area/shuttle/escape) "cZG" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/disposaloutlet,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cZH" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cZI" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-21"; layer = 4.1; pixel_x = -3; pixel_y = 3; tag = "icon-plant-21"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay3) "cZJ" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cZK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cZL" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cZM" = (/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cZN" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio8"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cZO" = (/obj/machinery/door/airlock/medical{name = "Psych Office"; req_access_txt = "64"},/turf/simulated/floor/wood,/area/medical/psych) "cZP" = (/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cZQ" = (/obj/structure/bookcase{name = "Holy Bookcase"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main) +"cZQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) "cZR" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main) "cZS" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion"; tag = "icon-propulsion (EAST)"},/turf/simulated/shuttle/plating,/area/shuttle/escape) "cZT" = (/obj/structure/lattice,/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cZU" = (/obj/structure/lattice,/obj/machinery/door/airlock/external{id_tag = "emergency_home"; name = "Departure Lounge Airlock"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cZV" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_r"; tag = "icon-propulsion_r (EAST)"},/turf/simulated/shuttle/plating,/area/shuttle/escape) "cZW" = (/obj/structure/closet/crate/medical{name = "medical crate"},/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/o2{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/toxin{pixel_x = -4; pixel_y = 3},/obj/item/device/healthanalyzer{pixel_x = 3; pixel_y = 3},/obj/item/weapon/lazarus_injector,/mob/living/simple_animal/bot/medbot{name = "\improper emergency medibot"; pixel_x = -3; pixel_y = 2},/turf/simulated/shuttle/plating{icon_state = "bot"},/area/shuttle/escape) +"cZX" = (/obj/machinery/door_control{id = "psychoffice"; name = "Privacy Shutters Control"; pixel_x = 0; pixel_y = 25},/turf/simulated/floor/wood,/area/medical/psych) "cZY" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #1"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cZZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "daa" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dab" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dac" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #2"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dad" = (/obj/machinery/light/small{dir = 1},/obj/item/weapon/twohanded/required/kirbyplants{tag = "icon-plant-25"; icon_state = "plant-25"},/turf/simulated/floor/wood,/area/medical/psych) "dae" = (/obj/machinery/camera{c_tag = "Head of Personnel's Office"; dir = 1; network = list("SS13")},/obj/structure/table/woodentable,/obj/item/weapon/storage/box/PDAs{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/ids,/obj/item/weapon/storage/box/ids,/turf/simulated/floor/wood,/area/crew_quarters/heads) +"daf" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/camera{c_tag = "Medbay Surgery 1 North"; network = list("SS13")},/turf/simulated/floor/wood,/area/medical/psych) "dag" = (/obj/machinery/door/poddoor{id_tag = "chapelgun"; name = "Chapel Launcher Door"; protected = 0},/obj/structure/fans/tiny,/turf/simulated/floor/plating,/area/chapel/main) "dah" = (/turf/simulated/shuttle/wall{icon_state = "swallc2"; dir = 2},/area/shuttle/escape) "dai" = (/turf/simulated/shuttle/wall{icon_state = "swall0"; dir = 2},/area/shuttle/escape) "daj" = (/obj/structure/sign/nosmoking_2,/turf/simulated/shuttle/wall{icon_state = "swall0"; dir = 2},/area/shuttle/escape) +"dak" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/closet/secure_closet/psychiatrist,/turf/simulated/floor/wood,/area/medical/psych) "dal" = (/turf/simulated/shuttle/wall{icon_state = "swall4"; dir = 2},/area/shuttle/escape) "dam" = (/obj/structure/closet/crate{name = "emergency supplies crate"},/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/toolbox/emergency,/obj/item/device/flashlight/flare{pixel_x = 3; pixel_y = 3},/obj/item/device/flashlight/flare{pixel_x = -6; pixel_y = -2},/obj/item/weapon/crowbar,/obj/item/weapon/wrench,/obj/item/device/radio,/turf/simulated/shuttle/plating{icon_state = "bot"},/area/shuttle/escape) +"dan" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"dao" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/medical/virology) "dap" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio3"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "daq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhitecorner"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dar" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "das" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{tag = "icon-warnwhitecorner"; icon_state = "warnwhitecorner"; dir = 2},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dat" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dau" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "dav" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"daw" = (/obj/machinery/computer/shuttle/science,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cmo"},/area/medical/research{name = "Research Division"}) +"dax" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/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/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/maintenance/aft{name = "Aft Maintenance"}) +"day" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/maintenance/aft{name = "Aft Maintenance"}) "daz" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/shuttle/escape) "daA" = (/obj/structure/table,/obj/item/weapon/phone{pixel_x = -3; pixel_y = 3},/obj/item/weapon/cigbutt/cigarbutt{pixel_x = 5; pixel_y = -1},/turf/simulated/shuttle/floor,/area/shuttle/escape) "daB" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular,/turf/simulated/shuttle/floor,/area/shuttle/escape) @@ -8062,44 +8119,61 @@ "daI" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/camera{c_tag = "Secure Lab - Central"; dir = 8; network = list("SS13","RD")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "daJ" = (/turf/simulated/shuttle/wall{icon_state = "swall1"; dir = 2},/area/shuttle/escape) "daK" = (/obj/structure/closet/crate{name = "lifejackets"},/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/item/clothing/mask/breath{pixel_x = -5; pixel_y = -2},/obj/item/clothing/mask/breath{pixel_x = -5; pixel_y = -2},/obj/item/clothing/mask/breath{pixel_x = -5; pixel_y = -2},/obj/item/clothing/mask/breath{pixel_x = -5; pixel_y = -2},/obj/item/clothing/mask/breath{pixel_x = -5; pixel_y = -2},/obj/item/clothing/head/hardhat,/obj/item/clothing/head/hardhat,/obj/item/clothing/head/hardhat,/obj/item/clothing/head/hardhat,/obj/item/clothing/head/hardhat,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) -"daL" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) -"daM" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cmo"},/area/medical/research{name = "Research Division"}) -"daO" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_closed"; id_tag = "research_dock_inner"; locked = 0; name = "Shuttle Airlock"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) +"daL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Virology Access"; req_access_txt = "39"},/turf/simulated/floor/plasteel{icon_state = "whitegreenfull"},/area/medical/medbay3) +"daM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/maintenance/aft{name = "Aft Maintenance"}) +"daN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) +"daO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3) +"daP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) +"daQ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/wood,/area/medical/psych) "daR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhitecorner"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "daS" = (/turf/simulated/floor/plasteel{tag = "icon-warnwhitecorner (WEST)"; icon_state = "warnwhitecorner"; dir = 8},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "daT" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio7"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"daU" = (/obj/structure/table/woodentable,/obj/machinery/computer/med_data/laptop,/turf/simulated/floor/wood,/area/medical/psych) +"daV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/medical/psych) "daW" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"; dir = 2},/area/shuttle/escape) "daX" = (/turf/simulated/shuttle/wall{icon_state = "swall8"; dir = 2},/area/shuttle/escape) "daY" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0"},/turf/simulated/shuttle/floor,/area/shuttle/escape) "daZ" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/escape) "dba" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"; dir = 2},/area/shuttle/escape) +"dbb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/hologram/holopad,/turf/simulated/floor/carpet,/area/medical/psych) "dbc" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #3"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbd" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbe" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #4"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dbf" = (/obj/machinery/power/apc{dir = 4; name = "Psychiatrist APC"; pixel_x = 25},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/carpet,/area/medical/psych) "dbg" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) "dbh" = (/obj/machinery/status_display,/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/escape) "dbi" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor,/area/shuttle/escape) "dbj" = (/obj/structure/sign/fire{pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall/coated,/area/maintenance/incinerator) "dbk" = (/obj/structure/table,/obj/item/weapon/storage/fancy,/turf/simulated/shuttle/floor,/area/shuttle/escape) +"dbl" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/item/device/robotanalyzer,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/masks{pixel_x = 6; pixel_y = 6},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"},/area/assembly/robotics) "dbm" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio2"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbn" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbo" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{tag = "icon-warnwhitecorner"; icon_state = "warnwhitecorner"; dir = 2},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dbp" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/medical/virology) "dbq" = (/obj/structure/table,/obj/item/weapon/restraints/handcuffs,/turf/simulated/shuttle/floor,/area/shuttle/escape) "dbr" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbs" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbt" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) -"dbv" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) +"dbu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"dbv" = (/obj/structure/sign/biohazard{pixel_x = -32},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/maintenance/aft{name = "Aft Maintenance"}) "dbw" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bottle/epinephrine{pixel_x = 6; pixel_y = 0},/obj/item/weapon/reagent_containers/glass/bottle/charcoal{pixel_x = -3},/obj/item/weapon/reagent_containers/glass/bottle/epinephrine{pixel_x = -3; pixel_y = 8},/obj/item/weapon/reagent_containers/glass/bottle/charcoal{pixel_x = 6; pixel_y = 8},/obj/item/weapon/reagent_containers/syringe/epinephrine{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/syringe/epinephrine{pixel_x = 4; pixel_y = 1},/obj/item/weapon/reagent_containers/syringe/epinephrine{pixel_x = -2; pixel_y = 5},/obj/item/weapon/reagent_containers/syringe/epinephrine{pixel_x = 2; pixel_y = 8},/turf/simulated/shuttle/floor,/area/shuttle/escape) "dbx" = (/obj/structure/table,/obj/item/weapon/scalpel{pixel_y = 12},/obj/item/weapon/circular_saw,/obj/item/weapon/retractor{pixel_x = 4},/obj/item/weapon/hemostat{pixel_x = -4},/obj/item/clothing/gloves/color/latex,/obj/item/clothing/mask/surgical,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -27},/turf/simulated/shuttle/floor,/area/shuttle/escape) +"dby" = (/obj/machinery/camera{c_tag = "Virology - Entrance"; dir = 8; network = list("SS13","Medbay")},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/maintenance/aft{name = "Aft Maintenance"}) "dbz" = (/obj/machinery/light{dir = 1},/obj/machinery/door_control{id = "xenobio1"; name = "Containment Blast Doors"; pixel_x = -24; pixel_y = 24; req_access_txt = "55"},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbA" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhitecorner"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbB" = (/obj/structure/window/reinforced,/obj/machinery/door_control{id = "xenobio6"; name = "Containment Blast Doors"; pixel_x = 24; pixel_y = 24; req_access_txt = "55"},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dbC" = (/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = -30},/obj/item/weapon/storage/box/beakers{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/bodybags,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) "dbD" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbE" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_se"; name = "southeast of station"; width = 18},/turf/space,/area/space) +"dbF" = (/obj/structure/sign/biohazard{pixel_x = -32},/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreencorner"},/area/medical/medbay3) +"dbG" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/light,/obj/item/weapon/hand_labeler,/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) +"dbH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/medical/psych) "dbI" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #5"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbJ" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark/start{name = "Scientist"},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbK" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #6"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dbL" = (/obj/structure/table/woodentable,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/item/weapon/paper_bin{pixel_y = 5},/obj/item/weapon/clipboard{pixel_x = -5},/obj/item/weapon/pen/multi,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/wood,/area/medical/psych) "dbM" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dbN" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 1},/obj/effect/landmark/start{name = "Psychiatrist"},/turf/simulated/floor/carpet,/area/medical/psych) "dbO" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/escape) "dbP" = (/obj/machinery/computer/communications,/turf/simulated/shuttle/floor,/area/shuttle/escape) "dbQ" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) @@ -8115,6 +8189,7 @@ "dca" = (/obj/structure/cable,/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless,/area/solar/starboard) "dcb" = (/obj/machinery/door/airlock/shuttle{id_tag = "s_docking_airlock"; name = "Emergency Shuttle Airlock"; req_access_txt = "2"},/turf/simulated/shuttle/floor,/area/shuttle/escape) "dcc" = (/obj/structure/closet/crate{name = "lifejackets"},/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/item/clothing/mask/breath{pixel_x = -5; pixel_y = -2},/obj/item/clothing/mask/breath{pixel_x = -5; pixel_y = -2},/obj/item/clothing/mask/breath{pixel_x = -5; pixel_y = -2},/obj/item/clothing/mask/breath{pixel_x = -5; pixel_y = -2},/obj/item/clothing/mask/breath{pixel_x = -5; pixel_y = -2},/obj/item/clothing/head/hardhat,/obj/item/clothing/head/hardhat,/obj/item/clothing/head/hardhat,/obj/item/clothing/head/hardhat,/obj/item/clothing/head/hardhat,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) +"dcd" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) "dce" = (/obj/machinery/computer/emergency_shuttle,/obj/machinery/light{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/escape) "dcf" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera{c_tag = "Secure Lab - Aft-Port"; dir = 4; network = list("SS13","RD")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dcg" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) @@ -8147,7 +8222,8 @@ "dcH" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dcI" = (/obj/machinery/shieldwallgen{req_access = list(55)},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dcJ" = (/obj/machinery/light{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/escape) -"dcK" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/shuttle/floor,/area/shuttle/escape) +"dcK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"dcL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "dcM" = (/obj/structure/table,/obj/machinery/recharger{active_power_usage = 0; idle_power_usage = 0; use_power = 0},/turf/simulated/shuttle/floor,/area/shuttle/escape) "dcN" = (/obj/structure/table,/obj/item/weapon/folder/blue,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/shuttle/floor,/area/shuttle/escape) "dcO" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_sw"; name = "southwest of station"; width = 18},/turf/space,/area/space) @@ -8220,14 +8296,15 @@ "ded" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/dye_generator,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/civilian/barber) "dee" = (/obj/machinery/cryopod/right,/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "def" = (/obj/machinery/cryopod,/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) -"deh" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/wood,/area/medical/psych) +"deg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"deh" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/wall,/area/maintenance/aft{name = "Aft Maintenance"}) "dei" = (/turf/simulated/floor/wood,/area/medical/psych) -"dej" = (/obj/structure/closet/secure_closet/psychiatrist,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/wood,/area/medical/psych) -"dek" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/carpet,/area/medical/psych) -"del" = (/obj/structure/stool/bed/chair/comfy/beige,/obj/machinery/door_control{id = "psychoffice"; name = "Privacy Shutters Control"; pixel_x = -25; pixel_y = 0},/turf/simulated/floor/carpet,/area/medical/psych) -"dem" = (/obj/machinery/power/apc{dir = 4; name = "Psychiatrist APC"; pixel_x = 25},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/item/weapon/twohanded/required/kirbyplants{tag = "icon-plant-25"; icon_state = "plant-25"},/turf/simulated/floor/carpet,/area/medical/psych) +"dej" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 17},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"dek" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"del" = (/obj/item/candle,/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) +"dem" = (/obj/structure/table/woodentable,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "den" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"deo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/medical/psych) +"deo" = (/obj/structure/table/reinforced,/obj/machinery/door/window/westleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Outer Window"; req_access_txt = "0"},/obj/machinery/door/window/brigdoor{dir = 4; name = "Security Desk"; req_access_txt = "1"},/obj/item/weapon/folder/red,/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dep" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green,/turf/simulated/floor/carpet,/area/medical/psych) "deq" = (/obj/structure/stool/psychbed,/turf/simulated/floor/carpet,/area/medical/psych) "der" = (/obj/machinery/door/airlock/maintenance{name = "Medbay Maintenance"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/medical/psych) @@ -8246,22 +8323,23 @@ "deF" = (/obj/structure/sign/directions/medical{dir = 8; pixel_y = 8},/obj/structure/sign/directions/evac{dir = 8},/obj/structure/sign/directions/science{dir = 8; pixel_y = -8},/turf/simulated/wall,/area/maintenance/maintcentral{name = "Central Maintenance"}) "deG" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Security Pod Pilot"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) "deH" = (/obj/machinery/vending/shoedispenser,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"deI" = (/obj/structure/table,/obj/item/clothing/gloves/color/latex,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/item/device/robotanalyzer,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"},/area/assembly/robotics) +"deI" = (/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "deJ" = (/obj/machinery/vending/hatdispenser,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "deK" = (/obj/machinery/optable,/obj/machinery/light{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/escape) -"deL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) -"deM" = (/obj/effect/decal/remains/xeno,/turf/space,/area/space) -"deN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/security/range) -"deO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) -"deP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/security/range) +"deL" = (/obj/machinery/light_switch{pixel_x = -27},/turf/simulated/floor/carpet,/area/chapel/main) +"deM" = (/obj/machinery/door/morgue{name = "Confession Booth"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) +"deN" = (/turf/simulated/floor/carpet,/area/chapel/main) +"deO" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/carpet,/area/chapel/main) +"deP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/chapel/main) +"deQ" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "red"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "deR" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/security/main) "deS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/maintenance/starboard) "deT" = (/turf/simulated/shuttle/plating{dir = 4; icon_state = "warning"},/area/shuttle/escape) -"deU" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/main) +"deU" = (/obj/machinery/power/apc{dir = 8; name = "Chapel APC"; pixel_x = -25},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main) "deV" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/maintenance/starboard) "deW" = (/obj/machinery/light_switch,/turf/simulated/wall/r_wall,/area/engine/mechanic_workshop) -"deX" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Firing Range"; req_access_txt = "0"; req_one_access_txt = "1;4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/security/range) -"deY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/main) +"deX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/stool,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main) +"deY" = (/obj/structure/stool,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main) "deZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/engine,/area/engine/mechanic_workshop) "dfa" = (/obj/machinery/computer/rdconsole/mechanics,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) "dfb" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "mechpod"; name = "Mechanic's Workshop Inner Door"; opacity = 0},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) @@ -8277,14 +8355,15 @@ "dfl" = (/obj/structure/spacepoddoor,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) "dfm" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 7; on = 1},/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) "dfn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/stool/bed/chair{dir = 4},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/main) +"dfo" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "dfp" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/turf/simulated/shuttle/wall{tag = "icon-diagonalWall3"; icon_state = "diagonalWall3"; dir = 2},/area/shuttle/escape) "dfq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/effect/landmark/start{name = "Mechanic"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) -"dfr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/security/main) -"dfs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/newscaster/security_unit{pixel_x = -32; pixel_y = 1},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/main) +"dfr" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main) +"dfs" = (/obj/machinery/door/airlock/centcom{name = "Chapel Office"; opacity = 1; req_access_txt = "27"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "dft" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) "dfu" = (/obj/effect/decal/warning_stripes/west,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "mechpod"; name = "Mechanic's Workshop Inner Door"; opacity = 0},/turf/simulated/floor/engine,/area/engine/mechanic_workshop) -"dfv" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) -"dfw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/sortjunction{dir = 4; icon_state = "pipe-j1s"; sortType = 21; tag = "icon-pipe-j1s (EAST)"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) +"dfv" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "chapelparlourshutters"; layer = 2.7; name = "chapel shutters"; opacity = 0},/turf/simulated/floor/plating,/area/chapel/main) +"dfw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main) "dfx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) "dfy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/engine,/area/engine/mechanic_workshop) "dfz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel,/area/engine/break_room) @@ -8294,6 +8373,7 @@ "dfD" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door_control{id = "mechpod"; name = "Mechanic's Inner Door Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "70"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) "dfE" = (/obj/structure/closet/emcloset,/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},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/maintenance/starboard) "dfF" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; dir = 1; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/starboard) +"dfG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main) "dfH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 2; name = "Mechanic Workshop APC"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) "dfI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) "dfJ" = (/obj/effect/decal/warning_stripes/west,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "mechpod"; name = "Mechanic's Workshop Inner Door"; opacity = 0},/turf/simulated/floor/engine,/area/engine/mechanic_workshop) @@ -8315,9 +8395,11 @@ "dfZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "bluecorner"},/area/hallway/secondary/entry{name = "Arrivals"}) "dga" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) "dgb" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/double/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"dgc" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main) "dgd" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/door_control{desc = "A remote control-switch for the pod doors."; id = "mechpodbay"; name = "Pod Door Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "70"},/turf/simulated/floor/engine,/area/engine/mechanic_workshop) "dge" = (/obj/structure/table,/obj/item/weapon/folder/red{pixel_x = 3},/obj/item/weapon/folder/white{pixel_x = -4; pixel_y = 2},/obj/item/weapon/book/manual/security_space_law{pixel_x = -4; pixel_y = 4},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/shuttle/floor4,/area/shuttle/escape) "dgf" = (/obj/machinery/door_control{desc = "A remote control-switch for the pod doors."; id = "escapepodbay"; name = "Pod Door Control"; pixel_x = -24; pixel_y = 0; req_access_txt = "13"},/turf/simulated/floor/engine,/area/hallway/secondary/entry{name = "Arrivals"}) +"dgg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera{c_tag = "Chapel - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "dgh" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/crowbar,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "dgi" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "dgj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) @@ -8326,6 +8408,7 @@ "dgm" = (/obj/effect/decal/warning_stripes/yellow/hollow,/obj/structure/closet/emcloset,/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/mask/breath,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "dgn" = (/obj/structure/table,/obj/item/device/flashlight,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/stock_parts/cell,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "dgo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"dgp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main) "dgq" = (/obj/effect/decal/warning_stripes/yellow/hollow,/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "dgr" = (/turf/simulated/wall/r_wall,/area/hallway/secondary/entry{name = "Arrivals"}) "dgs" = (/obj/effect/decal/warning_stripes/south,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) @@ -8370,6 +8453,13 @@ "dhf" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/space_heater,/turf/simulated/shuttle/plating{icon_state = "bot"},/area/shuttle/escape) "dhg" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/light,/turf/simulated/shuttle/plating{icon_state = "bot"},/area/shuttle/escape) "dhh" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/shuttle/escape) +"dhi" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main) +"dhj" = (/obj/structure/bookcase{name = "Holy Bookcase"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) +"dhl" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "chapelspaceshutters"; layer = 2.7; name = "chapel shutters"; opacity = 0},/turf/simulated/floor/plating,/area/chapel/main) +"dhn" = (/turf/space,/area/chapel/main) +"dho" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table/glass,/obj/item/weapon/folder/white{pixel_y = 4},/obj/item/weapon/paper_bin{pixel_x = -1; pixel_y = 8},/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurplecorner"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dhv" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/item/weapon/paper_bin{pixel_x = -4; pixel_y = 10},/turf/simulated/shuttle/floor,/area/shuttle/escape) +"dhw" = (/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen{pixel_x = -3; pixel_y = 5},/turf/simulated/shuttle/plating{icon_state = "bot"},/area/shuttle/escape) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8410,172 +8500,172 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaadaaeaafaafaafaagaadaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaajaakaalaamaanaaoaaoaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaapaakaakaaqaakaakaaraaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaasaataakaakaauaakaavaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawaadaadaadaaxaadaadaadaayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaazaakaaAaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaBaakaaCaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaadaadaadaaiaaBaakaaCaaFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaGaakaakaaHaaiaaBaakaaCaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaGaakaaIaaJaaiaaBaakaaCaaiaadaaKaaLaaMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaNaakaakaaOaaiaaPaakaaraaQaaRaaRaaRaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaGaakaakaakaaSaakaakaaTaaUaaVaaVaaWaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaGaakaakaakaaYaakaakaakaaZabaabaabbaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaadaadaadaadaadabcaakaakaadaadaadaadaadaadaaMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabeabfabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabgabgabhabiabjaaiabkaakaakaaiablabmabnaboabpaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaabqaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaakaakaakaaIaakabraakaakaakabsaakaaIaakaaIabtaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabfabqabuabqabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabvaakaakaakaakabxaakaakaakabyaakaakaakaakabzaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabeabdabfabfaaaaaaaaaabAaaaaaaaaaabfabeabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabwaakaakabCabDaaiabEabFabEaaiabGabHaakaakaakaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaaaabqabqaaaaaaaaaabAabqabqaaaabqabqaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaakaakabIaaiaadaaiaakabJabKaaiaadaaiaakaakaakaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabLabLabLabLabLabqabMabqabLabLabLabLabLaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabNabOabPaaiaaaaaiabQabQabQaaiaaaaaiabRabSabTaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabUabVabVabVabVabWabXabYabZabZabZabZacaabqabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabQabQabQaaiaaaaawacbaccacdaayaaaaaiabQabQabQaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabfabqaceaceaceaceaceabqabXabqaceaceaceaceaceabqabeabqabqabqabqabeabdabeabqabqabqaaaabqabqabqaaaabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawacbaccacdaayaaaaaaaaaaaaaaaaaaaaaaawacbaccacdaayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaabqaaaaaaabqabXaaaaaaabqaaaabqaaaaaaabfaaaaaaabqaaaaaaabqaaaaaaabqaaaaaaaaaabqaaaaaaaaaabqaaaabqaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabLabLabLabLabLabqacfabqabLabLabLabLabLabqabdabqaaaabqabqabqabqaaaaaaabqaaaacgacgabBacgabBacgacgaaaabqabqaaaabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabfabfabfabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabUabVabVabVabVabWabXabYabZabZabZabZacaaaaabfaaaabqabqaaaaaaaaaaaaaaaabqabqacgaciacjackaclacmacgabqabqaaaaaaaaaaaaabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqaceaceaceaceaceabqabXabqaceaceaceaceaceabqabeaaaaaaabqaaaaaaaaaabqabqabqaaaachacnacpacqacracsacoaaaaaaacuacvacwaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabqacxaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyaaaaaaaaaabqabdaaaaaaaaaabqaaaaaaaaaaczaaaaaaaaaabqaaaaaaabqabdaaaaaaabqabqaaaabqabqaaaabqaaaacgactacCacDacEacBacgaaaacGacHacIacHacJaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabfabfabfabfabfabfabfaaaacKaaaabdabfabfabfabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabLabLabLabLabLabqabXabqabLabLabLabLabLabqaaaacAabqabqabqacgabBacgacgabBacgacgacgacFacNacMacgacgabBacgacHacPacHacQabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaidaidaidaidaifaidaidamVamVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaabqabqabqaaaaaaacKabqabqaaaabqabqaaaaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabUabVabVabVabVabWabXabYabZabZabZabZacaabqaaaacAacLacLacLacgacUacVacWacXacYacZacOadbacqadcadaadeadfacgadgadhadiacQaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaidanraieaolapKapJaskaqlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadjadjadjadjadjabqadkabqadjadjadjadjadjabqabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaceaceaceaceaceabqabXabqaceaceaceaceaceabqabqacAacRacSacTacgadoadpacDadqadradsadsadtaduadvadwadxadyacgadzadAadzacQacQacQaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaidasYauiasZasZasZaskaqlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqadCadDadDadDadDadEadFadGadHadHadHadHadIaaaabfaaaaaaadJadKadLadMaaaaaaaaaadJaaaaaaaaaadMaaaaaaaaaadJadNadOadMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabfaaaabqaaaabqabqaaaaaaadPaaaaaaaaaabqaaaaaaabqaaaacAadladdadnacgadTacQadUadqadsacDadradVadWadXadqadYadZacgaeaadBaecaedaeeaedadmadmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaidaunauiavaasZasZaskaqlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqaegaegaegaegaegabqadFabqaegaegaegaegaegabqabfaaaaaaaehaeiaejaehaaaaaaadJaehaekaelaemaehadMaaaaaaaehaenaeoaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfabfaaaaaaabqabqabqabAaaaaaaaaaabqabqabqabqaaaacAadQadRadSacgaesacQaetaebacqacqaevaewaexaeyaezadsaeAacgaeBacgacgacgacgacgaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavOavbawxawwawwawwaomaqlaaaaaaaaaabqabeabfabfabfabeabfabfabeaaaaaaabqaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaaaaaaabqaaaaaaabqaeCaaaaaaaaaabqaaaaaaaaaabeaaaaaaaehaeDaeEaehaaaadJaeFaeGaeHaeIaeJaeGaeFadMaaaaehaeKaeLaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqaaaaaaabqaaaabAaaaaaaaaaabqaaaaaaabqabqacAaeqaepaeracgacgacgaePadsaeRaeSaeMaeUaeVaeWaeXadsaeYacQadzacQaeZafaaeZacgaaaabqaaaaaaaaaabqabqabqabqabqaaaaaaabqaaaaaaaaaaaaabqaaaaaaaidaywaztaztazvazuaidamVamVaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaafbaeNafbcKIacJabeabfabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqadjadjadjadjadjabqadFabqadjadjadjadjadjaaaabfaaaaaaaehafeaffafgaaaafhafiaeGaeGafjaeGaeGafiafkaaaaflafmafnaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqafoafpafpafpafqaaaaaaabqaaaacAaeTaeOaftafuafcafwacQafxacQafyacQafzacQacQacQafAacQacQafBacQafCafDafEacoabqabqabqabqabqabqaaaaaaaaaabqabqabqabqabqabqabqabqabqabqaidaidafragjagjafsaidaidaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaafbafFafGafHafHafIaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadCadDadDadDadDadEadFadGadHadHadHadHadIabqabfaaaaaaaeFafJaeFaaaaaaafKafiaeGafLafMaeGaeGafiafNaaaaaaaeFafJaeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaabqaaaabqaaaaaaaaaabAaaaaaaabqaaaacAafOafvafQafPafRafTafUadsafVafyafWafXaeuacQafZadsagaacQadzacQagcagdageacgagfabqaaaaaaaaaabqaaaaaaaaaabqaaaaaaaaaaaaaaaabqaaaaaaaaaaidafdazCazEazEaBKaysaidabqabqabqabqabqabqabqabqabqabqabqabqabqabqaeNaggaghagiaqSagkaaaabeabfabeabqabqaaaaaaaaaaaaaaaaaaaaaaaaabfabqaegaegaegaegaegabqadFabqaegaegaegaegaegabqabfaaaaaaaeFafJaeFaeFaeFaeFaeFaeFaeFaglaeFaeFaeFaeFaeFaeFaeFafJaeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaabqaaaabqabqabAabqabqabqabqacAagpafSagDagqagEafTaeQadsagsagtaguagvagwacQagxadsagwacQaeaacQagyagzagAacgaaaabqabqagBagBagBagBagBaaaabqaaaaaaagCagCagbafYagragCagCavObHcaDgbPLbPLbTgbTfaidabqaaaaaaaaaabqaaaaaaaaaaaaabqaaaaaaaaaaaaafbagGagHafHafHagIaaaabqaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaabqaaaaaaaaaadFaaaaaaaaaabqaaaaaaaaaabdaaaaaaafhafJagJagJagJagJagJagJaehagKaehagJagJagJagJagJagJafJafkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqabqaaaabqaaaabqagXagMagXabqaaaaaaacAagmagnagoacAagQafTagRagSacQafyacQagTafyacQagRagUafyacQaeBacQafyagVagRacgabqabqagBagBahiahfagYagBagBabqabqagCagCagZahaahbahcahdagCagCbTjaytbTlbTkdeGdeCaidabqabqabqafbaeNafbaeNaeNaeNafbaeNaeNaeNafbafbahgafbahhahjahjahkahjahjahyaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadjadjadjadjadjabqahlabqadjadjadjadjadjabqabfaaaaaaahmahnahoahpahqahraehaglaeFaglaeFaglaehahsahtahuahvahnahwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaabqabqabqagXahxagXabqabqaaaacAagNagOagPacAahRahzahAahBahCahDahEahFahGahHahIahJahKahLahMahNahOahPahQaiqabqagBagBahSahTahUahUahVagBagBabqagCahWahXahYahZaiaaibaicagCatydePalSalSalSalSaidaaaaaaabqafbaigafbaihaiiaijafbaikailaimafbainaioajbaivairairairairairaivabqabqabqabqabqaaaaaaaaaaaaaaaabfabqadCadDadDadDadDadEadFadGadHadHadHadHadIabqabfaaaaaaafKahnaeGaeGaeGaisaehaeGaeGaeGaeGaeGaehaeGaeGaitaeGahnafNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqabqagXagXaiuagXagXabqabqacAacAacAacAacgaiMaiwaixaiyaizaiAaiBaiwaiCaiDaiEaiFaiGaiHaiwaiIaiJaiKaiLaiNabqagBaiQaiOaiPaiTaiRaiSaiUagBabqagFaiVaiWaiXaiYaiZajaakcagLdeLajMajdajeajfajRdeMajgajgajgafbajhajiajjajkajkajlajkajmajnajoajpajpajpaivairairairairairaivaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabfabqaegaegaegaegaegabqadFabqaegaegaegaegaegabqabeabqaaaaehajqajrajsajtajuaehajvaeGaeGaeGajwaehajxaeGajzajAajqaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaabqajBajCajDagWajBabqaaaaaaaaaabqaaaacgacgajFajGajHacgajIajJajIacQacQacQacQajKajLajSajNajOajPajQacgabqagBajTaiOakuajWajUaiSajVagBabqajcajXajYajZakaakbajYanJajcdeLdeNajdakdajfaheajgajgakeakfafbafbafbakgakhakiakiakjakkaklakmakmaknakoaivairairairairairakpafbafbafbaaaabqaaaaaaaaaaaaaaaabeaaaaaaaaaabqaaaaaaaaaadFaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaehakqakqaeFaeFaeFaehakraeGaeGaeGaksaehaeFaeFaeFakqakqaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaktaktakIakIakIakIakIajBakvakwakxajBabqabqabqabqabqaaaaaaacgacgaiNacgacgacgaiNacgacgakAakBakCakDakEakFakGakHakHakHagBagBagBakOakJakKakLakMakNakRagBabqagCakPakQakTakSalAakUakVagCdeOdeNajdakdajfaheakWajgakXalWakZalaafbalbakhakialcaldaldaldaleakmalfalgalhairairairairairalialjalkaeNaaaabqabqabqabqabqabqabfabqabqabqabqabqaaaaaaadFaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaflallallafgaaaaaaaehalmaeGaeGaeGalnaehaaaaaaaflallallafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaloalpakIalqalrajyaltajBajEalvalwajBakyalLakyakyabqabqaaaaaaaaaabqaaaaaaaaaabqabqalMalBalCalBalDalEalFalGakHalHalIalJagBagBagBalKalNagBagBalOagBagBalPagCagCakzakYalRalualsagCagCatzdePalTalUalVaheajgajgalWalWalXalYafbalZakhamaambamcamcamdameamfamgamhaeNairairairairairaeNamiamjaeNaaaabqaaaabqaaaamkamkamkamkamkamkamkabqabqabqadFabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehamlaeGaeGaeGalnaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaktammaktamnalrampamqajBajBamramsajBalxalzalyakyakyabqabqabqabqabqabqabqabqaaaaaaamxakDakDakDakDamyamEamAakHamBamCamDagBamFamIamGamHamKamJanYanFagBamMamNamOamPamQamRamSamTamOamUdeRdePamWamXamYaheamZalWalWanaanLajgafbanbancandaneanfanfangameamjanhamhaeNairairairairairaeNanianjaeNabqabqabqabqabqamkankanlanmannankamkabqaaaanoanpanoansaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehantanuaglantanuaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaakIanvanwanxanyanzanAanBanCanDanEakyamtanGamvanIakyabqaaaaaaabqaaaaaaaaaakDakDakDamxalQanKanSanManNanOanPakHanQamCanRagBanTanWanUanVanZanXanYaonaoaaobaocaodaoeaofaogaohaoiaojaokdeUaoHaoLaooaopaheaoqalWaosapiapQajgapRaowakhaoxambaoyamcaozameaoAamgaoBaoCairairairairairaoDaoEaoFaoGapeaoGaaaabqaaaamkaoIaoJankaoJaoKamkabqaaaapgaoMapgasTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehaoOaoPaeGaoQaoRaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaktaoSaktaoTaoUaoVaoWaktaoXaoYaoZapaapbapcapdaphakyabqapfapfalLapfapfaaaakDapSapSamxaqaaqHapjapkaplapmapnapoappapqappaprapsapsaptapuapvapwapxapxapyapzapAapBapCapDapEapFapGapHapIdeYdeXapLapMapNaheamoapPalWarMarOajgaipaowakhajpapTapUapVapWapXapYamgapZaqDairairairairairaqbafbaqcaoGaqdaqeaefaefabqamkaqfaqgaqhaqiaqjamkabqanoapgaqkapgansaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehaqmaqnaeGaqpaqoaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaktaqqaqraqraqraqsaqtaktamuaqvapdakyaqxaqyaqzaqAakyapfapfaqBaqCanEajgajgakDaqFaqEamxamwarSaqTaqIaqJaqKaqLakHaqMaqNaqOagBaqPaqQaqRaxfaqYaqUaqVaqWakHaqXdfnaqZapCaraarbarcardarearfargalSalSarhaheaheajgariajgarjajgajgafbarkarlajpajparmarnaroarparparqapZaqDairairairairairaqbarrarsaoGaqeaoGaoGapeaoGamkartaruankarvarwamkabqapgapgaoMapgansaoGaoGaoGcKIacJaaaaaaaaaaaaaaaaaaaaaaaaaaaaflaeFarxaryarzaeFafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarBaaaaaaarAaaaarAaaaaaaabqabqabqaaaaaaaaaaaaaaaabqaaaabqaaaabqaaaaktarCarDarEarFarGarHaktapdaqvapdapfarIapdapdapdarJapfarKarUamzarNajganHarWarParRaumazcaCTarVaorarXarYarZagBamKasaamKagBagBamKascamKagBarQaseasfasdashdfnasiapCapCaslasmasnasoarfaspasqasrassaEgaEgaEgastasualfaswasvasvasxasBasCasCasDasEasFasGasGasGasHaqDairairairairairaqbasIasJaoGarsasKaouasJasNamkasjasgasQasOasPamkabqansasUasVasWaoGauodgCbkjavNavNblzaaaaaaaaaaaaaaaaaaaaaaaaaaaaflaeFaeFaeFafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarAabqabqarAarAarAabqaaaarAarAataarAarAaaaabqapfapfalLapfabqaaaabqabqabqabqabqapfalLaktaktatbatcatdaktaktaktaoXateaoZatfapbatgapdapdatiapfaoXaElaEjajgajgatlatmaquapOamxamxamxakDakDatpatqatrasSasRatuatsatvattatwazxatxagBatHanYamLakHatBdfnatCatDatEatFatGauHatIarfauOatKatKamOamOamOamOayGafbasyatMaeNafbatNatOatPatQatRatSatTatUatVatWatXatYatZatZatZatZatZauaaubayvaoGasJasJasJasJaudamkaueaufaugauhavFamkabqansaujaukaulaoGdgCdgCbnGblAbvublBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaupabqarAabqaupabqarAarAabqarAarAarAarAarAaaaaaaaaaapfauqauCapfautausausausausausauuapfarKauqapfauwauxaoXauyauzapfauAauBauCapfarIatjauDauEarJapfauGaNEaFEajgauIatmakeakfaqwajgauLamxauMauNaqJatqapnauQauPauTauRauSauSauUauVauWauXaqUauYanYakHdfsdfravcauZaveavfaveavhaveaviavjavkavlavlavmavnamOayGafbaszavpavqavravravravravravsavtavuavvavvavvavvavvavwaoGaqGavyavzaoGaoGasJaoGavAawMavCasJavDavEavHavGawZavIavJamkapeansarTavLavMaoGdgCdgCblyavNavNbnHaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAabqarAabqarAarAarAataabqabqabqarAarAabqaaaabqabqalLasAavoatLazLapdapdapdapdapdbMKavQavRaoZavWavSatkapdavYavXapdatkaxqajgajgajgajgajgajgajgajgajgajgawgajgawhajgajgajgajgajgajgamxawiawjaqJatqatrasSavdawdasLawlawkawmaqUawnaqYawsawtawuasdasMdfvdfwawyawzawAawBawCawDawEawFatKawGawHawGawIamOayGawaavZaxjavqavrawNawOawPawoawRawSawTavvawUawVawWavvaoGaoGasJaubasJasIaoGayvaoGavzasJawXasJaoGawYayqamkamkaxaaxbamkayxansansaxdaxeaoGaoGbnIaxhaoGbplaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarAarAarAarAabqarAarAabqauparAarAabqabqabqabqapfapfawcapfapfaxlaxkaxkaxkaxkaxkaxZapfapfapfapfaxmaxnaxoaxoaxoaxoaxpaxqajgaxraxsaxtaxuaxvaxwaxxaxyaxzaxAaxBaxCajgaxDaxEaxEaxEaxFamEaxGaxHaqJaxIaxJaxKaqYawpagBagBagBawrawqasdagBaxPawQakHakHamOaxLaxRaxSaxLamOaxNaxMamOaxOatKatKaxWaxWaxWamOamOayGafbdeeaAAdefavrayaaybayaawoaycaydayeayfaygayhayiavvathaoGaykaylaymaynaoGasJaoGaoGaoGayoaoGaoGaypbppayramkamkamkamkazrasIazGazFbTiaoGdfCdgCdfEaoGaoGaoGabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqarAarAarAarAarAarAarAarAarAarAarAayyarAabqaupapfapfapfayzatkapfabqabqabqabqabqabqabqabqabqabqabqapfaqBayBapdaoXapdaoXayDayEayFayHayGaAYajgajgajgaxTaxQaxQaxQaxUajgajgayMayNayOatnayMamEamEakDayQayRapnaySaySayTayUaySaySayVayUaySayWaySayVayXayYayZayUazaazbaySaySaySayUaySaOPamxazdazeazeazeazeakDayGafbaxYaWvavqavrazfazgazhavraziazjazkazlazmavvavvavvaznaoGasIasJawXasJaoGayvaoGazpaoGazqdfFazsbpmawebpobqVbpqbqXbqWbqWbqWbqWdeSdgCdeVdgCdgCdgCaxgazHaxgaWwaWwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupabqarAataarAarAarAarAazIabqarAarAarAarAarAarAazJazKazJazLatkapfapfabqaaaaaaaaaaaaaaaaaaaaaaaaabqapfapfapfapdaoXapdaoXazNazOazPawfatoaAYajgaaaabqaaaaaaaaaaaaaaaabqaaaaxEazUazVazWazXazYazeazZaAaaAbaAcaAdaAdaAeaAcaAdaAdaxVaAcaAhaAiaAdaAjaAkaAlaAdaAmaAnaAoaApaApaAqaAraAsaAtaAuaAvaAwaAxaAyaAzakDayGafbaxYaWxavqavraABaACaADayJaAFaAGaAHavvaAIaAJaAKavvaALaoGaoGaoGayoaoGaoGasJaoGasJaoGatAaxhaxhawYawJamkaxhaxhaxhaxhaxhaxhaxhaxhaxhaxhayxaxhaxhaxhaxhaxhaAObreabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarAarAarAarAarAarAarAarAarAarAabqarAarAarAabqapfapfapfaAPatkapdapfaaaaAQaARaASaARaATabqabqabqabqapfaAUapfaAVavUavUavUaAWaAXajgawKaAZaBaajgaaaaBbaBbaBbaBbaBbaBbaBbaaaayMaBcaBdaBeayMamEamEakDaBfaBgaBhaBiaBjaBkaBhaBlaBjaBgaBmaBnaBoaBpaBqaBraBsaBtaBuaBvaBwaBxaByaBwaBzaBAaBBaBCaBDaBEaBFaBGaBHakDayGaBIaBIaBIaBIavraBJaPWaBLaBNaBMaBOayeaBPaBQaBRaBSavvaBTaBUaBWaBWaBXaBWaBWaBWaBZaBWdgEaCaaCbaCcaCdawLaCfaCgaChaCgaCiaCjaCjaCkaCjaxiaxhaxhaCgaCiaCjayAaCjaClaCgabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqarAarAarAarAarAarAarAaCnarAabqabqabqabqapfaoXatkarIalLaaaaCoaCpaCqaCpaCoayKayKayKaCsaCsaCsaCsaCtaCsaCsaCuaCuaCuaCuazRaCuaCwajgabqaBbaCxaCyaCzaCAaCBaBbaaaayMaCCaCCaCDayMaaaaaaakDayLaCGazwatJayLaCIazwakDayLaCJazwakDaCKamEaCLakDamEazzaANamEamEaCOaCOaCPaCQaCRaCOaCOaCSakDakDakDakDakDayGaBIaQdaCUaQvavravravravravraCWaCXaCYazlazmavvavvavvaoGaCZasIarrasJasIaDadgIaxhaxhaxhaxhaxhaDbaDcaCmaCeaDfaWyaDfaDhaDiaDiaDjaWzaDkaCjaDlaCjaDmaWzaDjaDiaCvaDnaCgabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqabqabqarAarAarAarAataarAarAarAaDparAarAarAarAabqaaaabqalLayBatkapdapfaaaaASaDqaDraDqaASayKaDsaDtaCsaDuaDvaDwaDxaDyaCsaDzaDAaDBaCEaCNaCuaCwajgaaaaBbaDEaDFaDGaDHaDIaBbaaaaxEaDJaCCaucayMaAfaAfamxaDMaDNaDOakDaDPaDNaDOakDaDQaDNaDOakDaDRaDSaDTakDaDUaDVaDWaDXaDYaCOaDZaEaaEbaEcaEdaEeaCSaEfaEgaEgaEgaEgaDdaBIaRtaEkaRyaBIaEmaEnaEmavvaEoaEpaEqaEraEsaEuaEuaEvaBWaEwaxhaxhaxhaxhaxhaxhaxhaExaExaEyaEzaEAaEBaDeaEDaCgaCgaCgabqabqaDiaEEaEFaDiaDiaDiaDiaDiaEGaEEaDiaDCbbTaCgaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqarAarAarAarAarAarAarAabqarAabqabqarAarAabqabqapfapfauyatkapfapfaaaaCobxFaDqaDqaEIaEJaEKaEKaELaEMaENaEOaEPaEQasbaESaETaEUaETaEWaCuaCwajgaaaaBbaEXaEYaEZaFaaFbaBbaaaayMaFcaCCaCCaFdaFeaFfamxaFgaDNaFhakDaFgaDNaFiakDaFgaDNaFjakDaFkaFlaFmakDaFnaFoaFpaFqaFraCOaFsaFtaFuaFvaFwaFxaCSayGalWalWalWapPalWaBIaTeaFDaThaBIaFFaFGaFGaFHaFIaFJaFKavvavvavvavvavvaoGaFLaxhaFMauraFOauvaFQaFRaFSaFTaFTaFTaFTaFUaDDaFWaFXaFYaCgaFZabqaaaabqaaaaaaaaaabqabqaaaaaaabqaaaaWAaEibbTaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaarAarAarAarAarAabqabqabqarAarAarAabeaaaabqabqabqapfaAgaoXaoXaECalLaaaaaaaASaDraDraDraASayKaGcaGdaGeaEMaEKaGfaGgaGhaCsaGiaGjaGkaEHaGmaCuaCwajgabqaBbaGnaGoaGpaGqaGraBbaaaayMaGsaGsaGsayMaAfauFamxaAEaCFaCramxaAEaCFaCramxaAEaCFaCramxaGxaCHaGzamxamxazzaGAamxaGBaCOaGCaGDaEVaGFaGGaGHaCSayGajgajgajgaFyajgaBIaGKaGLaBIaBIaGMaGNaGOaGPaGQaGRaGSazlaGTaGUawWavvaGVaGWaxhaGXaGYaGZaGZaHaaCMaDcaHcaFAaFzaFzaFzaFBaHgaFVaHiaDLarAaMKaMJaMJaOhaMJaMJaOhaMJaMJaOhaMJaMJaPwaWAaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqabqabqabqabqabqabqaHkaHlaHkabfaaaabqaaaabqapfaHmaHnanEatkapfapfaaaaCoaHoaHpaHqaCoayKayKayKaCsaHraEKaHsaGgaHtaCsaHuaHvaHwaGlaHyaCuaCwajgaaaaBbaHzaHAaHBaHCaBbaBbaaaaHDaHEaHEaHEaHFaHGaHHaHGaHIaHJaHIaHKaHIaHJaHIaHLaHIaHJaHMaHNaHOaHPaHQaFCaHSaHTaHUamxazeaCSaHVaHWaEaaGIaGEaIaaCSayGaBIaIcaIdaHdaGJaGJaHeaIhaIiaIjaIkaIlaImaInaIoaIpayeaIqaIraIsaItavvasJaGWaxhaIuaIvaIwaIxaIyaIzaIAaIBaHfaIDaIDaIDaIEaIFaHhaHiaDLaMIaPxarAarAaPyarAarAaPyarAarAaPyarAarAaPxaWAaHxaCgaDoabqaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaabqabqaaaaHkaIGaHkabqabqabqabqabqapfauJapdapdaHXaIJapfaaaaIKaARaILaARaIMabqabqabqayKaINaIOaIPaIQaIRaCsaISaITaIUaHYaIWaCuaCwajgaaaabqaaaaGaaIYaGuaaaabqaaaaHGaAfaAfaAfaHGaHGaJaaJbaJcaJdaJeaJfaJgaJhaJhaJiaJhaJjaJgaJkaJlaJmaJnaERaJpaJqaJramxazeaCSaCSaJsaJtaCSaHZaCSaCSayGaBIaBIaBIaJvaJwaJxaIeaJzaJAaJBaJCaJDaJEaJFaJFaJGaJHavvavvavvavvavvaubaGWaxhaJIaJJaJKaJLaJMaGvaJOaJPaJQaJRaJSaJTaJUaJVaHhaHiaDLaDLaPxarAaJWaaaaaaaaaaaaaJWaaaaaaaJWarAaPxaIfaGbaCgaLwabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaabqaaaaHkaHlaHkaHkaGwaGwaGwaHkaHkaHkaHkaHkapdatkapfaaaaaaaaaaaaaaaaaaaaaaaaabqayKaKbaKcaKdaKeaKfaCsaJoaKhaCuaCuaCuaCuaKiajgaKjaGyaHjaHbaKgaHRaIZaIXaKjaHGaKraKsaKsaKtaKuaKvaKwaKxaKyaKzaKAaKBaTiaKDaKEaKCaKFaKGaKHaKIaKJaKKaJNaKMaKNaKOamxazeaKPaCSaKQaKRaCSaIgaIIaICaIVaBIaKWaKXaKYaKZaBIaLaaLbaLcaBIaLdaLeaLfaLgaLfaLhaLiaLjaLkaLlaLmavvasJaGWaxhaLnaLoaLpaLqaLraFRaLsaLtaJQaLuaCgaCgaLvaLwaCgaDLaDLaDLaPxarAaaaaaaaaaaaaaaaaLxaaaaaaaaaaTMaRgaIfaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabqaHkaHkaLBaLzaLAaLBaLBaLBaLDaLEaLFaLGaHkaHkatkapfaaaaLHaLIaLIaLIaLIaLIaLJabqaCsaCsaCsauKazTaCsaCsaLMaLNaLOaLPaLQaLRaLSaLTaLUaLVaLWaLXaLYaLWaLZaMaaMbaHGaMcaMdaMeaMfaMfaKkaMfaMfaMfaMfaMfaMfaMfaMfaKkaMfaMhaMiaMjaMkaMkaMkaMlaMlaMlaMlaMlaMkaMmaMkaMnaMnaMnaMnaJuaMnaJyaBIaBIaBIaMpaMqaBIaMraBIaMsaBIaMtaMuaMvazlaMwaMxaMyazlaMzaMAaMBavvaMCaGWaxhaCgaCgaCgaCgaCgaFRaMEaMFaJQaMGaCgaMHaXGaWubssaWuddkaDLaPxarAaaaaaaabqabqabqabqabqaaaaaaarAaPxaWAaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdabdabdabdabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaHkaMLaMLaMLaLBaLBaLBaLBaLBaLBaMLaMLaMMaHkatkalLaaaaMNaMOaMOaMOaMOaMOaMNabqabqaKlaMQaMRaMSaMTaMUaMVaMWaMXaMYaMZaNaaNbaNcaLRaNdaNeaNfaNgaNhaNiaNjaNkaNlaNmaNnaNoaKmaaaaaaaaaabqaaaaaaaaaabqaaaaaaaaaaKoaNraNsaNtaMkaNuaNvaNwaNxaNyaNzaNAaNBaNCaMkaNDaUfaNFaNGaJXaMnaKaaBIaNJaNKaJwaMqaBIaNLaBIaNMaBIaNNaNOaNPaNQaNQaNQaNQaNQaNQaNQaNQaNQaoGaNRaxhaNSaNTaNUaNVaCgavgaIvaMFaNXaNYaNZaOaaObaOcaOdaOeddRaDLaPxarAaJWabqabqaOgddSaOiabqaOjaaaarAaPxaWAaKSaCgaDoabqabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaUUaUUaUUaUUaUUaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaHkaOkaLBaLBaLBaLBaLBaLBaLBaLBaMLaMLaMLaOlaKTapfaaaaMNaOnaMOaMOaMOaMOaMNaKpaKlaKlaOpaOqaOraOraOsaOtaOuaOvaOwaOxapfaOyapfapfapfapfaOzaOAavxaOCaKnavxaOAaOAaOAaOAaOFaaaaaaaOGaOGaOGaOGaOGaOGaOGaaaaaaaMfaOHaOIaOJaOKaOLaNAaOMaONaOOavBaOQaORaOSaMkaOTaOUaOVaNHaKVaMnaMoaBIaBIaBIaOZaOZaBIaBIaBIaBIaBIaPaaPbaPcaNQaPdaPeaPfaPgaPhaPiaPjaNQaPkaGWaxhaNTaNTaPlaOdaPmaGYaPnaPoaPpaPqaCgaPraPsaPtaPuaPvddUaKLddVarAaaaaaaabqddWcspaPzabqaaaaaaaTMaRgaIfaHxaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaaaaaaaabdabdabdabdabdabdabdaXHaXIaWBaXJaWBaXKaXOabdabdabdabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabqaHkaPAaLBaLBaLBaLBaPBaLBaLBaLBaLBaMLaPDaHkaECapfaaaaMNaMOaMOaMOaMOaMOaPEawbavKawbaPHaPIaPJaPKaPLaPMaPNaPOaPPaPQaPRaPSaPTaPTaPTaPTaPVaOAaYOaPXaPYaPZaQaaQbaQcbeBaQeaQfaQgaQgaQhaQiaQjaQkaQlaQmaQmaQnaQoaQpaKGaNtaMkaQqaNAaQraNAaQsaNAaQtaNAaNAaMkaQubeLaOVaQwaQxaMnaNIaQzaQAaQBaQCaQDaQEaQFaQGaQHaQIaQJaQKaQLaNQaQMaQNaQNaQNaQOaQPaQQaNQawvaGWaxhaQSaQSaQTaOdaPmaJJaQUaMFaOWaOmaNZaOXaRaaRbaRcaRdaOfaDLaPxarAaaaaReabqaRfddXaRhabqabqaJWarAaPxaWAaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaUUaUUaUUaUUaUVaXNbbXbbWbbYbbWbbZbgUaUVaUUaUUaUUaUUaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGwaLBaLBaLBaLBaLBaLBaLBaLBaLBaLBaRiaHkaHkatkapfabqaMNaMOaMOaMOaMOaMOaRkaRlaRmaRlaRnaPIaRoaRoaRpaRoaOuaRqaRraRsapfapfapfapfapfapfazSaOAbgkaRuaRvaRwaRxaRxaRxbgyaOFaaaaOGaRzaRAaRAaRAaRAaRAaRBaOGaaaaMfaRCaMiaMjaMkaRDaREaRFaNAaRGaNAaRHaRIaNAaRJaRKaRLaRMaRNaROaMnaQyaOYaQVaQVaQVaQWaRTaRTaRUaRUaRVaRWaRXaRYaRZaSaaSbaSbaSbaScaSdaSeaNQaSfaGWaxhaQSaSgaShaSiaCgaSjaIvaMFaJQaSlaCgaSmaSnaSoaSoaSoaSpaDLaPxarAaaaaaaabqabqabqabqabqaaaaaaarAaPxaWAaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbcbbcabcabcabcabcabzhbzhbdJbzhbzhbcabcabcabcabcaaXKaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSqaSraSsaaaaGwaLBaLBaLBaLBaLBaLBaStaSuaSuaSvaSwaHkaqBatkapfabqaMNaMOaMOaMOaMOaSxaMNaKpaKlaKlaSyaPIaSzaSAaSBaSCaSDaSEaSFaSGaLKaSIaSJaSKaSLapfaSMaOAaSNaRuaSOaSPaSQaSQaSRaSSaOFaaaaMgaSUaRAaSVaSWaSXaRAaSYaMgaaaaMfaMhaMiaMjaMkaSZaTaaTbaTcaTdaTcbjbaTfaTgaMkbmIaxcaTjaTkaTlaMnaTmaTnaToaTpaTqaTraTsaTtaTuaTvaTwaTxaTyaTzaTAaTBaTCaTDaQXaTFaTGaTHaNQasIaGWaxhaCgaCgaCgaCgaCgaFRaTIaQYaTKaTLaCgaCgaLvaLwaCgaDLaDLaDLaPxarAaaaaaaaaaabqaaaaaaaaaaaaaaaaTMaRgaIfaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbdKbdNbdNbdNbdNbdNbdNbdObdNbdNbdNbdNbdNbdNbdPbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGaTNbBmaTNacJaHkaLBaLBaLBaLBaLBaLBaLBaLBaLBaTPaTQaHkauAaQZapfaaaaMNaMOaMOaMOaMOaMOaTSaRlaTTaRlaRnaPIaRoaRoaRpaRoaOuaOvaTUaTVaTWaTXaTYaTZaUaapfaUbaUcaUdaRuaRuaUebmJaRuaUgaUhaOFaaaaMPaUjaUkaUlaUmaUlaUkaUnaNpaaaaMfaMhaUpaUqaMkaNqaNqaNqaNqaUsaNqaNqaOoaNqaMkaMnaOBaUvaSHaMnaMnaUxaTnaTpaTqaUyaUzaTnaToaTqaTqaTpaUAaUBaUCaUDaUEaSbaSbaSbaScaUGaUHaNQaUIaGWaxhaUKaULaUMaSTaUOaUPaIvaMFaJQaUQaJSaJTaRPaUTaHhaHiaDLaDLaPxarAaJWaaaaaaaJWaaaaaaaaaaaaaJWarAaPxaIfaGbaCgaLwabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXbeXbeXbeXbeXbeXbdObeXbeXbeXbeXbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKIaTNaUWaTNcKIaHkaPAaMLaLBaLBaLBaLBaLBaLBaLBaUYaUZaHkatkapdapfaaaaMNaMOaMOaMOaMOaMOaVbayjaxXayjaVeaPIaRoaVfaVgaVhaViaVjaOuaVkaVlaVmaVnaVoaVpapfaVqaOAaVraRuaRubmKaVtaVuaUgaRRaOFaaaaOGaVwaVxaUkaVyaRAaVzaVAaOGaaaaMfaVBaOIaOJaVCaVDaVEaVEaVEaNCaVEaVEaVFaVGaMkaVHaVIaVJaVKaVLaVMaVKaVNaVOaVOaVPaVQaVRaVSaVTaVUaVVaVSaVWaVXaNQaVYaVZaWaaWaaWcaWdaWeaNQasJaWfaxhaWgaWhaWiaTOaWkaWlaWmaRSaTEaSkaTRaTRaUFaWsaHhaWtaDLbeZaPxarAarAddZarAarAddZarAarAddZarAarAaPxaWAaHxaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaabdabdaXHbdMbeWbeXbeXbeXbeXaXLaXLaXMaXLaXLbeXbeXbeXbeXbeYbdMaXOabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaWDaWEaWFaWGaWDaHkaLBaMLaWHaWIaWJaLBaLBaLBaLBaUYaWKaHkatkapdalLaaaaMNaOnaMOaMOaMOaMOaMNaKpaKlaKlaWLaPIaRoaRoaRpaRoaOuaVjaWMaWNaVlaWOaWPaWQaWRapfazSaOAaWSaWTaWTaWUaWVaRuaUgaWWaOFabqaOGaOGaOGaWXaWYaWZaOGaOGaOGabqaMfaOHaXaaMjaXbaXcaVEaVEaVEaXdaVEaVEaXeaNCaXbaQCaXfaXgaXhaToayuaToaTnaTpaToaXjaToaXkaTpaTqaToaTqaTpaXlaXmaNQaXnaXoaXpaURaXraPiaQQaNQaXsaGWaxhaXtaXuaXvaXwaXxaXyaXzaXAaWoaUSaXqaXqaXBaXFaHhaHiaDLarAdeaaMJaMJdebaMJaMJdebaMJaMJdebaMJaMJdecaWAaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabdaaabgMbdMbeWbeXbeXaXLaXLaXLaXLbfabpvaXLaXLaXLbeXbeXbeYbdMbMnaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaWDayCaXQaXRaXSaHkaXTaMLaXUaXVaXWaMLaMLaMLaXXaXYaXZaHkaVaaYbapfabqaYcaYdaMOaMOaMOaYeaYfabqabqaKlaWLaYgaPJaPKaYhaYiaYjaYkaYlaYmaYnaYnaYnaYnaYnapfaYoaYpaYqaYraYraYsaYtaYuaYvaYwaUoaaaaaaaaaaOGaOGaYyaOGaOGaaaaaaaaaaKoaNraYzaMjaYAaYBaYCaYDaYEaNCaNCaYFaYGaNCaYAaQCaYHaYIaYJaYKaYLaYKaYMaYNbmLaYPaYKaYKaYKaYKaYKaYKaYQaYRaYSaNQaNQaNQaNQaVcaNQaNQaNQaNQaoGaGWaxhaYVaYUaYUaSTaYWaYXaYYaYZaWbaVvaWnaQUaXCaZfaFXaZgaCgaaaabqaaaabqaaaaaaaaaaaaabqaaaaaaabqabqaWAaWpaDhaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdclHbcbbfcbfbbgNaXLaXLbdIbdIbdIbgPbgObdIbdIaXLaXLbgNbgQbgSbgRaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaWDaWDaZiaZjaWDaWDaWDaZkaWDaWDaZlaZmaWDaWDaWDaZnaWDaWDaWqapfapfabqaZpaZqaZraZraZraZqaZsabqabqaZtaZuaPIaRoaRoaRpaRoaOuaZvaOuaZwaYnaZxaZyaZzaZAapfazSaOAaZBaZCaZDaZEaZFaZGaZHaZIaOFaZJaUraZJaZLaZMaZNaZOaZLaZJaUraZJaMfaZPaZQaZRaZSaMkaMkaMkaMkaZTaZUaZVaNCaZWaMkaQCaZXaTraZYaZZaZZaZZaZZaoGaoGaoGbaababbacbadbaebafaZZbagbagaoGbahazyazyaWrazyazyazybakazybalaxhbambambambambanbaobapbaqbarbasbatayIaXDbavaCgaCgaCgabqabqaDibawbaxaDiaDiaDiaDiaDiaDibawaDiaXEaDhaCgaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabdaXHbgTbicbeXbeXaXLbdIbidbifbiebihbigbiibidbdIaXLbeXbeXbijbgTaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaUNbaAbaBbaCbaDbaEbaBbaFbaGbaHbaGbaIbaJbaGbaKbaLbaMaYTbaOapfaaaaaabaPbaQbaQbaQbaRaaaabqaZtbaSaWLaPIaRoaRobaTbaUaOubaVbaWbaXbaYbaZbbabbbbbcapfazSaOAaOAaOAavxavxayPaOFbbebbeaOFbbgbbhbbiaZLbbjbbkbblaZLbbmbbnbbobbpbbqbbrbbsbbtbbubbvbbwaMkaMkaYAaLLaYAaMkaMkayubbybbzayubbAbbBbbCbbDbbEbbFaoGaoGaoGaoGbbGaoGaoGaoGaoGaoGaoGaGWasIasJbbHbbHbbHbbHbbHbbHbbHbambbIbbJbbKbamazobbMbambbNbbOaFRaFRazAaZbaZaaDfbbSaDfbbTaDiaDibbUaDiaCiaCjbbVaCjaClaDibbUaDiaCvaDnaCgabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabdaXHbdMbeWbeXaXLaXLbdIbikbilbdLbnQbimbjPbjObdIaXLaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaUNbcdbcebcebcfbcebcebcebcgbchbcibcjbckbckbckbclbcmbcnbcoapfaaaaaaabqabqaaaaaaabqabqabqaZtbcpbcqbcrbcsaRobctbcubcvbcwbcxbcybczbcAbcBbcCbcDapfazBbcFbcGbcHbcIbcJbcKbcLbcMbcNbcObcPbcQbcPbcRbcSbcTbcUbcVbcPbcWbcXbcXbcYbcZbdabcXbcXbdbbdcbdcbdcbddbdebdcbdcbdfbdcbdgbdhbdcbdcbdcbdibdjaoGbdkbdobdmbdnbdobdpbdobdqbdobdrazybakbalaubasJbbHbdsbdtbdubdvbdwbdxbambdybdzbdzbdAbdzbdBbambdCbarbdDbdEbdEbdEbdEbdEbdFaCgbdGaCjaCjbdHaCjaDmaCgaCgaCgbdGaCjaZdaZcaDmaCgabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXaXLaXLbdIbjQbilbdIbjRbdIbjTbjSbdIbdIaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaUNaUNbdQaUNaWDaUNbdRaUNbcdbcebdSbdTaUNbdRaUNbdUbdVbdWbdXapfapfapfapfalLalLalLapfapfapfaZtbdYbdZbdZbdZbdZbeaaRobebbecbedbeeaYnaYnaYnaYnaWjapfapfbegapfapfbehbeibejbekbelbembenbekbelbeobepbembeqbekbekbekbelbekbekberbesbekbekbekbekbekbekbekbetbeubekbekbenbevbewbekbekbekbekbexbeybezbezbezbeAbezbezbezaoGbmMaoGaGWaoGaoGbeCbeCbeCbeCbeDbeEbeEbeFbeGbeHbambeIbeJbeKbmNbeMbeNbambeObePbeQbdEbeRbeSbeTbdEbeUaCgaCgaCgaCgaCgaCgaCgaCgazMaCgaCgaCgaCgaCgaLwaCgabqbjUabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabdaXHbdMbeWbeXaXLaXLbjWbjVbjYbjXblFblDblIblGblJbdIaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNabqaaaabqaaaaUNbfdaUNbfebfebffbfgaUNbfdaUNaUNaWDbfhbfibfjavTavUavUavUbflavUavUbfnavVbfobfpbfqbfqbfrbfsbftbfubfvbfwbfxbfybfwbfzbfAbfwbfBbfCbfDbfEbfFbfGbfHbfIbfJbfKbfKbfLbfMbfNbfObfPbfQbfRbfSbfSbfSbfSbfSbfSbfSbfTbfUbfVbfVbfVbfVbfVbfVbfVbfVbfWbfXbfYbfZbfVbgabfWbfVbfVbgbbgcbgdbezbgebgfbggbghbgibezbgjbmOaoGaGWaoGaaabeCbgmbgnbeCbgobgpbgqbgrbgsbgtbambgubgvbgwbgxbmPbgzbambgAbgBbgCbdEbgDbgEbgFbdEbgGaOdaOdaOdaOdaOdaOdaOdaOdaOdaOdbgKbgLbgKbgLaefaefaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdaXHbdMbeWbeXaXLaXLbdIblKbilbdIblLbdIbjTbjSbdIbdIaXLbeXbeYbdMaXOabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaadaaeaafaafaafaagaadaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaajaakaalaamaanaaoaaoaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaapaakaakaaqaakaakaaraaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaasaataakaakaauaakaavaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawaadaadaadaaxaadaadaadaayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaazaakaaAaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaBaakaaCaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabeabfabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaadaadaadaaiaaBaakaaCaaFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaabqaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaGaakaakaaHaaiaaBaakaaCaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabfabqabuabqabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaGaakaaIaaJaaiaaBaakaaCaaiaadaaKaaLaaMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabeabdabfabfaaaaaaaaaabAaaaaaaaaaabfabeabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaNaakaakaaOaaiaaPaakaaraaQaaRaaRaaRaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaaaabqabqaaaaaaaaaabAabqabqaaaabqabqaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaGaakaakaakaaSaakaakaaTaaUaaVaaVaaWaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabLabLabLabLabLabqabMabqabLabLabLabLabLaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaGaakaakaakaaYaakaakaakaaZabaabaabbaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabUabVabVabVabVabWabXabYabZabZabZabZacaabqabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaadaadaadaadaadabcaakaakaadaadaadaadaadaadaaMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabfabqaceaceaceaceaceabqabXabqaceaceaceaceaceabqabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabgabgabhabiabjaaiabkaakaakaaiablabmabnaboabpaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaabqaaaaaaabqabXaaaaaaabqaaaabqaaaaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaakaakaakaaIaakabraakaakaakabsaakaaIaakaaIabtaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabLabLabLabLabLabqacfabqabLabLabLabLabLabqabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabvaakaakaakaakabxaakaakaakabyaakaakaakaakabzaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabUabVabVabVabVabWabXabYabZabZabZabZacaaaaabfabqaaaabqabqabqabqaaaaaaabqaaaabBabBacgabBacgabBabBaaaabqabqaaaabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabwaakaakabCabDaaiabEabFabEaaiabGabHaakaakaakaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqaceaceaceaceaceabqabXabqaceaceaceaceaceabqabeaaaabqabqaaaaaaaaaaaaaaaabqabqabBachacjaciaclackabBabqabqaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaakaakabIaaiaadaaiaakabJabKaaiaadaaiaakaakaakaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabdaaaaaaaaaabqaaaaaaaaaaczaaaaaaaaaabqaaaaaaabqabdaaaaaaabqaaaaaaaaaabqabqabqaaaacnacmacpacoacracqacsaaaaaaacuacvacwaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabNabOabPaaiaaaaaiabQabQabQaaiaaaaaiabRabSabTaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabLabLabLabLabLabqabXabqabLabLabLabLabLabqaaaaaaaaaabqabqaaaabqabqaaaabqaaaabBactacBacAacDacCabBaaaacGacHacIacHacJaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabQabQabQaaiaaaaawacbaccacdaayaaaaaiabQabQabQaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabUabVabVabVabVabWabXabYabZabZabZabZacaabqaaaabBabqabqacEabBacgabBabBacgabBabBabBacLacFacMabBabBacgabBacHacPacHacNabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawacbaccacdaayaaaaaaaaaaaaaaaaaaaaaaawacbaccacdaayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaceaceaceaceaceabqabXabqaceaceaceaceaceabqabqabBacOacOacOabBacQacSacRacUacTacWacVacXacoacZacYadbadaabBadgadhadiacNaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabfaaaabqaaaabqabqaaaaaaadPaaaaaaaaaabqaaaaaaabqaaaabBadcadeaddabBadfadlacAadnadmadoadoadqadpadsadraduadtabBadvadwadvacNacNacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabfabfabfabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfabfaaaaaaabqabqabqabAaaaaaaaaaabqabqabqabqaaaabBadxadzadyabBadAacNadBadnadoacAadmadRadQadSadnadUadTabBadVadXadWadZadYadZabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqaaaaaaabqaaaabAaaaaaaaaaabqaaaaaaabqabqabBaeaaecaebabBaedacNaeeaepacoacoaeqaesaeraeuaetadoaevabBaewabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabqacxaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabAaaaaaaaaaaaaaaaaaaaaaaaaabBaexaezaeyabBabBabBaeAadoaeBaeOaeMaeQaePaeSaeRadoaeTacNadvacNaeUaeVaeUabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaabqaaaaaaabqabqabqaaaaaaabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabfabfabfabfabfabfabfaaaacKaaaabdabfabfabfabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabMabqabqaaaaaaaaaaaaaaaaaaabBaeWaeYaeXafaaeZafcacNafdacNaftacNafuacNacNacNafvacNacNafwacNafxafzafyacsabqabqaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqabqabqabqaidaidaidaidaifaidaidafAafAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaabqabqabqaaaaaaacKabqabqaaaabqabqaaaaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabXaaaaaaaaaaaaaaaaaaaaaaaaabBafBafDafCafOafEafQafPadoafRaftafSafUafTacNafVadoafWacNadvacNafXagaafZabBaaaabqabqabqabqagcabqabqabqaaaaaaaaaaaaabqaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaidanraieaolapKapJaskagdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadjadjadjadjadjabqadkabqadjadjadjadjadjabqabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaabXabqabqabqaaaaaaaaaaaaaaaabBageagmagfagoagnafQagpadoagqagtagsagvaguacNagwadoaguacNadVacNagxagzagyabBaaaabqabqagAagAagAagAagAabqabqaaaaaaaaaabqaaaagCagCagbafYagragCagCagDaaaaidasYauiasZasZasZaskagdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqadCadDadDadDadDadEadFadGadHadHadHadHadIaaaabfaaaaaaadJadKadLadMaaaaaaaaaadJaaaaaaaaaadMaaaaaaaaaadJadNadOadMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqagEabqaaaaaaaaaaaaaaaaaaaaaabBagNagPagOabBagQafQagRagSacNaftacNagTaftacNagRagUaftacNaewacNaftagVagRabBabqabqagAagAagYahfaheagAagAabqabqaaaaaaabqagCagCagZahaahbahcahdagCagCaaaaidaunauiavaasZasZaskagdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqaegaegaegaegaegabqadFabqaegaegaegaegaegabqabfaaaaaaaehaeiaejaehaaaaaaadJaehaekaelaemaehadMaaaaaaaehaenaeoaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabAaaaabqaaaaaaaaaaaaaaaaaaabBahiahAahzabBahBahDahCahFahEahHahGahJahIahLahKahNahMahOahGahQahPahSahRahTabqagAagAahVahUahUaiqaiwagAagAabqaaaaaaabqagCahWahXahYahZaiaaibaicagCaaaavOavbawxawwawwawwaomagdaaaaaaabqabeabfabfabfabeabfabfabeaaaaaaabqaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaaaaaaabqaaaaaaabqaeCaaaaaaaaaabqaaaaaaaaaabeaaaaaaaehaeDaeEaehaaaadJaeFaeGaeHaeIaeJaeGaeFadMaaaaehaeKaeLaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaabAaaaabqabqabqaaaaaaaaaaaaabBabBabBabBabBaixaiyaiyaiAaizaiBaiyaiyaiCaiEaiDaiGaiFaiyaiyaiyaiHaiJaiIaiKabqagAaiLaiNaiMaiPaiOahUaiQagAabqaaaaaaabqagFaiVaiWaiXaiYaiZajaaiRagLaaaaidaywaztaztazvazuaidafAafAaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaafbaeNafbcKIacJabeabfabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqadjadjadjadjadjabqadFabqadjadjadjadjadjaaaabfaaaaaaaehafeaffafgaaaafhafiaeGaeGafjaeGaeGafiafkaaaaflafmafnaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqafoafpafpafpafpafpafpafqabqaaaabqaaaaaaabBabBabBabBabBaiSaiUaiTabBajdajeajdacNacNacNacNajFajfajHajGajIabqagAajJaiNajKajMajLahUajNagAabqaaaaaaabqajcajXajYajOakaakbajYanJajcabqaidafragjagjafsaidaidaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaafbafFafGafHafHafIaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadCadDadDadDadDadEadFadGadHadHadHadHadIabqabfaaaaaaaeFafJaeFaaaaaaafKafiaeGafLafMaeGaeGafiafNaaaaaaaeFafJaeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaabqaaaabqaaaaaaaaaabAaaaaaaabqaaaaaaaaaaaaaaaaaaabBabBaiKabBabBabBaiKabBabBajPajRajQacNajSajUajTajVagAagAajWakcajZakgakdakAakuagAabqabqabqabqagCakPakQakBakSalAakUakVagCabqaidakCazEazEaBKaysaidabqabqabqabqabqabqabqabqabqabqabqabqabqaeNaggaghagiaqSagkaaaabeabfabeabqabqaaaaaaaaaaaaaaaaaaaaaaaaabfabqaegaegaegaegaegabqadFabqaegaegaegaegaegabqabfaaaaaaaeFafJaeFaeFaeFaeFaeFaeFaeFaglaeFaeFaeFaeFaeFaeFaeFafJaeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaabqaaaabqabqabAabqabqabqabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaabqabqabqacnakEakFakEakHakGakKakJagAagAagAakLakMagAagAakNagAagAagAatKatKatKalPagCagCakzakYalRalualsagCagCalPaidakObPLbPLbTgbTfaidabqaaaaaaabqaaaaaaaaaaaaabqaaaaaaaaaaaaafbagGagHafHafHagIaaaabqaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaabqaaaaaaaaaadFaaaaaaaaaabqaaaaaaaaaabdaaaaaaafhafJagJagJagJagJagJagJaehagKaehagJagJagJagJagJagJafJafkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqabqaaaabqaaaabqagXagMagXabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaabBabBabBabBabBakRajHakTagAakWakZakXalaakLalCalBalEalDalGalCalHamOamMamNamOamPamQamRamSamTamOamUdeRalIalKalJazEdeGdeCaidabqabqafbaeNafbaeNaeNaeNafbaeNaeNaeNafbafbahgafbahhahjahjahkahjahjahyaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadjadjadjadjadjabqahlabqadjadjadjadjadjabqabfaaaaaaahmahnahoahpahqahraehaglaeFaglaeFaglaehahsahtahuahvahnahwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaabqabqabqagXahxagXabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqamxalNalFalOagAalSakZalTalaalUalXalValYalYalYalYalYamwamAamyaodaoeamCamBamFamDamHamGamJamIamLazEamWamVamXaidabqabqafbaigafbaihaiiaijafbaikailaimafbainaioajbaivairairairairairaivabqabqabqabqabqaaaaaaaaaaaaaaaabfabqadCadDadDadDadDadEadFadGadHadHadHadHadIabqabfaaaaaaafKahnaeGaeGaeGaisaehaeGaeGaeGaeGaeGaehaeGaeGaitaeGahnafNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqabqagXagXaiuagXagXabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaabqamxamYaAsapnanaamZamZanbanLanFanNanManOalCanQanPanRamOanTapAapBapCapDapEanUapCanWanVaspaidaidaidaidaidaidaidaidabqafbajhajiajjajkajkajlajkajmajnajoajpajpajpaivairairairairairaivaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabfabqaegaegaegaegaegabqadFabqaegaegaegaegaegabqabeabqaaaaehajqajrajsajtajuaehajvaeGaeGaeGajwaehajxaeGajzajAajqaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaabqajBajCajDagWajBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqamxamYaAsatragAanXanZanYaobaoaaofaocaofatKatKatKatKamOaogdfnaqZapCaraarbarcapCaoiaohaspatKaojaojaojaojaojaojaokaokafbafbafbalZakhakiakiakjakkaklakmakmaknakoaivairairairairairakpafbafbafbaaaabqaaaaaaaaaaaaaaaabeaaaaaaaaaabqaaaaaaaaaadFaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaehakqakqaeFaeFaeFaehakraeGaeGaeGaksaehaeFaeFaeFakqakqaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaktaktakIakIakIakIakIajBakvakwakxajBabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqamxamxamxamxamxamYaAsatragAagAaonagAagAagAaopaooaosaoqaovaotaowamOaoxdfnasiapCapCaoHapCapCaoLaohapiatKaojaojaojaojaojaojaokaxYaWvapkafbalbakhakialcaldaldaldaleakmalfalgalhairairairairairalialjalkaeNaaaabqabqabqabqabqabqabfabqabqabqabqabqaaaaaaadFaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaflallallafgaaaaaaaehalmaeGaeGaeGalnaehaaaaaaaflallallafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaloalpakIalqalrajyaltajBajEalvalwajBakyalLakyakyabqabqaaaaaaaaaaaaaaaabqaaaabqabqamxalQanKanSaplamYapmatragBapoappapoagBapqapsapraptaoqapvapuaovamOapxapwatCatDatEapCatGapyapzaohapGapFaojaojaojaojaojaojapHaxYapLapIapNapMakhamaambamcamcamdameamfamgamhaeNairairairairairaeNamiamjaeNaaaabqaaaabqaaaamkamkamkamkamkamkamkabqabqabqadFabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehamlaeGaeGaeGalnaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaktammaktamnalrampamqajBajBamramsajBalxalzalyakyakyabqabqabqabqabqabqabqabqabqaaaamxapQaqaaqaaqlamYaAsatragBaqxaqKaqIagBaqLaqNaqMaqPaqOaqRaqQaqTamOaoxaqUaqVaqVaqVapCaqVaqVaqXaqWareardaojaojaojaojaojaojaokarfargafbafbarhancandaneanfanfangameamjanhamhaeNairairairairairaeNanianjaeNabqabqabqabqabqamkankanlanmannankamkabqaaaanoanpanoansaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehantanuaglantanuaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaakIanvanwanxanyanzanAanBanCanDanEakyamtanGamvanIakyabqaaaaaaabqaaaaaaaaaakDakDakDamxariarjaqaarMarkaAsarOagBarQarVarSagBarXascarYaosaoqasfaseaovamOaslashasnasmasqasoassasraswastasxapFaojaojaojaojaojaojaokaxYaWvafbapRasyakhaszambaoyamcaozameaoAamgaoBaoCairairairairairaoDaoEaoFaoGapeaoGaaaabqaaaamkaoIaoJankaoJaoKamkabqaaaapgaoMapgasTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehaoOaoPaeGaoQaoRaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaktaoSaktaoTaoUaoVaoWaktaoXaoYaoZapaapbapcapdaphakyabqapfapfalLapfapfaaaakDapSapSamxasLaqHapjasRasMatsaxJagBattasaamKagBatuaqNatvatwaoqaoqaoqaoqakDakDatxakDakDakDaxLatzatyaxLatBatKatKatKatFatFatFatFatFaokaxYaWxafbaipasyakhajpapTapUapVapWapXapYamgapZaqDairairairairairaqbafbaqcaoGaqdaqeaefaefabqamkaqfaqgaqhaqiaqjamkabqanoapgaqkapgansaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehaqmaqnaeGaqpaqoaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaktaqqaqraqraqraqsaqtaktamuaqvapdakyatHaqyaqzaqAakyapfapfaqBaqCanEajgajgakDaqFaqEamxatIaqaatMaqlarkaAsauHagBauOauSauPagBauUauWauVauZauYakDavcavfaveaviavhavpavjakDavsavuavtavZavwawkawdawdawlalWamoawpawmafbafbafbafbafbawqarlajpajparmarnaroarparparqapZaqDairairairairairaqbarrarsaoGaqeaoGaoGapeaoGamkartaruankarvarwamkabqapgapgaoMapgansaoGaoGaoGcKIacJaaaaaaaaaaaaaaaaaaaaaaaaaaaaflaeFarxaryarzaeFafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarBaaaaaaarAaaaarAaaaaaaabqabqabqaaaaaaaaaaaaaaaabqaaaabqaaaabqaaaaktarCarDarEarFarGarHaktapdaqvapdapfarIapdapdapdarJapfarKarUamzarNajganHarWarParRaumazcaCTawraorawsawtarZagBawuauSawyagBagBagBawzawBawAakDawCakDawDawFawEakDawIakDawQaxjaxfavtaxHaxNaxMaxPaxOaEgaEgaEgaxRasuakhaxSasvasvaxVasBasCasCasDasEasFasGasGasGasHaqDairairairairairaqbasIasJaoGarsasKaouasJasNamkasjasgasQasOasPamkabqansasUasVasWaoGauodgCbkjavNavNblzaaaaaaaaaaaaaaaaaaaaaaaaaaaaflaeFaeFaeFafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarAabqabqarAarAarAabqaaaarAarAataarAarAaaaabqapfapfalLapfabqaaaabqabqabqabqabqapfalLaktaktatbatcatdaktaktaktaoXateaoZatfapbatgapdapdatiapfaoXaElaEjajgajgatlatmaquapOamxamxamxakDakDatpatqatrasSaytayVayTayXayWagBawzawBaosakDakDakDakDakDakDakDakDakDayYazaayZazdazbazxatKatKamOamOamOamOayGafbaeNazCaeNafbatNatOatPatQatRatSatTatUatVatWatXatYatZatZatZatZatZauaaubayvaoGasJasJasJasJaudamkaueaufaugauhavFamkabqansaujaukaulaoGdgCdgCbnGblAbvublBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaupabqarAabqaupabqarAarAabqarAarAarAarAarAaaaaaaaaaapfauqauCapfautausausausausausauuapfarKauqapfauwauxaoXauyauzapfauAauBauCapfarIatjauDauEarJapfauGaNEaFEajgauIatmakeakfaqwajgauLamxauMauNaqJatqapnauQaAeauTauRaAjaAhauXaAkawBaosakDaAlaAnaFgamEaAoaAnaFgakDaApaAtaAqaAvaAuazxavkavlavlavmavnamOayGafbaBraBsavqavravravravravraByaCmaCeavvavvavvavvavvaDeaoGaqGavyavzaoGaoGasJaoGavAawMavCasJavDavEavHavGawZavIavJamkapeansarTavLavMaoGdgCdgCblyavNavNbnHaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAabqarAabqarAarAarAataabqabqabqarAarAabqaaaabqabqalLasAavoatLazLapdapdapdapdapdbMKavQavRaoZavWavSatkapdavYavXapdatkaxqajgajgajgajgajgajgajgajgajgajgawgajgawhajgajgajgajgajgajgamxawiawjaqJatqatrasSavdaDDaDgaEVawnaqYaFzaFBaFAakDaFVaAnaFXamEaGraAnaGEakDaGFaGIaAqaHfaHfaHhatKawGawHawGaHZamOayGawaaBraIgavqavrawNawOawPawoawRawSawTavvawUawVawWavvaoGaoGasJaubasJasIaoGayvaoGavzasJawXasJaoGawYayqamkamkaxaaxbamkayxansansaxdaxeaoGaoGbnIaxhaoGbplaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarAarAarAarAabqarAarAabqauparAarAabqabqabqabqapfapfawcapfapfaxlaxkaxkaxkaxkaxkaxZapfapfapfapfaxmaxnaxoaxoaxoaxoaxpaxqajgaxraxsaxtaxuaxvaxwaxxaxyaxzaxAaxBaxCajgaxDaxEaxEaxEaxFamEaxGaICaqJaxIaIIaxKaqYaIVasSaJyasdagBamEaKaamEamxaKbaKAaKcamxaKbaKBaKcakDaKOaMoaLvaKOaNoawdatKaxWaxWaxWamOamOayGafbdeeaAAdefavrayaaybayaawoaycaydayeayfaygayhayiavvathaoGaykaylaymaynaoGasJaoGaoGaoGayoaoGaoGaypbppayramkamkamkamkazrasIazGazFbTiaoGdfCdgCdfEaoGaoGaoGabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqarAarAarAarAarAarAarAarAarAarAarAayyarAabqaupapfapfapfayzatkapfabqabqabqabqabqabqabqabqabqabqabqapfaqBayBapdaoXapdaoXayDayEayFayHayGaAYajgajgajgaxTaxQaxQaxQaxUajgajgayMayNayOatnayMamEamEakDayQayRapnaNIaySaOPaNZaOYaySaPaaNZaPbayUaPmaPcaRPaQyaUxaSLaVMaUSaVNaNIaXqaWoaySaXBaXDaXCazeazeazeazeakDayGafbaxYaWvavqavrazfazgazhavraziazjazkazlazmavvavvavvaznaoGasIasJawXasJaoGayvaoGazpaoGazqdfFazsbpmawebpobqVbpqbqXbqWbqWbqWbqWdeSdgCdeVdgCdgCdgCaxgazHaxgaWwaWwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupabqarAataarAarAarAarAazIabqarAarAarAarAarAarAazJazKazJazLatkapfapfabqaaaaaaaaaaaaaaaaaaaaaaaaabqapfapfapfapdaoXapdaoXazNazOazPawfatoaAYajgaaaabqaaaaaaaaaaaaaaaabqaaaaxEazUazVazWazXazYazeazZaAaaAbaAcaAdaAdaZaaYLaZbaAdbaqaAcbcBaAiaAdbeTbfmbfkaAdaAmbfFbfAaAdbglbgIaAraAsbjUblZazeaAwaAxaAyaAzakDayGafbaxYaWxavqavraABaACaADayJaAFaAGaAHavvaAIaAJaAKavvaALaoGaoGaoGayoaoGaoGasJaoGasJaoGatAaxhaxhawYawJamkaxhaxhaxhaxhaxhaxhaxhaxhaxhaxhayxaxhaxhaxhaxhaxhaAObreabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarAarAarAarAarAarAarAarAarAarAabqarAarAarAabqapfapfapfaAPatkapdapfaaaaAQaARaASaARaATabqabqabqabqapfaAUapfaAVavUavUavUaAWaAXajgawKaAZaBaajgaaaaBbaBbaBbaBbaBbaBbaBbaaaayMaBcaBdaBeayMamEamEakDaBfaBgaBhaBiaBjaBkaBhaBlaBjaBkaBmaBnaBoaBpaBqbmPbmIaBtaBuaBvaBwaBxbnuaBwaBzaBAaBBaBCaBDaBEaBFaBGaBHakDayGaBIaBIaBIaBIavraBJaPWaBLaBNaBMaBOayeaBPaBQaBRaBSavvaBTaBUaBWaBWaBXaBWaBWaBWaBZaBWdgEaCaaCbaCcaCdawLaCfaCgaChaCgaCiaCjaCjaCkaCjaxiaxhaxhaCgaCiaCjayAaCjaClaCgabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqarAarAarAarAarAarAarAaCnarAabqabqabqabqapfaoXatkarIalLaaaaCoaCpaCqaCpaCoayKayKayKaCsaCsaCsaCsaCtaCsaCsaCuaCuaCuaCuazRaCuaCwajgabqaBbaCxaCyaCzaCAaCBaBbaaaayMaCCaCCaCDayMaaaaaaakDayLaCGazwatJayLaCIazwakDayLaCJazwakDaCKalMaCLakDamEazzaANamEamEaCOaCOaCPaCQaCRaCOaCOaCSakDakDakDakDakDayGaBIaQdaCUaQvavravravravravraCWaCXaCYazlazmavvavvavvaoGaCZasIarrasJasIaDadgIaxhaxhaxhaxhaxhaDbaDcbsFbqkaDfaWyaDfaDhaDiaDiaDjaWzaDkaCjaDlaCjaDmaWzaDjaDiaCvaDnaCgabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqabqabqarAarAarAarAataarAarAarAaDparAarAarAarAabqaaaabqalLayBatkapdapfaaaaASaDqaDraDqaASayKaDsaDtaCsaDuaDvaDwaDxaDyaCsaDzaDAaDBaCEaCNaCuaCwajgaaaaBbaDEaDFaDGaDHaDIaBbaaaaxEaDJaCCaucayMaAfaAfamxaDMaDNaDOakDaDPaDNaDOakDaDQaDNaDOakDaDRaDSaDTakDaDUaDVaDWaDXaDYaCOaDZaEaaEbaEcaEdaEeaCSaEfaEgaEgaEgaEgaDdaBIaRtaEkaRyaBIaEmaEnaEmavvaEoaEpaEqaEraEsaEuaEuaEvaBWaEwaxhaxhaxhaxhaxhaxhaxhaExaExaEyaEzaEAaEBbumaEDaCgaCgaCgabqabqaDiaEEaEFaDiaDiaDiaDiaDiaEGaEEaDiaDCbbTaCgaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqarAarAarAarAarAarAarAabqarAabqabqarAarAabqabqapfapfauyatkapfapfaaaaCobxFaDqaDqaEIaEJaEKaEKaELaEMaENaEOaEPaEQasbaESaETaEUaETaEWaCuaCwajgaaaaBbaEXaEYaEZaFaaFbaBbaaaayMaFcaCCaCCaFdaFeaFfamxaFgaDNaFhakDaFgaDNaFiakDaFgaDNaFjakDaFkaFlaFmakDaFnaFoaFpaFqaFraCOaFsaFtaFuaFvaFwaFxaCSayGalWalWalWapPalWaBIaTeaFDaThaBIaFFaFGaFGaFHaFIaFJaFKavvavvavvavvavvaoGaFLaxhaFMauraFOauvaFQaFRaFSaFTaFTaFTaFTaFUbwaaFWbwqaFYaCgaFZabqaaaabqaaaaaaaaaabqabqaaaaaaabqaaaaWAaEibbTaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaarAarAarAarAarAabqabqabqarAarAarAabeaaaabqabqabqapfaAgaoXaoXaECalLaaaaaaaASaDraDraDraASayKaGcaGdaGeaEMaEKaGfaGgaGhaCsaGiaGjaGkaEHaGmaCuaCwajgabqaBbaGnaGoaGpaGqbykaBbaaaayMaGsaGsaGsayMaAfauFamxaAEaCFaCramxaAEaCFaCramxaAEaCFaCramxaGxaCHaGzamxamxazzaGAamxaGBaCOaGCaGDbyAbyDaGGaGHaCSayGajgajgajgaFyajgaBIaGKaGLaBIaBIaGMaGNaGOaGPaGQaGRaGSazlaGTaGUawWavvaGVaGWaxhaGXaGYaGZaGZaHaaCMaDcaHcbCjbALbALbALbEoaHgbELaHiaDLarAaMKaMJaMJaOhaMJaMJaOhaMJaMJaOhaMJaMJaPwaWAaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqabqabqabqabqabqabqaHkaHlaHkabfaaaabqaaaabqapfaHmaHnanEatkapfapfaaaaCoaHoaHpaHqaCoayKayKayKaCsaHraEKaHsaGgaHtaCsaHuaHvaHwaGlaHyaCuaCwajgaaaaBbaHzaHAaHBaHCaBbaBbaaaaHDaHEaHEaHEaHFaHGaHHaHGaHIaHJaHIaHKaHIaHJaHIaHLaHIaHJaHMaHNaHOaHPaHQaFCaHSaHTaHUamxazeaCSaHVaHWbHcbLSbIbaIaaCSayGaBIaIcaIdaHdaGJaGJaHeaIhaIiaIjaIkaIlaImaInaIoaIpayeaIqaIraIsaItavvasJaGWaxhaIuaIvaIwaIxaIyaIzaIAaIBbMIaIDaIDaIDaIEaIFbMOaHiaDLaMIaPxarAarAaPyarAarAaPyarAarAaPyarAarAaPxaWAaHxaCgaDoabqaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaabqabqaaaaHkaIGaHkabqabqabqabqabqapfauJapdapdaHXaIJapfaaaaIKaARaILaARaIMabqabqabqayKaINaIOaIPaIQaIRaCsaISaITaIUaHYaIWaCuaCwajgaaaabqaaaaGaaIYaGuaaaabqaaaaHGaAfaAfaAfaHGaHGaJaaJbaJcaJdaJeaJfaJgaJhaJhaJiaJhaJjaJgaJkaJlaJmaJnaERaJpaJqaJramxazeaCSaCSaJsaJtaCSbNVaCSaCSayGaBIaBIaBIaJvaJwaJxaIeaJzaJAaJBaJCaJDaJEaJFaJFaJGaJHavvavvavvavvavvaubaGWaxhaJIaJJaJKaJLaJMaGvaJOaJPaJQaJRaJSaJTaJUaJVbMOaHiaDLaDLaPxarAaJWaaaaaaaaaaaaaJWaaaaaaaJWarAaPxaIfaGbaCgaLwabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaabqaaaaHkaHlaHkaHkaGwaGwaGwaHkaHkaHkaHkaHkapdatkapfaaaaaaaaaaaaaaaaaaaaaaaaabqayKbPcbOgaKdaKeaKfaCsaJoaKhaCuaCuaCuaCuaKiajgaKjaGyaHjaHbaKgaHRaIZaIXaKjaHGaKraKsaKsaKtaKuaKvaKwaKxaKyaKzbPXbPiaTiaKDaKEaKCaKFaKGaKHaKIaKJaKKaJNaKMaKNbQEamxazeaKPaCSaKQaKRaCSbTjbTkalWayGaBIaKWaKXaKYaKZaBIaLaaLbaLcaBIaLdaLeaLfaLgaLfaLhaLiaLjaLkaLlaLmavvasJaGWaxhaLnaLoaLpaLqaLraFRaLsaLtaJQaLuaCgaCgbTlaLwaCgaDLaDLaDLaPxarAaaaaaaaaaaaaaaaaLxaaaaaaaaaaTMaRgaIfaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabqaHkaHkaLBaLzaLAaLBaLBaLBaLDaLEaLFaLGaHkaHkatkapfaaaaLHaLIaLIaLIaLIaLIaLJabqaCsaCsaCsauKazTaCsaCsaLMaLNaLOaLPaLQaLRaLSaLTaLUaLVaLWaLXaLYaLWaLZaMaaMbaHGaMcaMdaMeaMfaMfaKkaMfaMfaMfaMfaMfaMfaMfaMfaKkaMfaMhaMiaMjaMkaMkaMkaMlaMlaMlaMlaMlaMkaMmaMkaMnaMnaMnaMnaJuaMnayGaBIaBIaBIaMpaMqaBIaMraBIaMsaBIaMtaMuaMvazlaMwaMxaMyazlaMzaMAaMBavvaMCaGWaxhaCgaCgaCgaCgaCgaFRaMEaMFaJQaMGaCgaMHaXGaWubssaWuddkaDLaPxarAaaaaaaabqabqabqabqabqaaaaaaarAaPxaWAaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdabdabdabdabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaHkaMLaMLaMLaLBaLBaLBaLBaLBaLBaMLaMLaMMaHkatkalLaaaaMNaMOaMOaMOaMOaMOaMNabqabqaKlaMQaMRaMSaMTaMUaMVaMWaMXaMYaMZaNaaNbaNcaLRaNdaNeaNfaNgaNhaNiaNjaNkaNlaNmaNnbTqaKmaaaaaaaaaabqaaaaaaaaaabqaaaaaaaaaaKoaNraNsaNtaMkaNuaNvaNwaNxaNyaNzaNAaNBaNCaMkaNDaUfaNFaNGaJXaMnawKaBIaNJaNKaJwaMqaBIaNLaBIaNMaBIaNNaNOaNPaNQaNQaNQaNQaNQaNQaNQaNQaNQaoGaNRaxhaNSaNTaNUaNVaCgavgaIvaMFaNXaNYbVbaOaaObaOcaOdaOeddRaDLaPxarAaJWabqabqaOgddSaOiabqaOjaaaarAaPxaWAaKSaCgaDoabqabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaUUaUUaUUaUUaUUaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaHkaOkaLBaLBaLBaLBaLBaLBaLBaLBaMLaMLaMLaOlaKTapfaaaaMNaOnaMOaMOaMOaMOaMNaKpaKlaKlaOpaOqaOraOraOsaOtaOuaOvaOwaOxapfaOyapfapfapfapfaOzaOAavxaOCaKnavxaOAaOAaOAaOAaOFaaaaaaaOGaOGaOGaOGaOGaOGaOGaaaaaaaMfaOHaOIaOJaOKaOLaNAaOMaONaOOavBaOQaORaOSaMkaOTaOUaOVaNHaKVaMnbViaBIaBIaBIaOZaOZaBIaBIaBIaBIaBIbVmbWpbVoaNQaPdaPeaPfaPgaPhaPiaPjaNQaPkaGWaxhaNTaNTaPlaOdbXuaGYaPnaPoaPpaPqaCgaPraPsaPtaPuaPvddUaKLddVarAaaaaaaabqddWcspaPzabqaaaaaaaTMaRgaIfaHxaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaaaaaaaabdabdabdabdabdabdabdaXHaXIaWBaXJaWBaXKaXOabdabdabdabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabqaHkaPAaLBaLBaLBaLBaPBaLBaLBaLBaLBaMLaPDaHkaECapfaaaaMNaMOaMOaMOaMOaMOaPEawbavKawbaPHaPIaPJaPKaPLaPMaPNaPOaPPaPQaPRaPSaPTaPTaPTaPTaPVaOAaYOaPXaPYaPZaQaaQbaQcbeBaQeaQfaQgaQgaQhaQiaQjaQkaQlaQmaQmaQnaQoaQpaKGaNtaMkaQqaNAaQraNAaQsaNAaQtaNAaNAaMkaQubeLaOVaQwaQxaMnbXQaQzaQAaQBaQCaQDaQEaQFaQGaQHaQIaQJaQKaQLaNQaQMaQNaQNaQNaQOaQPaQQaNQawvaGWaxhaQSaQSaQTaOdbXuaJJaQUaMFaOWaOmbVbaOXaRaaRbaRcaRdaOfaDLaPxarAaaaaReabqaRfddXaRhabqabqaJWarAaPxaWAaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaUUaUUaUUaUUaUVaXNbbXbbWbbYbbWbbZbgUaUVaUUaUUaUUaUUaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGwaLBaLBaLBaLBaLBaLBaLBaLBaLBaLBaRiaHkaHkatkapfabqaMNaMOaMOaMOaMOaMOaRkaRlaRmaRlaRnaPIaRoaRoaRpaRoaOuaRqaRraRsapfapfapfapfapfapfazSaOAbgkaRuaRvaRwaRxaRxaRxbgyaOFaaaaOGaRzaRAaRAaRAaRAaRAaRBaOGaaaaMfaRCaMiaMjaMkaRDaREaRFaNAaRGaNAaRHaRIaNAaRJaRKaRLaRMaRNaROaMnbYFaQVaQVaQVaQVaQWaRTaRTaRUaRUaRVaRWaRXaRYaRZaSaaSbaSbaSbaScaSdaSeaNQaSfaGWaxhaQSaSgaShaSiaCgaSjaIvaMFaJQaSlaCgaSmaSnaSoaSoaSoaSpaDLaPxarAaaaaaaabqabqabqabqabqaaaaaaarAaPxaWAaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbcbbcabcabcabcabcabzhbzhbdJbzhbzhbcabcabcabcabcaaXKaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSqaSraSsaaaaGwaLBaLBaLBaLBaLBaLBaStaSuaSuaSvaSwaHkaqBatkapfabqaMNaMOaMOaMOaMOaSxaMNaKpaKlaKlaSyaPIaSzaSAaSBaSCaSDaSEaSFaSGaLKaSIaSJaSKbZaapfaSMaOAaSNaRuaSOaSPaSQaSQaSRaSSaOFaaaaMgaSUaRAaSVaSWaSXaRAaSYaMgaaaaMfaMhaMiaMjaMkaSZaTaaTbaTcaTdaTcbjbaTfaTgaMkbZdaxcaTjaTkaTlaMnaTmaToaToaTpaTqaTraTsaTtaTuaTvaTwaTxaTyaTzaTAaTBaTCaTDaQXaTFaTGaTHaNQasIaGWaxhaCgaCgaCgaCgaCgaFRaTIaQYaTKaTLaCgaCgbZVaLwaCgaDLaDLaDLaPxarAaaaaaaaaaabqaaaaaaaaaaaaaaaaTMaRgaIfaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbdKbdNbdNbdNbdNbdNbdNbdObdNbdNbdNbdNbdNbdNbdPbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGaTNbBmaTNacJaHkaLBaLBaLBaLBaLBaLBaLBaLBaLBaTPaTQaHkauAaQZapfaaaaMNaMOaMOaMOaMOaMOaTSaRlaTTaRlaRnaPIaRoaRoaRpaRoaOuaOvaTUaTVaTWaTXaTYaTZaUaapfaUbaUcaUdaRuaRuaUebmJaRuaUgaUhaOFaaaaMPaUjaUkaUlaUmaUlaUkaUnaNpaaaaMfaMhaUpaUqaMkaNqaNqaNqaNqaUsaNqaNqaOoaNqaMkaMnaOBaUvaSHaMnaMnbZWaToaTpaTqaUyaUzaTnaToaTqaTqaTpaUAaUBaUCaUDaUEaSbaSbaSbaScaUGaUHaNQaUIaGWaxhaUKaULaUMaSTaUOaUPaIvaMFaJQaUQaJSbZXcaGaUTbMOaHiaDLaDLaPxarAaJWaaaaaaaJWaaaaaaaaaaaaaJWarAaPxaIfaGbaCgaLwabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXbeXbeXbeXbeXbeXbdObeXbeXbeXbeXbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWDaTNaUWaTNaWDaHkaPAaMLaLBaLBaLBaLBaLBaLBaLBaUYaUZaHkatkapdapfaaaaMNaMOaMOaMOaMOaMOaVbayjaxXayjaVeaPIaRoaVfaVgaVhaViaVjaOuaVkaVlaVmaVnaVoaVpapfaVqaOAaVraRuaRubmKaVtaVuaUgaRRaOFaaaaOGaVwaVxaUkaVyaRAaVzaVAaOGaaaaMfaVBaOIaOJaVCaVDaVEaVEaVEaNCaVEaVEaVFaVGaMkaVHaVIaVJaVKaVLcaHaVKcbeaVOaVOaVPaVQaVRaVSaVTaVUaVVaVSaVWaVXaNQaVYaVZaWaaWaaWcaWdaWeaNQasJaWfaxhaWgaWhaWiaTOaWkaWlaWmaRSaTEaSkaTRcbWaUFaWsbMOaWtaDLbeZaPxarAarAddZarAarAddZarAarAddZarAarAaPxaWAaHxaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaabdabdaXHbdMbeWbeXbeXbeXbeXaXLaXLaXMaXLaXLbeXbeXbeXbeXbeYbdMaXOabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaWDaWEaWFaWGaWDaHkaLBaMLaWHaWIaWJaLBaLBaLBaLBaUYaWKaHkatkapdalLaaaaMNaOnaMOaMOaMOaMOaMNaKpaKlaKlaWLaPIaRoaRoaRpaRoaOuaVjaWMaWNaVlaWOaWPaWQaWRapfazSaOAaWSaWTaWTaWUaWVaRuaUgaWWaOFabqaOGaOGaOGaWXaWYaWZaOGaOGaOGabqaMfaOHaXaaMjaXbaXcaVEaVEaVEaXdaVEaVEaXeaNCaXbaQCaXfaXgaXhaToayuaToaTnaTpaToaXjaToaXkaTpaTqaToaTqaTpaXlaXmaNQaXnaXpaXoaURaXraPiaQQaNQaXsaGWaxhaXtaXuaXvaXwaXxaXyaXzaXAcczccyccHccHcdIaXFbMOaHiaDLarAdeaaMJaMJdebaMJaMJdebaMJaMJdebaMJaMJdecaWAaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabdaaabgMbdMbeWbeXbeXaXLaXLaXLaXLbfabpvaXLaXLaXLbeXbeXbeYbdMbMnaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaWDayCaXQaXRaXSaHkaXTaMLaXUaXVaXWaMLaMLaMLaXXaXYaXZaHkaVaaYbapfabqaYcaYdaMOaMOaMOaYeaYfabqabqaKlaWLaYgaPJaPKaYhaYiaYjaYkaYlaYmaYnaYnaYnaYnaYnapfaYoaYpaYqaYraYraYsaYtaYuaYvaYwaUoaaaaaaaaaaOGaOGaYyaOGaOGaaaaaaaaaaKoaNraYzaMjaYAaYBaYCaYDaYEaNCaNCaYFaYGaNCaYAaQCaYHaYIaYJaYKcdPaYKaYMaYNbmLaYPaYKaYKaYKaYKaYKaYKaYQaYRaYSaNQaNQaNQaNQaVcaNQaNQaNQaNQaoGaGWaxhaYVaYUaYUaSTaYWaYXaYYaYZaWbaVvaWnaQUcdQaZfbwqaZgaCgaaaabqaaaabqaaaaaaaaaaaaabqaaaaaaabqabqaWAaWpaDhaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdclHbcbbfcbfbbgNaXLaXLbdIbdIbdIbgPbgObdIbdIaXLaXLbgNbgQbgSbgRaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaWDaWDaZiaZjaWDaWDaWDaZkaWDaWDaZlaZmaWDaWDaWDaZnaWDaWDaWqapfapfabqaZpaZqaZraZraZraZqaZsabqabqaZtaZuaPIaRoaRoaRpaRoaOuaZvaOuaZwaYnaZxaZyaZzaZAapfazSaOAaZBaZCaZDaZEaZFaZGaZHaZIaOFaZJaUraZJaZLaZMaZNaZOaZLaZJaUraZJaMfaZPaZQaZRaZSaMkaMkaMkaMkaZTaZUaZVaNCaZWaMkaQCaZXaTraZYaZZaZZaZZaZZaoGaoGaoGbaababbacbadbaebafaZZbagbagaoGbahazyazyaWrazyazyazybakazybalaxhbambambambambanbaobapcdRbarbasbatayIcdSbavaCgaCgaCgabqabqaDibawbaxaDiaDiaDiaDiaDiaDibawaDiaXEaDhaCgaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabdaXHbgTbicbeXbeXaXLbdIbidbifbiebihbigbiibidbdIaXLbeXbeXbijbgTaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaUNbaAbaBbaCbaDbaEbaBbaFbaGbaHbaGbaIbaJbaGbaKbaLbaMaYTbaOapfaaaaaabaPbaQbaQbaQbaRaaaabqaZtbaSaWLaPIaRoaRobaTbaUaOubaVbaWbaXbaYbaZbbabbbbbcapfazSaOAaOAaOAavxavxayPaOFbbebbeaOFbbgbbhbbiaZLbbjbbkbblaZLbbmbbnbbobbpbbqbbrbbsbbtbbubbvbbwaMkaMkaYAaLLaYAaMkaMkayubbybbzayubbAbbBbbCbbDbbEbbFaoGaoGaoGaoGbbGaoGaoGaoGaoGaoGaoGaGWasIasJbbHbbHbbHbbHbbHbbHbbHbambbIbbJbbKbamazobbMbambbNbbOaFRaFRazAcePcemaDfbbSaDfbbTaDiaDibbUaDiaCiaCjbbVaCjaClaDibbUaDiaCvaDnaCgabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabdaXHbdMbeWbeXaXLaXLbdIbikbilbdLbnQbimbjPbjObdIaXLaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaUNbcdbcebcebcfbcebcebcebcgbchbcibcjbckbckbckbclbcmbcnbcoapfaaaaaaabqabqaaaaaaabqabqabqaZtbcpbcqbcrbcsaRobctbcubcvbcwbcxbcybczbcAceSbcCbcDapfazBbcFbcGbcHbcIbcJbcKbcLbcMbcNbcObcPbcQbcPbcRbcSbcTbcUbcVbcPbcWbcXbcXbcYbcZbdabcXbcXbdbbdcbdcbdcbddbdebdcbdcbdfbdcbdgbdhbdcbdcbdcbdibdjaoGbdkbdobdmbdnbdobdpbdobdqbdobdrazybakbalaubasJbbHbdsbdtbdubdvbdwbdxbambdybdzbdzbdAbdzbdBbambdCbarbdDbdEbdEbdEbdEbdEbdFaCgbdGaCjaCjbdHaCjaDmaCgaCgaCgbdGaCjaZdaZcaDmaCgabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXaXLaXLbdIbjQbilbdIbjRbdIbjTbjSbdIbdIaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaUNaUNbdQaUNaWDaUNbdRaUNbcdbcebdSbdTaUNbdRaUNbdUbdVbdWbdXapfapfapfapfalLalLalLapfapfapfaZtbdYbdZbdZbdZbdZbeaaRobebbecbedbeeaYnaYnaYnaYnaWjapfapfbegapfapfbehbeibejbekbelbembenbekbelbeobepbembeqbekbekbekbelbekbekberbesbekbekbekbekbekbekbekbetbeubekbekbenbevbewbekbekbekbekbexbeybezbezbezbeAbezbezbezaoGbmMaoGaGWaoGaoGbeCbeCbeCbeCbeDbeEbeEbeFbeGbeHbambeIbeJbeKbmNbeMbeNbambeObePbeQbdEbeRbeSceWbdEbeUaCgaCgaCgaCgaCgaCgaCgaCgazMaCgaCgaCgaCgaCgaLwaCgabqabfabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabdaXHbdMbeWbeXaXLaXLbjWbjVbjYbjXblFblDblIblGblJbdIaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNabqaaaabqaaaaUNbfdaUNbfebfebffbfgaUNbfdaUNaUNaWDbfhbfibfjavTavUavUavUbflavUavUbfnavVbfobfpbfqbfqbfrbfsbftbfubfvbfwbfxbfybfwbfzceXbfwbfBbfCbfDbfEceYbfGbfHbfIbfJbfKbfKbfLbfMbfNbfObfPbfQbfRbfSbfSbfSbfSbfSbfSbfSbfTbfUbfVbfVbfVbfVbfVbfVbfVbfVbfWbfXbfYbfZbfVbgabfWbfVbfVbgbbgcbgdbezbgebgfbggbghbgibezbgjbmOaoGaGWaoGaaabeCbgmbgnbeCbgobgpbgqbgrbgsbgtbambgubgvbgwbgxcfdbgzbambgAbgBbgCbdEbgDbgEbgFbdEbgGaOdaOdaOdaOdaOdaOdaOdaOdaOdaOdbgKbgLbgKbgLaefaefaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdaXHbdMbeWbeXaXLaXLbdIblKbilbdIblLbdIbjTbjSbdIbdIaXLbeXbeYbdMaXOabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqaaaaUNbdRaUNaUNaUNaUNaUNaUNbdRaUNaaaaWDbgVbgWbgXbgXbgXbgXbgXbgXbgXbgXbgYazQbfwbfwaXibhbaXibfwbfwbfwbhcbfwbhdbhebhfbhgbhhbhibhjbhkbhlbhmbhnbfGbhobfIbhpblhbhqbhrbhqbhsbhqbhtbhubhtaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxbhwbhwbhxbhwbhwbhwbhwbhwbrNbhybfIbhzbezbhAbhBbhCbhDbhEbezbhFbhGaoGaGWapeaaaaZKbhIbhJbbxbhLbhMbhNbhObhPbhQbambhRbhSbhTbhTbhUbhVbambhWbhXbhWbdEbhYbhZbiabdEaChaCgaCgaCgaCgaCgaCgaCgaCgaCgaDLaFRaFRbdFaFRabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaabdaaabgMbdMbeWbeXaXLaXLbdIbikbilbdIbdIbdIbjTbjObdIbdIaXLbeXbeYbdMbMnaUUaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabinbiobipbiobiqbiobiobiqbiobipbirbisaWDbgVbitbiubivbiwbixbiybizbiAbgXbgYbiCbiDbiEbiFbiGbiFbiGbiHbiGbiIbfwbiJbiKbiLbiMbiNbazbiPbiQbiRbiSbiTaAMbiVbiWbiXbhqbiYbiZbjabhKbhqbjcbjdbjeabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqbhwbjfbjgbjhbjibjjbjkbjlbhwbjmbjnbjobezbjpbjqbjrbjsbjtbezaoGaoGaoGbjuaoGaaabeCbjvbjwbeCbjxbjybjzbjAbjBbjCbambjDaZebjFbjGbjHbjIbamaFRbjJaFRbdEbjKbjLbjMbdEdeWavPdfadfcdfbdfdasXdfeanqanqaaaaaaaFRbgLaFRabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaUUaUUblMaXNbmHblNbfbbgNaXLaXLbdIbidbilbmTbnLbnEbnMbidbdIbdIaXLbgNbgQbnNbnPbnOaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabinbiobiobjZbkabkbbkcbkdbkebkfbkgbkhbkbbkiblVaUNbgVbgWbbLbklbkmbknbkobkpbkqbkrbksbktbkubkvbkvbkwbkxbkybfwbfwbfwbfwbkzbkAbkBbkCbkDaXibkEbhkbhlbkFbkGbkHbkIbfIbkJbhqbkKbkLbkMbkNbkObkPbkQbccabqabqaBVaCVaBYaDKbkWaEhaCVaDKbkWaEhaBYaBYaEtabqabqbhwaFNblablbblcblbbldblebhwblfbfIblgbwlbezbkkaODbkRbezbezbllblmaoGblnaoGblobeCbeCbeCbeCbbHbbHbbHblpblqbbHbambambambambamaGtaFPbambltblubltbdEbkUblwbkVbdEdffdfhdfgdfgdfjdfkdfkdfkdflabqaaaaaaaaaaWwaaaabqaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWwbnRblEbnTbnSbnUbicbeXbeXaXLaXLbdIbpsbptbdLbqZbpubrbbrabdIbdIaXLbeXbeXbrcbijbrfaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablOblPblQblRbkbblSblTblSblTblSblTblSbkbblUbnFaUNbgVblWbgXblXblYblZbmabmbbmcbgXbmdbmebmfbmgbmhbmibmjbmkbmlbmmbmnbmobmpbmqbmrbmsbmtbmubmvbmwbmxbmybmzbmAbiVbfIbmSbhqbmQbmCbmDbmEbhqbmFbmGbjeabqabqaIbboBbopbpVboHbqfbqdbqhbqgbqkbqjbqlaIHabqabqbhwbmUbmVbmWbmXbmYbmZbnabhwbhybnbbncbndbnebnfbnebngbnhbnibnebnebnebnjbnebnkbnlbnmbnnbnebnebnobnkbngbnjbnpbnqbnobnrbnsbntbnubnvbnwbnxbnybnzbnAbnBbnCbnDblidfmdftdfqdfxdfudfydeZaoNdflabqaaaaaaaaaaWwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaWwbnRblEbnKbrgbrhbeWbrjbeXaXLaXLbdIbrlbrmbifbrIbrnbrQbrKbdIbdIaXLbeXbeXbeXbeYbrfaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablOblPblQblRbkbblSblTblSblTblSblTblSbkbblUbnFaUNbgVblWbgXblXblYcfgbmabmbbmcbgXbmdbmebmfbmgbmhbmibmjbmkbmlbmmbmnbmobmpbmqbmrbmsbmtbmubmvbmwbmxbmybmzbmAbiVbfIbmSbhqbmQbmCbmDbmEbhqbmFbmGbjeabqabqaIbboBbopbpVboHbqfbqdbqhbqgcfhbqjbqlaIHabqabqbhwbmUbmVbmWbmXbmYbmZbnabhwbhybnbbncbndbnebnfbnebngbnhbnibnebnebnebnjbnebnkbnlbnmbnnbnebnebnobnkbngbnjbnpbnqbnobnrbnsbntcfibnvbnwbnxbnybnzbnAbnBbnCbnDblidfmdftdfqdfxdfudfydeZaoNdflabqaaaaaaaaaaWwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaWwbnRblEbnKbrgbrhbeWbrjbeXaXLaXLbdIbrlbrmbifbrIbrnbrQbrKbdIbdIaXLbeXbeXbeXbeYbrfaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiqbkbbkbbipbkbblSblTblSbnVblSblTblSbkbblUbnFaUNbnWbnXbnYbnZboablkaUtblkbiubiubodboebhcbfwbofbogbohboibojbokbolbfwbombonbojbkCboobfwbrXboqborbosbotaAMbkIbfIbkJbhqboubovbowboxbhqboybozbjebkWaJYbkWbsbboCboDboEboDboFboDboEboDboGbscbkWaJYbkWbhwboIboIboIboJboKboLboMbhwboNboOboPboQboRboSboRboTboRboUboRboRboRboVboRboWboXboYboZboRboRbpabpbbpcboVbpdboVbpebpfbpgbntbphbpibpibpjbpkbpibpidfzdfBdfAbljdfDdfIdfHdfKdfJdgddfLdgKazDabqaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqbpraaaaaaaaaabqbsdbsdblMbsebsfbeWbsnaXLaXLaXLbsMbdIblHblHbnJbdIbdIbdIbdIbrkaXLaXLaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablObpwbpxblRbkbblSblTblSblTblSblTblSbkbblUbnFaUNbpybpzbpAbpBbpCbpDbpDbpEbpFbpBbpGbpHbpIbfwbpJbpKbpLbpMbpNbpObpPbfwbpQbpRbpSbpTbpUbfwbsibpWbpXbpYbpZbfGbqabjnbqbbqcbqcbqcbqcbqcbhtbtPbqebhtbkWbtSbtRbtTboEboEboEboEbqiboEboEboEboEbtZbtYbubbkWbqmbqnbqobqpbqqbqrbqrbqsbhwbqtbqubqvbqwbqxbqybqxbqzbqxbqAbqxbqxbqBbqxbqxbqCbqDbqxbqEbqBbqFbqGbqCbqHbqxbqIbqJbqKbqLbqMblsbqObqPbqQbqRbpnbqSbqSbqTdgMdgLdgOdgNdgPanqanqanqanqanqanqanqanqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqaaaabqbsPbsRbsQbsSbrdcKIaXNbsfbsTbsUaXLbsWbsVbsXbribsZbsYbtbbtabtcbrkbtebtdbtgbtfaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrobiobiobjZbrpbkbbrqbkbbrrbrsbkbbrtbkbbkibruaUNbgVbrvbrwbrxbrybrzbrAbrBbrCbrxbrDbrEbrFbfwbrGaXibrHblvbfwbfwbfwbfwbfwaXibrJblxbfwbfwaAMbrLbrMaAMaAMbzObehbfIbrObqcbrPbumbrRbqcbrSbrTbrUbrVaJZburbrYbrZbsabsabvWbwfbwebvWbvWbsabsabsgbshbwgbkWbhwboIboIboIbsjboIboIboIbhwbskbfIbslbZiblCbsoblCbsmbspbspbspbspbspbspaoGaoGbsqaoGaoGaoGbsrbmBaoGaoGaoGbstaoGbsubsvbswbbfbsybszbsAbsBbqSbsCbsCbsDbqUbsEbjNbntbsFbsGbsHbsIbsJbsJbsKbsLabqaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaabuLbudbuMabqbuObuNbuQbuPbuSbuRbuTbBebuVbuUbuWbribuYbuXbvabuZbvcbvbbvebvdbvgbvfaXLbvhbvibdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrobiobiobjZbrpbkbbrqbkbbrrbrsbkbbrtbkbbkibruaUNbgVbrvbrwbrxbrybrzbrAbrBbrCbrxbrDbrEbrFbfwbrGaXibrHblvbfwbfwbfwbfwbfwaXibrJblxbfwbfwaAMbrLbrMaAMaAMbzObehbfIbrObqcbrPcfjbrRbqcbrSbrTbrUbrVaJZburbrYbrZbsabsabvWbwfbwebvWbvWbsabsabsgbshbwgbkWbhwboIboIboIbsjboIboIboIbhwbskbfIbslbZiblCbsoblCbsmbspbspbspbspbspbspaoGaoGbsqaoGaoGaoGbsrbmBaoGaoGaoGbstaoGbsubsvbswbbfbsybszbsAbsBbqSbsCbsCbsDbqUbsEbjNbntcfkbsGbsHbsIbsJbsJbsKbsLabqaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaabuLbudbuMabqbuObuNbuQbuPbuSbuRbuTbBebuVbuUbuWbribuYbuXbvabuZbvcbvbbvebvdbvgbvfaXLbvhbvibdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrobiobthbiobiqbiobiobiqbiobipbtibtjaWDbvjbtlbtmbfGbtnbtobtpbtobtqbfGbtrbtsbttbtubtvbtwbtxbtybtzbtwbtAbtBbtwbtvbtvbtCbtvbtDbtEbtFbtGbtHbtvbtIbtJbtKbkJaKqbtMbtNbtObqcbjebjebjebjebkWbwmbtQboEboEboEbtUboEbtVbtWbtXboEboEbwnbuabAkbucbhwbwobuebufbugbuhboIbuibhwbujbfIbukboAdedbunbuobsmbupbuqbwpbusbutbuubuvbuwbuxaoGbuybuzbuAbuBbuCaoGarrbuDaoGbuEbuFbuGbqNbuHbuHbuHbuIbuJbqSbqSbuKaZobvkbvnbvmbvpbvobvrbvqbvsbvsbvvbvtbvwbvwbvwbxlbxmbvwbvwbvwbvwbvwbxlbvwbvwbvwbvwbvwbvwbxlbvwbxmbxobxnbxpbxpbxrbxqbxtbxsbxvbxubxxbxwbxzbxybxBbxAbxDbxCbzebxEbzgbzfbzjbzibzlbzkbznbzmbzpbzoaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqaaaaUNbdRaUNaUNaUNaUNaUNaUNbdRaUNaaaaWDbzqbzsbzrbfGbvAbvBbvCbvBbvDbfGbvEbvFbvGbvHbvHbvIbvJbvHbvHbvKbvLbvMbvNbvHbvHbvObvHbvHbvHbvPbvQbvRbvRbvSbvTbvUbvVbqcbyobvXbvYbqcbvZbwbbwabwcbwdboEbtQboEbypbywbwhbwibwjbwibwkbyJbyxbAbbyQbAkbwqbhwbwrbwsbwtbwubwvbhwbhwbhwbhybwwbwxbsmbwybwzbwAbsmbwBbwCbwDbwEbwFbwGbwHbwIbwJbwKbwLaKUbwNbwObwPbwQbwRbwSaoGbsubwTbwUbntbwVbwWbwXbwYbwZbxabxbbxcbxdbqUbxebxfbxgbxhbxiaWCaaaaaabxjbsNabqaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaabxkbztbsLabqbBbbzubBdbBcbBgbBfbBibBhbBnbBjbCWbBobCYbCXbDabCZbDibDcbFdbDjbFfbFeaXLbrcbFgbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaUNabqaaaabqaaaaUNbxGaUNbxHbxIbfebxJaUNbxGaUNaUNaWDbgVbxKbxLbfGbxMbvBbxNbvBbxObfGbxPbxQbxRbxSbxTbxUbxVbxWbxXbxYbxZbyabxTbxTbxTbybbxTbycbydbxVbyebxTbxTbyfbygbyhbvVbqcbyibyjbykbylbymbynbymaLybwdbAjbAebyqbyqbyqbyrbysbytbyubyvbyqbyqbyqbBWbCcbkWbhwbyybyzbyAbyBbyCbhwbyDbyEbyFbyGbwxblCbyHbyIbCdbsmbyKbyLbyMbyNbspbspaoGaoGbyOaoGaoGaoGaLCbCeaoGaoGbyRbCIaoGbyTbwTbyUbntbjNbjNbjNbjNbyVbjNbjNbyWbyXbyYbntbntbyZbzabzbbzcaaabqYbzdaaaabqaaaaaaabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqaaaaaabxkbBabFkbGNbGMcKIbsebGSbGObrcaXLbsMbsMbsMbribribICbBkbribribrkbrkbrkaXLaXLaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqaaaaUNbdRaUNaUNaUNaUNaUNaUNbdRaUNaaaaWDbzqbzsbzrbfGbvAbvBbvCbvBbvDbfGbvEbvFbvGbvHbvHbvIbvJbvHbvHbvKbvLbvMbvNbvHbvHbvObvHbvHbvHbvPbvQbvRbvRbvSbvTbvUbvVbqcbyobvXbvYbqcbvZbwbcflbwcbwdboEbtQboEbypbywbwhbwibwjbwibwkbyJbyxbAbbyQbAkcfmbhwbwrbwsbwtbwubwvbhwbhwbhwbhybwwbwxbsmbwybwzbwAbsmbwBbwCbwDbwEbwFbwGbwHbwIbwJbwKbwLaKUbwNbwObwPbwQbwRbwSaoGbsubwTbwUbntbwVbwWbwXbwYbwZbxabxbbxcbxdbqUbxebxfbxgbxhbxiaWCaaaaaabxjbsNabqaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaabxkbztbsLabqbBbbzubBdbBcbBgbBfbBibBhbBnbBjbCWbBobCYbCXbDabCZbDibDcbFdbDjbFfbFeaXLbrcbFgbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaUNabqaaaabqaaaaUNbxGaUNbxHbxIbfebxJaUNbxGaUNaUNaWDbgVbxKbxLbfGbxMbvBbxNbvBbxObfGbxPbxQbxRbxSbxTbxUbxVbxWbxXbxYbxZbyabxTbxTbxTbybbxTbycbydbxVbyebxTbxTbyfbygbyhbvVbqcbyibyjbymbylbymbynbymaLybwdbAjbAebyqbyqbyqbyrbysbytbyubyvbyqbyqbyqbBWbCcbkWbhwbyybyzcfnbyBbyCbhwcghbyEbyFbyGbwxblCbyHbyIbCdbsmbyKbyLbyMbyNbspbspaoGaoGbyOaoGaoGaoGaLCbCeaoGaoGbyRbCIaoGbyTbwTbyUbntbjNbjNbjNbjNbyVbjNbjNbyWbyXbyYbntbntbyZbzabzbbzcaaabqYbzdaaaabqaaaaaaabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqaaaaaabxkbBabFkbGNbGMcKIbsebGSbGObrcaXLbsMbsMbsMbribribICbBkbribribrkbrkbrkaXLaXLaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNaUNbdQaUNaWDaUNbdRaUNbzvbaBbzwbzxaUNbdRaUNbzybzzbzAbtlbtmbfGbzBbzCbtpbzCbzBbfGbzDbzEbzFbfGbzGbzHbzIbfGapfbzJapfbzKbzKbaibzMbzNbaibzKbzKbzKbzKbzKbzKdeDbzPbzQbzRbzSbzTbzUbzVbzWbzVbzXbzYbzZbAabCfbAcbAdbThbAdbAdbAfbAgbAhbyqbyqbAibyqbCkbAkbhwbAlbAmbAnbAobApbAqbhwaMDbhtbAsbbrbAtbsmbsmbsmbsmbsmbAubAvbspbspbspbAwbAxbspbAybAzbAAaoGazpbABaoGbACbADbAEbAFbAGbAHbAIbAJbAKbAKbAMbAKaNWbAObjNbAPbAQbARbASbATbAUbAVbAWbAXbsJbAYbAZabqabqabqabqabqaaaabqaaaabqaaaabqaaaabqaaaaaaaaaaaaaaaaaaabqbpraaaaaaaaaabqaaaaaaabdaZhbIEbeWbeXbeXbIFaXLbBlbDbbKjbDdbDebDfbDgbDhbBlaXLbIFbeXbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNbBpbaBbaCbBqbBrbaBbaBbBsbBtbchbBubBvbBvbBvbBwbBxbBybBzbBAbBBbBCbBDbBEbBFbBGbBBbBHbBIbBJbBKbBKbBLbBKbBKarKbBMbBNbzKbBObBPbBQbBRbBSbzKbBTbBUbzKbBTbBUbzKbzPbfIbkJbqcbBVbClbBXdaebBYbBZbCabCbbwdbAkbDrbyqboEbDVbCgboEboEbAkbChbDWbCjbyqbEfbEgbhwbCmbCnbCobCpbCqbCrbCsbCtbhtbhybbrbhzbspbCubCvbCwbCxbCybCzbCAbspbCBbCCbCCbCEbCFbCGbCHaoGaoGaoGaoGaoGaoGbCIaoGbCJbCKbCLbCMbCNbCNbCNbCNbCNbCMbCMbCNbCObCPbCQbCRbCSbCTbCUbCVbCMbCMbCMabqaaaaaaaaaabqaaaabqaaaabqaaaabeaaaabeaaaaaaaaaaaaaaaaaaaaaabqabqabqabqaaaaaaaaaabdaXHbsfbKkbvhbeXbeXaXLbBlbFhbFibFjbKnbFlbFmbFnbBlaXLbeXbeXbvhbvhbvibdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNbcdbcebcebDkbcebDlbDmbDnbDnbDobDnbDpbDqbEJbDsbDtbDubDvbDwbpBbDxbDybDzbDAbDBbDCbDDbDEbDFbDGbDHbDIbDJbBKbDKbDLapdbzKbDMbDNbBQbBRbBSbzKbDObDPbzKbDObDPbzKbDQbfIbkJbqcbqcaPCbqcbqcbqcaPGaPFbsObqcbFJbtQbDXboEbwibwibDYbDZbEabEbbEcbEdbEebshbFUbEhbEibEjbEkbElbEmbEnbhwbEobhtbEpbbrbhzbspbEqbErbCybEsbCybEtbCybEubEvbCHbaubvzbEybEzbEAbEBbECbEDbEEbEFbEGbEHaoGbEIbwTbHCbCMbEKbELbEMbENbEObCMbEPbEQbERbESbzLbEUbEVbEWbEXbEYbEZbFabCMabqabqabqabqabqabqabqaaaabeaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdclHbKpbKobKqbfbbgNaXLbBlbGPbGQbGRbMpbGTbGUbGVbBlaXLbgNbgQbMtbMrbMrbNXaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNbBpbaBbaCbBqbBrbaBbaBbBsbBtbchbBubBvbBvbBvbBwbBxbBybBzbBAbBBbBCbBDbBEbBFbBGbBBbBHbBIbBJbBKbBKbBLbBKbBKarKbBMbBNbzKbBObBPbBQbBRbBSbzKbBTbBUbzKbBTbBUbzKbzPbfIbkJbqcbBVbClbBXdaebBYbBZbCabCbbwdbAkbDrbyqboEbDVbCgboEboEbAkbChbDWcgibyqbEfbEgbhwbCmbCnbCobCpbCqbCrbCsbCtbhtbhybbrbhzbspbCubCvbCwbCxbCybCzbCAbspbCBbCCbCCbCEbCFbCGbCHaoGaoGaoGaoGaoGaoGbCIaoGbCJbCKbCLbCMbCNbCNbCNbCNbCNbCMbCMbCNbCObCPbCQbCRbCSbCTbCUbCVbCMbCMbCMabqaaaaaaaaaabqaaaabqaaaabqaaaabeaaaabeaaaaaaaaaaaaaaaaaaaaaabqabqabqabqaaaaaaaaaabdaXHbsfbKkbvhbeXbeXaXLbBlbFhbFibFjbKnbFlbFmbFnbBlaXLbeXbeXbvhbvhbvibdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNbcdbcebcebDkbcebDlbDmbDnbDnbDobDnbDpbDqbEJbDsbDtbDubDvbDwbpBbDxbDybDzbDAbDBbDCbDDbDEbDFbDGbDHbDIbDJbBKbDKbDLapdbzKbDMbDNbBQbBRbBSbzKbDObDPbzKbDObDPbzKbDQbfIbkJbqcbqcaPCbqcbqcbqcaPGaPFbsObqcbFJbtQbDXboEbwibwibDYbDZbEabEbbEcbEdbEebshbFUbEhbEibEjbEkbElbEmbEnbhwcgjbhtbEpbbrbhzbspbEqbErbCybEsbCybEtbCybEubEvbCHbaubvzbEybEzbEAbEBbECbEDbEEbEFbEGbEHaoGbEIbwTbHCbCMbEKcgkbEMbENbEObCMbEPbEQbERbESbzLbEUbEVbEWbEXbEYbEZbFabCMabqabqabqabqabqabqabqaaaabeaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdclHbKpbKobKqbfbbgNaXLbBlbGPbGQbGRbMpbGTbGUbGVbBlaXLbgNbgQbMtbMrbMrbNXaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaUNaUNaWDaUNbdQaUNaWDaUNaUNaUNaWDaUNaWDaWDaWDbnWbnXapfbFoapfapfbFpbFqbFpbFrbFpbFpbFpbFpbBKbBKbFsbFtbBKbBKbBKbFuaoXbzKbFvbFwbBQbFxbzKbzKbFybzKbzKbFzbzKbzKbFAbfIbkJbFBbFCbFDbFEbFFbFGbFDbFDbFHbFIbAkbHDbAdbFKbFLbFMbFNbFObFPbFQbFRbFSbyqbFTbAkbhwbFVbFWbFXbFYbFZbGabhwbGbbhtbhybbrbhzbspbGcbGdbGebGdbGfbGgbGhbGibEvbCHbvzbDSbCHbEvbGlbGmbGnbGobGpbGqbEGbCIaoGbGrbGsbGtbDTbGvbGwbGxbGybGzbCMbGAbGBbGCbGDbzLbGEbGFbGGbGHbGIbGJbGKbCMabqbGLbGLbGLbGLbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaabPHbNYbdMbeWbeXaXLbBlbIybIzbIAbPJbIBbRobIDbBlaXLbeXbeYbdMbRpbsdbPHaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaabGWbGXbGXbGYbGXbGXbGXbGZbGXbGXbHaabqaUNbHbdfOdfPapfbWdbHJbHdbFpbHebHfbHgbHhbHibHjbFpbHkbHkbHlbHmbHnbHobBKbFubHpbzKbHqbHrbBQbBRbHsbHtbFwbHubHvbHwbHxbaibzPbfIbkJbFBbEwbDUbExbExbExbExbExbHzbFIaQRaPUbkWbkWbkWbETbGkbGjbHybGubkWbkWbkWaRjaUibhwbhwbEhbhwbhwbhwbhxbhwbHKbhtbHLbHMbhzbHAbHObHObHObHPbHObHQbHObHRbEvbEvbEvbEvbEvbCHbHEbHUbHVbHWbHXbHYbEGbCIaoGbHZbGsbIabIbbIcbIdbIebIfbIgbHFbIibIjbIkbIlbzLbImbInbIobIpbIqbIrbIsbHGbIubIvbIwbIxbIxbGLabqaaabFcaaabFbaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdabdaXHbdMbeWbeXaXLbKlbKlbKlbHNbRqbHNbKlbKlbKlaXLbeXbeYbdMaXOabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGWbIGbIHbIIbIJbIJbIKbIJbIJbIJbIKbGYbHHaUNaUNdfQbIMapfbgYaEjaUubFpbIQbHfbHgbIRbISbITbFpbIUbIVbIWbIXbBKbBKbBKbFuatjbzKbIYbIZbBQbBRbBQbBQbBQbBQbBQbJabBQbzMbJbbJcbJdbJebJfbJgbJfbJhbJfbJgbJfbJibCibJkbJjbJmbJlbJpbJnbJnbJqbKYbJrbJsbJtbJubJvbJwbJxbJobJybJzbJobJAbJBbJobJCbJDbJEbJFbwxbJGbCybJHbCybJIbCybJJbCybJKbEvbEvbCHbEvbEvbJMbHIbHUbJObECbHXbJPbEGbCIaoGbJQbJRbyUbDTbJSbIdbJTbIdbJUbJVbJWbJXbJYbJZbzLbKabKbbKcbKdbKebKfbKgbzLabqbzLbKhbIxbKibGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXaXLbMobRrbMqbHNbRsbHNbMsbSXbMuaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKrbKsbKsbKsbKsbKsbKsbKsbKsbKsbKsbKtbKubKvbKudfQbKwapfbgYbKyanEbFpbKzbHfbHgbKAbHfbKBbFpbBKbKCbBKbHmbKDbKEbBKbFuapdbzKbKFbHrbKGbKHbKIbKIbKIbKIbKIbKJbKIbKKbygbKLbKMbKNbKObKPbKObKQbSrbKSbKTbKUbKVbKWbKXbKOcnjbKZbLabLbbaybLdcpcbLebLfbLgbLhbLibLjbLkbLlbLmbLnbLobLpbLibLqbLrbLsbLtbLubLvbLwbLxbLybLybLzbLAbLwbLBbaNbbRbbQbCHbLFbCHbIhbLHbLIbLJbhabLLbLMbLNaoGbLObLPbLQbLRaUwbLTbLUbLVbLWbzLbLXbLYbLZbMabMbbMcbIobMdbMebMfbMgbMhbItbMjbMkbMlbIxbMmbGLabqaaabFcaaabFbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXaXLbNZbOabObbHNbRqbHNbObbOabOcaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMvbMwbMxbMybMzbMzbMAbMzbMzbMzbMAbGYaUNaUNaUNdfQbMBapfbjEapfapfbFpbMDbMEbMFbHfbHfbHfbFpbMGbMHbBKbMIbBKbBKbBKbMJbMKbMLbFwbFwbJabMMbMNbFwbFwbFwbFwbFwbMPbaibzPbMQbMRbMSbMSbMTbMUbMVbMSbMSbMWbMWbMXbMYbMWbMZbtkbNbbvlbMZbNdbNdbvybNfbCDbNdbNhbNibNjbNkbNhbNhbHBbNmbNlbNhbNobhtbNpbNqbNrbLGbNtbNubNtbNvbNwbCybCybHRbHSbEvbDRbILbHTbILbbRbJLbINbKmbJNbNEbEGbNFaoGbNGbNHbNIbNJbNKbNLbNMbNNbNObNPbNQbNRbGIbGFbzLbMibNcbNabNcbNabNgbNebzLabqbGLbGLbGLbGLbGLabqaaabFcaaabFbaaabFcabfabeabqabeabfabfabeabeaaaaaaaaaaaaaaaaaaaaaaaaabdclHbdMbeWbeXaXLbPIbOabOabOabSZbSYbOabOabPKaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaabMvbGXbGXbGYbGXbGXbGXbGZbGXbGXbOdabqaUNbOedfQbOfapfbgYatjaqBbFpbOhbHgbOibOjbKBbHfbFpbOkbOlbBKbIUbOmbOnbBKbFuapdbzKbOobOobJabBRbOpbOpbOqbOrbOsbOtbzKbzKbJbbOubOvbMSbOwbOxbOybOzbOAbOBbOCbODbOEbOFbMWbOGbOHbOIbOJbOKbNdbOLbOMbONbOObOPbNhbOQbORbOSbOTbNhbNhbNhbNhbNhbOUbhtbNpbOVbOWbspbOXbOYbHObOZbPabHObPbbspbSsbTZbEvbEvbEvbEvbEvbPdbPebPfbPgbPhbEGbNFaxhbPjbPkbPlbPmbPnbPobPpbPqbPrbPsbPtbPubPvbPwbPwbPxbPybPzbIpbPAbPBbPCbHGbIubIvbPDbPEbPEbGLabqabqbPFabqbPGabqbFcaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXaXLbRnbTabTcbOabTebTdbUzbUybRtaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaUNaUNaWDaUNbdQaUNaWDaUNaUNaUNaWDaUNaWDaWDaWDdfRbPMbPNbLcbPPbPQbFpbPRbPSbOibPTbPUbPVbFpbBKbBKbBKbBKbBKbBKbBKbFuapdbzKbPWbFwbJabBRbFwbFwbPYbFwbPZbQabzKbQbbzPbfIbQcbMSbQdbQebQfbQgbQhbOBbQibQjbQkbQlbNsbQnbQobQobQobQpbQqbQrbQsbQtbQsbQubNSbQwbQxbQybQzbNTbQBbQCbQDbNhbQEbhtbQFbQGbQHbQIbQIbQIbNnbQJbQLbQMbQKbQIbQObQIbQPbQQbQRbQSbQTbEGbEGbQUbEGbEGbEGbNFbQVbQWbQXbQVbCMbCMbCMbCMbCMbQYbNObVpbRabRbbGGbRcbRdbRebRfbInbRgbRhbRibzLabqbzLbRjbRkbRlbGLabqaaabFcaaabFbaaabRmarBarBarBarBabearBarBarBaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbUAbfbbgNaXLbKlbVjbVkbOabTbbTdbVXbVlbKlaXLbgNbgQbVYaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaabGWbGXbGXbGYbGXbGXbGXbGZbGXbGXbHaabqaUNbHbdfOdfPapfbWdbHJbHdbFpbHebHfbHgbHhbHibHjbFpbHkbHkbHlbHmbHnbHobBKbFubHpbzKbHqbHrbBQbBRbHsbHtbFwbHubHvbHwbHxbaibzPbfIbkJbFBbEwbDUbExbExbExbExbExbHzbFIaQRaPUbkWbkWbkWbETbGkbGjbHybGubkWbkWbkWaRjaUibhwbhwbEhbhwbhwbhwbhxbhwbHKbhtbHLbHMbhzbHAbHObHObHObHPbHObHQbHObHRbEvbEvbEvbEvbEvbCHbHEbHUbHVbHWbHXbHYbEGbCIaoGbHZbGsbIacglbIcbIdbIebIfbIgbHFbIibIjbIkbIlbzLbImbInbIobIpbIqbIrbIsbHGbIubIvbIwbIxbIxbGLabqaaabFcaaabFbaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdabdaXHbdMbeWbeXaXLbKlbKlbKlbHNbRqbHNbKlbKlbKlaXLbeXbeYbdMaXOabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGWbIGbIHbIIbIJbIJbIKbIJbIJbIJbIKbGYbHHaUNaUNdfQbIMapfbgYaEjaUubFpbIQbHfbHgbIRbISbITbFpbIUbIVbIWbIXbBKbBKbBKbFucgmbzKbIYbIZbBQbBRbBQbBQbBQbBQbBQbJabBQbzMbJbbJcbJdbJebJfbJgbJfbJhbJfbJgbJfbJibCibJkbJjbJmbJlbJpbJnbJnbJqbKYbJrbJsbJtbJubJvbJwbJxbJobJybJzbJobJAbJBbJobJCbJDbJEbJFbwxbJGbCybJHbCybJIbCybJJbCybJKbEvbEvbCHbEvbEvbJMbHIbHUbJObECbHXbJPbEGbCIaoGbJQbJRbyUbDTbJSbIdbJTbIdbJUbJVbJWbJXbJYbJZbzLbKabKbbKcbKdbKebKfbKgbzLabqbzLbKhbIxbKibGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXaXLbMobRrbMqbHNbRsbHNbMsbSXbMuaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKrbKsbKsbKsbKsbKsbKsbKsbKsbKsbKsbKtbKubKvbKudfQbKwapfbgYbKyanEbFpbKzbHfbHgbKAbHfbKBbFpbBKbKCbBKbHmbKDbKEbBKbFucgobzKbKFbHrbKGbKHbKIbKIbKIbKIbKIbKJbKIbKKbygbKLbKMbKNbKObKPbKObKQbSrbKSbKTbKUbKVbKWbKXbKOcnjbKZbLabLbbaybLdcpcbLebLfbLgbLhbLibLjbLkbLlbLmbLnbLobLpbLibLqbLrbLsbLtbLubLvbLwbLxbLybLybLzbLAbLwbLBbaNbbRbbQbCHbLFbCHbIhbLHbLIbLJbhabLLbLMbLNaoGbLObLPbLQbLRaUwbLTbLUbLVbLWbzLbLXbLYbLZbMabMbbMcbIobMdbMebMfbMgbMhbItbMjbMkbMlbIxbMmbGLabqaaabFcaaabFbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXaXLbNZbOabObbHNbRqbHNbObbOabOcaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMvbMwbMxbMybMzbMzbMAbMzbMzbMzbMAbGYaUNaUNaUNdfQbMBapfbjEapfapfbFpbMDbMEbMFbHfbHfbHfbFpbMGbMHbBKcgpbBKbBKbBKbMJbMKbMLbFwbFwbJabMMbMNbFwbFwbFwbFwbFwbMPbaibzPbMQbMRbMSbMSbMTbMUbMVbMSbMSbMWbMWbMXbMYbMWbMZbtkbNbbvlbMZbNdbNdbvybNfbCDbNdbNhbNibNjbNkbNhbNhbHBbNmbNlbNhbNobhtbNpbNqbNrbLGbNtbNubNtbNvbNwbCybCybHRbHSbEvbDRbILbHTbILbbRbJLbINbKmbJNbNEbEGbNFaoGbNGbNHbNIbNJbNKbNLbNMbNNbNObNPbNQbNRbGIbGFbzLbMibNcbNabNcbNabNgbNebzLabqbGLbGLbGLbGLbGLabqaaabFcaaabFbaaabFcabfabeabqabeabfabfabeabeaaaaaaaaaaaaaaaaaaaaaaaaabdclHbdMbeWbeXaXLbPIbOabOabOabSZbSYbOabOabPKaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaabMvbGXbGXbGYbGXbGXbGXbGZbGXbGXbOdabqaUNbOedfQbOfapfbgYatjaqBbFpbOhbHgbOibOjbKBbHfbFpbOkbOlbBKbIUbOmbOnbBKbFucgobzKbOobOobJabBRbOpbOpbOqbOrbOsbOtbzKbzKbJbbOubOvbMSbOwbOxbOybOzbOAbOBbOCbODbOEbOFbMWbOGbOHbOIbOJbOKbNdbOLbOMbONbOObOPbNhbOQbORbOSbOTbNhbNhbNhbNhbNhbOUbhtbNpbOVbOWbspbOXbOYbHObOZbPabHObPbbspbSsbTZbEvbEvbEvbEvbEvbPdbPebPfbPgbPhbEGbNFaxhbPjbPkbPlbPmbPnbPobPpbPqbPrbPsbPtbPubPvbPwbPwbPxbPybPzbIpbPAbPBbPCbHGbIubIvbPDbPEbPEbGLabqabqbPFabqbPGabqbFcaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXaXLbRnbTabTcbOabTebTdbUzbUybRtaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaUNaUNaWDaUNbdQaUNaWDaUNaUNaUNaWDaUNaWDaWDaWDdfRbPMbPNbLcbPPbPQbFpbPRbPSbOibPTbPUbPVbFpbBKbBKbBKbBKbBKbBKbBKbFucgobzKbPWbFwbJabBRbFwbFwbPYbFwbPZbQabzKbQbbzPbfIbQcbMSbQdbQebQfbQgbQhbOBbQibQjbQkbQlbNsbQnbQobQobQobQpbQqbQrbQsbQtbQsbQubNSbQwbQxbQybQzbNTbQBbQCbQDbNhbTVbhtbQFbQGbQHbQIbQIbQIbNnbQJbQLbQMbQKbQIbQObQIbQPbQQbQRbQSbQTbEGbEGbQUbEGbEGbEGbNFbQVbQWbQXbQVbCMbCMbCMbCMbCMbQYbNObVpbRabRbbGGbRcbRdbRebRfbInbRgbRhbRibzLabqbzLbRjbRkbRlbGLabqaaabFcaaabFbaaabRmarBarBarBarBabearBarBarBaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbUAbfbbgNaXLbKlbVjbVkbOabTbbTdbVXbVlbKlaXLbgNbgQbVYaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNbRubzzbaCbRvbaCbaBbaBbRwbaBbzzbaBbRxbzzbaBdfSbRyapfbgYaoXatkbFpbRAbRBbHfbHfbHfbRCbFpbRDbREbRFbRGbRHbRIapfbFuauCbzKbRJbRKbJabRLbRMbRMbRNbFwbFwbRObzKbRPbzPbfIbOvbMSbRQbRRbRSbRTbRUbOBbRVbRWbRXbRYbMWbRZbSabSbbSabScbNdbSdbSebSfbSebSgbNhbShbSibSjbSkbNUbSmbSnbSobNhbSpbhtbSqbbrbOWbQIbVrbVsbStbSubSvbSwbSwbSxbSybQIbQIbQIbQIbQIbQIbQIbEGbSzbSAbSBbEGbSCbQVbSDbSEbSFbQVbSGbSHasJbSIbCMbSJbSKbSLbSMbSNbSObSPbSQbSRbSSbRgbSTbSUbItbMjbMkbSVbPEbSWbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXbIFbKlbUxbOabOabWabVZbXCbWbbKlbIFbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNbcdbcebcebcebcedfUdfTdfWdfVdfYdfXdgadfZbLCdgbbTmapfbgYauyatkbFpbHhbTnbHfbHfbTnbTobFpbTparJarLbPPbPQbRHapfbFubTrbzKbTsbTtbTubTvbFwbTwbTxbTybTzbTAbzKbTBbzPbfIbTCbMSbTDbTEbTFbTGbOBbOBbTHbTIbTJbTKbMWbRZbSabSabSabTLbNdbSdbSebTMbTNbTObNhbTPbSibTQbTRbNhbTSbTTbTUbNhbTVbhtbTWbbrbTXaUJbUabUabUbbUcbUdbStbStbUebUfbQIbUgbUhbUibUhbUjbQIbUkbUlbUmbUnbEGbNFbQVbUobUpbUqbQVasJasJasJbUrbCMbSJbUsbUtbCNbCNbCNbUubGGbUvbGGbRgbUwbRibzLabqbGLbGLbGLbGLbGLabqaaaabeaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXbIFbKlbXDbXFbXEbYQbXGcckbZObKlbIFbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaUNaUNbUBbUBaUNaUNbNWaWDbQNdgRbQNdfNaWDapfbLDapfapfapfbgYauCatkbFpbTobUDbUEbHfbUEbUFbFpbUGapdapdatjbUHbXJapfbFuaoXbzKbzKbaibUIbUJbaibzKbzKbzKbzKbUKbzKbzKbULbjnbUMbMSbUNbUObUPbUQbURbOBbUSbUTbUUbUVbMWbUWbUXbUYbUZbVabNdbVbbSebVcbVdbVebNhbVfbSibVgbVhbQmcclcdBccmbNhbVmbhtbVnbbrbOWaUXbVtbVqbXcbYtbYsbVubVqbUebVvbQIbVwbVxbVybVzbUjbQIbVAbVBbVCbVDbVEbVFbQVbVGbVHbVIbQVbVJbVKbVLbVMbCMbVNbVObRabVPbCNbVQbSRbGGbSPbVRbVSbVTbPCbHGbIubIvbVUbVVbVWbGLabqaaabFcaaabFbaaabFcaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdclHbdMbeWbeXbeXaXLaXLbKlbKlcepbKlbKlaXLaXLbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaUNbWcbfdaUNdghdgjdgibBtdgkbBtdgldgmapfbLEauJbLKaoXbMCbWgbWibFpbFpbFpbFpbWjbFpbFpbFpbWkdeJdeHapdbWlbWmapfbFubWobzKbWpbWqbWrbWsbWtbWubWvbzKbWwbWxbWybzKbzPbfIbWzbMSbQdbTEbWAbWBbQdbOBbWCbWDbWEbWFbMWbWGbWHbWIbWJbWKbWLbWMbWNbWObWPbWQbNhbWRbWSbWTbWUbWVbWWbWXbWYbWZbXabhtbXbbbrbOWaUXbYubXdbXdbXebXfbXgbXhbNxbXjbQIbXkbVxbXlbXmbXnbQIbXobXpbXqbXrbEGbNFbQVbQVbQVbQVbQVbXsasJasJbXtbCMbVNbVObRaaVdbXvbVQbXwbInbSPbXxbRgbXybRibzLabqbzLbXzbXAbXBbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXbeXbeXbeXbIFbIFceqbIFbIFbeXbeXbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaUNbUBbUBaUNdgndgjbBtbBtdgobBtbsxdgqapfbXHavUavUavUbDLapdatkaoXaqBayBapdbXIauyauCapfapfapfapfapfbXKapfapfbFuatjbzKbXLbXMbXNbXNbWsbWtbXPbzKbXQbXRbXSbzKbDQbfIbXTbMSbQdbXUbXVbXWbXXbOBbXYbXZbYabMWbMWbYbbYcbYdbYebYfbNdbYgbSdaVsbYibYjbNhbYkbYlbYmbYnbNUbYobYobYpbNhbYqbhtbYrbbrbOWbQIbYvbYEbYwbStcbacbbbUcbNzbNybNBbNAbNDbNCbUCbPObQIbEGbEGbEGbEGbEGbNFaoGbYGbUrasJasJchGchFaXPasJbCMbCMbYJbNRbVPbCNbYKbYLbGGbYMbVRbRgbYNbSUbItbMjbMkbYObVVbYPbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXbeXbeXbeXbeXbeXbdObeXbeXbeXbeXbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabredgrdgtdgsdgvdgudgxdgwdgyapfapfapfapfbWmbYRavUbYSbYTbYUbYVbYVdfibYWbYVbYVbYTbYVbYVbYVbYZbYVaPTbZaapdbzKbZbbZcbZdbZebHrbZfbZgbzKbzKbzKbzKbzKbZhbfIbOvdeEbMSbZjbZjbZjbMSbMSbMWbMWbZkbMWbMWbZlbZlbZlbZmbZlbZnbZnbZobZpbZnbZnbNhbNhbNhbNhbNhbNhbZqbZqbZqbNhbZrdeFbZsbbrbZtbZubZvbZvbZvbZwbZvbZvbZxbZybZvbZvbZvbZvbQIbZzbWfbWnbWhbXibZEasJbZFbZGaoGbVLbZHbZIasJbYHckgasJarrbCMbZJbJWbZKbCNbCNbCNbZLbGGbZMbZNbRgbUwbRibzLabqbGLbGLbGLbGLbGLabqabqbRmabqbPGabqabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbKkbvhbvhbvhbvhbvhbvhbdObvhbvhbvhbvhbvhbvhbvibdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgrdgfdgzdgzdgzdgzdgzdgAaaaabqaaabZPbZPbZQbZRbZSapfbZTapfapfapfaYabZUbZUbZUbZUbZUbZUbZUapdbZVbZWbZXbzKbZYbZZcaacabbHrbWscaccadcaeayBapfcafbzPcagcahcaicajcakcakcakcalcamcancaocakcapcaqcaicaicarcascarcarcatcarcaucavcavcawcaxcaycazcaAcaBcakcakcakcaCcaDcavcaEbbrcaFcaGbajcaIcaJcaKcaLcaMcaNcaKcaOcaQcaPcaRbQIcaScaTcaUbYxbYycaXcdobZGcaZaoGaoGaoGaoGaoGcmHbXtbCMbCMbCMcbcbJWbNRcbdbbdbbPbKacbgcbhcbibVScbjbPCbHGbIubIvcbkcblcblbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdclHcerbMrbMrbMrbMrbMrcLLcLLcQccLLcLLbMrbMrbMrbMrbMrbNXaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgrdgJdgzdgzdgzdgzdgDdgraaaabqaaabZSbcEcbncbobZSapdcbpbPQcbqapfcbrbZUcbscbtcbucbvcbwbZUapdaoXbZWaoXbzKbzKbzKbzKbzKbzKbzKbzKbzKaxqaoXapfcbxbzPcbycbzbekbekbekbekbekbekbenbekcbAcbBcbCbembekbekbekbvTcbDcbEcbFbekbekbekbekbekcbGcbHbekbekbenbekbekbekbekcbIbekcbAcbJcbKcbLcbMcbNcbOcbNcbPcbPcbQcbRcbScbPcbOcbTbQIbQIbQIbQIcbUcbVasIarrbdlcbXasIcbXazpbefaoGayoaoGbCMccaccbcccccdcceccfccfccfbMcbGGbGGbGGbRgccgbRibzLabqbzLcchcciccjbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaabPHbsdbsdbsdbPHbNYbbXcUIcUMcUIbbZaXOabqaaaaaaaaaabqaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgrdgzdgzdgzdgzdgzdgzdgraaaabqabqbZSccnccoccpbZSapdccqaEjapfapfccsbZUchyccuccvccwccxbZUapdapdccybYVbYTbYVbYVbYVcczccAccAccAccAccBbcGccCccDccEccFccGccHccIccJccGccGccGccKccGbdabcXccLbcYbcXbcXbcXccMccNbcZbcYbcXbcXbcXbdbccOccPccQccQccQccRccQccQccQccSccTccOccUccVccWccXccYccZcdacdbcdccddcdecdfcdgcdhcdecdibZvcdjcdkbZvcbUcbVasIasIasIasIasIcdmcdocdocdpcdqcdrcdscdtcducdvcdwcdxbGGbGGbGGbGGbGGbInbGGbRgcdybSUbItbMjbMkcdzcblcdAbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdabdabdabdabdabdaXHcerbzhcWjbzhbNXaXOabdabdabdabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgrdgrdgBdgFdgFdgFdgrdgraaaabqaaabZScdCcdDcdEbZScdFapdcdGapfcdHceNbZUcdJcdKcdLbeVcdNbZUbZUbZUbZUbZUbZUcdObZUbZUcdPcdQcdRaoXauycdSauCcdTcdTcdTcdTcdTcdTcdTcdUcdUcdUcdUcdUcdVcdWcdWcdXcdYcdWcdZcdWceacebbbrceccedceecefceecegcehceeceeceibZubbgbbibbicejbZucekbZuaYxcemaYxbZvcenceocfDcdhcitcescdfcixcdhcetceubZvcevcewbZvcexceycezcdocdocdocdoceAceBceCceDceCceCbPmceFceGceHbGGceIbPwbPwbPwbPwbPwceJbGGbRgbUwceKbCMabqbGLbGLbGLbGLbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaabsdbsdbsdbsdbsdaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgGdgHdgHdgHdgHdgHdgHdgGaaaabeaaabZSbTYceMbTYbZSapfapfapfapfbZUceNbZUceOcePbfkceRceSbZUceTceUceVbZUceWceXceYbZUceZbZUbZUbZUbZUbZUbZUcdTcfabfmbgHbglcfecffcdUcfgcfhcficdUbgIcfkbgIcflcfmbgIcfkbgIcfncfocfpcfqcfrcOmcftcOmcfucfvcOmcftcOmcfwcfxcfxcfxcfxcfxcfybZucfzcfAcfBbajcfCcbOcdfcdhcdhcdecfDcdhcdhcdecfEbZvcfFcfGbZvcbUbgJcfIceCceCceCceCceCcfJcfKcfLcfKcfKbCMcfMcfNcfOcfPcfQbInbGGbGGceIbPwcfRbSSbRgcfSbRibCMabqabqabqabqabqabqabqabqbPFabqbPGabqbRmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdabdabdabdabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaaaaabTYcfTbTYaaaabqaaaaaaaaabZUceNbZUbZUbZUbZUcfUbZUbZUcfVcfWcfVbZUbZUbZUbZUbZUcfXcfYbZUcfZcgacgbcgccgdcgecgfcggcgfcghcgicgjcgkcglcgmbVocgocgpcgqcgrcgscgtcgucgvcfkcgwcgxcgycftcgzcgAcgBcgCcgDcgEcgFcgGcgHcfxcgIcgJcgKcfxcjUbZucgMcgNcgOcgPcgQcgRcgScgTbYAbYzbYCbYBbYBbYzbZAbYDbZCbZBcaVbZDcbVasIchbchccfKcfKcfKcfKcfKchdchechfbCMchgchhbGGbGGbSPchibIqbIqchjchkchjbIqchlchmbRibCMbCMbCMaUVaUUaUVaUUaUVaaabFcaaaabqaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeabqabqbTYceMbTYabqabqabqabqabqbZUchncjechpbZUchqchrchybZUchtbgZchvchwchxchychzbZUchAchBchCchDcaWcmJccrchHchIchJchKchLchMchNchOcdUchPchQcaHchSchTchUchVchWchXchYchZciacgwcgxcgycibciccidciecifcigcihcihciiciicelcikcilcimcfxcinbZuciocipciqbajcircisciuciucivciuciwciucKCcJFciybZvcizciAciBciCcfJaoGaoGaoGcfKciDciEciFciGciHciIciJbCMciKciLciMciNciOciPciQciRciSciTciUciVciWciXbRiciYciZciYcjacjacjacjacjbabqabeaaaabqaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaacjcaaaaaaabqaaaabqaaabZUbZUbZUceNbZUcjdcjecjfcjgcjhcjicjjchychychycjkbZUcjlcjmbZUcdNcjncjocjpcdTcjqcjrcjscjtcjucjvcjwcjxcjxcjycjxcjzcjAcjBcjBcjCcjDcjEcjFcjGcjHcjIcjJcibciccicciccjKcjLcjMcjNcjOcjPceLcjRcjScjTcfxcjUbZubZubZubZubZvbZvcjVbZvbZvbZvbZvbZvbZvbZvbZvbZvbZvbZvbZvbZvcbUcjXaoGcjYcjZcfKckackbckcaRQbhvckfbhHbCMckhckhckickhckjckhckickkckjckjbRickhcklckmcknbCMbCMbCMckockpcjackqckoaaabFcaaaabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaackraaaaaaabqaaacksckscktckubZUckvckwckxbZUbZUbZUckybibchyckAckBbZUbZUbZUckCckDbZUckEckEckEckEckEckEckEckFcjtckGckHckIcjxckJckKckLckMckNckOckPckQckRcfjckTbgIcgwckVcgycOmckWckXckYckZclaclbclccldclecfxclfclgclhcfxclicljcljcljcljcljcllclmcljcljcljclocljcljcljcljcljclqclrboccdocltcluclvclwbVKcfKclxclyclzclybiBbiUbiObCMbCMbCMcgnbzLchRbzLcgnbzLchRchRcijbzLcijbCMbCMbCMabqabqabqclHcjaaWCabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabeabqclIabqabqabqaaaabqabqbZUcbtclJclKbZUbZUbZUclLbZUbZUbZUbZUbZUbZUbZUclMclNcjlclOclPckEclQclRcgUclTclUckEclVclWclXclYclZcjxcmacmbcmccmdcmecmfcmgcmhcjQcmjcjQcmkcmlckVcmmcmncmocmocmocmocmpcmqcmrbkSbkTcfxcmucmvcmwcfxcmxbkXcmzcmzcmzcmzcmAcmzcmBcmBcmBcmBcmBcmBcmBcmBcmBcmCaoGasJasJasJasJaoGasJasJcfKcmEcmFbkYclybiBbiUbkZblrabqabqcmKabqcmLabqcmKabqcmMcmNcmOabqcmOabqabqabqabqaaaaaacmPcjacmQaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaarBaaacmRaaaabqaaaaaaabqaaabZUcmSbZUchncjecjecmTcjecjecmUcmVcmVcmVcmWcmVcmVcmVcmXcmYcmZcnacnbcnccndcnecnfckEcdTcngckUcnicdTcjxcrjclEcjxcnlcnmcmgcnncnocnpcnqcnrcmgcnscntcnucmobmRcnwcnxcnycnxcnzcmocnAcnBcnCcnDcnCcfxcfxcnEbZUcmzcnFcnGcnHcnIcnJcmBcnKcnKcnKcnLcnMcnNcnKcmBcmCaoGclsasIcnPcnQaoGcnRcnScfKaTJbtLbrWbvxbulbiUbobclAabqbGLcnYbzLcnYbGLcnYbzLcnYbGLcnZbzLcoabGLabqaaaabqabqabqcobcjacocabqabqabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqarBaaacjcaaaabqaaaaaaabqaaabZUbZUbZUbZUbZUbZUbZUbZUbZUcodcoecoecofcogcogcogcogcohcogcogcogcoicojcokcolcomconcoocopcoqcorcoscotcoucovcowcoxcoycozcoAcoBcoCcoDcoEcmgcoFckVcmmcmpcoGcoHcoIcoJcoKcoLcmocoMcoNcoOcoPcmzcdNcjncrFcrvcmzcoRcoScoTcoUcoVcmBcnKcoWcoXcoYcnKcoZcpacmBcmCaoGaoGaoGaoGaoGaoGaoGaoGcfKcfKcfKclFclAclBbwMclDclAabqbGLcphcpicpjbGLcpkcplcpmbGLcpncpocppbGLabqaaaabqaaabCMcpqcprcpscptaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabeaaackrabqabqabqabqabqaaabZUcpucpvcpwcpxcpycpzcpAbZUcodcoecpBcpCcpDcpEcpFcoecpGcpHcpIcoecpJcpKcpLcpMcpNcpOcpPcpQcpRcpScpTcpUcpTcpScpTcpVcpWcpXcpYcpZcqacqbcrVcjQcnsckVcrWcmocqdcqecqfcqgcqhcqibyScqkcqlcqmcqncmzcqocqpcqqcsncmzcqscqtcqucqvcqwcmBcnKcnKcqxcnKcnKcqycqzcmBcmCbZUcqAcqBbZUcqCcqDcqFcqEcqHcqGbZUcsoclAcqrbArcqIclAabqbGLcqKcqLcqMbGLcqNcqOcqPbGLcqQcqRcqSbGLabqabqabqabqcptcqTcqUcqVcqWabqabeabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaarBaaackrabqaaaaaaaaaabqaaacmicqYcqZcracrbcpycrccrdbZUcodcoecrecrfcrgcrhcricCKcrkcrlcrmcoeaovaotcrpcrncrobALcrtcructAcrwcrxcrycrycrycrzcrAcrBcrCcrDcpZcrEctBcrGcmgcrHckVcrIcmocrJcrKcrLcrMcrNcrOcmocrPcrQcrRcrScmzcrTcrUctSctEcmzcrXcrYcrZcsacsbcmBcmBcscbANbIObIOcmBbIPcmBcsgcshcsicsjbZUcskchychychycdKcslbZUbKxctucnXbyPcNmctuabqbGLcqKcsqcqKbGLcqNcsrcqNbGLcsscstcssbGLabqaaaabqaaacqWcqUcsucqUcjaaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabeabqckrabqaaaaaaaaaabqaaacmicsvcrccqZcswcpycsxbZUbZUcsycoebMObLSbMObNVbMOcoebMOcsCbMOcoeckEbOgcsEcgVckEckEcsGcsHcsIcsJcsJbPcbPXbPicsJcsJcsNcmgcsOcsPcsQcyCcmgcmgcsSckVcsTcmocmocsUcsVcsWcsXcsYcmocsZcnBcfwcfwcmzctacmzctbcmzcmzcfwctcbQvcfwcfwctectfctgcthctictjcrqctlcmBctmbZUctnctobZUctpcdKchychychyctrbZUbKxctubQAbKRbQZbSlabqbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLabqabqabqabqcjacqUcqUcqUcqWabqbFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaabqaaaaaaarBaaaclIaaaaaaaaaaaaabqaaacmictwcqZcswctxcpyctyctzcdOcodcoeczqczpctCctDczJcoectFctGctHcoectIctJctKctLctMbTqctOcgrctPcsJctQctRcABctTbVicsJccvcmgctVctWctXctYcjQctZcuacubcuccudcuecufcugcuhcuicujbWeculcumcuncuocupciccuqcurcusciccutcuucuvciccuwctecuxcuycuzcuAcuBcuCcuDcmBcmCbZUbZUcuEbZUcuFcuGchychycuHcuIcmibKxctuctucgWctuctuabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqaaaabqaaacjacqWcptbCMcptaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaaaaabqaaaaaaabeaaacmRabqaaaaaaaaaabqaaacmicmicqZcpycpycqZcqZcuJcdOcodcoecuKcuLcuMcuNcuOcoecuPcuQcuRbXucuTcuUcuVcuWcuXcuYcuZcgrcgsbPccvacvbcvccvdcvecsJchycmgcvfcvgcvhcvicvjcvkcvlckVcvmcvncvocvpcvqcvrcvscvtcvucvvcvwcvxcvycvzcvAcvBcvCcvDcvEcvDcvFcvGcvHcvIcvJcvKcgYcgXchacgZclSckScszcoQbZUcvTcvUcvVcbvchychychycvWcvXbZUbXOcynctubYhctucspaaaaaaaaaaaaaaaabqaaaaaaaaaabqaaaaaaaaaaaaabqaaaabqaaaaaaabqaaaabqaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaabqabqaaaaaaarBaaacjcaaaaaaaaaaaaabqaaacmicvZcqZcwacqZcqZcsxbZUbZUcwbcwccwdcuLcwecuNcwfcwgcwhcwicwjcwkcwlcwmcwncwocwpcwqcwrcwscjAbYFcwucwvcwwcwxcwwcwycwzcmgcwAcwBcwCcwDcjQcvkcvlckVcvmcwEcmpcwFcwGcwHcwIcwJbWecwKcwLcwMcwNcwOcwPcwQcwRcihcihcwScwTcwUcwVcwWcwXcwYcwZcxacxbcxccxdcxecmBcmCbZUcxfcxgcxhcsicxicuHchychycxjcmictscttdbjctvdbjarAabqabebFbbFbbFbbFbbFbbFbabebFbbFcbFbbPGabqbFcabqabqabebRmbRmbRmabeabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaabqaaaaaaarBaaackraaaaaaabqabqabqaaacmicxkcpycracpycxlchscxmbZUcodcoecxncxocxpcxqcxrcoecxscxtcxucoecxvcxwcxxcxycxzbTqcxAcgrcxBcsJcxCcxDcxEcxFcxGcsJcxHcmgcmgcxIcmgcmgcmgcmgcxJcxKcxLcmocmocmocmocmocxMcxNcmocmzcmzcxOcxPcxQbYXbYIbYYcxUcxUcxUcxUcxVcxWcxXcxVcmBcmBcmBcxYcxZcyacybcmBcmCbZUcvTcycbZUcydcyecyfcygcygcyhbZUabqabqabqabqabqabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaabFcaaaaaaabqaaaaaaabqaaaabqabqaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBarBabqabearBaaaabearBarBabqabqabqckrabqabqabqaaaabqabqcmicpycxlcpycyictqcyjcykcylcymcoecAMcuLcyocypcCScoecyrcxtcyscoecoecoecytcytcytcytcyucyvcywcyxcyycyzcyAcyBcukcsJcyDcyEcyEcyGcyHcyIchBcyJcyKcyLcyMcyNcyOcyEcyPcyQcyRcyScyTcyUcyVcyWcyXcyYcaYczaczbczcczdczeczfcxVczgczhcziczjczkcmBcmBcmBcmBcmBcmBcmCbZUbZUbZUbZUbZUbZUbZUcmibZUbZUbZUaaaabqaaaaaaaaaabqabqabqabebFcbFcbFcabebFcbFcbFcabebFcbRmbFcbFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczmaaaaaaaaaabqaaaaaaaaaabqaaaaaaabqaaaclIaaaaaaabqaaaabqaaacmicmicmibZUbZUcznczobZUbZUcodcoecMbcuLcwdcuNcMXcoecwdcxtcwdcuScvLcoeczscztczuczvcwrczwczxcsJczycvMczAczBczBczBczBczBczBczBczCczDczCczEczFczGczHczIcMYczKczLbZUczMczMczNczMczMczOczPczQcaYczRczSczTczUczVczWcxVczXczYczZcAacAbcrUcfYclPbZUcAccmYcAdbZUcAecfYbZUaaaabqaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaabqaaaabqaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaacAfcAfcAfcAfcAfabqabqabqcAfcAfcAfcmRcAfaaaarBaaaabqaaaaaaaaaaaabZUbZUbZUbZUbZUcAgcodcwccwdcuLcwecuNcwdcAhcwdcAicwdcvNczrcoecAjcAkcAlcbecAncAocApcsJcsJcsJcsJczBcAqcArcOUcMscAuczBcAvcAwcAxcAycAzcgxcAAbZUcMZcACcADcAEczMcAFcAGcAHczMcAIcAJcAKcbfcPkcANcAOcAPcAQcARcxVcAScATcAUcAVcAWcrUcAXcAYcAZcBackDcBbcAZcBccvWcmiabqabqabqabqabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeabqcBdcBecBecBecBecBfckrcBgcBhcBhcBhcBhcBiabqabqabqabqabqabqabqabqbZUcFRcFScFRbZUcBjcBkcoecBlcBmcxpcBncBocoecxscwdcwdcwdcBpcoecBqcBrcBrcBrcBscBtcBucBvcBwcBxcByczBcBzcBAcBBcBCcBDczBcBEcBFcBGcBHcAzcgxcBIcBJcBKcBJcBJcBJczMcBLcBMcAGcxScBOcBPcBQcBRcBScBTcBUcBUcBVcAQcxVcBWcATcBXcBYcBZcrUcbmcCbbZUcmCchycCdbZUchycCebZUaaaabqaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaDaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcCfcCfcCfcCfcCfaaackraaacCfcCfcCfcCfcCfaaaarBaaaaaaaaaaaaabqabqbZUbZUbZUbZUbZUchycBkcoecCgcChcCicCjcCkcoecClcwdcCmcCncvOcoecCpcCqcCrcbWcCtcCucCvcBvcCwcCxcCyczBcCzcCAcCBcCCcCDczBcCEcCFczCczCcCGcgxcmmcBJcCHcCIcCJcFoczMcCLcAGcCMczMcCNcCOcCPcxUcCQcCRcPCcCTcCUcCVcxVcCWcCXcCYcCZcBYcrUbZUbZUbZUctmbZUcDabZUbZUbZUbZUabqabqaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaabqaaaabqabqabqaaacDbaaaabqaaaabqaaaabqaaaarBaaaaaaaaaabqabqaaaabqaefbZUcDcbZUchycBkcoecoecoecoecoecoecoecoecDdcoecoecoecoecDecDfcDgcDhcDicDjcDkcyZcDmcDncDocAmcDqcDrcDscDtcDucbYcDwcDxcDyczCcmlcDzcDAcDBcDCcDDcDDcDEczMcDFcDFcDGczMcgCcCOcDHcxUcxUcxUcxUcxUcxUcxUcxVcxVcxVcDIcxVcxVcrUcAccmYcmYcDKbZUchycDLcDMcDNcDMckscksaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaacAfcAfcAfcAfcAfabqckrabqcAfcAfcAfcAfcAfabqarBaaaaaaaaaabeaaaaaacvQcvPclJcDQcDRcDQcDScljcljcljcljcljcljcljcljcljcDTcDUcDUcDUcDUcDUcDUcDUcDVcDWcDXcDYcDZcEacEbcEccEdcEecEfcEgcEhcEicEjcEkcElcEmcEncgxcEocEpcEqcErcErcEsczMcEtcEucEuczMcEvcEwcExcEycEzcEAcEBcECcEDcEEcEFcEGcEHcEIcEJcEKcfZcELchychybZUbZUcEMbZUbZUbZUbZUabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcBdcBecBecBecBecBfckrcBgcBhcBhcBhcBhcBiabqaupabqabqabqarBabqabqabqabqbZUcENbZUcdNckDchychycEObZUbZUbZUbZUbZUcEPcEQcDUcERcEScETcEUcEVcDUcEWcEXcEYcBvcEZcFacFbczBcFccFdcFdcFdcFeczBcFfcFgcFhcFicFjcFkcFlcBJcFmcCIcFncWcczMcFpcFqcFrcxScFscFtcFucbZcFwcFxcFycFzcFAcFBcFCcFDcFBcFEcFFcEKbZUcFGbZUcFHcFHcFIcFJcFKcFLcFMabqabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcFNcALcFNabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcCfcCfcCfcCfcCfaaaclIabqcCfcCfcCfcCfcCfaaaarBaaaaaaaaaabqaaaaaaaaaaaabZUbZUbZUcfZbZUcjncctcFQbZUcPGcNacNbbZUcFTcFUcFVcFWcFXcFYcFZcGacGbcGccGdcGecBvcGfcGgcGhczBcGicGjcGkcGlcGmczBcGncGocGoczCcGpcGqcGrcGscGtcGucGvcGwczMcGxcGycGzcGAcGBcGCcGDcdlcGFcGGcGHcGIcGIcGJcGKcGLcGMcGNcdncGPcGQcGRcGScGTcGUcGVcGVcGVcGWcBNabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcALcFNcGYcFNcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupaaaabqaaaabqaaaabqaaacmRaaaabqaaaabqabqabqabqaupaaaaaaaaaabqaaaaaaaaaaaaabqaaabZUbZUbZUbZUbZUbZUbZUcNOcNPcNQbZUckDcGZcDUcHacHbcHccHdcHecdIcHgcHhcHicBvcBvcDlcBvczBczBczBczBczBczBczBcHkczCczCcHlcHmczGczHcHncHocHocHpcHqczMcHrcHscHtcDpcHvcHwcHxcdMcHzcHAcHBcHCceEcHEcHFcHGcHHcHIcHJceQcHLcHMcHNcHOcHPcHQcHRcHScHTcBNabqabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcHUcALcHVcHWcHXcALcHUabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaacAfcAfcAfcAfcAfabqcHYabqcAfcAfcAfcAfcAfabqarBaaaaaaaaaabeabqcHZcHZcHZcFvcHZcHZcHZaaaabqaaaaaabZUcOJcOKcfbbZUcIbcEQcDUcIccIdcHbcIecIfcDUcIgcIhcIicDUcIjcIkcIlcImcIncIocIncIpcIncIqcIocIrcImcIscnscgxcItcBJcIucFOcIwcIucIxcIxcIxcIxcIxcIycxPcIzcEycIAcIAcIBcICcIDcIEcIFcIGcIHcIIcIJcEKcIKcILcIMcEycINcBNcBNcFHcBNcFHarAabqaaaaaaabqaaaaaaabqabqabqaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqabqcALcALcIOcIPcIPcIPcIQcALcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcBdcBecBecBecBecBfckrcBgcBhcBhcBhcBhcBiabqarBaaaabqabqarBaaacHZcIRcIScIRcITcIRcHZcHZcFvcHZcFvcHZcHZcfccPEcPFcjicQKcDUcDUcDUcDUcDUcDUcDUcfdcIVcIWcIXcIYcIZcJacImcJbcJccIncIocIncJdcJecJfcImcJgcnscgxcvmcwEcJhcJicJjcJkcJlcJmcJncJocJpcJqcCOczQdgSdgSdgSdgSdgSdgScJrcJscJtcJucJvcJwcEKbZUcFGbZUcFHcJxcJycJzcJAcJBarAarAabqabqabqabqabqabqabqaaaabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqcJCcJDcJCcIPcJEcIPcXxcJGcFNabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcCfcCfcCfcCfcCfaaaclIaaacCfcCfcCfcCfcCfaaaaupabqabqaaaarBabqcHZcJHcJIcJJcJKcJHcGXcJMcJNcJOcJPcJQcHZbZUbZUbZUbZUcJRcJScJScJScJScJUcJVcJWcJXcJYcJZcKacKbcKccKdcKecKfcKgcKfcKfcKhcKicKjcvRcKlcKmcKncFkcKocKpcKqcKrcKscKtcKtcKtcKucKvcJpcgCcCOcKwdgScKxcfHcfscgLdgTcYScKBbRzcKEcKFcEKcrUcKGccscfYcFHcFHcFHcFHcFHcHfcKIarAabqaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabqabqcALcALcKJcIPcIPcIPcKKcALcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaaaaaabqabqabqaaaaaacKLabqaaaaaaabqabqaaaaaaarBaaaaaaaaaabeaaacHZcKMcHjcKOcHucKMcKMcKQcKRcKScKTcKUcHZaaaaaaaaacrUcrUcrUcrUcrUbZUcKVcDUcDUcKWcKXcRocDUcKZcLacLbcImcLccIocIncIocInchocLecLfcLgcLhcLicLjcLkcIxcIxcLlcLmcLncLocLpcLqcLrcJpcLscLtcLucBNcKxcfHchuchuchEcLxcLycLzcJucLAcEKcdNcLBceNchycLCbZUabqabqabqabqabqabqabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcHUcALcLDcLEcLFcALcHUabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupaaaaaaaaaaaaaaaaaaaaacKLaaaaaaaaaaaaabqaaaaaaaupaaaaaaaaaarBabqcHZcLGcLHcLIcLJcvScjWcLMcLNcLOcLPcLQcLRcIacIacIacLRcLTcLUcLVcHZcLWcLXcDUcLYcLZcMacSBcRUcRUcRUcRUcImcIncIocIncMccIncMdcMecMfcImcMgcMhcgxcmmcIxcMicMjcMkcLocLocMlcMmcMncJpcMocMpcMqdgScKxcfHchuckedgTcYTcKBcMtcMucMvcEKcjnchyceNchycMxbZUabqaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcALcFNcMycFNcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabearBarBarBaaaaaaaaacKLaaaaaaaaaarBarBarBauparBabqabqaaaarBaaacFvcMzcMAcMBcMCcMDcMEcMFcMGcMHcMIcMJcMKcMLcMMcMNcMOcMPcMBcMQcMRcMScMTcMUcMScMVcMWcWGcSCcWIcWHcYocRUcImcImcImcImcImcImcNccImcImbZUcNdcgxcmmcIxcNecMjcLocLpcLocNfcNgcNhckzcNjcNkcNldgVdgUdgUdgUdgUdgUcNocNncNpcNqcNrcEKchychyceNchybZUbZUbZUabqabqaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcFNcALcFNabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaarBabqcNtabqarBaaaaaaabqaaaaaaabqaaaabqabqabqaaacHZcNucNvcNwcNxcNyclkcNAcNBcNCcNDcNEcHZcFvcFvcFvcHZcNFcNGcNHcHZcNIcNJcDUcNKcNLcNMcNNcYCdeidehdejcRUcNRcmVcmVcmWcmVcNTcNUcmYcmZcNVcNWcNXcBIcIxcNYcNZcOacOacOacObcOccOdcOecOfcOgcOhcOicOjcOkcOlcJLcOncOocOpclncOrcOscOtcmYcmYcOucOvcOwcOxbZUbZUbZUcksaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaarBaaaabqaaaarBaaaaaaabqabqabqabqaaaaaaaaaabqabqcHZclpcOzcKMcOAclpcOBcODcOCcOEcOFcOGcHZcOHaaaaaacrUcrUcrUcrUcrUbZUcOIcDUcDUcDUcDUcDUcRUdeldekdemcRUcOMbZUbZUbZUbZUbZUbZUbZUbZUczIcONcOOcOPcOQcORcOScOTdeIcOVcOWcLpcOXclCcOZcPacPbcPccPdcPecPfcPgcPhcPicOpclNcPjbZUbZUbZUbZUbZUdenclGcPmclJcPnclJcPoabqabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBarBarBarBarBaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaacHZcPpcPqcKMcPqcPrcPscKMcKMcPtcKMcKMcHZabqabqabqbZUcjncfZcPucmscPwcPxcmYcPycPzcPAcPBcRUdepdeodeqcRUcOMbZUcPHcPIcPJbZUcPKcPLcPMbZUcPNcPOcPPcIxcPQcPRcPScPTcPUcPVcLpcPWcIxcPXcPYciccPccPZcQacQbcKNcQdcQecOpchycPjbZUcQgcQhcQibZUcQjcQkcQlbZUbZUbZUcksaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaacHZcQmcQncKMcQocQpcPscQqcQrcQscQtcQucHZaaaabqaaabZUcQvcQxcQxcQycQzcQAcQAcQAcQAcQCcPjcRUcRUdercRUcRUcOMbZUcQDcQEcQFcQGcQHcQIcQJdescQLcQMcQNcIxcIxcIxcIxcIxcQOcIxcQPcrUcrUcfwcQQcfwcOpcOpcOpcOpcOpcOpcOpcOpchycQRcQScQTcQUbeVcQWcQWcQXcQYcQWaaaaaaaaaaaaabqabqaaaaaaabqaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaacHZcQZcRacKMcRacQZcRbcRccRdcRecRfcRgcFvaaaaaacRhbZUcRibZUbZUbZUcRjbZUbZUbZUbZUcRkcRlcRmcRndetcRmcRmcRqcRrcRscRtcRucRvcRwcRxcRycRycRzcRAcRBcRCcRDcmYcmYcmYcRFcmYcRGcmZcRHcRIcRJcRIcRKcjNcjNcvYcwtcOtcmYcmYcmYcRNbZUcnOcROcRPcQWcRQcRRcRScQWabqabqabqabqabqabqabqabqabqabqabqabqaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcHZcHZcFvcHZcFvcHZdeucRVcRWcRXcRYcRZcHZabqabqcRhcSacSbcRhcSccSdcSecSfcSgcShbZUbZUbZUbZUcSibZUbZUbZUbZUbZUcSjcRtcSkcRtcSlcSmcSncRtcSocSpcSqbZUbZUbZUbZUbZUbZUcCdcSrcfZbZUcSscStcSucfwcicciccCObZUbZUbZUbZUbZUbZUbZUbZUbZUcuEcQWcSwcSxcSycQWaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaabqabqabqcSzcSAdewcKPcSDcSEcSFcSGcSHcHZaaaaaacRhcSIcSJcRhcSKcSLcSMcSNcRhcRhcSOcSPcSQcSRcSScSRcSTcSUcSOdexcSXcRtcSkcRtcSYcSZcTacRtcTbcTccTdcTecTfcTgcThcTibZUcTjbZUbZUbZUcTkcTlcTmcfwcfwcfwcxRbZUcTocTpcTqbZUcTrcTscTtbZUctocQWcTucTvcmtcQWaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaaabqaaaaaacTxabqdeycHZcHZcHZcHZcHZcHZcHZaaaaaacRhcTycTzcRhcTAcTBcTCcTDcRhcTEcTFcTGcTHcTIcTJcTKcTLcTLcTMcTNcTOcTPcTQcRtcSYcTRcTacRtcSocSpcSYcLScTTcRtcTUcTVbZUcTWbZUabqaaacNzcTYcNzaaaaaacOmcxTbZUchychychycmycjicUbcjicUccUdcQWcOycUfcOycQWaaaabqaaaabqabqaaaaaaabqaupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeabqabqabqaaaaaaaaaabqabqabqaaaaaaaaaabqaaaaaaaaacRhcUgcUhcUicUjcUkcUlcUmcRhcUncRhcUocUpcUqcUrcUscTHcTHcUtcUucUvcUwcUxcUycSYcUzcTacRtcSocUAcUBcUCcUDcUEcUFcUGbZUcTjbZUabqabqcNzcUHcNzabqaaacOmcyqbZUchychychycUJcUKchycULbZUcmicQWcOycWJcWmcWKcWKcWKcWKcWKcWKcWKcWKcWLarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaaaaaaaabqaaaaaaaaaabqaaaaaaaaacRhcTycUNcRhcUOcUPcUQcURcUScUTcRhcUUcUVcUWcUXcUYcUZcVacSOcSWcTacRtcVccVdcVecVfcVgcUwcVhcVicVjcVkcVkcSVcTScVkbZUaefabqaaaaaacNzcVncNzaaaaaacOmcxTbZUcVocVpcVqbZUcVrcVscVqbZUaaaabqcOycOycOyabqaaaabqaaaaaaabqabqaaacWRarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabeaaaaaaabqabeabfabeabqabeabeabeabqcSOcSOcSOcRhcRhcRhcRhcVtcVucRhcRhcRhcVvcVwcVxcUXcVycVzcVAcSOcSOcTacRtcRtcRtcSYcSZcTacRtcVBcVCcVDcTXabqabqaaaaaaabqaefabqaaacVFcVGcVHcVGcVIaaacOmcxTbZUbZUbZUbZUbZUbZUbZUbZUbZUaaaabqaaaaaaaaaabqabqabqabqabqabqaaaaaacWRarBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaaacTZcVLcVMcSOcVNcVOcVPcVQcVRcVScSOcVTcVUcVVcVWcUXcUYcUZcVacVXcSOcVYcRtcVZcWacWbcrrcWdcWacWecRtcWfcVkaaaabqabqabqabqabqabqabqcVGcWgcWhcWicVGaaacOmcyFczlczlczlczzcOmcWScXBcXCcXBcXCcXBcXoaaaaaaabqabqaaaaaaaaaabqaaaaaacWRaupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaaacTZcWncVMcWocWpcWpcWpcWqcWrcWscWtcWucWvcWucWwcWpcWxcWwcWycWzcSOcWAcWBcWCcWBcWBcWBcWBcWBcWCcWBcWDcTXaaaabqaaaaaaabqaaaaaaaaacVGcWEcWFdezdeAcyncOmcYccYccYccYccxTcOmcXZcXDcYbcXHcYdcYecXZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZjaaaaaaaaaaaaaaaaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaaacTZcWncWMcVRcWNcWOcUXcWPcWQcZlcZkcZmcWUcWVcWVcWWcWVcWVcWXcWYcSOcWZcXacXbcXacXacXccXacXacXdcXecXfcVkabqabqaaacVGcVGcVGcVGcVGcVGcXgcXhcXicVGcVGcVGcVGcVGcVGcYccxTcOmcYacYxcYbcYdcYbcYzcXCaaaabqabqaaaabqaaaaaaaaaaaaaaacVJaaaaaaabqaaaaaaaaaaupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqaaacTZcXjcVMcVRcWNcWNcXkcSOcSOcSOcSOcZwcWzcXmcUXcXncUXcXmcZxcZCcSOcXpcTXcXpcTXcTXcTXcTXcTXcXpcTXcXpcTXaaaabqabqcVGcXqcmDcXscXtcVGcXucXvcVGcVGcmGcnhcmIcXzcVGcYccxTcOmcXZcYdcYbcYdcYdcYecXZaaaaaaabqauparBaupabqabqabqabqcVJabqabqabqabqabqabearBarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcSOcSOcSOcXEcUXcUXcUXcXFcXGcSOcZQcVacXIcXJcXJcXKcXJcXJcXLcZRcVkcXMcTXcXacTXaaaaaaaaacTXcXNcTXcXacTXaaaabqaaacNzcXOcXPcXQcXRcnkcXScXTcXUcnvcXVcXWcXXcnTcNzcYccxTcOmcYGcXBcXCcZycXCcXBcZzaaaaaaabqaaaabqaaaabqaaaaaaaaacYfaaaaaaabqaaaaaaaaaaaaaupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaacTZcYgcYhcYicYjcYkcXKcYlcYmcSOcSOcSOcSOcUecUecUecUecUecSOcSOcVkcXpcTXcXpcTXaaaaaaaaacTXcXpcTXcZUcZTabqabqaaacNzcnUcYpcYqcYrcYrcYscYtcYucYucYucYucYvcnVcNzcYccxTcOmcOmcOmcOmcYIcfwaaaaaaaaaaaaabqaaacYAcYAcYAcYAcYAabqcYBabqcYAcYAcYAcYAcYAaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcSOcTZcSOcSOcTZcTZcTZcSOdagcSOaaaaaacYDcYFcYFcYFcYFdahdaXcYFdaicZocYFcZodajcYFcYFcYFdaicZpcYFdcbdalcYEcYJaaacVGcYKcnWcYMcpbcpdcYPcYQcYRdgXdgWcYUcYVcpecVGcYccCOcZvdawcOmcZfcZhcOmaaaaaaaaaaaaabqabqcYXcYYcYYcYYcYYcYZcZacZbcZccZccZccZccZdabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaabqaaaaaaaaaaaaaaaabqabqdazdbadaAdcTdcPdaBcZedcncZBdaCcZBdaDcZBdaCdaCdaDdaCdaEcZBdaCcZBcZBdaKdaJaaacVGcZrcZrcZrcZrcTkcZscZtcZucTkcZrcZrcZrcZrcVGdaLcCOcZvdaMdaOcZicZncfwaaaaaaaaaaaaabqabqcZAcZAcZAcZAcZAaaacYBaaacZAcZAcZAcZAcZAabqarBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqabqabqcZFdaZcZedbkcZBddadbqdbhcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZgcYFaaacVGcZGcZHcZHcpfcZJcZKcZLcZMcZNcpgcZPcZPcZPcVGcYccAscicdbvcfwcfwcOmcfwaaaaaaaaaaaaabqaaaabqaaaabqabqabqaaacYBaaaabqaaaabqaaaabqaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZSdbOcZedbPddccZBcZBdaJcZBcZBdbQdbYdbQdbQdbQcZBdbQdbQdbQdbYdbQcZBcZBdccdaiabqcVGcZPcZPcZPcqccZYcZZdaadabdaccqjcZPcZPcZPcVGcOmcfwcOmcOmcfwaaaaaaaaaaaaaaaaaaaaaabqaaacYAcYAcYAcYAcYAabqcYBabqcYAcYAcYAcYAcYAabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaUNaUNbUBbUBaUNaUNbNWaWDbQNdgRbQNdfNaWDapfbLDapfapfapfbgYauCatkbFpbTobUDbUEbHfbUEbUFbFpbUGapdapdatjbUHbXJapfbFuaoXbzKbzKbaibUIbUJbaibzKbzKbzKbzKbUKbzKbzKbULbjnbUMbMSbUNbUObUPbUQbURbOBbUSbUTbUUbUVbMWbUWbUXbUYbUZbVabNdcgqbSebVcbVdbVebNhbVfbSibVgbVhbQmcclcdBccmbNhcgrbhtbVnbbrbOWaUXbVtbVqbXcbYtbYsbVubVqbUebVvbQIbVwbVxbVybVzbUjbQIbVAbVBbVCbVDbVEbVFbQVbVGbVHbVIbQVbVJbVKbVLbVMbCMbVNbVObRabVPbCNbVQbSRbGGbSPbVRbVSbVTbPCbHGbIubIvbVUbVVbVWbGLabqaaabFcaaabFbaaabFcaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdclHbdMbeWbeXbeXaXLaXLbKlbKlcepbKlbKlaXLaXLbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaUNbWcbfdaUNdghdgjdgibBtdgkbBtdgldgmapfbLEauJbLKaoXbMCbWgbWibFpbFpbFpbFpbWjbFpbFpbFpbWkdeJdeHapdbWlbWmapfbFubWobzKcgsbWqbWrbWsbWtbWubWvbzKbWwbWxbWybzKbzPbfIbWzbMSbQdbTEbWAbWBbQdbOBbWCbWDbWEbWFbMWbWGbWHbWIbWJbWKbWLbWMbWNbWObWPbWQbNhbWRbWSbWTbWUbWVbWWbWXbWYbWZbXabhtbXbbbrbOWaUXbYubXdbXdbXebXfbXgbXhbNxbXjbQIbXkbVxbXlbXmbXnbQIbXobXpbXqbXrbEGbNFbQVbQVbQVbQVbQVbXsasJasJbXtbCMbVNbVObRaaVdbXvbVQbXwbInbSPbXxbRgbXybRibzLabqbzLbXzbXAbXBbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXbeXbeXbeXbIFbIFceqbIFbIFbeXbeXbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaUNbUBbUBaUNdgndgjbBtbBtdgobBtbsxdgqapfbXHavUavUavUbDLapdatkaoXaqBayBapdbXIauyauCapfapfapfapfapfbXKapfapfbFucgmbzKbXLbXMbXNbXNbWsbWtbXPbzKcgtbXRbXSbzKbDQbfIbXTbMSbQdbXUbXVbXWbXXbOBbXYbXZbYabMWbMWbYbbYcbYdbYebYfbNdbYgbSdaVsbYibYjbNhbYkbYlbYmbYnbNUbYobYobYpbNhbYqbhtbYrbbrbOWbQIbYvbYEbYwbStcbacbbbUcbNzbNybNBbNAbNDbNCbUCbPObQIbEGbEGbEGbEGbEGbNFaoGbYGbUrasJasJchGchFaXPasJbCMbCMbYJbNRbVPbCNbYKbYLbGGbYMbVRbRgbYNbSUbItbMjbMkbYObVVbYPbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXbeXbeXbeXbeXbeXbdObeXbeXbeXbeXbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabredgrdgtdgsdgvdgudgxdgwdgyapfapfapfapfbWmbYRavUbYSbYTbYUbYVbYVdfibYWbYVbYVbYTbYVbYVbYVbYZbYVaPTcgucgobzKbZbbZccgvbZebHrbZfbZgbzKbzKbzKbzKbzKbZhbfIbOvdeEbMSbZjbZjbZjbMSbMSbMWbMWbZkbMWbMWbZlbZlbZlbZmbZlbZnbZnbZobZpbZnbZnbNhbNhbNhbNhbNhbNhbZqbZqbZqbNhbZrdeFbZsbbrbZtbZubZvbZvbZvbZvbZvbZvbZxbZybZvbZvbZvbZvbQIbZzbWfbWnbWhbXibZEasJbZFbZGaoGbVLbZHbZIasJbYHckgasJarrbCMbZJbJWbZKbCNbCNbCNbZLbGGbZMbZNbRgbUwbRibzLabqbGLbGLbGLbGLbGLabqabqbRmabqbPGabqabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbKkbvhbvhbvhbvhbvhbvhbdObvhbvhbvhbvhbvhbvhbvibdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgrdgfdgzdgzdgzdgzdgzdgAaaaabqaaabZPbZPbZQbZRbZSapfbZTapfapfapfaYabZUbZUbZUbZUbZUbZUbZUapfcgHapfapfbzKbZYbZZcaacabbHrbWscaccadcaeayBapfcafbzPcagcahcaicajcakcakcakcalcamcancaocakcapcaqcaicaicarcascarcarcatcarcaucavcavcawcaxcaycazcaAcaBcakcakcakcaCcaDcavcaEbbrcaFcgKbajcaIcaJbZwcaLcaMcaNcaKcaOcaQcaPcaRbQIcaScaTcaUbYxbYycaXcdobZGcaZaoGaoGaoGaoGaoGcmHbXtbCMbCMbCMcbcbJWbNRcbdbbdbbPbKacbgcbhcbibVScbjbPCbHGbIubIvcbkcblcblbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdclHcerbMrbMrbMrbMrbMrcLLcLLcQccLLcLLbMrbMrbMrbMrbMrbNXaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgrdgJdgzdgzdgzdgzdgDdgraaaabqaaabZSbcEcbncbobZSapdcbpbPQcbqapfcbrbZUcbscbtcbucbvcbwbZUcgVcgUchnapfbzKbzKbzKbzKbzKbzKbzKbzKbzKaxqaoXapfcbxbzPcbycbzbekbekbekbekbekbekbenbekcbAcbBcbCbembekbekbekbvTcbDcbEcbFbekbekbekbekbekcbGcbHbekbekbenbekbekbekbekcbIbekcbAcbJcbKcbLcbMcbNcbOcbNcbPcbPcbQcbRcbScbPcbOcbTbQIbQIbQIbQIcbUcbVasIarrbdlcbXasIcbXazpbefaoGayoaoGbCMccaccbcccccdcceccfccfccfbMcbGGbGGbGGbRgccgbRibzLabqbzLcchcciccjbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaabPHbsdbsdbsdbPHbNYbbXcUIcUMcUIbbZaXOabqaaaaaaaaaabqaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgrdgzdgzdgzdgzdgzdgzdgraaaabqabqbZSccnccoccpbZSapdccqaEjapfapfccsbZUchyccuccvccwccxbZUapfapfapfapfavXchoccAccAccAccAchpccAccAccBbcGccCccDccEccFccGccIchschtccJccGccGccKccGbdabcXccLbcYbcXbcXbcXccMccNbcZbcYbcXbcXbcXbdbccOccPccQccQccQccRccQccQccQccSccTccOccUccVccWccXccYccZcdacdbcdccddcdecdfcdgcdhcdecdibZvcdjcdkbZvcbUcbVasIasIasIasIasIcdmcdocdocdpcdqcdrcdscdtcducdvcdwcdxbGGbGGbGGbGGbGGbInbGGbRgcdybSUbItbMjbMkcdzcblcdAbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdabdabdabdabdabdaXHcerbzhcWjbzhbNXaXOabdabdabdabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgrdgrdgBdgFdgFdgFdgrdgraaaabqaaabZScdCcdDcdEbZScdFapdcdGapfcdHceNbZUcdJcdKchvchycdNbZUceTceUceVbZUchychwchzchxaoXauyauJauCcdTcdTcdTcdTcdTcdTcdTchMchMchNchMcdUcdUcdUcdUcdVcdWcdWcdXcdYcdWcdZcdWceacebbbrceccedceecefceecegcehceeceeceibZubbgbbibbicejbZucekbZuaYxchOaYxbZvcenceocfDcdhcitcescdfcixcdhcetceubZvcevcewbZvcexceycezcdocdocdocdoceAceBceCceDceCceCbPmceFceGceHbGGceIbPwbPwbPwbPwbPwceJbGGbRgbUwceKbCMabqbGLbGLbGLbGLbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaabsdbsdbsdbsdbsdaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgGdgHdgHdgHdgHdgHdgHdgGaaaabeaaabZSbTYceMbTYbZSapfapfapfapfbZUchPbZUceOchQceRchychSbZUcfVcfWcfVbZUbZUceZbZUbZUbZUbZUbZUbZUcdTcfachTbgHchUcfecffchMchWchVchXcdUchZchYcdUciacjdciacjjcjhciacjdciacjmcfocfpcfqcfrcOmcftcOmcfucfvcOmcftcOmcfwcfxcfxcfxcfxcfxcfybZucfzcfAcfBbajcfCcbOcdfcdhcdhcdecfDcdhcdhcdecfEbZvcfFcfGbZvcbUbgJcfIceCceCceCceCceCcfJcfKcfLcfKcfKbCMcfMcfNcfOcfPcfQbInbGGbGGceIbPwcfRbSSbRgcfSbRibCMabqabqabqabqabqabqabqabqbPFabqbPGabqbRmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdabdabdabdabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaaaaabTYcfTbTYaaaabqaaaaaaaaabZUceNbZUbZUbZUcfUbZUbZUbZUcjscjrcjvcjubZUcfXcfYbZUcfZcgacgbcgccgdcgecgfcggcgfcgfcjwchMcjycjxcjzcdUcjBcjAcjDcjCcjFcjEckdcjGckyckxckBcjdcgwcgxcgycftcgzcgAcgBcgCcgDcgEcgFcgGckEcfxcgIcgJckGcfxcjUbZucgMcgNcgOcgPcgQcgRcgScgTbYAbYzbYCbYBbYBbYzbZAbYDbZCbZBcaVbZDcbVasIchbchccfKcfKcfKcfKcfKchdchechfbCMchgchhbGGbGGbSPchibIqbIqchjchkchjbIqchlchmbRibCMbCMbCMaUVaUUaUVaUUaUVaaabFcaaaabqaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeabqabqbTYceMbTYabqaaaaaaaaaaaabZUcPjbZUchqcjichrbZUckHbibckJchychycjkbZUchAchBchCchDcaWcmJccrchHchIchJchKchLckKckLchMckNckMckOcdUckQckPcjDckRckUckTclEclxclLclKclOclMcgwcgxcgycibciccidciecifcigcihcihciiciicelcikcilcimcfxcinbZuciocipciqbajcircisciuciucivciuciwciucKCcJFciybZvcizciAciBciCcfJaoGaoGaoGcfKciDciEciFciGciHciIciJbCMciKciLciMciNciOciPciQciRciSciTciUciVciWciXbRiciYciZciYcjacjacjacjacjbabqabeaaaabqaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaacjcaaaaaaabqaaabZUbZUbZUckvckwclQcjecjfcjgclRcjeclTckAclUbZUbZUcjlclWbZUcdNcjncjocjpcdTcjqclYclXcjtclZcmachMcmccmbcmdcdUcmfcmecdUcmgcmkcmhcmhcmlcmqcmpcmTcmscjHcjIcjJcibciccicciccjKcjLcjMcjNcjOcjPceLcjRcjScjTcfxcjUbZubZubZubZubZvbZvcjVbZvbZvbZvbZvbZvbZvbZvbZvbZvbZvbZvbZvbZvcbUcjXaoGcjYcjZcfKckackbckcaRQbhvckfbhHbCMckhckhckickhckjckhckickkckjckjbRickhcklckmcknbCMbCMbCMckockpcjackqckoaaabFcaaaabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaackraaaaaacksckscktckuclJcPjbZUbZUbZUbZUbZUbZUbZUbZUbZUbZUbZUbZUckCcmXcmXcmXcmXcmXcmXcmXcmXcmXckFcjtcnackIchMchMcnbchMcdUcndcnccnfcnecnicngcnmcnlcmqcnncnociacgwckVcgycOmckWckXckYckZclaclbclccldclecfxclfclgclhcfxclicljcljcljcljcljcllclmcljcljcljclocljcljcljcljcljclqclrboccdocltcluclvclwbVKcfKcnrclyclzclybiBbiUbiObCMbCMbCMcgnbzLchRbzLcgnbzLchRchRcijbzLcijbCMbCMbCMabqabqabqclHcjaaWCabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabeabqclIabqabqabqaaabZUcmSbZUcofcoecmYcjecjecmUcogcogcogcmVcmVcmVcmWcohcmXcoicokcojcmXcoicolcojcmXclVconcomcopcoocorcoqcoscdUcoucotcnfcovcowcoocoociacoxciacoycoocozckVcmmcmncmocmocmocmocoBcoAcmrbkSbkTcfxcmucmvcmwcfxcmxbkXcmzcmzcmzcmzcmAcmzcmBcmBcmBcmBcmBcmBcmBcmBcmBcmCaoGasJasJasJasJaoGasJasJcfKcmEcmFbkYclybiBbiUbkZblrabqabqcmKabqcmLabqcmKabqcmMcmNcmOabqcmOabqabqabqabqaaaaaacmPcjacmQaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaarBaaacmRaaaabqaaabZUbZUbZUbZUbZUbZUbZUbZUbZUcodcoDcoCcoCcoCcoCcoCcoCcoCcoCcoEcpbcoFcpBcpzcpbcpCcmXcdTcpEcpDcdTcoocpGcpFcpHcdUcpJcpIcdUcpKcpLcoocpNcpMcpPcpOcpQcoocpRcntcnucmobmRcnwcnxcnycnxcnzcmocnAcnBcnCcnDcnCcfxcfxcnEbZUcmzcnFcnGcnHcnIcnJcmBcnKcnKcnKcnLcnMcnNcnKcmBcmCaoGclsasIcnPcnQaoGcnRcnScfKaTJbtLbrWbvxbulbiUbobclAabqbGLcnYbzLcnYbGLcnYbzLcnYbGLcnZbzLcoabGLabqaaaabqabqabqcobcjacocabqabqabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqarBaaacjcaaaabqaaabZUcpucpvcpwcpxcpycpScpAbZUcodcFQcoCcpUcpTcpWcpVcpYcpXcoCcqacrdcqbcrfcrecrgcqbcricrhcrkcrjcrmcrlcrocrncrtcrpcrwcrucrycrxcrAcrzcrBcmqcrCcmqcrDciacgwckVcmmbWecoGcoHcoIcoJcoKcoLcmocoMcoNcoOcoPcmzcdNcjncrFcrvcmzcoRcoScoTcoUcoVcmBcnKcoWcoXcoYcnKcoZcpacmBcmCaoGaoGaoGaoGaoGaoGaoGaoGcfKcfKcfKclFclAclBbwMclDclAabqbGLcphcpicpjbGLcpkcplcpmbGLcpncpocppbGLabqaaaabqaaabCMcpqcprcpscptaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabeaaackrabqabqabqcmicqYcqZcracrbcpycrccdKbZUcodcjncoCcrGcrEcrHcrEcrEcrVcoCcsCcsGcsEcsIcsHcsNcsEcsPcsOcsScsQctqctgctBctActDctCctGctFctIctHctKctJctMcrCcrCcrCctPctOcgwckVcrWcmocqdcqecqfcqgcqhcqibyScqkcqlcqmcqncmzcqocqpcqqcsncmzcqscqtcqucqvcqwcmBcnKcnKcqxcnKcnKcqycqzcmBcmCbZUcqAcqBbZUcqCcqDcqFcqEcqHcqGbZUcsoclAcqrbArcqIclAabqbGLcqKcqLcqMbGLcqNcqOcqPbGLcqQcqRcqSbGLabqabqabqabqcptcqTcqUcqVcqWabqabeabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaarBaaackrabqaaaaaacmicsvcrccqZcswcpycsxbZUbZUcsyctQcoCctTctRctWctVcrEctXcoCctYcuactZcpBcuecuacukcmXcuFcuLcuKcuMcnncuNcnncuOcnncnncnncuQcuPcuScuRcuTcmqcrCcmqcuUciacgwckVcrIcmocrJcrKcrLcrMcrNcrOcmocrPcrQcrRcrScmzcrTcrUctSctEcmzcrXcrYcrZcsacsbcmBcmBcscbANbIObIOcmBbIPcmBcsgcshcsicsjbZUcskchychychycdKcslbZUbKxctucnXbyPcNmctuabqbGLcqKcsqcqKbGLcqNcsrcqNbGLcsscstcssbGLabqaaaabqaaacqWcqUcsucqUcjaaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabeabqckrabqaaaaaacmictwcqZcswctxcpyctyctzcdOcodcuVcoCcuXcuWcuZcuYcvbcvacoCcvccvdcvdcmXcvecvecvfcmXcvgcvicvhcvkcPycvjcjQcmjcjQcvjcvjcvjcvocvLcoocvNcvMcvRcvOcwbcoocwcckVcsTcmocmocsUcsVcsWcsXcsYcmocsZcnBcfwcfwcmzctacmzctbcmzcmzcfwctcbQvcfwcfwctectfcwdcthctictjcrqctlcmBctmbZUctnctobZUctpcdKchychychyctrbZUbKxctubQAbKRbQZbSlabqbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLabqabqabqabqcjacqUcqUcqUcqWabqbFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaabqaaaaaaarBaaaclIaaaaaaaaacmicmicqZcpycpycqZcqZcuJcdOcodcuVcoCcwfcwecwgcrEcrEcwhcoCcwicwjcwjcwkcwjcwlcwjcwmcwjcwocwncwqcwpcvjcnpcnqcwrcwucwscvjcwvcwwcoocoociacwxciacwycoocwzcubcuccudcwAcufcugcuhcuicujbWeculcumcuncuocupciccuqcurcusciccutcuucuvciccuwctecuxcuycuzcuAcuBcuCcuDcmBcmCbZUbZUcuEbZUcwBcuGchychycuHcuIcmibKxctuctucgWctuctuabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqaaaabqaaacjacqWcptbCMcptaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaaaaabqaaaaaaabeaaacmRabqaaaaaacmicvZcqZcwacqZcqZcsxbZUbZUcodchycoCcwDcwCcxmcrEcxocxncoCcxpcxrcxqcxscxqcxucxtcxtcxtcxwcxvcxycxxcvjcxAcpZcxBcpZcpZcxDcxCcxFcxEcxHcxGcmqcxIcxJciacgwckVcvmcvncxRcvpcvqcvrcvscvtcvucvvcvwcvxcvycvzcvAcvBcvCcvDcvEcvDcvFcvGcvHcvIcvJcvKcgYcgXchacgZclSckScszcoQbZUcvTcvUcvVcbvchychychycvWcvXbZUbXOcynctubYhctucspaaaaaaaaaaaaaaaabqaaaaaaaaaabqaaaaaaaaaaaaabqaaaabqaaaaaaabqaaaabqaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaabqabqaaaaaaarBaaacjcaaaaaaaaacmicxkcpycracpycxlchycyjbZUcymchycoCcoCcoCcypcyocyocyocoCcyrcvkcsJcsJcyscsJcyscsJcsJcyucytcywcyvcyycyxcyAcyzcyCcyBcyGcyDcyHcmqcyIcmqcmqcyJcmqclMcgwckVcvmcwEcyKcwFcwGcwHcwIcwJbWecwKcwLcwMcwNcwOcwPcwQcwRcihcihcwScwTcwUcwVcwWcwXcwYcwZcxacxbcxccxdcxecmBcmCbZUcxfcxgcxhcsicxicuHchychycxjcmictscttdbjctvdbjarAabqabebFbbFbbFbbFbbFbbFbabebFbbFcbFbbPGabqbFcabqabqabebRmbRmbRmabeabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaabqaaaaaaarBaaackraaaaaaabqcmicpycxlcpycyichycdLcykcylcyZchyczpczrczqcztczsczsczuczpczvcxycysczxczwczAczyczBcysczEczDcAhczJcxDcAicAkcAjcAmcAlcAocAncApcApcApcApcAscArcApcAtcAvcxKcxLcmocmocmocmocmocxMcxNcmocmzcmzcxOcxPcxQbYXbYIbYYcxUcxUcxUcxUcxVcxWcxXcxVcmBcmBcmBcxYcxZcyacybcmBcmCbZUcvTcycbZUcydcyecyfcygcygcyhbZUabqabqabqabqabqabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaabFcaaaaaaabqaaaaaaabqaaaabqabqaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBarBabqabearBaaaabearBarBabqabqabqckrabqabqabqcmicmicmibZUbZUcznczobZUbZUcAwcAycAxcABcAzcBjcAMcBmcBlcBocBncBqcBpcBscBrcBucBtcBFcBEcBHcBGcxycCacvjcCccChcCgcCjcCicyGcCkcCmcClcClcnncCocCncnocoocCpcyLcyMcyNcyOcyEcyPcyQcyRcyScyTcyUcyVcyWcyXcyYcaYczaczbczcczdczeczfcxVczgczhcziczjczkcmBcmBcmBcmBcmBcmBcmCbZUbZUbZUbZUbZUbZUbZUcmibZUbZUbZUaaaabqaaaaaaaaaabqabqabqabebFcbFcbFcabebFcbFcbFcabebFcbRmbFcbFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczmaaaaaaaaaabqaaaaaaaaaabqaaaaaaabqaaaclIaaaaaaabqabqaaaaaabZUbZUbZUbZUbZUcAgcodchyczpcCrcCqcCtcCscCvcCucCycCxcCEcyscCGcCFcCScCKcDdcysczEcDecwqcDfcDfcDfcDfcDfcDfcDgcDgcDgcDgcDhczCczCczCczCczCcDiczFczGczHczIcMYczKczLbZUczMczMczNczMczMczOczPczQcaYczRczSczTczUczVczWcxVczXczYczZcAacAbcrUcfYclPbZUcAccmYcAdbZUcAecfYbZUaaaabqaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaabqaaaabqaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaacAfcAfcAfcAfcAfabqabqabqcAfcAfcAfcmRcAfaaaarBabqabqabqbZUcFRcFScFRbZUcDkcDjcDlcAxcDncDmcDqcDocDscDrcDwcDvcDxcsJcDJcDycDPcDOcDScsJcDVcDecwqcDWcEacDXctLcEbcEccBvcBwcBxcBycBvcAqcEdcEecMscAuczCcnscgxcAAbZUcMZcACcADcAEczMcAFcAGcAHczMcAIcAJcAKcbfcEfcANcAOcAPcAQcARcxVcAScATcAUcAVcAWcrUcAXcAYcAZcBackDcBbcAZcBccvWcmiabqabqabqabqabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeabqcBdcBecBecBecBecBfckrcBgcBhcBhcBhcBhcBiabqabqaaaaaaabqbZUbZUbZUbZUbZUcuVcBkcFTczpczrcEicztczsczscEjczpcxpcEkcsJcsJcsJcsJcsJcsJcsJcEmcElcEOcEncERcEPcETcEScEUcBvcCwcEVcEWcBvcBzcBAcBBcBCcBDczCcEXcgxcBIcBJcBKcBJcBJcBJczMcBLcBMcAGcxScBOcBPcBQcBRcBScBTcBUcBUcBVcAQcxVcBWcATcBXcBYcBZcrUcbmcCbbZUcmCchycCdbZUchycCebZUaaaabqaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaDaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcCfcCfcCfcCfcCfaaackraaacCfcCfcCfcCfcCfaaaarBaaaabqabqaefbZUcDcbZUcctcuVcBkckDcEYcEYcEYcFacEZcEZcEZcEYcFccEkcFdcFfcFecFhcFgcFicFdcFPcFjcFVcFUcFXcFWcFZcFYcEUcGacGccGbcGdcGacCzcCAcCBcCCcCDczCcGecgxcmmcBJcCHcCIcCJcFoczMcCLcAGcCMczMcCNcCOcCPcxUcCQcCRcPCcCTcCUcCVcxVcCWcCXcCYcCZcBYcrUbZUbZUbZUctmbZUcDabZUbZUbZUbZUabqabqaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaabqaaaabqabqabqaaacDbaaaabqaaaabqaaaabqaaaarBaaaabecvQcvPclJcDQcDRcDQbgZcGgcIbcEYcGncGicGpcGocGOcGEcEYcxpcHbcHacHdcHccHgcHecHicHhcHlcHkcHycHmcHKcHDcIdcIccIecDYcDZcIfcIhcIgcIjcIicIkcDtcDucIlcIpcDzcDAcDBcDCcDDcDDcDEczMcDFcDFcDGczMcgCcCOcDHcxUcxUcxUcxUcxUcxUcxUcxVcxVcxVcDIcxVcxVcrUcAccmYcmYcDKbZUchycDLcDMcDNcDMckscksaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaacAfcAfcAfcAfcAfabqckrabqcAfcAfcAfcAfcAfabqarBabqarBabqabqbZUcENbZUcdNchycJRcDTcEYcIrcIqcIvcGocGocIUcEYcIVcIWcFdcIYcIXcJacIZcJbcFdczEcDecwqcDWcJdcJccJecxzcJfcBvcJScJhcFbcDgcJUcJTcJVcEgcEhcbYcJWcgxcEocEpcEqcErcErcEsczMcEtcEucEuczMcEvcEwcExcEycEzcEAcEBcECcEDcEEcEFcEGcEHcEIcEJcEKcfZcELchychybZUbZUcEMbZUbZUbZUbZUabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcBdcBecBecBecBecBfckrcBgcBhcBhcBhcBhcBiabqaupaaaabqaaaaaabZUbZUbZUbZUbZUbZUcEQcEYcJYcJXcKacJZcKccKbcEYcKdcKfcKecKhcKgcKjcKicKkcKeczEcDecwqcKZcKZcKZcLdcLdcLdcBvcGfcKncGhcDgcKocGjcGkcGlcGmczCcKqcFkcFlcBJcFmcCIcFncWcczMcFpcFqcFrcxScFscFtcFucbZcFwcFxcFycFzcFAcFBcFCcFDcFBcFEcFFcEKbZUcFGbZUcFHcFHcFIcFJcFKcFLcFMabqabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcFNcALcFNabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcCfcCfcCfcCfcCfaaaclIabqcCfcCfcCfcCfcCfaaaarBaaaabqaaaaaaaaabZUcPGcNacNbbZUcGZcEYcKzcKycKDcKAcGocKHcEYcKWcKXcFdcFdcFdcKecFdcFdcFdcKYcDecwqcKZcLbcLacLdcLccLecBvcBvcLfcDgcBvczCczCczCczCczCczCcLgcGqcGrcGscGtcGucGvcGwczMcGxcGycGzcGAcGBcGCcGDcdlcGFcGGcGHcGIcGIcGJcGKcGLcGMcGNcdncGPcGQcGRcGScGTcGUcGVcGVcGVcGWcBNabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcALcFNcGYcFNcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupaaaabqaaaabqaaaabqaaacmRaaaabqaaaabqabqabqabqaupaaaaaaaaaaaaabqbZUcNOcNPcNQbZUcEQcEYcLhcGocLicGocGocLjcEYcxpcLvcLkcLKcLwcLWcLwcLwcLwcLYcLXcxycKZcMacLZcLdcMbcMccImcMecMdcMrcMfcIocMwcIncMLcImcMScMTczGczHcHncHocHocHpcHqczMcHrcHscHtcDpcHvcHwcHxcdMcHzcHAcHBcHCceEcHEcHFcHGcHHcHIcHJceQcHLcHMcHNcHOcHPcHQcHRcHScHTcBNabqabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcHUcALcHVcHWcHXcALcHUabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaacAfcAfcAfcAfcAfabqcHYabqcAfcAfcAfcAfcAfabqarBaaaaaaaaaaaaaaabZUcOJcOKcfbbZUcMUcEYcMWcMVcNccMXcNscNicEYcNIcNKcNJcNMcNLcNNcNKcNKcNScOqcNUcwqcKZcOIcOHcLdcOLcOUcImcPkcOYcPlcIncIocPucPwcPvcImcIscnscgxcItcBJcIucFOcIwcIucIxcIxcIxcIxcIxcIycxPcIzcEycIAcIAcIBcICcIDcIEcIFcIGcIHcIIcIJcEKcIKcILcIMcEycINcBNcBNcFHcBNcFHarAabqaaaaaaabqaaaaaaabqabqabqaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqabqcALcALcIOcIPcIPcIPcIQcALcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcBdcBecBecBecBecBfckrcBgcBhcBhcBhcBhcBiabqarBaaaaaaaaaaaaaaabZUbZUcfccPEcPFcPxcEYcEYcEYcEYcEYcEYcEYcEYcPycPycPycPzcPycPycPycPycPycPBcPAcPDcKZcKZcQbcLdcQfcLdcImcQwcMdcQzcIncIocQAcQCcQBcImcJgcnscgxcvmcwEcQKcJicJjcJkcJlcJmcJncJocJpcJqcCOczQdgSdgSdgSdgSdgSdgScJrcJscJtcJucJvcJwcEKbZUcFGbZUcFHcJxcJycJzcJAcJBarAarAabqabqabqabqabqabqabqaaaabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqcJCcJDcJCcIPcJEcIPcXxcJGcFNabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcCfcCfcCfcCfcCfaaaclIaaacCfcCfcCfcCfcCfaaaaupaaaaaaaaaaaaaaaaaabZUbZUbZUbZUcJRcogcogcogcogcNTcogcogcQVcogcogcogcRkcNTcNTcRlcRocPycRpcNUcRLcREcwjcRMcwjcRMcSvcImcSBcMdcSCcIocSPcSMcTncTecImcMScEXcgxcvmcKpcTwcKrcKscKtcKtcKtcKucKvcJpcgCcCOcKwdgScKxcfHcfscgLdgTcYScKBbRzcKEcKFcEKcrUcKGccscfYcFHcFHcFHcFHcFHcHfcKIarAabqaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabqabqcALcALcKJcIPcIPcIPcKKcALcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaaaaaabqabqabqaaaaaacKLabqaaaaaaabqabqaaaaaaarBabqaaaaaaaaaaaaaaaaaaaaaaaabZUbZUbZUbZUbZUbZUbZUbZUbZUbZUbZUcoDcuVcTFchycoDcTZcjicUacUocUecUqcUpcUpcUrcUpcUFcUVcUUcVbcUWcVmcVlcVucVtcVEcVvcWkcVKcWGcWlcWHcIxcIxcLlcLmcLncLocLpcLqcLrcJpcLscLtcLucBNcKxcfHchuchuchEcLxcLycLzcJucLAcEKcdNcLBceNchycLCbZUabqabqabqabqabqabqabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcHUcALcLDcLEcLFcALcHUabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupaaaaaaaaaaaaaaaaaaaaacKLaaaaaaaaaaaaabqaaaaaaaupaaacHZcHZcHZcFvcHZcHZcHZaaaabqaaaaaaaaaabqaaaabqabqabqaaabZUcWIchychychychycWTchycDUcWUcwncXrcXlcXlcXwcXAcXycXYcImcYocYncYwcIncYIcYycYNcYLcImcMgcMhcgxcmmcIxcMicMjcMkcLocLocMlcMmcMncJpcMocMpcMqdgScKxcfHchuckedgTcYTcKBcMtcMucMvcEKcjnchyceNchycMxbZUabqaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcALcFNcMycFNcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabearBarBarBaaaaaaaaacKLaaaaaaaaaarBarBarBauparBabqcHZcIRcIScIRcITcIRcHZcHZcFvcHZcFvcHZcHZaaaaaaabqaaaaaacHZcHZcHZcHZcHZbZUcKVbZUcDUcYOcDecRLcRUcRUcRUcRUcRUcRUcRUcImcImcImcImcYWcImcImcImcImbZUcNdcgxcmmcIxcNecMjcLocLpcLocNfcNgcNhckzcNjcNkcNldgVdgUdgUdgUdgUdgUcNocNncNpcNqcNrcEKchychyceNchybZUbZUbZUabqabqaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcFNcALcFNabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaarBabqcNtabqarBaaaaaaabqaaaaaaabqaaacHZcJHcJIcJJcJKcJHcGXcJMcJNcJOcJPcJQcHZaaacZmcIacIacIacLRcLTcLUcLVcHZcZvcZqcZwcDUcZIcZycZQcZOcZXdeidafdaddakcRUcNRcmVcmVcmWdancjecmYcmYcmZcNVcNWcNXcBIcIxcNYcNZcOacOacOacObcOccOdcOecOfcOgcOhcOicOjcOkcOlcJLcOncOocOpclncOrcOscOtcmYcmYcOucOvcOwcOxbZUbZUbZUcksaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaarBaaaabqaaaarBaaaaaaabqabqabqabqabqcHZcKMcHjcKOcHucKMcKMcKQcKRcKScKTcKUcHZaaadaodaucMMcMNcMOcMPcMBcMQcMRdaydaxdaMdaLdaOdaNdaPcYCdaUdaQdbbdaVdbfcRUcOMbZUbZUbZUbZUbZUbZUbZUbZUczIcONcOOcOPcOQcORcOScOTdblcOVcOWcLpcOXclCcOZcPacPbcPccPdcPecPfcPgcPhcPicOpclNcPjbZUbZUbZUbZUbZUdenclGcPmclJcPnclJcPoabqabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBarBarBarBarBaaaaaaaaaaaaaaaaaaaaacHZcLGcLHcLIcLJcvScjWcLMcLNcLOcLPcLQcLRcIadbpdbucFvcFvcHZcNFcNGcNHcHZcZvdbvdbycPydbFdbCdbGcRUdbLdbHdepdbNdeqcRUcOMbZUcPHcPIcPJbZUcPKcPLcPMbZUcPNcPOcPPcIxcPQcPRcPScPTcPUcPVcLpcPWcIxcPXcPYciccPccPZcQadcdcKNcQdcQecOpchycPjbZUcQgcQhcQibZUcQjcQkcQlbZUbZUbZUcksaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFvcMzcMAcMBcMCcMDcMEcMFcMGcMHcMIcMJcMKdcKdcKdcLcFvaaacHZcHZcHZcHZcHZdehdegbZUcPycPycPycPycRUcRUdercRUcRUcRUcRUcOMbZUcQDcQEcQFcQGcQHcQIcQJdescQLcQMcQNcIxcIxcIxcIxcIxcQOcIxcQPcrUcrUcfwcQQcfwcOpcOpcOpcOpcOpcOpcOpcOpchycQRcQScQTcQUbeVcQWcQWcQXcQYcQWaaaaaaaaaaaaabqabqaaaaaaabqaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHZcNucNvcNwcNxcNyclkcNAcNBcNCcNDcNEcHZcFvcFvcFvcFvaaaaaabZUcQvcQxcQxcQydejcyEcyEcyEcyEcyEcyEcyEdekcRndetcRmcRmcRqcRrcRscRtcRucRvcRwcRxcRycRycRzcRAcRBcRCcRDcmYcmYcmYcRFcmYcRGcmZcRHcRIcRJcRIcvlcmYcmYcmYcmYcOtcmYcmYcmYcRNbZUcnOcROcRPcQWcRQcRRcRScQWabqabqabqabqabqabqabqabqabqabqabqabqaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqcHZclpcOzcKMcOAclpcOBcODcOCcOEcOFcOGcHZaaaaaaaaaabqabqbZUbZUcRibZUbZUbZUcRjbZUbZUbZUbZUbZUbZUbZUbZUcSibZUbZUbZUbZUbZUcSjcRtcSkcRtcSlcSmcSncRtcSocSpcSqbZUbZUbZUbZUbZUbZUcCdcSrcfZbZUcSscStcSubZUcvYcwtchybZUbZUbZUbZUbZUbZUbZUbZUbZUcuEcQWcSwcSxcSycQWaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHZcPpcPqcKMcPqcPrcPscKMcKMcPtcKMcKMcHZaaaaaaaaaaaaabqcRhcSacSbcRhcSccSdcSecSfcSgcShcRhdemdelcSQcSRcSScSRcSTcSUcSOdexcSXcRtcSkcRtcSYcSZcTacRtcTbcTccTddeocTfcTgcThcTibZUcTjbZUbZUbZUcTkcTlcTmbZUcmicmicmibZUcTocTpcTqbZUcTrcTscTtbZUctocQWcTucTvcmtcQWaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHZcQmcQncKMcQocQpcPscQqcQrcQscQtcQucHZaaaaaaaaaaaaaaacRhcSIcSJcRhcSKcSLdeIcSNcRhcRhcRhdeLcTGcTHcTIcTJcTKcTLcTLcTMcTNcTOcTPcTQcRtcSYcTRcTacRtcSocSpcSYcLScTTcRtcTUcTVbZUcTWbZUabqaaacNzcTYcNzaaaaaaaaaaaabZUchychychycmycjicUbcjicUccUdcQWcOycUfcOycQWaaaabqaaaabqabqaaaaaaabqaupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHZcQZcRacKMcRacQZcRbcRccRdcRecRfcRgcFvaaaaaaabqaaaaaacRhcTycTzcRhcTAcTBcTCcTDcRhcTEdeMdeNdeNdeNdeOdePcUscTHcTHcUtcUucUvcUwcUxcUycSYcUzcTacRtcSocUAcUBcUCcUDcUEdeQcUGbZUcTjbZUabqabqcNzcUHcNzabqaaaaaaaaabZUchychychycUJcUKchycULbZUcmicQWcOycWJcWmcWKcWKcWKcWKcWKcWKcWKcWKcWLarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqcHZcHZcFvcHZcFvcHZdeucRVcRWcRXcRYcRZcHZaaaaaaabqaaaaaacRhcUgcUhcUicUjcUkcUlcUmcRhcUncRhcSOdeUdeYdeXdfocUYcUZcVacSOcSWcTacRtcVccVdcVecVfcVgcUwcVhcVicVjcVkcVkcSVcTScVkbZUaefabqaaaaaacNzcVncNzaaaaaaaaaaaabZUcVocVpcVqbZUcVrcVscVqbZUaaaabqcOycOycOyabqaaaabqaaaaaaabqabqaaacWRarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqcSzcSAdewcKPcSDcSEcSFcSGcSHcHZaaaaaaabeabeaaacRhcTycUNcRhcUOcUPcUQcURcUScUTcRhcSOdfrcVwcVxcUXcVycVzcVAcSOcSOcTacRtcRtcRtcSYcSZcTacRtcVBcVCcVDcTXabqabqaaaaaaabqaefabqaaacVFcVGcVHcVGcVIaaaaaaaaabZUbZUbZUbZUbZUbZUbZUbZUbZUaaaabqaaaaaaaaaabqabqabqabqabqabqaaaaaacWRarBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaacTxabqdeycHZcHZcHZcHZcHZcHZcHZaaaaaaabfaaacSOcSOcSOcSOcSOcSOcSOcVQdfscSOcSOcSOcVTcVUcVVcVWcUXcUYcUZcVacVXcSOcVYcRtcVZcWacWbcrrcWdcWacWecRtcWfcVkaaaabqabqabqabqabqabqabqcVGcWgcWhcWicVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaabqaaaaaacWRaupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaabqabqabqaaaaaaaaaaaaaaaaaaabfaaadfvcVLcVMcSOcVNcVOcVPcVQcVRcVScSOcUXdfwcWvcWucWwcWpcWxcWwcWycWzcSOcWAcWBcWCcWBcWBcWBcWBcWBcWCcWBcWDcTXaaaabqaaaaaaabqaaaaaaaaacVGcWEcWFdezdeAcxTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZjaaaaaaaaaaaaaaaaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabfaaadfvcWncVMcWocWpcWpcWpcWqcWrcWscWtcWpdgcdfGcWVcWVcWWcWVcWVcWXcWYcSOcWZcXacXbcXacXacXccXacXacXdcXecXfcVkabqabqaaacVGcVGcVGcVGcVGcVGcXgcXhcXicVGcVGcVGcVGcVGcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaabqaaaaaaaaaaaaaaacVJaaaaaaabqaaaaaaaaaaupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabeaaaaaaaaaabeabfabeabqabeaaaaaaaaaaaaabfabqdfvcWncWMcVRcWNcWOcUXcWPcWQcZlcZkdggdhidgpcXmcUXcXncUXcXmcZxcZCcSOcXpcTXcXpcTXcTXcTXcTXcTXcXpcTXcXpcTXaaaabqabqcVGcXqcmDcXscXtcVGcXucXvcVGcVGcmGcnhcmIcXzcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqauparBaupabqabqabqabqcVJabqabqabqabqabqabearBarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqdfvcXjcVMcVRcWNcWNcXkcSOcSOcSOcSOdhjcVacXIcXJcXJcXKcXJcXJcXLcZRcVkcXMcTXcXacTXaaaaaaaaacTXcXNcTXcXacTXaaaabqaaacNzcXOcXPcXQcXRcnkcXScXTcXUcnvcXVcXWcXXcnTcNzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaabqaaaaaaaaacYfaaaaaaabqaaaaaaaaaaaaaupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqcSOcSOcSOcXEcUXcUXcUXcXFcXGcSOcSOcSOcSOcSOdhldhldhldhldhlcSOcSOcVkcXpcTXcXpcTXaaaaaaaaacTXcXpcTXcZUcZTabqabqaaacNzcnUcYpcYqcYrcYrcYscYtcYucYucYucYucYvcnVcNzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaacYAcYAcYAcYAcYAabqcYBabqcYAcYAcYAcYAcYAaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqdfvcYgcYhcYicYjcYkcXKcYlcYmcSOdhnaaaaaacYDcYFcYFcYFcYFdahdaXcYFdaicZocYFcZodajcYFcYFcYFdaicZpcYFdcbdalcYEcYJaaacVGcYKcnWcYMdhocpdcYPcYQcYRdgXdgWcYUcYVcpecVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcYXcYYcYYcYYcYYcYZcZacZbcZccZccZccZccZdabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSOdfvcSOcSOdfvdfvdfvcSOdagcSOabqabqdazdbadaAdcTdcPdaBcZedcncZBdaCcZBdaDcZBdaCdaCdaDdaCdaEcZBdaCcZBcZBdaKdaJaaacVGcZrcZrcZrcZrcTkcZscZtcZucTkcZrcZrcZrcZrcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcZAcZAcZAcZAcZAaaacYBaaacZAcZAcZAcZAcZAabqarBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqabqabqcZFdaZcZedbkcZBddadbqdbhcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZgcYFaaacVGcZGcZHcZHcpfcZJcZKcZLcZMcZNcpgcZPcZPcZPcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaabqabqabqaaacYBaaaabqaaaabqaaaabqaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZSdbOcZedbPddccZBcZBdaJcZBcZBdbQdbYdbQdbQdbQcZBdbQdbQdbQdbYdbQcZBcZBdccdaiabqcVGcZPcZPcZPcqccZYcZZdaadabdaccqjcZPcZPcZPcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaacYAcYAcYAcYAcYAabqcYBabqcYAcYAcYAcYAcYAabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZVdaZcZedcedddcZBcZBdcFcZBcZBcYFdclcYFdcmcYFcZBcYFdcmcYFdclcYFcZBcZBcZBcYFaaacVGaOEcZPcZPcqJdapdaqdardasdatcqXcZHcZHdavcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcYXcYYcYYcYYcYYcYZcYBcZbcZccZccZccZccZdabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadalcYEdbaddmddacZBcZBdcocZBcZBdaCdcpdaCdaCdaCcZBdaCdaCdaCdcpdaCcZBcZBdcqdaiaaacVGcZrcZrcZrcZrdaFdaGdaHdaIdaFcZrcZrcZrcZrcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcZAcZAcZAcZAcZAaaacYBabqcZAcZAcZAcZAcZAaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZFdaZcZedcrcZBddccZBcZedcJcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcYFaaacVGcZGcZHcZHcrscZJdaRdaHdaSdaTcsdcZPcZPaOEcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaabqaaaabqaaacYBaaaabqaaaabqabqabqabqaupaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZVdbOcZedcMdcKdcNcZBcZedcncZBdbQdbQdcQdbQdbQcZBdbQdbQdbYdbQdbQcZBcZBdcRdcoaaacVGcZPcZPcZPcsedbccZZdbddabdbecsfcZPcZPcZPcVGaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaabqaaacYAcYAcYAcYAcYAabqdbgabqcYAcYAcYAcYAcYAabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZVdbOcZedcMdhvdcNcZBcZedcncZBdbQdbQdcQdbQdbQcZBdbQdbQdbYdbQdbQcZBcZBdcRdcoaaacVGcZPcZPcZPcsedbccZZdbddabdbecsfcZPcZPcZPcVGaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaabqaaacYAcYAcYAcYAcYAabqdbgabqcYAcYAcYAcYAcYAabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadalcYEdcGdcScYEdaXddedaWcYEdcUcYFdalcYHdaXcYFdaYcYFdcVdaXcYFdcmdcWdcWdaldbaabqcVGaOEcZPcZPcsmdbmdaqdbndbodatcsAcZHcZHdavcVGaaaaaaabqaaaaaaabqaaaaaaaaaaaaaaaaaaarBabqcYXcYYcYYcYYcYYcYZcYBcZbcZccZccZccZccZdabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZFdaZcZeddbcZEddgddfcZeddiddfddjddjcZeddnddlcZBddodaJddpddwddqcZDcZDddDdaJcVGcVGcZrcZrcZrcZrdaFdbrdaHdbsdaFcZrcZrcZrcZrcVGcVGaaaabqabqabqabqaaaaaaaaaaaaaaaaaaabqabqcZAcZAcZAcZAcZAaaadbtaaacZAcZAcZAcZAcZAaaaarBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZSdbOcZeddbcZEdalddEddFddiddfddfddGcZedbwcZBcZBdbicYFddHcZEcZEcZEcZEcZDcYFcVGcZGcZHcZHcsBcZJdbzdbAdaHdaScZMdbBcsDdbDcZPcZPcVGabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaabqabqabqaaaaaacVJabqaaaaaaabqabqaaaaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZVdaZcZeddIcZEcZEddTdbhddYddfddfdevcZedeKcZBcZBcZBdaYdeTcZEcZEcZEcZEcZDcYFcVGcZPcZPcZPcsFdbIdabdabdbJdabdabdbKcsKdbMcZPcZPcVGaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabearBarBarBaaaaaaaaacVJaaaaaaaaaarBarBarBauparBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfpdbadfMcZEcZEddTcZedgedgYdgQdgZcZedbxdhadhcdhbdhedhddhfdamcZWdhgcZqdcocVGcZPcZPcZPcsLdbRdbSdbTdbUdbVdbWdbXcsMdbZcZHdavcVGaaaabqaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaarBabqdcaabqarBaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfpdbadfMcZEcZEddTcZedgedgYdgQdgZcZedbxdhadhcdhbdhedhddhfdamcZWdhgdhwdcocVGcZPcZPcZPcsLdbRdbSdbTdbUdbVdbWdbXcsMdbZcZHdavcVGaaaabqaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaarBabqdcaabqarBaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhhcYFddgddgcYFddxcYEcYFcYFdalddxdaXcYFcYFdalddxcYEdaXcYFcYFdalcYEddycVGcVGcVGcVGcVGdcfdcgdchdcicYRdcjdckcVGcVGcVGcVGcVGaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaaabqaaaarBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaacVGdcsdctdcudcvdcwdcxdcydczdcAdcBdcCdcDdcEcVGaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBarBarBarBarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaacVGcVGdcHcVGdcIctdcsRctNctkctUdcIcVGdcDcVGcVGabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/MetaStation/z5.dmm b/_maps/map_files/MetaStation/z5.dmm deleted file mode 100644 index cdfad4b1cb4..00000000000 --- a/_maps/map_files/MetaStation/z5.dmm +++ /dev/null @@ -1,1693 +0,0 @@ -"aa" = (/turf/space,/area/space) -"ab" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_z5"; name = "northeast of the Mining Asteroid"; width = 18},/turf/space,/area/space) -"ac" = (/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/unexplored) -"ad" = (/turf/simulated/mineral,/area/mine/dangerous/unexplored) -"ae" = (/obj/structure/lattice,/turf/space,/area/space) -"af" = (/obj/structure/transit_tube{icon_state = "D-SE"},/obj/structure/lattice,/turf/space,/area/space) -"ag" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "E-SW"},/turf/space,/area/space) -"ah" = (/obj/structure/lattice,/obj/structure/transit_tube,/turf/space,/area/space) -"ai" = (/obj/structure/transit_tube,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/unexplored) -"aj" = (/obj/machinery/light/small,/obj/structure/transit_tube,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/unexplored) -"ak" = (/obj/structure/transit_tube{icon_state = "W-SE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/unexplored) -"al" = (/obj/structure/transit_tube{icon_state = "D-SW"},/turf/simulated/mineral,/area/mine/dangerous/unexplored) -"am" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/door/firedoor,/turf/space,/area/research_outpost/hallway) -"an" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/hallway) -"ao" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "NE-SW"},/turf/space,/area/space) -"ap" = (/obj/structure/transit_tube{icon_state = "D-NW"},/obj/structure/lattice,/turf/space,/area/space) -"aq" = (/turf/simulated/wall/r_wall,/area/research_outpost/spectro) -"ar" = (/turf/simulated/wall/r_wall,/area/toxins/misc_lab) -"as" = (/turf/simulated/wall/r_wall,/area/research_outpost/maintstore1) -"at" = (/obj/structure/transit_tube{icon_state = "D-NE"},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore1) -"au" = (/obj/structure/transit_tube{icon_state = "NW-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore1) -"av" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/mineral,/area/mine/dangerous/unexplored) -"aw" = (/obj/structure/transit_tube{icon_state = "E-SW"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/unexplored) -"ax" = (/obj/structure/transit_tube,/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating/airless/asteroid,/area/research_outpost/hallway) -"ay" = (/obj/structure/transit_tube/station,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/research_outpost/hallway) -"az" = (/obj/structure/transit_tube,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/research_outpost/hallway) -"aA" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/structure/transit_tube,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/hallway) -"aB" = (/obj/structure/transit_tube,/obj/structure/lattice,/turf/space,/area/space) -"aC" = (/obj/structure/transit_tube{icon_state = "W-SE"},/obj/structure/lattice,/turf/space,/area/space) -"aD" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "D-SW"},/turf/space,/area/space) -"aE" = (/obj/structure/transit_tube{icon_state = "S-NE"},/obj/structure/lattice,/turf/space,/area/space) -"aF" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bucket,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/spectro) -"aG" = (/obj/structure/reagent_dispensers/coolanttank,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/research_outpost/spectro) -"aH" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) -"aI" = (/obj/structure/table,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = 2},/obj/item/device/assembly/igniter{pixel_x = -3; pixel_y = 3},/obj/item/device/assembly/igniter{pixel_x = -4; pixel_y = -4},/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) -"aJ" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/research_outpost/maintstore1) -"aK" = (/obj/structure/closet/hydrant{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/research_outpost/maintstore1) -"aL" = (/obj/structure/table,/obj/item/device/plant_analyzer,/obj/item/weapon/stock_parts/cell,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/machinery/light/small{dir = 1},/obj/machinery/alarm{dir = 2; pixel_y = 25},/turf/simulated/floor/plating,/area/research_outpost/maintstore1) -"aM" = (/obj/structure/transit_tube{icon_state = "D-SW"},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore1) -"aN" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore1) -"aO" = (/obj/structure/transit_tube{icon_state = "NE-SW"},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore1) -"aP" = (/obj/structure/transit_tube{icon_state = "D-NW"},/turf/simulated/wall/r_wall,/area/research_outpost/hallway) -"aQ" = (/turf/simulated/wall/r_wall,/area/research_outpost/hallway) -"aR" = (/turf/simulated/floor/plasteel,/area/research_outpost/hallway) -"aS" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel,/area/research_outpost/hallway) -"aT" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "D-NE"},/turf/space,/area/space) -"aU" = (/obj/structure/transit_tube{icon_state = "NW-SE"},/obj/structure/lattice,/turf/space,/area/space) -"aV" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "N-S"},/turf/space,/area/space) -"aW" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/obj/item/stack/nanopaste,/obj/item/stack/nanopaste,/obj/item/stack/nanopaste,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/research_outpost/spectro) -"aX" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/spectro) -"aY" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/research_outpost/spectro) -"aZ" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) -"ba" = (/obj/structure/rack,/obj/item/stack/sheet/metal{pixel_x = 5; pixel_y = 5},/obj/item/stack/sheet/glass,/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/research_outpost/maintstore1) -"bb" = (/turf/simulated/floor/plating,/area/research_outpost/maintstore1) -"bc" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plating,/area/research_outpost/maintstore1) -"bd" = (/turf/simulated/wall,/area/research_outpost/maintstore1) -"be" = (/obj/structure/transit_tube{icon_state = "D-NE"},/obj/structure/table,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/research_outpost/maintstore1) -"bf" = (/obj/structure/transit_tube{icon_state = "E-NW"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/research_outpost/maintstore1) -"bg" = (/obj/structure/transit_tube/station,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/research_outpost/maintstore1) -"bh" = (/obj/structure/transit_tube{icon_state = "W-NE"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/research_outpost/maintstore1) -"bi" = (/obj/structure/transit_tube{icon_state = "D-NW"},/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plasteel,/area/research_outpost/maintstore1) -"bj" = (/turf/simulated/wall,/area/research_outpost/hallway) -"bk" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/brown,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/carpet,/area/research_outpost/hallway) -"bl" = (/obj/machinery/door_control{id = "rdorm1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/carpet,/area/research_outpost/hallway) -"bm" = (/obj/machinery/camera{c_tag = "Research Outpost Hallway Fore"; dir = 4; network = list("Research Outpost")},/turf/simulated/floor/plasteel,/area/research_outpost/hallway) -"bn" = (/obj/machinery/door_control{id = "rdorm2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/carpet,/area/research_outpost/hallway) -"bo" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/brown,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/carpet,/area/research_outpost/hallway) -"bp" = (/obj/structure/transit_tube{icon_state = "D-NE"},/obj/structure/lattice,/turf/space,/area/space) -"bq" = (/obj/structure/transit_tube{icon_state = "S-NW"},/obj/structure/lattice,/turf/space,/area/space) -"br" = (/obj/structure/transit_tube{icon_state = "N-SW"},/obj/structure/lattice,/turf/space,/area/space) -"bs" = (/obj/machinery/radiocarbon_spectrometer,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/research_outpost/spectro) -"bt" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/spectro) -"bu" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "Mass Spectrometry APC"; pixel_x = 24; pixel_y = 0; pixel_x = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/research_outpost/spectro) -"bv" = (/obj/structure/table,/obj/item/stack/sheet/mineral/plasma,/obj/item/stack/sheet/glass{amount = 50; pixel_x = 3; pixel_y = 3},/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/storage/box/monkeycubes,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) -"bw" = (/obj/structure/closet/crate/hydroponics,/obj/item/weapon/shovel/spade,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/cultivator,/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 13; pixel_y = 5},/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez,/turf/simulated/floor/plating,/area/research_outpost/maintstore1) -"bx" = (/obj/machinery/light/small,/obj/structure/closet/walllocker/emerglocker/north{dir = 1; pixel_y = -32},/turf/simulated/floor/plating,/area/research_outpost/maintstore1) -"by" = (/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/plating,/area/research_outpost/maintstore1) -"bz" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Auxiliary Storage"; req_access_txt = "0"; req_one_access_txt = "65;12"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/maintstore1) -"bA" = (/turf/simulated/floor/plasteel,/area/research_outpost/maintstore1) -"bB" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel,/area/research_outpost/maintstore1) -"bC" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/camera{c_tag = "Research Outpost Auxiliary Storage"; dir = 8; network = list("Research Outpost")},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel,/area/research_outpost/maintstore1) -"bD" = (/obj/structure/table,/turf/simulated/floor/carpet,/area/research_outpost/hallway) -"bE" = (/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/carpet,/area/research_outpost/hallway) -"bF" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{id_tag = "rminingdorm1"; name = "Dorm 1"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/research_outpost/hallway) -"bG" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{id_tag = "rdorm2"; name = "Dorm 2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/research_outpost/hallway) -"bH" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/structure/lattice,/turf/space,/area/space) -"bI" = (/turf/simulated/mineral/random,/area/mine/dangerous/unexplored) -"bJ" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "D-SE"},/turf/space,/area/space) -"bK" = (/obj/structure/transit_tube{icon_state = "E-SW"},/obj/structure/lattice,/turf/space,/area/space) -"bL" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "W-NE"},/turf/space,/area/space) -"bM" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "D-NW"},/turf/space,/area/space) -"bN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/spectro) -"bO" = (/obj/machinery/light_switch{pixel_x = 27; pixel_y = 0},/obj/structure/table,/obj/item/weapon/storage/box/syringes,/obj/item/weapon/storage/box/syringes,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/dropper/precision,/obj/item/weapon/reagent_containers/dropper/precision,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) -"bP" = (/turf/simulated/wall/r_wall,/area/research_outpost/sample) -"bQ" = (/obj/machinery/power/apc{dir = 8; name = "Auxiliary Storage APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plasteel,/area/research_outpost/maintstore1) -"bR" = (/turf/simulated/floor/plasteel{icon_state = "warning"},/area/research_outpost/maintstore1) -"bS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/research_outpost/maintstore1) -"bT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/sign/botany{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/research_outpost/maintstore1) -"bU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel,/area/research_outpost/hallway) -"bV" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitecorner"},/area/research_outpost/hallway) -"bW" = (/turf/simulated/wall/r_wall,/area/research_outpost/atmos) -"bX" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/atmos) -"bY" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/atmos) -"bZ" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "S-NE"},/turf/space,/area/space) -"ca" = (/obj/machinery/radiocarbon_spectrometer,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitegreen"},/area/research_outpost/spectro) -"cb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; layer = 2.4; on = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitegreen"},/area/research_outpost/spectro) -"cc" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitegreen"},/area/research_outpost/spectro) -"cd" = (/obj/machinery/door/airlock/research{name = "Chem Storage"; req_access_txt = "65"},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) -"ce" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/sample) -"cf" = (/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/sample) -"cg" = (/obj/structure/table,/obj/machinery/light{dir = 1},/obj/machinery/reagentgrinder,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/sample) -"ch" = (/obj/structure/table,/obj/item/weapon/storage/box/solution_trays,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/sample) -"ci" = (/obj/machinery/door/window/westleft{dir = 1; name = "Sample Preparation Loading"; req_access_txt = "65"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/research_outpost/sample) -"cj" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/computer/reconstitutor,/turf/simulated/floor/plasteel{dir = 1; icon_state = "bluecorner"},/area/research_outpost/sample) -"ck" = (/obj/machinery/hydroponics/soil,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/grass,/area/research_outpost/maintstore1) -"cl" = (/obj/machinery/hydroponics/soil,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/grass,/area/research_outpost/maintstore1) -"cm" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/research_outpost/maintstore1) -"cn" = (/obj/structure/sink{pixel_y = 30},/obj/structure/mirror{dir = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/research_outpost/hallway) -"co" = (/obj/structure/toilet{dir = 8},/obj/machinery/light/small{dir = 1},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/research_outpost/hallway) -"cp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitecorner"},/area/research_outpost/hallway) -"cq" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) -"cr" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/wall/r_wall,/area/research_outpost/atmos) -"cs" = (/obj/machinery/atmospherics/trinary/filter{density = 0; dir = 4; filter_type = 2; name = "Gas filter (N2 tank)"; on = 1},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"ct" = (/obj/machinery/atmospherics/trinary/filter{density = 0; dir = 4; filter_type = 1; name = "Gas filter (O2 tank)"; on = 1},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"cu" = (/obj/machinery/meter,/obj/machinery/power/apc{dir = 1; name = "Outpost Atmospherics APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 1},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"cv" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister,/obj/machinery/camera{c_tag = "Research Outpost Atmospherics"; dir = 2; network = list("Research Outpost")},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"cw" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/research_outpost/atmos) -"cx" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/research_outpost/atmos) -"cy" = (/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{dir = 6},/obj/machinery/door/airlock/research{name = "Spectrometry Lab"; req_access_txt = "65"},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/spectro) -"cz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/wall/r_wall,/area/research_outpost/spectro) -"cA" = (/obj/machinery/power/apc{dir = 4; name = "Chem Storage APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) -"cB" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/machinery/chem_master,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/sample) -"cC" = (/obj/machinery/chem_dispenser,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/sample) -"cD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/sample) -"cE" = (/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/research_outpost/sample) -"cF" = (/obj/structure/disposaloutlet{dir = 8},/obj/structure/disposalpipe/trunk{dir = 2},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore1) -"cG" = (/obj/machinery/hydroponics/soil,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/grass,/area/research_outpost/maintstore1) -"cH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/research_outpost/maintstore1) -"cI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/wall,/area/research_outpost/hallway) -"cJ" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/curtain/open/shower,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/research_outpost/hallway) -"cK" = (/obj/machinery/door_control{id = "rbath"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/research_outpost/hallway) -"cL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock{id_tag = "rbath"; name = "Bathroom"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/research_outpost/hallway) -"cM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) -"cN" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) -"cO" = (/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 5; level = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"cP" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 4; initialize_directions = 11; level = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"cQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 8},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"cR" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 10},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"cS" = (/obj/machinery/door/window/westleft,/turf/simulated/floor/plasteel,/area/research_outpost/atmos) -"cT" = (/obj/structure/transit_tube/station{dir = 8; icon_state = "closed"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/research_outpost/atmos) -"cU" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"cV" = (/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/plasteel{dir = 1; icon_state = "whitegreen"},/area/research_outpost/hallway) -"cW" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker/fuel,/obj/item/weapon/reagent_containers/glass/beaker/sulphuric{name = "beaker 'sulphuric acid'"},/obj/item/weapon/reagent_containers/glass/beaker/water,/obj/item/weapon/reagent_containers/glass/bottle/toxin,/obj/item/weapon/reagent_containers/dropper{pixel_y = -4},/obj/item/stack/sheet/mineral/plasma,/obj/item/weapon/reagent_containers/glass/beaker/fuel,/obj/item/weapon/reagent_containers/glass/beaker/sulphuric{name = "beaker 'sulphuric acid'"},/obj/item/weapon/reagent_containers/glass/beaker/water,/obj/item/weapon/reagent_containers/glass/bottle/toxin,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) -"cX" = (/obj/structure/sign/nosmoking_2{pixel_x = 32},/obj/machinery/camera{c_tag = "Research Outpost Mass Spectrometry"; dir = 8; network = list("Research Outpost")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) -"cY" = (/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/sample) -"cZ" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/sample) -"da" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/sample) -"db" = (/obj/machinery/light/small{dir = 4},/obj/machinery/power/apc{dir = 4; name = "Sample Preparation APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/sample) -"dc" = (/turf/simulated/wall/r_wall,/area/research_outpost/anomaly) -"dd" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/research_outpost/anomaly) -"de" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Anomalous Materials Loading"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/anomaly) -"df" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/closet/walllocker/emerglocker/west,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) -"dg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) -"dh" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 4},/obj/structure/sign/nosmoking_1{pixel_x = -32},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"di" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 6},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dj" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dk" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel,/area/research_outpost/atmos) -"dl" = (/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/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"dm" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Chem Storage"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) -"dn" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) -"do" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; layer = 2.4; on = 1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) -"dp" = (/obj/machinery/chem_heater,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/research_outpost/sample) -"dq" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/research_outpost/sample) -"dr" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/camera{c_tag = "Research Outpost Sample Preparation"; dir = 1; network = list("Research Outpost")},/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/firealarm{dir = 1; pixel_y = -24},/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 3; pixel_x = 2; pixel_y = 2},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/research_outpost/sample) -"ds" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/research_outpost/sample) -"dt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/research_outpost/sample) -"du" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Anomalous Materials Sample Preparation"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"dv" = (/obj/machinery/power/apc{dir = 1; name = "Anomalous Materials APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurplecorner"},/area/research_outpost/anomaly) -"dw" = (/obj/machinery/alarm{dir = 2; pixel_y = 25},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/research_outpost/anomaly) -"dx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/research_outpost/anomaly) -"dy" = (/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/research_outpost/anomaly) -"dz" = (/obj/machinery/light{dir = 1},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitepurple"},/area/research_outpost/anomaly) -"dA" = (/obj/machinery/conveyor{dir = 1; id = "anolaser"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/research_outpost/anomaly) -"dB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) -"dC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) -"dD" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 4},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dE" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan,/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dF" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; layer = 2.4; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 8; initialize_directions = 11; level = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dG" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/hallway) -"dI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Chem Storage"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) -"dJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/sample) -"dK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Sample Preparation"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/sample) -"dL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/research_outpost/sample) -"dM" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurple"},/area/research_outpost/anomaly) -"dN" = (/obj/structure/table,/obj/item/weapon/lighter/random,/obj/item/weapon/crowbar,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"dO" = (/obj/machinery/artifact_analyser,/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/bluegrid,/area/research_outpost/anomaly) -"dP" = (/obj/machinery/artifact_scanpad,/turf/simulated/floor/bluegrid,/area/research_outpost/anomaly) -"dQ" = (/obj/machinery/conveyor_switch{id = "anolaser"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"dR" = (/obj/machinery/conveyor{dir = 1; id = "anolaser"},/obj/structure/plasticflaps,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/research_outpost/anomaly) -"dS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) -"dT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) -"dU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/atmos{name = "Outpost Atmospherics"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dV" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dW" = (/obj/machinery/light/small,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/visible/cyan,/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dX" = (/obj/machinery/meter,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/visible/cyan,/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dY" = (/obj/structure/sign/fire{pixel_x = 32},/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dZ" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/unexplored) -"ea" = (/obj/docking_port/stationary{dwidth = 3; height = 5; id = "science_away"; name = "research outpost dock"; width = 7},/turf/space,/area/space) -"eb" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = -30; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"ec" = (/obj/machinery/camera{c_tag = "Research Outpost Lobby"; dir = 2; network = list("Research Outpost")},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/obj/machinery/light{dir = 1},/obj/structure/noticeboard/anomaly{icon_state = "nboard05"; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"ed" = (/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/scrubbers{level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"ee" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"ef" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/alarm{dir = 2; pixel_y = 25},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"eg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"eh" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/structure/closet/walllocker/emerglocker/north,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/hallway) -"ei" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "barber"},/area/research_outpost/hallway) -"ej" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "barber"},/area/research_outpost/hallway) -"ek" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/sign/chemistry{desc = "A warning sign which reads 'SAMPLE PREPARATION'"; name = "\improper SAMPLE PREPARATION"; pixel_y = 32},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "barber"},/area/research_outpost/hallway) -"el" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurple"},/area/research_outpost/anomaly) -"em" = (/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"en" = (/obj/structure/table,/obj/item/weapon/reagent_containers/dropper{pixel_y = -4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"eo" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"ep" = (/obj/machinery/power/emitter{anchored = 1; dir = 4; state = 2},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/research_outpost/anomaly) -"eq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/conveyor{dir = 1; id = "anolaser"},/obj/machinery/door/window/westleft{dir = 2; layer = 3.1; name = "laser testing"; req_access_txt = "65"},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/research_outpost/anomaly) -"er" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/anomaly) -"es" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurplecorner"},/area/research_outpost/hallway) -"et" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) -"eu" = (/turf/simulated/wall/r_wall,/area/research_outpost/power) -"ev" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_atmos{name = "Outpost Atmospherics"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor/plasteel,/area/research_outpost/power) -"ew" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 5},/turf/simulated/wall/r_wall,/area/research_outpost/power) -"ex" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/wall/r_wall,/area/research_outpost/power) -"ey" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/mineral,/area/mine/dangerous/unexplored) -"ez" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/unexplored) -"eA" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 8},/turf/simulated/floor/plating,/area/mine/dangerous/unexplored) -"eB" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"eC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"eD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"eE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"eF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"eG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"eH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"eI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"eJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"eK" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/hallway) -"eL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10; initialize_directions = 10; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "barber"},/area/research_outpost/hallway) -"eM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/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/plasteel{dir = 2; icon_state = "barber"},/area/research_outpost/hallway) -"eN" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"eO" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplecorner"},/area/research_outpost/anomaly) -"eP" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/research_outpost/anomaly) -"eQ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/research_outpost/anomaly) -"eR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/research_outpost/anomaly) -"eS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/research_outpost/anomaly) -"eT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/research_outpost/anomaly) -"eU" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"eV" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/research_outpost/hallway) -"eW" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) -"eX" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/light/small{dir = 1},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plating,/area/research_outpost/power) -"eY" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/sign/nosmoking_1{pixel_y = 32},/turf/simulated/floor/plating,/area/research_outpost/power) -"eZ" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/research_outpost/power) -"fa" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/sign/electricshock{pixel_x = 32},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/camera{c_tag = "Research Outpost Power Room"; dir = 2; network = list("Research Outpost")},/turf/simulated/floor/plating,/area/research_outpost/power) -"fb" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/unexplored) -"fc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"fd" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/research_outpost/hallway) -"fe" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/wood,/area/research_outpost/hallway) -"ff" = (/obj/structure/table,/obj/machinery/cell_charger,/turf/simulated/floor/wood,/area/research_outpost/hallway) -"fg" = (/obj/structure/table,/turf/simulated/floor/wood,/area/research_outpost/hallway) -"fh" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/wood,/area/research_outpost/hallway) -"fi" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/research_outpost/hallway) -"fj" = (/obj/machinery/vending/cola,/turf/simulated/floor/wood,/area/research_outpost/hallway) -"fk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/hallway) -"fl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/sign/science{desc = "A warning sign which reads 'ANOMALOUS MATERIALS'"; name = "\improper ANOMALOUS MATERIALS"; pixel_x = 32},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "barber"},/area/research_outpost/hallway) -"fm" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/research_outpost/anomaly) -"fn" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"fo" = (/obj/machinery/firealarm{pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"fp" = (/obj/structure/rack,/obj/item/clothing/head/welding,/obj/item/weapon/weldingtool,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"fq" = (/obj/structure/table,/obj/item/device/multitool,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"fr" = (/obj/machinery/light/small,/obj/machinery/hologram/holopad,/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"fs" = (/obj/machinery/camera{c_tag = "Research Outpost Anomalous Materials Lab"; dir = 8; network = list("Research Outpost")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"ft" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/structure/sign/science{desc = "A warning sign which reads 'ANOMALOUS MATERIALS'"; name = "\improper ANOMALOUS MATERIALS"; pixel_x = -32},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurplecorner"},/area/research_outpost/hallway) -"fu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) -"fv" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{name = "Power substation"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor/plating,/area/research_outpost/power) -"fw" = (/turf/simulated/floor/plating,/area/research_outpost/power) -"fx" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable,/turf/simulated/floor/plating,/area/research_outpost/power) -"fy" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/power) -"fz" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/wall/r_wall,/area/research_outpost/power) -"fA" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/unexplored) -"fB" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/unexplored) -"fC" = (/turf/simulated/mineral/random/high_chance,/area/mine/dangerous/unexplored) -"fD" = (/obj/structure/table,/obj/item/weapon/folder,/turf/simulated/floor/wood,/area/research_outpost/hallway) -"fE" = (/obj/structure/table,/obj/item/device/camera,/obj/item/weapon/stamp/granted,/turf/simulated/floor/wood,/area/research_outpost/hallway) -"fF" = (/turf/simulated/floor/wood,/area/research_outpost/hallway) -"fG" = (/obj/machinery/vending/snack,/obj/machinery/light{dir = 4},/turf/simulated/floor/wood,/area/research_outpost/hallway) -"fH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/hallway) -"fI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"fJ" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/research{name = "Anomalous Materials Locker Room"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"fK" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"fL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/camera{c_tag = "Research Outpost Hallway Engineering"; dir = 4; network = list("Research Outpost")},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"fM" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellowcorner"},/area/research_outpost/hallway) -"fN" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/machinery/power/apc{dir = 8; name = "Outpost Power APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/research_outpost/power) -"fO" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/research_outpost/power) -"fP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/research_outpost/power) -"fQ" = (/obj/machinery/portable_atmospherics/scrubber,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/research_outpost/power) -"fR" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/power) -"fS" = (/obj/machinery/mass_driver{dir = 4; id_tag = "Research Outpost"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/unexplored) -"fT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/firealarm{dir = 4; pixel_x = -28; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"fU" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light_switch{pixel_y = -23},/obj/machinery/power/apc{dir = 2; name = "Outpost Lobby APC"; pixel_x = 0; pixel_y = -24},/obj/structure/cable,/turf/simulated/floor/wood,/area/research_outpost/hallway) -"fV" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/simulated/floor/wood,/area/research_outpost/hallway) -"fW" = (/obj/structure/bookcase/manuals/xenoarchaeology,/turf/simulated/floor/wood,/area/research_outpost/hallway) -"fX" = (/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/turf/simulated/floor/wood,/area/research_outpost/hallway) -"fY" = (/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/research_outpost/hallway) -"fZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) -"ga" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"gb" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 23},/turf/simulated/floor/plasteel,/area/research_outpost/anomaly) -"gc" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/research_outpost/anomaly) -"gd" = (/obj/machinery/light{dir = 1},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/research_outpost/anomaly) -"ge" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/research_outpost/anomaly) -"gf" = (/obj/structure/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/color/latex,/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/research_outpost/anomaly) -"gg" = (/mob/living/carbon/human/monkey,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"gh" = (/obj/machinery/door/window/westleft{dir = 4; name = "Monkey Pen"; req_access_txt = "47"},/mob/living/carbon/human/monkey,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"gi" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"gj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/power/apc{dir = 4; name = "Outpost Hallways APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"gk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/power) -"gl" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/research_outpost/power) -"gm" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; layer = 2.4; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/research_outpost/power) -"gn" = (/obj/machinery/conveyor_switch{id = "archgunc"},/turf/simulated/floor/plating,/area/research_outpost/power) -"go" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plating,/area/research_outpost/power) -"gp" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/wall,/area/research_outpost/entry) -"gq" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/entry) -"gr" = (/obj/machinery/door/airlock/external{id_tag = "science_away"; name = "Research Outpost Dock Airlock"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/research_outpost/entry) -"gs" = (/obj/structure/sign/science,/turf/simulated/wall,/area/research_outpost/entry) -"gt" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_research{name = "Outpost Primary Access"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"gu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_research{name = "Outpost Primary Access"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"gv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/wood,/area/research_outpost/hallway) -"gw" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/wood,/area/research_outpost/hallway) -"gx" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) -"gy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"gz" = (/obj/machinery/door/window/westleft{dir = 8; name = "Locker room"; opacity = 0; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/anomaly) -"gA" = (/turf/simulated/floor/plasteel,/area/research_outpost/anomaly) -"gB" = (/obj/structure/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/color/latex,/obj/machinery/camera{c_tag = "Research Outpost Anomaly Lab Storage"; dir = 8; network = list("Research Outpost")},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/research_outpost/anomaly) -"gC" = (/obj/machinery/alarm{dir = 4; pixel_x = -25; pixel_y = 0},/mob/living/carbon/human/monkey,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"gD" = (/obj/structure/window/reinforced{dir = 4},/mob/living/carbon/human/monkey,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"gE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"gF" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"gG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/power) -"gH" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/light/small,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/firealarm{pixel_y = -24},/turf/simulated/floor/plating,/area/research_outpost/power) -"gI" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/research_outpost/power) -"gJ" = (/obj/machinery/driver_button{id_tag = "Research Outpost"; pixel_x = 6; pixel_y = -26},/obj/machinery/conveyor{dir = 4; id = "archgunc"},/turf/simulated/floor/plating,/area/research_outpost/power) -"gK" = (/obj/structure/sign/deathsposal{pixel_x = 32},/obj/machinery/disposal/deliveryChute{dir = 8; name = "disposal inlet"},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/power) -"gL" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall/r_wall,/area/research_outpost/power) -"gM" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/structure/transit_tube{icon_state = "N-SE"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/hallway) -"gN" = (/obj/structure/transit_tube{icon_state = "D-SW"},/turf/simulated/wall/r_wall,/area/research_outpost/hallway) -"gO" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/hallway) -"gP" = (/obj/structure/transit_tube{icon_state = "D-SW"},/turf/space,/area/space) -"gQ" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/entry) -"gR" = (/obj/machinery/computer/shuttle/science,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/research_outpost/entry) -"gS" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"gT" = (/obj/machinery/light{dir = 4},/obj/machinery/camera{c_tag = "Shuttle Docking Foyer"; dir = 8; network = list("MINE")},/obj/machinery/newscaster{pixel_x = 30; pixel_y = 1},/obj/machinery/computer/shuttle/mining,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) -"gU" = (/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"gV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6; level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"gW" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plating,/area/research_outpost/entry) -"gX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"gY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"gZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"ha" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plasteel,/area/research_outpost/med) -"hb" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/toxin,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/med) -"hc" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/firstaid/fire,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/med) -"hd" = (/turf/simulated/wall/r_wall,/area/research_outpost/tempstorage) -"he" = (/obj/machinery/mineral/input,/obj/machinery/camera{c_tag = "Research Outpost Temporary Storage"; dir = 2; network = list("Research Outpost")},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/research_outpost/tempstorage) -"hf" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/mineral/unloading_machine,/turf/simulated/floor/plasteel{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/research_outpost/tempstorage) -"hg" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/machinery/mineral/output,/obj/machinery/light_switch{pixel_x = 0; pixel_y = 23},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/research_outpost/tempstorage) -"hh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/tempstorage) -"hi" = (/obj/machinery/camera{c_tag = "Research Outpost Hallway Central"; dir = 4; network = list("Research Outpost")},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) -"hj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"hk" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/closet/secure_closet/xenoarchaeologist{req_access_txt = "47"},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel,/area/research_outpost/anomaly) -"hl" = (/obj/structure/closet/secure_closet/xenoarchaeologist{req_access_txt = "47"},/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced,/turf/simulated/floor/plasteel,/area/research_outpost/anomaly) -"hm" = (/obj/structure/closet/secure_closet/scientist,/obj/structure/window/reinforced,/turf/simulated/floor/plasteel,/area/research_outpost/anomaly) -"hn" = (/obj/machinery/door/window/westleft{dir = 2; name = "Locker room"; opacity = 0; req_access_txt = "65"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/research_outpost/anomaly) -"ho" = (/obj/structure/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/color/latex,/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/research_outpost/anomaly) -"hp" = (/obj/machinery/door/window/westleft{dir = 2; name = "Monkey Pen"; req_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"hq" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"hr" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"hs" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"ht" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{name = "Power substation"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor/plating,/area/research_outpost/power) -"hu" = (/obj/structure/transit_tube{icon_state = "D-NE"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/research_outpost/hallway) -"hv" = (/obj/structure/transit_tube{icon_state = "E-NW"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/research_outpost/hallway) -"hw" = (/obj/structure/transit_tube/station,/obj/structure/sign/securearea{desc = "A warning sign which reads 'INTERNALS REQUIRED'."; name = "INTERNALS REQUIRED"; pixel_x = 32; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/research_outpost/hallway) -"hx" = (/obj/structure/transit_tube{icon_state = "W-NE"},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting) -"hy" = (/obj/structure/transit_tube{icon_state = "D-NW"},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting) -"hz" = (/turf/simulated/wall/r_wall,/area/research_outpost/harvesting) -"hA" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/harvesting) -"hB" = (/obj/structure/transit_tube{icon_state = "D-NE"},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting) -"hC" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/structure/transit_tube{icon_state = "N-SE"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/entry) -"hD" = (/obj/structure/transit_tube{icon_state = "D-SW"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/research_outpost/entry) -"hE" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"hF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_research{name = "Research Shuttle Dock"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"hG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"hH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"hI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"hJ" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_medical{id_tag = ""; name = "Medbay"; req_access_txt = "0"; req_one_access_txt = "65;5"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/med) -"hK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/med) -"hL" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/med) -"hM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/conveyor_switch{id = "anotempload"; name = "conveyor switch"; pixel_x = 0; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) -"hN" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) -"hO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) -"hP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Temporary Storage"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) -"hQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) -"hR" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"hS" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"hT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"hU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"hV" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"hW" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"hX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"hY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"hZ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"ia" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"ib" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"ic" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellowcorner"},/area/research_outpost/hallway) -"id" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteyellow"},/area/research_outpost/hallway) -"ie" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteyellowcorner"},/area/research_outpost/hallway) -"if" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/firedoor,/obj/machinery/camera{c_tag = "Research Outpost Hallway Starboard"; dir = 2; network = list("Research Outpost"); pixel_x = 24},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"ig" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 32; pixel_y = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurple"},/area/research_outpost/hallway) -"ih" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting) -"ii" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Research Outpost Exotic Particles Airlock"; dir = 2; network = list("Research Outpost")},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel,/area/research_outpost/harvesting) -"ij" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/machinery/power/apc{dir = 4; name = "Exotic Particles APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel,/area/research_outpost/harvesting) -"ik" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting) -"il" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/research_outpost/harvesting) -"im" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/research_outpost/harvesting) -"in" = (/obj/machinery/artifact_scanpad,/turf/simulated/floor/bluegrid,/area/research_outpost/harvesting) -"io" = (/obj/machinery/artifact_harvester,/turf/simulated/floor/bluegrid,/area/research_outpost/harvesting) -"ip" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/structure/transit_tube{icon_state = "D-NE"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/entry) -"iq" = (/obj/structure/transit_tube{icon_state = "S-NW"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/research_outpost/entry) -"ir" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"is" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera{c_tag = "Research Outpost Shuttle Dock"; dir = 8; network = list("Research Outpost")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "arrival"},/area/research_outpost/entry) -"it" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/research_outpost/entry) -"iu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"iv" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"iw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"ix" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/sign/greencross,/turf/simulated/wall,/area/research_outpost/med) -"iy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/med) -"iz" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 4; name = "Outpost Medbay APC"; pixel_x = 24; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/med) -"iA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) -"iB" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/research_outpost/tempstorage) -"iC" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal/deliveryChute{dir = 8; name = "disposal inlet"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/research_outpost/tempstorage) -"iD" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/research_outpost/tempstorage) -"iE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) -"iF" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) -"iG" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) -"iH" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) -"iI" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurplecorner"},/area/research_outpost/hallway) -"iJ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/sign/examroom{desc = "A guidance sign which reads 'ISOLATION ROOM ONE'"; name = "\improper ISOLATION ROOM ONE"; pixel_y = -32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway) -"iK" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway) -"iL" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway) -"iM" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/machinery/firealarm{pixel_y = -24},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway) -"iN" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/sign/examroom{desc = "A guidance sign which reads 'ISOLATION ROOM TWO'"; name = "\improper ISOLATION ROOM TWO"; pixel_y = -32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway) -"iO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway) -"iP" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/sign/examroom{desc = "A guidance sign which reads 'ISOLATION ROOM THREE'"; name = "\improper ISOLATION ROOM THREE"; pixel_y = -32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway) -"iQ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurplecorner"},/area/research_outpost/hallway) -"iR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"iS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/machinery/firealarm{pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"iT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/sign/biohazard{pixel_y = -32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurplecorner"},/area/research_outpost/hallway) -"iU" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitepurple"},/area/research_outpost/hallway) -"iV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Exotic Particles Collection"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/harvesting) -"iW" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/research_outpost/harvesting) -"iX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/research_outpost/harvesting) -"iY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/external{name = "Access Airlock"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/harvesting) -"iZ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/research_outpost/harvesting) -"ja" = (/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/harvesting) -"jb" = (/obj/structure/table,/obj/item/weapon/anodevice{pixel_x = 3; pixel_y = 3},/obj/item/weapon/anodevice,/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/harvesting) -"jc" = (/obj/structure/transit_tube/station{icon_state = "closed"; dir = 4},/obj/structure/transit_tube_pod,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/research_outpost/entry) -"jd" = (/obj/machinery/hologram/holopad,/obj/machinery/light,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/research_outpost/entry) -"je" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/obj/machinery/alarm{dir = 1; pixel_y = -25},/turf/simulated/floor/plasteel{dir = 2; icon_state = "arrival"},/area/research_outpost/entry) -"jf" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/plasteel{dir = 2; icon_state = "arrival"},/area/research_outpost/entry) -"jg" = (/obj/structure/cable,/obj/structure/table,/obj/machinery/power/apc{dir = 0; name = "Outpost Shuttle Dock APC"; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cmo"},/area/research_outpost/entry) -"jh" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/research_outpost/entry) -"ji" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/alarm{dir = 1; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"jj" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"jk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"jl" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plasteel,/area/research_outpost/med) -"jm" = (/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"},/area/research_outpost/med) -"jn" = (/obj/machinery/light/small,/obj/machinery/camera{c_tag = "Research Outpost Medbay"; dir = 8; network = list("Research Outpost")},/obj/machinery/sleeper{dir = 8},/turf/simulated/floor/plasteel{icon_state = "warnwhite"; dir = 5},/area/research_outpost/med) -"jo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) -"jp" = (/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/research_outpost/tempstorage) -"jq" = (/obj/machinery/conveyor{dir = 9; id = "anotempload"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/research_outpost/tempstorage) -"jr" = (/turf/simulated/wall/r_wall,/area/research_outpost/maint) -"js" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;65"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/maint) -"jt" = (/turf/simulated/wall/r_wall,/area/research_outpost/iso1) -"ju" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/iso1) -"jv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Isolation room one"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/iso1) -"jw" = (/turf/simulated/wall/r_wall,/area/research_outpost/iso2) -"jx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/iso2) -"jy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Isolation room two"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/iso2) -"jz" = (/turf/simulated/wall/r_wall,/area/research_outpost/iso3) -"jA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/iso3) -"jB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Isolation Room Three"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/iso3) -"jC" = (/obj/machinery/door/airlock/maintenance{name = "Maintenance Storage"; req_access_txt = "0"; req_one_access_txt = "12;65"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"jD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore2) -"jE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/longtermstorage) -"jF" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Long Term Storage"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/longtermstorage) -"jG" = (/obj/machinery/alarm{dir = 1; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel,/area/research_outpost/harvesting) -"jH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/research_outpost/harvesting) -"jI" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/research_outpost/harvesting) -"jJ" = (/obj/structure/table,/obj/item/weapon/anobattery{pixel_x = -6; pixel_y = 2},/obj/item/weapon/anobattery{pixel_x = -2; pixel_y = -2},/obj/item/weapon/anobattery{pixel_x = 2; pixel_y = 2},/obj/item/weapon/anobattery{pixel_x = 6; pixel_y = 6},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/harvesting) -"jK" = (/turf/simulated/wall,/area/mine/dangerous/unexplored) -"jL" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'INTERNALS REQUIRED'."; name = "INTERNALS REQUIRED"; pixel_x = -32; pixel_y = 0},/turf/space,/area/space) -"jM" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/wall,/area/research_outpost/entry) -"jN" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/structure/transit_tube{icon_state = "N-SW"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/entry) -"jO" = (/turf/simulated/wall,/area/research_outpost/entry) -"jP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/wall,/area/research_outpost/entry) -"jQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Expedition Prep"; req_access_txt = "65"},/turf/simulated/floor/plating,/area/research_outpost/entry) -"jR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall,/area/research_outpost/entry) -"jS" = (/turf/simulated/wall,/area/research_outpost/tempstorage) -"jT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Temporary Storage Loading"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) -"jU" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor{dir = 2; id = "anotempload"},/turf/simulated/floor/plating,/area/research_outpost/maint) -"jV" = (/obj/machinery/conveyor{dir = 5; id = "anosample"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/research_outpost/maint) -"jW" = (/obj/machinery/conveyor{dir = 4; id = "anosample"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_y = 32},/turf/simulated/floor/plating,/area/research_outpost/maint) -"jX" = (/obj/machinery/disposal/deliveryChute{dir = 8},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 23},/turf/simulated/floor/plating,/area/research_outpost/maint) -"jY" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 4; name = "Maintenance APC"; pixel_x = 24; pixel_y = 0},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/research_outpost/maint) -"jZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/light/small{dir = 1},/obj/structure/table,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel,/area/research_outpost/iso1) -"ka" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/iso1) -"kb" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/alarm/isolation{locked = 0; pixel_y = 24},/turf/simulated/floor/plasteel,/area/research_outpost/iso1) -"kc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/light/small{dir = 1},/obj/structure/table,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel,/area/research_outpost/iso2) -"kd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/iso2) -"ke" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/alarm/isolation{locked = 0; pixel_y = 24},/turf/simulated/floor/plasteel,/area/research_outpost/iso2) -"kf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/light/small{dir = 1},/obj/structure/table,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel,/area/research_outpost/iso3) -"kg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/iso3) -"kh" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/alarm/isolation{locked = 0; pixel_y = 24},/turf/simulated/floor/plasteel,/area/research_outpost/iso3) -"ki" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"kj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/stool/bed,/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"kk" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/longtermstorage) -"kl" = (/turf/simulated/wall/r_wall,/area/research_outpost/longtermstorage) -"km" = (/obj/structure/sign/nosmoking_2{pixel_y = -32},/obj/machinery/camera{c_tag = "Research Outpost Exotic Particles Lab"; dir = 4; network = list("Research Outpost")},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/research_outpost/harvesting) -"kn" = (/obj/machinery/alarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/research_outpost/harvesting) -"ko" = (/obj/machinery/artifact_scanpad,/obj/machinery/light/small,/obj/machinery/firealarm{pixel_y = -24},/turf/simulated/floor/bluegrid,/area/research_outpost/harvesting) -"kp" = (/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/airless,/area/mine/abandoned) -"kq" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"kr" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"ks" = (/obj/structure/transit_tube{tag = "icon-E-SW"; icon_state = "E-SW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"kt" = (/turf/simulated/wall,/area/research_outpost/gearstore) -"ku" = (/obj/structure/closet/excavation,/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"kv" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"kw" = (/obj/structure/rack,/obj/item/weapon/storage/belt/archaeology,/obj/item/clothing/suit/space/eva/anomaly,/obj/item/clothing/head/helmet/space/eva/anomaly,/obj/item/clothing/mask/breath,/obj/machinery/light_switch{pixel_x = 0; pixel_y = 23},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"kx" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/plating,/area/research_outpost/gearstore) -"ky" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"kz" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"kA" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"kB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Loading area"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/tempstorage) -"kC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/camera{c_tag = "Research Outpost Loading Area"; dir = 2; network = list("Research Outpost")},/turf/simulated/floor/plasteel,/area/research_outpost/tempstorage) -"kD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/power/apc{dir = 1; name = "Temporary Storage APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel,/area/research_outpost/tempstorage) -"kE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; level = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/research_outpost/tempstorage) -"kF" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;65"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/research_outpost/maint) -"kG" = (/obj/machinery/conveyor{dir = 2; id = "anotempload"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/research_outpost/maint) -"kH" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_y = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/research_outpost/maint) -"kI" = (/obj/machinery/conveyor{dir = 1; id = "anosample"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/research_outpost/maint) -"kJ" = (/obj/machinery/conveyor_switch{id = "anosample"},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplate"; nitrogen = 0.01; oxygen = 0.01},/area/research_outpost/maint) -"kK" = (/turf/simulated/floor/plating,/area/research_outpost/maint) -"kL" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/maint) -"kM" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel,/area/research_outpost/iso1) -"kN" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 100; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel,/area/research_outpost/iso1) -"kO" = (/obj/machinery/power/apc{dir = 4; name = "Isolation Room One APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel,/area/research_outpost/iso1) -"kP" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel,/area/research_outpost/iso2) -"kQ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 100; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel,/area/research_outpost/iso2) -"kR" = (/obj/machinery/power/apc{dir = 4; name = "Isolation Room Two APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel,/area/research_outpost/iso2) -"kS" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel,/area/research_outpost/iso3) -"kT" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 100; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel,/area/research_outpost/iso3) -"kU" = (/obj/machinery/power/apc{dir = 4; name = "Isolation Room Three APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel,/area/research_outpost/iso3) -"kV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"kW" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"kX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/longtermstorage) -"kY" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/longtermstorage) -"kZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/power/apc{dir = 1; name = "Long Term Storage APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/longtermstorage) -"la" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/longtermstorage) -"lb" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet,/turf/simulated/floor/plasteel,/area/research_outpost/longtermstorage) -"lc" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting) -"ld" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"le" = (/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"lf" = (/turf/simulated/floor/plating/airless/asteroid/cave,/area/mine/dangerous/unexplored) -"lg" = (/turf/simulated/mineral,/area/mine/dangerous/explored) -"lh" = (/obj/structure/transit_tube{tag = "icon-NE-SW"; icon_state = "NE-SW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"li" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"lj" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/turf/simulated/mineral,/area/mine/dangerous/unexplored) -"lk" = (/obj/structure/closet/excavation,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"ll" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"lm" = (/obj/structure/rack,/obj/item/weapon/storage/belt/archaeology,/obj/item/clothing/suit/space/eva/anomaly,/obj/item/clothing/head/helmet/space/eva/anomaly,/obj/item/clothing/mask/breath,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"ln" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/floor/plating,/area/research_outpost/gearstore) -"lo" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"lp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"lq" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "Expedition Area APC"; pixel_x = 26; pixel_y = 0},/obj/machinery/camera{c_tag = "Research Outpost Expedition Preparation"; dir = 8; network = list("Research Outpost")},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"lr" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel,/area/research_outpost/tempstorage) -"ls" = (/obj/machinery/conveyor_switch/oneway{id = "anominerals"; pixel_y = 16},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plasteel{dir = 2; icon_state = "loadingarea"},/area/research_outpost/tempstorage) -"lt" = (/obj/machinery/conveyor{dir = 1; id = "anosample"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/research_outpost/maint) -"lu" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor/plating,/area/research_outpost/maint) -"lv" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the isolation room cameras."; layer = 4; name = "Isolation Room Telescreen"; network = list("Anomaly Isolation"); pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plating,/area/research_outpost/maint) -"lw" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 4},/turf/simulated/floor/plasteel,/area/research_outpost/iso1) -"lx" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/turf/simulated/floor/plasteel,/area/research_outpost/iso1) -"ly" = (/obj/machinery/conveyor_switch{id = "iso1"},/obj/machinery/camera{c_tag = "Research Outpost Isolation 1"; dir = 8; network = list("Anomaly Isolation","Research Outpost")},/turf/simulated/floor/plasteel,/area/research_outpost/iso1) -"lz" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 4},/turf/simulated/floor/plasteel,/area/research_outpost/iso2) -"lA" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/turf/simulated/floor/plasteel,/area/research_outpost/iso2) -"lB" = (/obj/machinery/conveyor_switch{id = "iso2"},/obj/machinery/camera{c_tag = "Research Outpost Isolation 2"; dir = 8; network = list("Anomaly Isolation","Research Outpost")},/turf/simulated/floor/plasteel,/area/research_outpost/iso2) -"lC" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 4},/turf/simulated/floor/plasteel,/area/research_outpost/iso3) -"lD" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/turf/simulated/floor/plasteel,/area/research_outpost/iso3) -"lE" = (/obj/machinery/conveyor_switch{id = "iso3"},/obj/machinery/camera{c_tag = "Research Outpost Isolation 3"; dir = 8; network = list("Anomaly Isolation","Research Outpost")},/turf/simulated/floor/plasteel,/area/research_outpost/iso3) -"lF" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"lG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/space_heater,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"lH" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/longtermstorage) -"lI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/longtermstorage) -"lJ" = (/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/longtermstorage) -"lK" = (/obj/machinery/camera{c_tag = "Research Outpost Long Term Storage"; dir = 8; network = list("Research Outpost")},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/research_outpost/longtermstorage) -"lL" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"lM" = (/obj/structure/transit_tube{icon_state = "W-NE"},/obj/structure/lattice,/turf/space,/area/space) -"lN" = (/obj/structure/transit_tube{icon_state = "D-NW"},/turf/space,/area/space) -"lO" = (/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"lP" = (/obj/item/stack/rods,/obj/structure/door_assembly/door_assembly_ext{name = "Broken External Airlock"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"lQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"lR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"lS" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/turf/simulated/mineral,/area/mine/dangerous/explored) -"lT" = (/obj/structure/transit_tube{tag = "icon-S-NE"; icon_state = "S-NE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"lU" = (/obj/structure/closet/excavation,/obj/machinery/status_display{layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"lV" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"lW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"lX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/airlock/glass_mining{name = "Equipment storage"; req_access_txt = "47"},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"lY" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"lZ" = (/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"ma" = (/obj/machinery/conveyor_switch{id = "anotempload"},/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1},/area/mine/dangerous/explored) -"mb" = (/obj/machinery/conveyor_switch{id = "anosample"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1},/area/mine/dangerous/explored) -"mc" = (/obj/machinery/conveyor{dir = 2; id = "anotempload"},/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1},/area/mine/dangerous/explored) -"md" = (/obj/machinery/conveyor{dir = 1; id = "anosample"},/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1},/area/mine/dangerous/explored) -"me" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor/plating,/area/research_outpost/maint) -"mf" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plating,/area/research_outpost/maint) -"mg" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/research_outpost/iso1) -"mh" = (/obj/machinery/conveyor{dir = 1; id = "iso1"},/obj/machinery/atmospherics/pipe/manifold4w/visible,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/research_outpost/iso1) -"mi" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/research_outpost/iso1) -"mj" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/research_outpost/iso2) -"mk" = (/obj/machinery/conveyor{dir = 1; id = "iso2"},/obj/machinery/atmospherics/pipe/manifold4w/visible,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/research_outpost/iso2) -"ml" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/research_outpost/iso2) -"mm" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/research_outpost/iso3) -"mn" = (/obj/machinery/conveyor{dir = 1; id = "iso3"},/obj/machinery/atmospherics/pipe/manifold4w/visible,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/research_outpost/iso3) -"mo" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/research_outpost/iso3) -"mp" = (/obj/structure/closet/walllocker/emerglocker/west,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"mq" = (/obj/structure/dispenser,/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"mr" = (/obj/machinery/firealarm{pixel_y = -24},/turf/simulated/floor/plasteel{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; tag = "icon-vault (EAST)"; temperature = 80},/area/research_outpost/longtermstorage) -"ms" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; tag = "icon-vault (NORTH)"; temperature = 80},/area/research_outpost/longtermstorage) -"mt" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; tag = "icon-vault (EAST)"; temperature = 80},/area/research_outpost/longtermstorage) -"mu" = (/turf/simulated/mineral/random,/area/mine/dangerous/explored) -"mv" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"mw" = (/obj/item/stack/rods,/turf/simulated/floor/plating/airless{icon_state = "damaged2"},/area/mine/abandoned) -"mx" = (/turf/simulated/wall,/area/mine/dangerous/explored) -"my" = (/obj/structure/transit_tube{tag = "icon-N-S"; icon_state = "N-S"},/turf/simulated/wall,/area/mine/dangerous/explored) -"mz" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"mA" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/research_outpost/gearstore) -"mB" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"mC" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"mD" = (/obj/structure/table,/obj/item/weapon/pickaxe,/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/obj/item/weapon/wrench,/obj/item/device/measuring_tape,/obj/item/weapon/storage/box/excavation,/obj/item/device/ano_scanner,/obj/item/weapon/storage/bag/fossils,/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"mE" = (/turf/simulated/floor/plating/airless/asteroid,/area/research_outpost/tempstorage) -"mF" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"mG" = (/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plating,/area/research_outpost/maint) -"mH" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 6; level = 1},/turf/simulated/floor/plating,/area/research_outpost/iso1) -"mI" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor{dir = 1; id = "iso1"},/obj/machinery/atmospherics/pipe/manifold/visible,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/research_outpost/iso1) -"mJ" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/turf/simulated/floor/plating,/area/research_outpost/iso1) -"mK" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 6; level = 1},/turf/simulated/floor/plating,/area/research_outpost/iso2) -"mL" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor{dir = 1; id = "iso2"},/obj/machinery/atmospherics/pipe/manifold/visible,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/research_outpost/iso2) -"mM" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/turf/simulated/floor/plating,/area/research_outpost/iso2) -"mN" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 6; level = 1},/turf/simulated/floor/plating,/area/research_outpost/iso3) -"mO" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor{dir = 1; id = "iso3"},/obj/machinery/atmospherics/pipe/manifold/visible,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/research_outpost/iso3) -"mP" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/turf/simulated/floor/plating,/area/research_outpost/iso3) -"mQ" = (/obj/structure/closet/hydrant{pixel_x = -32},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"mR" = (/obj/structure/rack,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/samplebags{pixel_x = 3; pixel_y = -3},/obj/machinery/power/apc{dir = 4; name = "Maintenance Storage APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"mS" = (/turf/simulated/wall/r_wall,/area/research_outpost/maintstore2) -"mT" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/longtermstorage) -"mU" = (/obj/structure/transit_tube{tag = "icon-N-SW"; icon_state = "N-SW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"mV" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"mW" = (/turf/simulated/floor/plating/airless{icon_state = "damaged3"},/area/mine/abandoned) -"mX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"mY" = (/obj/machinery/door/window/westleft,/obj/structure/sign/securearea{desc = "A warning sign which reads 'VACUUM'"; icon_state = "space"; layer = 4; name = "VACUUM"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"mZ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area/mine/dangerous/explored) -"na" = (/obj/structure/transit_tube{tag = "icon-N-S"; icon_state = "N-S"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/dangerous/explored) -"nb" = (/obj/machinery/suspension_gen,/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"nc" = (/obj/machinery/floodlight,/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"nd" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"ne" = (/obj/structure/table,/obj/item/weapon/pickaxe,/obj/item/weapon/wrench,/obj/item/device/measuring_tape,/obj/item/weapon/storage/box/excavation,/obj/item/device/ano_scanner,/obj/item/weapon/storage/bag/fossils,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"nf" = (/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"ng" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor/plating,/area/research_outpost/maint) -"nh" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor/plating,/area/research_outpost/maint) -"ni" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/research_outpost/iso1) -"nj" = (/obj/machinery/conveyor{dir = 1; id = "iso1"},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/research_outpost/iso1) -"nk" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1; pump_direction = 0},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/research_outpost/iso1) -"nl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/research_outpost/iso2) -"nm" = (/obj/machinery/conveyor{dir = 1; id = "iso2"},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/research_outpost/iso2) -"nn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1; pump_direction = 0},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/research_outpost/iso2) -"no" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/research_outpost/iso3) -"np" = (/obj/machinery/conveyor{dir = 1; id = "iso3"},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/research_outpost/iso3) -"nq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1; pump_direction = 0},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/research_outpost/iso3) -"nr" = (/obj/structure/rack,/obj/item/weapon/storage/box/monkeycubes,/obj/item/weapon/storage/box/monkeycubes,/obj/item/weapon/storage/box/monkeycubes,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"ns" = (/obj/structure/rack,/obj/item/weapon/storage/box/lights/bulbs{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/box/lights/tubes{pixel_x = -5; pixel_y = 5},/obj/item/weapon/storage/box/lights/mixed,/obj/machinery/light/small,/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"nt" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/turf/simulated/mineral/random,/area/mine/dangerous/explored) -"nu" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"nv" = (/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "damaged2"},/area/mine/abandoned) -"nw" = (/turf/simulated/wall,/area/mine/abandoned) -"nx" = (/obj/machinery/door/window/westleft,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"ny" = (/obj/structure/transit_tube/station{dir = 8; icon_state = "closed"; tag = "icon-closed (EAST)"},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/dangerous/explored) -"nz" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area/space) -"nA" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/gearstore) -"nB" = (/obj/machinery/door/airlock/external,/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"nC" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore2) -"nD" = (/obj/structure/transit_tube,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"nE" = (/obj/structure/transit_tube{tag = "icon-W-NE"; icon_state = "W-NE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"nF" = (/obj/item/stack/rods,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"nG" = (/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"nH" = (/obj/machinery/door/window/westleft,/obj/machinery/light/small,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"nI" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/transit_tube{tag = "icon-D-SW"; icon_state = "D-SW"},/obj/structure/lattice,/turf/space,/area/mine/dangerous/explored) -"nJ" = (/obj/structure/transit_tube{tag = "icon-N-SE"; icon_state = "N-SE"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/dangerous/explored) -"nK" = (/obj/structure/lattice,/obj/structure/transit_tube{tag = "icon-E-SW"; icon_state = "E-SW"},/turf/space,/area/mine/dangerous/explored) -"nL" = (/obj/structure/lattice,/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/turf/space,/area/mine/dangerous/explored) -"nM" = (/obj/structure/transit_tube,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/dangerous/explored) -"nN" = (/obj/structure/lattice,/obj/structure/transit_tube,/turf/space,/area/mine/dangerous/explored) -"nO" = (/obj/structure/transit_tube/station{dir = 2; icon_state = "closed"; tag = "icon-closed (EAST)"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'VACUUM'"; icon_state = "space"; layer = 4; name = "VACUUM"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/dangerous/explored) -"nP" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/research_outpost/gearstore) -"nQ" = (/turf/simulated/floor/mech_bay_recharge_floor{icon_state = "recharge_floor_asteroid"},/area/research_outpost/gearstore) -"nR" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/research_outpost/gearstore) -"nS" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"nT" = (/obj/machinery/door/window/westleft,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"nU" = (/turf/simulated/wall/r_wall,/area/mine/dangerous/explored) -"nV" = (/obj/structure/transit_tube/station{dir = 8; icon_state = "closed"; tag = "icon-opening (EAST)"},/obj/structure/transit_tube_pod,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/dangerous/explored) -"nW" = (/obj/structure/transit_tube{tag = "icon-NE-SW"; icon_state = "NE-SW"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"nX" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/turf/simulated/mineral,/area/mine/dangerous/explored) -"nY" = (/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"nZ" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "medium"},/turf/space,/area/space) -"oa" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"ob" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"oc" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless{icon_state = "damaged2"},/area/mine/abandoned) -"od" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/mine/dangerous/explored) -"oe" = (/obj/structure/window/reinforced,/obj/structure/lattice,/obj/structure/transit_tube{tag = "icon-E-NW"; icon_state = "E-NW"},/turf/space,/area/mine/dangerous/explored) -"of" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/structure/transit_tube{tag = "icon-D-NE"; icon_state = "D-NE"},/turf/simulated/floor/plating,/area/mine/dangerous/explored) -"og" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/structure/transit_tube,/turf/space,/area/mine/dangerous/explored) -"oh" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/turf/simulated/floor/plating,/area/mine/dangerous/explored) -"oi" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/transit_tube{tag = "icon-W-NE"; icon_state = "W-NE"},/turf/space,/area/mine/dangerous/explored) -"oj" = (/obj/machinery/door/window/westleft{dir = 2},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"ok" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/research_outpost/gearstore) -"ol" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/research_outpost/gearstore) -"om" = (/obj/machinery/camera{c_tag = "Research Outpost Mech Recharge Station"; dir = 8; network = list("Research Outpost")},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/research_outpost/gearstore) -"on" = (/turf/simulated/floor/plasteel{icon_state = "warning"},/area/research_outpost/gearstore) -"oo" = (/obj/structure/ore_box,/obj/machinery/camera{c_tag = "Research Outpost External Airlock"; dir = 8; network = list("Research Outpost")},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/research_outpost/gearstore) -"op" = (/obj/structure/transit_tube{tag = "icon-D-SW"; icon_state = "D-SW"},/turf/simulated/wall/r_wall,/area/mine/dangerous/explored) -"oq" = (/obj/structure/glowshroom,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"or" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"os" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"ot" = (/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/mine/abandoned) -"ou" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"ov" = (/obj/effect/decal/remains/xeno,/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"ow" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel/airless,/area/mine/dangerous/explored) -"ox" = (/obj/machinery/door/airlock/external{name = "Mining Bridge"; req_access_txt = "65"},/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/dangerous/explored) -"oy" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/research_outpost/gearstore) -"oz" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'VACUUM'"; icon_state = "space"; layer = 4; name = "VACUUM"; pixel_x = 0; pixel_y = -32},/obj/machinery/door/window/westleft,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"oA" = (/obj/structure/transit_tube{tag = "icon-E-NW"; icon_state = "E-NW"},/turf/simulated/wall/r_wall,/area/mine/dangerous/explored) -"oB" = (/obj/structure/transit_tube{tag = "icon-D-NE"; icon_state = "D-NE"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/dangerous/explored) -"oC" = (/obj/structure/transit_tube,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"oD" = (/obj/structure/transit_tube,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"oE" = (/obj/structure/transit_tube{tag = "icon-W-NE"; icon_state = "W-NE"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/dangerous/explored) -"oF" = (/obj/structure/transit_tube/station,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/dangerous/explored) -"oG" = (/obj/item/stack/rods,/obj/structure/lattice,/turf/space,/area/space) -"oH" = (/obj/item/weapon/shard,/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"oI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"oJ" = (/obj/structure/table,/turf/simulated/floor/plating/airless{icon_state = "floorscorched2"},/area/mine/abandoned) -"oK" = (/obj/structure/table,/turf/simulated/floor/plating/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"oL" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless{icon_state = "damaged3"},/area/mine/abandoned) -"oM" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/turf/space,/area/mine/dangerous/explored) -"oN" = (/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (SOUTHWEST)"; icon_state = "asteroidwarning"; dir = 10},/area/mine/dangerous/explored) -"oO" = (/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (SOUTHEAST)"; icon_state = "asteroidwarning"; dir = 6},/area/mine/dangerous/explored) -"oP" = (/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/dangerous/explored) -"oQ" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"oR" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"oS" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'VACUUM'"; icon_state = "space"; layer = 4; name = "VACUUM"; pixel_x = -32; pixel_y = -32},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"oT" = (/obj/machinery/door/window/westleft{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"oU" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"oV" = (/turf/simulated/floor/plating/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"oW" = (/turf/simulated/floor/plating/airless{icon_state = "floorscorched2"},/area/mine/abandoned) -"oX" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"oY" = (/obj/structure/alien/weeds/node,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"oZ" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"pa" = (/turf/space,/area/mine/dangerous/explored) -"pb" = (/obj/structure/glowshroom,/obj/machinery/light/small,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"pc" = (/obj/item/weapon/shard,/obj/structure/lattice,/turf/space,/area/space) -"pd" = (/turf/simulated/floor/plating/airless{icon_state = "damaged2"},/area/mine/abandoned) -"pe" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless{icon_state = "floorscorched2"},/area/mine/abandoned) -"pf" = (/obj/effect/decal/remains/xeno,/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"pg" = (/turf/space,/area/mine/dangerous/unexplored) -"ph" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"pi" = (/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"pj" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "small"},/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/space,/area/mine/abandoned) -"pk" = (/obj/structure/lattice,/turf/space,/area/mine/abandoned) -"pl" = (/obj/machinery/door/airlock/hatch,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"pm" = (/turf/simulated/mineral,/area/space) -"pn" = (/turf/simulated/wall,/area/mine/north_outpost) -"po" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/north_outpost) -"pp" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"pq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"pr" = (/turf/simulated/floor/plating/airless{icon_state = "damaged4"},/area/mine/abandoned) -"ps" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/plating/airless{icon_state = "floorscorched2"},/area/mine/abandoned) -"pt" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"pu" = (/obj/effect/decal/remains/xeno,/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless{icon_state = "damaged4"},/area/mine/abandoned) -"pv" = (/obj/structure/table,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"pw" = (/obj/structure/rack,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"px" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/simulated/floor/plating,/area/mine/north_outpost) -"py" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/mine/north_outpost) -"pz" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/smes{charge = 5e+006},/turf/simulated/floor/plating,/area/mine/north_outpost) -"pA" = (/obj/machinery/atmospherics/unary/tank/air,/turf/simulated/floor/plating,/area/mine/north_outpost) -"pB" = (/obj/effect/decal/remains/human,/turf/simulated/floor/plating/airless{icon_state = "damaged5"},/area/mine/abandoned) -"pC" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"pD" = (/obj/structure/alien/weeds/node,/turf/simulated/floor/plating/airless{icon_state = "floorscorched2"},/area/mine/abandoned) -"pE" = (/obj/structure/table,/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"pF" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/mine/north_outpost) -"pG" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/mine/north_outpost) -"pH" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/item/weapon/storage/box/lights/bulbs,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plating,/area/mine/north_outpost) -"pI" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9},/obj/machinery/meter,/turf/simulated/floor/plating,/area/mine/north_outpost) -"pJ" = (/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "floorscorched2"},/area/mine/abandoned) -"pK" = (/obj/item/weapon/shard{icon_state = "small"},/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"pL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/turf/simulated/floor/plating,/area/mine/north_outpost) -"pM" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/mine/north_outpost) -"pN" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/mine/abandoned) -"pO" = (/obj/structure/sink{pixel_y = 30},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/abandoned) -"pP" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/abandoned) -"pQ" = (/obj/structure/table,/obj/item/weapon/paper/crumpled,/obj/item/seeds/cherry,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/abandoned) -"pR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"pS" = (/obj/structure/alien/resin/membrane,/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"pT" = (/obj/structure/table,/obj/item/weapon/pickaxe,/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"pU" = (/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"pV" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"pW" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/mine/north_outpost) -"pX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"pY" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"pZ" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"qa" = (/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"qb" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"},/area/mine/north_outpost) -"qc" = (/obj/machinery/mineral/unloading_machine,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/north_outpost) -"qd" = (/obj/machinery/conveyor{dir = 4; id = "mining_north"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/north_outpost) -"qe" = (/obj/machinery/disposal/deliveryChute{dir = 8},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/north_outpost) -"qf" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/abandoned) -"qg" = (/turf/simulated/floor/plasteel{icon_state = "damaged2"},/area/mine/abandoned) -"qh" = (/obj/machinery/door/airlock/hatch,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/abandoned) -"qi" = (/obj/structure/alien/weeds,/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"qj" = (/obj/effect/decal/remains/xeno,/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless{icon_state = "damaged2"},/area/mine/abandoned) -"qk" = (/obj/structure/table,/obj/item/weapon/shovel,/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"ql" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"qm" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"qn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"qo" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "Mining North Outpost APC"; pixel_x = 26; pixel_y = 0},/obj/machinery/conveyor_switch{id = "mining_north"},/obj/machinery/camera{c_tag = "North Outpost"; dir = 8; network = list("MINE")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/north_outpost) -"qp" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/north_outpost) -"qq" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_north"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"qr" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/mine/north_outpost) -"qs" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/north_outpost) -"qt" = (/turf/simulated/floor/plasteel{icon_state = "damaged3"},/area/mine/abandoned) -"qu" = (/obj/structure/ore_box,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"qv" = (/obj/structure/table,/obj/item/weapon/storage/backpack/satchel,/obj/item/clothing/glasses/meson,/obj/machinery/light/small{dir = 8},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"qw" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"qx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"qy" = (/obj/machinery/door/airlock/glass_mining{name = "Break Room"; req_access_txt = "54"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"qz" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{tag = "icon-manifold-b-f (EAST)"; dir = 4},/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"qA" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/north_outpost) -"qB" = (/obj/machinery/door/window/northleft{dir = 8; name = "Pneumatic Tube Access"},/obj/machinery/disposal/deliveryChute{dir = 8; pixel_x = 8; pixel_y = 0},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/north_outpost) -"qC" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/north_outpost) -"qD" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/mine/dangerous/explored) -"qE" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/north_outpost) -"qF" = (/obj/machinery/conveyor_switch{id = "mining_north"},/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/north_outpost) -"qG" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/north_outpost) -"qH" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/xenos,/obj/item/clothing/head/xenos,/turf/simulated/floor/plasteel{icon_state = "damaged2"},/area/mine/abandoned) -"qI" = (/obj/structure/table,/obj/item/stack/sheet/mineral/sandstone{amount = 30},/turf/simulated/floor/plasteel{icon_state = "damaged3"},/area/mine/abandoned) -"qJ" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless{icon_state = "floorgrime"},/area/mine/abandoned) -"qK" = (/obj/structure/alien/resin/wall,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"qL" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"qM" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"qN" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"qO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"qP" = (/obj/structure/rack,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/north_outpost) -"qQ" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/mine/north_outpost) -"qR" = (/obj/structure/alien/weeds/node,/turf/simulated/floor/plating/airless{icon_state = "floorgrime"},/area/mine/abandoned) -"qS" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless{icon_state = "damaged4"},/area/mine/abandoned) -"qT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"qU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"qV" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/abandoned) -"qW" = (/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/airless,/area/mine/abandoned) -"qX" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"qY" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"qZ" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"ra" = (/obj/effect/decal/remains/human,/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"rb" = (/obj/structure/alien/weeds/node,/turf/simulated/floor/plating/airless{icon_state = "damaged2"},/area/mine/abandoned) -"rc" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/abandoned) -"rd" = (/obj/structure/rack,/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/abandoned) -"re" = (/obj/machinery/door/airlock/external{name = "Mining North Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"rf" = (/turf/simulated/mineral/random/labormineral,/area/mine/dangerous/unexplored) -"rg" = (/obj/item/weapon/rack_parts,/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/abandoned) -"rh" = (/obj/structure/girder/displaced,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned) -"ri" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/dangerous/explored) -"rj" = (/obj/structure/lattice,/obj/structure/window/reinforced,/turf/space,/area/mine/dangerous/explored) -"rk" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/space,/area/mine/north_outpost) -"rl" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost) -"rm" = (/turf/simulated/floor/mech_bay_recharge_floor/airless,/area/mine/north_outpost) -"rn" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost) -"ro" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"rp" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"rq" = (/turf/simulated/wall/r_wall,/area/mine/laborcamp) -"rr" = (/obj/structure/alien/resin/wall,/turf/simulated/floor/plating/airless{icon_state = "floorgrime"},/area/mine/abandoned) -"rs" = (/turf/simulated/floor/plating/airless{icon_state = "floorgrime"},/area/mine/abandoned) -"rt" = (/obj/structure/girder,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned) -"ru" = (/obj/machinery/door/airlock/external{name = "Mining Bridge"; req_access_txt = "54"},/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost) -"rv" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/dangerous/explored) -"rw" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/north_outpost) -"rx" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/north_outpost) -"ry" = (/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/north_outpost) -"rz" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/north_outpost) -"rA" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"rB" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/obj/machinery/camera{c_tag = "Labor Camp Storage"; dir = 8; network = list("Labor")},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"rC" = (/turf/simulated/mineral/random/labormineral,/area/mine/dangerous/explored) -"rD" = (/obj/item/weapon/storage/toolbox/syndicate,/obj/structure/alien/weeds/node,/turf/simulated/floor/plating/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"rE" = (/obj/effect/decal/remains/xeno,/obj/item/clothing/suit/space/syndicate/black/red,/obj/item/clothing/head/helmet/space/syndicate/black/red,/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless{icon_state = "damaged4"},/area/mine/abandoned) -"rF" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/space,/area/mine/north_outpost) -"rG" = (/obj/machinery/door/airlock/external{name = "Mining North Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost) -"rH" = (/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/dangerous/explored) -"rI" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "white"; temperature = 273.15},/area/mine/laborcamp) -"rJ" = (/obj/structure/table,/obj/item/device/healthanalyzer,/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/plasteel{icon_state = "white"; temperature = 273.15},/area/mine/laborcamp) -"rK" = (/obj/structure/sign/redcross{pixel_y = 32},/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "white"; temperature = 273.15},/area/mine/laborcamp) -"rL" = (/obj/machinery/camera{c_tag = "Labor Camp Medical"; dir = 8; network = list("Labor")},/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor/plasteel{icon_state = "white"; temperature = 273.15},/area/mine/laborcamp) -"rM" = (/turf/simulated/wall,/area/mine/laborcamp) -"rN" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"rO" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"rP" = (/turf/simulated/floor/plating/airless/asteroid{temperature = 273.15},/area/mine/dangerous/explored) -"rQ" = (/obj/machinery/door/airlock/external{name = "External Airlock"; req_access_txt = "0"},/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/abandoned) -"rR" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille/broken,/obj/item/weapon/shard{icon_state = "small"},/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"rS" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/dangerous/explored) -"rT" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/dangerous/explored) -"rU" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/dangerous/explored) -"rV" = (/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/north_outpost) -"rW" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/dangerous/explored) -"rX" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 5},/area/mine/dangerous/explored) -"rY" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp) -"rZ" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp) -"sa" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=1-Storage"; location = "Sleeper"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp) -"sb" = (/obj/machinery/light/small{dir = 4},/obj/structure/stool/bed/roller,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp) -"sc" = (/obj/structure/closet/crate/internals,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"sd" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"se" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=2-NMine"; location = "1-Storage"},/mob/living/simple_animal/bot/secbot/beepsky{desc = "Powered by tears and swet of laborer."; name = "Prison Ofitser"},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp) -"sf" = (/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp) -"sg" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=3-SMine"; location = "2-NMine"},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp) -"sh" = (/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/dangerous/explored) -"si" = (/obj/effect/decal/remains/human,/turf/simulated/floor/plating/airless/asteroid{temperature = 273.15},/area/mine/dangerous/explored) -"sj" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/dangerous/explored) -"sk" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/mine/laborcamp) -"sl" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/mine/laborcamp) -"sm" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/mine/laborcamp) -"sn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/mine/laborcamp) -"so" = (/obj/machinery/door/airlock{name = "Labor Camp Storage"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"sp" = (/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/dangerous/explored) -"sq" = (/obj/structure/girder/reinforced,/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/dangerous/explored) -"sr" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/abandoned) -"ss" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/abandoned) -"st" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) -"su" = (/obj/structure/table,/obj/item/trash/plate,/obj/item/weapon/kitchen/utensil/fork,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"sv" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"sw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"sx" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"sy" = (/obj/item/device/radio/intercom/locked/prison{dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"sz" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"sA" = (/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/dangerous/explored) -"sB" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille/broken,/obj/item/stack/rods,/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned) -"sC" = (/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/airless{icon_state = "asteroidplating"},/area/mine/abandoned) -"sD" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"sE" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=7-Sleeper"; location = "6-Vending"},/mob/living/simple_animal/mouse,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"sF" = (/obj/machinery/door/airlock{name = "Vending"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"sG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"sH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"sI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"sJ" = (/obj/machinery/door/poddoor/preopen{id_tag = "Labor"; name = "labor camp blast door"},/obj/machinery/door/airlock{name = "Labor Camp External Access"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"sK" = (/obj/structure/ore_box,/turf/simulated/floor/plating/airless/asteroid{temperature = 273.15},/area/mine/dangerous/explored) -"sL" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/dangerous/unexplored) -"sM" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/dangerous/unexplored) -"sN" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/dangerous/unexplored) -"sO" = (/obj/machinery/door/airlock/glass_security{id_tag = "laborcamp_away"; name = "Labor Camp Shuttle Security Airlock"; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"sP" = (/obj/machinery/vending/sustenance,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"sQ" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"sR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/wall,/area/mine/laborcamp) -"sS" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"sT" = (/obj/machinery/flasher{id = "Labor"; pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11},/turf/simulated/wall,/area/mine/laborcamp) -"sU" = (/obj/machinery/conveyor_switch/oneway{id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"sV" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; temperature = 273.15},/area/mine/laborcamp) -"sW" = (/turf/simulated/floor/plasteel{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; temperature = 273.15},/area/mine/dangerous/explored) -"sX" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/unexplored) -"sY" = (/obj/machinery/light_switch{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"sZ" = (/obj/machinery/camera{c_tag = "Labor Camp Central"; network = list("Labor")},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"ta" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"tb" = (/obj/machinery/conveyor{dir = 2; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"tc" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"td" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/turf/simulated/floor/plasteel{tag = "icon-asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/laborcamp) -"te" = (/obj/machinery/mineral/unloading_machine{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/laborcamp) -"tf" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel{tag = "icon-asteroidwarning (WEST)"; icon_state = "asteroidwarning"; dir = 8; temperature = 273.15},/area/mine/dangerous/explored) -"tg" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor/plating/airless/asteroid{temperature = 273.15},/area/mine/dangerous/explored) -"th" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) -"ti" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) -"tj" = (/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{id = "Labor"; name = "Labor Camp Lockdown"; pixel_x = 0; pixel_y = 28; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"tk" = (/obj/machinery/door/airlock/glass_security{id_tag = "laborcamp_away"; name = "Labor Camp Shuttle Prisoner Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"tl" = (/obj/machinery/door/poddoor/preopen{id_tag = "Labor"; name = "labor camp blast door"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"tm" = (/turf/simulated/floor/plasteel,/area/mine/laborcamp) -"tn" = (/obj/machinery/mineral/processing_unit_console{machinedir = 6},/turf/simulated/wall,/area/mine/laborcamp) -"to" = (/obj/structure/plasticflaps,/obj/machinery/conveyor{dir = 2; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"tp" = (/obj/machinery/camera{c_tag = "Labor Camp External"; dir = 4; network = list("Labor")},/turf/simulated/floor/plasteel{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1; temperature = 273.15},/area/mine/dangerous/explored) -"tq" = (/obj/machinery/conveyor_switch/oneway{id = "gulag"},/turf/simulated/floor/plasteel{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1; temperature = 273.15},/area/mine/dangerous/explored) -"tr" = (/turf/simulated/floor/plasteel{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1; temperature = 273.15},/area/mine/dangerous/explored) -"ts" = (/obj/effect/decal/cleanable/blood/old,/turf/simulated/floor/plating/airless/asteroid{temperature = 273.15},/area/mine/dangerous/explored) -"tt" = (/obj/machinery/mineral/stacking_unit_console{machinedir = 2},/turf/simulated/wall,/area/mine/laborcamp) -"tu" = (/obj/machinery/mineral/processing_unit{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"tv" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating/airless/asteroid{temperature = 273.15},/area/mine/laborcamp) -"tw" = (/obj/machinery/computer/shuttle/labor/one_way,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"tx" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=6-Vending"; location = "5-Central"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"ty" = (/obj/machinery/mineral/stacking_machine{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"tz" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"tA" = (/obj/machinery/conveyor{dir = 10; icon_state = "conveyor0"; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"tB" = (/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/dangerous/explored) -"tC" = (/obj/item/stack/sheet/metal{amount = 5},/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/dangerous/explored) -"tD" = (/turf/simulated/wall/r_wall,/area/mine/laborcamp/security) -"tE" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp/security) -"tF" = (/obj/machinery/camera{c_tag = "Labor Camp Security Hallway"; dir = 8; network = list("Labor"); pixel_x = 0; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) -"tG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/mine/laborcamp/security) -"tH" = (/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"tI" = (/turf/simulated/wall,/area/mine/laborcamp/security) -"tJ" = (/obj/structure/girder,/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/laborcamp/security) -"tK" = (/obj/docking_port/stationary{dir = 8; dwidth = 2; height = 5; id = "laborcamp_away"; name = "labor camp"; width = 9},/turf/space,/area/space) -"tL" = (/obj/machinery/door/airlock/glass_security{id_tag = "laborcamp_away"; name = "Labor Camp Shuttle Prisoner Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp/security) -"tM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp/security) -"tN" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Backroom"; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"tO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/laborcamp/security) -"tP" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"tQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/mine/laborcamp/security) -"tR" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Labor Camp APC"; pixel_y = 24},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=5-Central"; location = "4-Maint"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/mine/laborcamp) -"tS" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/mine/laborcamp/security) -"tT" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp External Access"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"tU" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Monitoring"; req_access_txt = "2"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"tV" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/laborcamp/security) -"tW" = (/obj/machinery/door/airlock/maintenance{name = "Labor Camp Maintenance"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"tX" = (/obj/structure/plasticflaps/mining,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"tY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/wall,/area/mine/laborcamp/security) -"tZ" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/dangerous/explored) -"ua" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"ub" = (/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"uc" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"ud" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"ue" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 4; name = "Labor Camp Security APC"; pixel_x = 24; pixel_y = 0},/obj/machinery/camera{c_tag = "Labor Camp Monitoring"; network = list("Labor")},/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"uf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/wall,/area/mine/laborcamp/security) -"ug" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"uh" = (/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"ui" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/laborcamp/security) -"uj" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"uk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"ul" = (/obj/structure/plasticflaps/mining,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/wall,/area/mine/laborcamp/security) -"um" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=4-Maint"; location = "3-SMine"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp) -"un" = (/obj/structure/closet/crate,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/dangerous/explored) -"uo" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/closet/crate,/turf/simulated/floor/plating/airless/asteroid{temperature = 273.15},/area/mine/dangerous/explored) -"up" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) -"uq" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall/r_wall,/area/mine/laborcamp/security) -"ur" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"us" = (/obj/structure/stool/bed/chair/office/dark,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"ut" = (/obj/machinery/door_control{id = "Labor"; name = "Labor Camp Lockdown"; pixel_x = 28; pixel_y = 7; req_access_txt = "2"},/obj/machinery/flasher_button{id = "Labor"; pixel_x = 26; pixel_y = -3},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"uu" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"uv" = (/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"uw" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/obj/machinery/meter,/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"ux" = (/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"uy" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"uz" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"uA" = (/obj/machinery/computer/secure_data,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"uB" = (/obj/machinery/computer/security{name = "Labor Camp Monitoring"; network = list("Labor")},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"uC" = (/obj/machinery/computer/prisoner,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"uD" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"uE" = (/obj/machinery/space_heater,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"uF" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"uG" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"uH" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"uI" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"uJ" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"uK" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"uL" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/dangerous/explored) -"uM" = (/turf/simulated/floor/plating/airless,/area/space) -"uN" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) -"uO" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) -"uP" = (/turf/simulated/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/dangerous/explored) -"uQ" = (/obj/effect/decal/remains/human,/turf/simulated/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/dangerous/explored) -"uR" = (/obj/item/clothing/under/soviet,/obj/item/clothing/head/ushanka,/turf/simulated/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/dangerous/explored) -"uS" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/dangerous/explored) -"uT" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/dangerous/explored) -"uU" = (/obj/machinery/door/airlock/external{name = "Mining Bridge"; req_access_txt = "54"},/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost) -"uV" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/turf/space,/area/mine/dangerous/explored) -"uW" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/dangerous/explored) -"uX" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/obj/machinery/light{dir = 1},/turf/space,/area/mine/west_outpost) -"uY" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/turf/space,/area/mine/dangerous/explored) -"uZ" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/space,/area/mine/west_outpost) -"va" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/space,/area/mine/dangerous/explored) -"vb" = (/turf/simulated/wall/r_wall,/area/mine/maintenance) -"vc" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/dangerous/explored) -"vd" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/dangerous/explored) -"ve" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/dangerous/explored) -"vf" = (/turf/simulated/floor/bluegrid,/area/mine/maintenance) -"vg" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Mining Communications APC"; pixel_x = 1; pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/mine/maintenance) -"vh" = (/obj/machinery/telecomms/relay/preset/mining,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/mine/maintenance) -"vi" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/mine/maintenance) -"vj" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/space,/area/mine/dangerous/explored) -"vk" = (/obj/structure/lattice,/turf/space,/area/mine/dangerous/explored) -"vl" = (/obj/structure/lattice,/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/space,/area/mine/dangerous/explored) -"vm" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/bluegrid,/area/mine/maintenance) -"vn" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/mine/maintenance) -"vo" = (/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/bluegrid,/area/mine/maintenance) -"vp" = (/obj/machinery/camera{c_tag = "Communications Relay"; dir = 8; network = list("MINE")},/turf/simulated/floor/bluegrid,/area/mine/maintenance) -"vq" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) -"vr" = (/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) -"vs" = (/turf/simulated/wall,/area/mine/living_quarters) -"vt" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Communications"; req_access_txt = "48"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "vault"},/area/mine/maintenance) -"vu" = (/obj/item/clothing/under/rank/miner,/obj/effect/decal/remains/human,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) -"vv" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/dangerous/explored) -"vw" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/carpet,/area/mine/living_quarters) -"vx" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/carpet,/area/mine/living_quarters) -"vy" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"vz" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/obj/machinery/light,/turf/space,/area/mine/west_outpost) -"vA" = (/obj/structure/table,/turf/simulated/floor/carpet,/area/mine/living_quarters) -"vB" = (/turf/simulated/floor/carpet,/area/mine/living_quarters) -"vC" = (/obj/machinery/door/airlock{id_tag = "miningdorm1"; name = "Room 1"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/mine/living_quarters) -"vD" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) -"vE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"vF" = (/obj/structure/disposalpipe/segment,/turf/simulated/mineral/random,/area/mine/dangerous/unexplored) -"vG" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/carpet,/area/mine/living_quarters) -"vH" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/mine/living_quarters) -"vI" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/west_outpost) -"vJ" = (/obj/machinery/door/airlock{id_tag = "miningdorm2"; name = "Room 2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/mine/living_quarters) -"vK" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost) -"vL" = (/turf/simulated/floor/mech_bay_recharge_floor/airless,/area/mine/west_outpost) -"vM" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost) -"vN" = (/obj/structure/disposalpipe/segment,/obj/structure/sign/deathsposal,/turf/simulated/wall,/area/mine/living_quarters) -"vO" = (/turf/simulated/wall,/area/mine/west_outpost) -"vP" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/mine/west_outpost) -"vQ" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/mine/west_outpost) -"vR" = (/obj/machinery/computer/arcade,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"vS" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"vT" = (/obj/machinery/vending/cigarette,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"vU" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"vV" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm3"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/carpet,/area/mine/living_quarters) -"vW" = (/obj/structure/table,/obj/item/weapon/pickaxe,/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"vX" = (/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"vY" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"vZ" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost) -"wa" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost) -"wb" = (/obj/structure/rack,/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost) -"wc" = (/obj/structure/rack,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost) -"wd" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/trunk,/obj/machinery/door/window/northleft{dir = 2; name = "Pneumatic Tube Access"},/obj/machinery/disposal/deliveryChute{pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost) -"we" = (/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"wf" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/west_outpost) -"wg" = (/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/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/mine/west_outpost) -"wh" = (/obj/structure/table,/obj/machinery/microwave{pixel_y = 6},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"wi" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"wj" = (/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"wk" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"wl" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 31},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"wm" = (/obj/machinery/door/airlock{id_tag = "miningdorm3"; name = "Room 3"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/mine/living_quarters) -"wn" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"wo" = (/obj/machinery/recharge_station,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"wp" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"wq" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/eva) -"wr" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/eva) -"ws" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/mine/eva) -"wt" = (/turf/simulated/wall,/area/mine/eva) -"wu" = (/obj/structure/table,/obj/item/weapon/shovel,/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"wv" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"ww" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/west_outpost) -"wx" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/west_outpost) -"wy" = (/obj/machinery/door/airlock/external{name = "Mining West Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"wz" = (/obj/machinery/door/airlock/external{name = "Mining West Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost) -"wA" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/dangerous/explored) -"wB" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"wC" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"wD" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"wE" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"wF" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"wG" = (/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"wH" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"wI" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/table,/obj/item/weapon/pickaxe,/turf/simulated/floor/plasteel,/area/mine/eva) -"wJ" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/rack,/obj/item/clothing/suit/space/hardsuit/mining,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/mining,/turf/simulated/floor/plasteel,/area/mine/eva) -"wK" = (/obj/structure/rack,/obj/item/clothing/suit/space/hardsuit/mining,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/mining,/turf/simulated/floor/plasteel,/area/mine/eva) -"wL" = (/obj/machinery/light,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"wM" = (/obj/structure/table,/obj/item/weapon/storage/backpack/satchel,/obj/item/clothing/glasses/meson,/obj/machinery/light/small{dir = 8},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"wN" = (/obj/machinery/door/airlock/glass_mining{name = "Break Room"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"wO" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"wP" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"wQ" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/west_outpost) -"wR" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"wS" = (/obj/machinery/camera{c_tag = "Crew Area"; dir = 1; network = list("MINE")},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"wT" = (/obj/item/weapon/cigbutt,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"wU" = (/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"wV" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"wW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"wX" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"wY" = (/obj/machinery/camera{c_tag = "Storage Room"; dir = 1; network = list("MINE")},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"wZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"xa" = (/turf/simulated/wall,/area/mine/production) -"xb" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/mine/production) -"xc" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/mine/production) -"xd" = (/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},/obj/structure/table,/obj/item/device/gps/mining,/obj/item/device/gps/mining,/obj/item/device/gps/mining,/obj/item/device/gps/mining,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel,/area/mine/eva) -"xe" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/eva) -"xf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/eva) -"xg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plasteel,/area/mine/eva) -"xh" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"xi" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"xj" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/mine/west_outpost) -"xk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"xl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"xm" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"xn" = (/obj/machinery/conveyor_switch{id = "mining_west"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"xo" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/mine/living_quarters) -"xp" = (/obj/machinery/door/airlock/glass{name = "Crew Area"; req_access_txt = "48"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"xq" = (/obj/machinery/door/airlock/mining{name = "Mining Station Storage"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"xr" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/northleft{dir = 2; name = "Pneumatic Tube Access"},/obj/machinery/disposal/deliveryChute{pixel_y = 5},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) -"xs" = (/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) -"xt" = (/obj/structure/closet/crate,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) -"xu" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/mine/eva) -"xv" = (/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/eva) -"xw" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/eva) -"xx" = (/turf/simulated/floor/plasteel,/area/mine/eva) -"xy" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/plasteel,/area/mine/eva) -"xz" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/eva) -"xA" = (/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},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva) -"xB" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"xC" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"xD" = (/obj/machinery/power/apc{dir = 2; name = "Mining West Outpost APC"; pixel_x = 1; pixel_y = -23},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"xE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/camera{c_tag = "West Outpost"; dir = 1; network = list("MINE")},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"xF" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"xG" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"xH" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"},/area/mine/west_outpost) -"xI" = (/obj/machinery/mineral/unloading_machine{dir = 2},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost) -"xJ" = (/obj/machinery/conveyor{dir = 4; id = "mining_west"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost) -"xK" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal/deliveryChute{dir = 8},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost) -"xL" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/mine/west_outpost) -"xM" = (/obj/structure/toilet{dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/mine/living_quarters) -"xN" = (/obj/structure/sink{pixel_y = 30},/obj/machinery/light/small,/obj/structure/mirror{pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/mine/living_quarters) -"xO" = (/obj/machinery/door/airlock{name = "Toilet"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/mine/living_quarters) -"xP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"xQ" = (/obj/machinery/power/apc{dir = 1; name = "Mining Station Port Wing APC"; pixel_x = 1; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"xR" = (/obj/machinery/camera{c_tag = "Crew Area Hallway"; network = list("MINE")},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"xS" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/mine/living_quarters) -"xT" = (/obj/structure/window/reinforced,/obj/structure/lattice,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/space,/area/mine/living_quarters) -"xU" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/living_quarters) -"xV" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/production) -"xW" = (/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/mine/production) -"xX" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/production) -"xY" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/production) -"xZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/mine/production) -"ya" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_mining{name = "Mining Station EVA"; req_access_txt = "54"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/eva) -"yb" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/mine/eva) -"yc" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/eva) -"yd" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/eva) -"ye" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva) -"yf" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "54"},/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/eva) -"yg" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/wall,/area/mine/west_outpost) -"yh" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/west_outpost) -"yi" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/mine/west_outpost) -"yj" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_west"},/obj/structure/plasticflaps/mining,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"yk" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/mine/west_outpost) -"yl" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"ym" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yp" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"ys" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/living_quarters) -"yu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yv" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yw" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/production) -"yx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/turf/simulated/floor/plasteel,/area/mine/production) -"yy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/production) -"yz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel,/area/mine/production) -"yA" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/production) -"yB" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) -"yC" = (/obj/machinery/power/apc{dir = 2; name = "Mining EVA APC"; pixel_x = 1; pixel_y = -23},/obj/structure/cable,/obj/structure/table,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/weapon/hand_labeler,/turf/simulated/floor/plasteel,/area/mine/eva) -"yD" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/mine/eva) -"yE" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/mine/eva) -"yF" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor/plasteel,/area/mine/eva) -"yG" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel,/area/mine/eva) -"yH" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva) -"yI" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/mine/west_outpost) -"yJ" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/mine/west_outpost) -"yK" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/mine/west_outpost) -"yL" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/item/weapon/storage/box/lights/bulbs,/turf/simulated/floor/plating,/area/mine/west_outpost) -"yM" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/west_outpost) -"yN" = (/obj/machinery/conveyor_switch{id = "mining_west"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/west_outpost) -"yO" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yQ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yT" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/mine/living_quarters) -"yV" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/mine/living_quarters) -"yW" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/space,/area/mine/living_quarters) -"yX" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/space,/area/mine/production) -"yY" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/space,/area/mine/production) -"yZ" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/mine/production) -"za" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/production) -"zb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/mine/production) -"zc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/production) -"zd" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) -"ze" = (/obj/machinery/camera{c_tag = "Production Line External"; dir = 4; network = list("MINE")},/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/production) -"zf" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/production) -"zg" = (/obj/machinery/conveyor_switch{id = "mining_external"},/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/production) -"zh" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/production) -"zi" = (/obj/machinery/atmospherics/unary/tank/air{dir = 1; initialize_directions = 0; level = 1},/turf/simulated/floor/plating,/area/mine/west_outpost) -"zj" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/mine/west_outpost) -"zk" = (/obj/machinery/power/terminal{dir = 4},/obj/machinery/light/small,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/west_outpost) -"zl" = (/obj/structure/cable,/obj/machinery/power/smes{charge = 5e+006},/turf/simulated/floor/plating,/area/mine/west_outpost) -"zm" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/mine/living_quarters) -"zn" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/living_quarters) -"zo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "48"},/turf/simulated/floor/plating,/area/mine/living_quarters) -"zp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/mine/living_quarters) -"zq" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"zr" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/production) -"zs" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/production) -"zt" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) -"zu" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock{name = "Closet"; req_access_txt = "0"},/turf/simulated/floor/plating,/area/mine/production) -"zv" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/production) -"zw" = (/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/mine/production) -"zx" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/mine/production) -"zy" = (/obj/machinery/disposal/deliveryChute{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/production) -"zz" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/turf/simulated/floor/plating,/area/mine/production) -"zA" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/mine/production) -"zB" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/production) -"zC" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/production) -"zD" = (/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/mine/living_quarters) -"zE" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/mine/living_quarters) -"zF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/mine/living_quarters) -"zG" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/mine/living_quarters) -"zH" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/mine/living_quarters) -"zI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/mine/living_quarters) -"zJ" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/mine/living_quarters) -"zK" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/mine/living_quarters) -"zL" = (/obj/structure/rack,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/regular{pixel_x = -3; pixel_y = -3},/turf/simulated/floor/plating,/area/mine/living_quarters) -"zM" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/living_quarters) -"zN" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/living_quarters) -"zO" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"zP" = (/obj/structure/sign/xeno_warning_mining,/turf/simulated/wall,/area/mine/living_quarters) -"zQ" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/production) -"zR" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/production) -"zS" = (/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) -"zT" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/production) -"zU" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty{pixel_x = -3; pixel_y = -3},/obj/item/weapon/reagent_containers/blood/AMinus,/obj/item/weapon/reagent_containers/blood/BMinus{pixel_x = -4; pixel_y = 4},/obj/item/weapon/reagent_containers/blood/BPlus{pixel_x = 1; pixel_y = 2},/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OPlus{pixel_x = -2; pixel_y = -1},/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) -"zV" = (/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) -"zW" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/camera{c_tag = "Sleeper Room"; dir = 1; network = list("MINE")},/turf/simulated/floor/plasteel{icon_state = "white"; temperature = 273.15},/area/mine/living_quarters) -"zX" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/brute{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/mine/living_quarters) -"zY" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) -"zZ" = (/turf/simulated/floor/plating,/area/mine/living_quarters) -"Aa" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters) -"Ab" = (/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters) -"Ac" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/living_quarters) -"Ad" = (/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/living_quarters) -"Ae" = (/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/plasteel{icon_state = "warning"},/area/mine/living_quarters) -"Af" = (/obj/docking_port/stationary{dir = 8; dwidth = 3; height = 5; id = "mining_away"; name = "asteroid mine"; width = 7},/turf/space,/area/space) -"Ag" = (/obj/machinery/power/apc{dir = 8; name = "Mining Station Starboard Wing APC"; pixel_x = -27; pixel_y = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/production) -"Ah" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/mine/production) -"Ai" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) -"Aj" = (/obj/machinery/mineral/equipment_vendor,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) -"Ak" = (/turf/simulated/floor/plasteel,/area/mine/production) -"Al" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "loadingarea"},/area/mine/production) -"Am" = (/obj/structure/closet/crate,/obj/machinery/alarm{pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) -"An" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/structure/table,/obj/item/weapon/paper{anchored = 0; info = "A hastily written note has been scribbled here...

Please use the ore redemption machine in the science wing for smelting. PLEASE!

--The Research Staff"; name = "URGENT!"},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) -"Ao" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) -"Ap" = (/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) -"Aq" = (/obj/structure/cable,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/simulated/floor/plating,/area/mine/living_quarters) -"Ar" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/living_quarters) -"As" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/mine/living_quarters) -"At" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/mine/living_quarters) -"Au" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "54"},/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/living_quarters) -"Av" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/production) -"Aw" = (/turf/simulated/floor/plasteel{icon_state = "loadingarea"},/area/mine/production) -"Ax" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/mine/production) -"Ay" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"},/area/mine/production) -"Az" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) -"AA" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/living_quarters) -"AB" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/mine/production) -"AC" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/mine/production) -"AD" = (/obj/item/device/radio/beacon,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/mine/production) -"AE" = (/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 4},/area/mine/production) -"AF" = (/obj/machinery/door/airlock/external{id_tag = "mining_away"; name = "Mining Shuttle Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) -"AG" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) -"AH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel,/area/mine/production) -"AI" = (/obj/machinery/camera{c_tag = "Processing Area Room"; dir = 8; network = list("MINE")},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = 28},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) -"AJ" = (/obj/machinery/mineral/unloading_machine{dir = 1; icon_state = "unloader-corner"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/mine/production) -"AK" = (/obj/effect/decal/remains/human{desc = "Seems to be all that remains of a poor miner that didn't heed the warning signs."},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"AL" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/mine/dangerous/explored) -"AM" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/mine/production) -"AN" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 8},/area/mine/production) -"AO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/mine/production) -"AP" = (/obj/machinery/conveyor_switch/oneway{id = "mining_internal"; name = "mining conveyor"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) -"AQ" = (/obj/machinery/conveyor{dir = 2; id = "mining_internal"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/production) -"AR" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/dangerous/explored) -"AS" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/production) -"AT" = (/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/mine/production) -"AU" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/mine/production) -"AV" = (/obj/structure/disposalpipe/junction{dir = 4; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel,/area/mine/production) -"AW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) -"AX" = (/obj/machinery/door/airlock/glass_mining{name = "Processing Area"; req_access_txt = "48"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) -"AY" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/mine/production) -"AZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 4},/area/mine/production) -"Ba" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/production) -"Bb" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) -"Bc" = (/obj/machinery/mineral/processing_unit_console,/turf/simulated/wall/r_wall,/area/mine/production) -"Bd" = (/obj/machinery/mineral/processing_unit{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/mine/production) -"Be" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/mine/production) -"Bf" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) -"Bg" = (/obj/machinery/door/airlock/glass_mining{name = "Processing Area"; req_access_txt = "48"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) -"Bh" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/production) -"Bi" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/mine/production) -"Bj" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/mine/production) -"Bk" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/space,/area/space) -"Bl" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/production) -"Bm" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/mine/production) -"Bn" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/window/northleft{name = "Output Access"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) -"Bo" = (/obj/machinery/door/window/northleft{base_state = "right"; icon_state = "right"; name = "Output Access"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) -"Bp" = (/obj/machinery/mineral/stacking_unit_console,/turf/simulated/wall/r_wall,/area/mine/production) -"Bq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/dangerous/explored) -"Bs" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4},/turf/space,/area/space) -"Bt" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/space,/area/space) -"Bu" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/trunk,/obj/machinery/door/window/northleft{name = "Pneumatic Tube Access"},/obj/machinery/disposal/deliveryChute{dir = 1; pixel_y = -1},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) -"Bv" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) -"Bw" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) -"Bx" = (/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) -"By" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/obj/structure/plasticflaps,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/production) -"Bz" = (/obj/machinery/mineral/stacking_machine{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/mine/production) -"BA" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/production) -"BB" = (/obj/machinery/conveyor{icon_state = "conveyor0"; dir = 10; id = "mining_internal"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplatecorner (EAST)"; icon_state = "warnplatecorner"; dir = 4},/area/mine/production) -"BD" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/production) -"BE" = (/obj/structure/disposaloutlet{dir = 1},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/production) -"BF" = (/obj/docking_port/stationary{dir = 2; dwidth = 2; height = 18; id = "skipjack_z5"; name = "south of asteroid"; width = 19},/turf/space,/area/space) - -(1,1,1) = {" -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacadadadadadadadadaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafagahahaiaiaiaiaiajaiakaladadadadadadadadamanananaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaoapaqaqaqararararasasataualadadadavawaiaiaxayazaAaBaBahaCaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEapaqaqaFaGaraHaIaraJaKaLatauaMasaNaOaPaQaQaQaRaSaQaQaQaQaTaUaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVadaqaWaXaYaraZaZarbabbbcbdbebfbgbhbibjbkblbjbmaRbjbnboaQaebpbqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadaaaaaaaaaaaaaaaaafbradaqbsbtbuaraZbvarbwbxbybzbAbAbAbBbCbjbDbEbFaRaRbGbEbDaQaeaebHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIbIbIadaaaaaabJbKaBaBaBbLbMadaqbsbNaYaraZbOarbPbPbPbPbQbAbRbSbTbjbjbjbjbUbVbWbWbWbWbWbXbYbXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadaaaaaaaaaaaaaaaaaaaabIbIbIadbIaaaabZbMaeaeaeaeaeadaqcacbccaraZaZcdcecfcgchcicjckclcmbjcncobjcpcqcrcsctcucvcwcxbXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadaaaaaaaaaaaaaaaaaabIbIbIbIbIaaaaaVaaaaaaaaaaaaadaqaqcyczaraZcAarcBcececCcDcEcFcGcHcIcJcKcLcMcNbWcOcPcQcRcScTbXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadadadadadadaaaaaaaaaaaaaaaabIbIbIbIaaaaaVaaaaaaaaaaaaadaQcUcVcUarcWcXarcCcYcZdadbdcdddcdedcdcdcdcdfdgbWdhcPdidjdkcxbXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadbIbIbIbIbIadadadadadadaaaaaaaaaaaaaabIbIbIaaaeaVaaaaaaaaaaaaadaQcUdlcUdmdndoardpdqdrdsdtdudvdwdxdydzdAdcdCdBbWdDdEdFdGbWbYbXaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadbIbIbIbIbIbIbIbIbIbIadadadadadaaaaaaaaaaaabIbIbIaaaeaVaaaeaeaeaeaeadaQcUdlcUaQdHdIaQbPbPdJdKdLdcdMdNdOdPdQdRdcdSdTdUdVdWdXdYbWdZadaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadaaaaaaaabIbIbIaaaaaVaaaaaaaaaaaaaabjebdlcUecedeeefegeheiejekdcelemeneoepeqereseteueueuevewexezeyeyeAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadbIaaaaaaaabIaaaaaVaaaaaaaaaaaaaaaneBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeueXeYeZfaeufbadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadbIbIaaaaaaaaaaaaaVaaaaaaaaaaaaaaanfccUfdfefffgfhfifjaQfkflfmfnfofpfqfrfsdcftfufvfwfwfxfyfzfBfAadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIaaaaaaaaaaaaaVaaaaaaaaaaaaaaanfccUfdfefDfEfhfFfGaQfIfHdcfJdcdcdcdcfKdcfLfMeufNfOfPfQfRdZfSacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIaaaaaaaaaaaaaVaaaaaaeaaaaaaabjfTcUfUfefVfWfhfXfYaQfZgagbgcgdgegfdcggghgigjgkglgmgngofRdZadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIaaaaaaaaaaaagpgqgqgqgrgqgqgqgsgugtbjgvgwaQaQaQaQaQgxgygzgcgAgegBdcgCgDgEgFgGgHgIgJgKgLgMgNaQgObKaBaBaBaBaBaBaCgPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIaaaaaaaaaaaagQgRgSgUgUgUgVgWgXgYgZhahbhchdhehfhghhhihjhkhlhmhnhodchphqhshreueuhteueueuhuhvhwhxhyhzhzhAhzhzhzhBbqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaahChDgUgUgUgUhEhFhGhHhIhJhKhLhdhMhNhOhPhQhRhShThUhVhWhXhYhVhZiaibicidieibifibhVigihiiijikiliminiohzbHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaipiqgUgUirgUisitiuiviwixiyizhdiAiBiCiDiEiFiGiHiIiJiKiLiMiNiKiOiLiPiKiLiQiRiSiTiUiViWiXiYiZjajajbhzbHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIadadadadaaaaaaaagqjcgUjdjejfjgjhjijjjkjljmjnhdjojpjqjrjrjrjrjsjtjujvjtjwjxjyjwjzjAjBjzjzjCjDjEjFhzjGjHhzjIjajajJhzbHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadjKjLaaaaaajMjNgqgqjOjOjOjOjPjQjRbjjSjShdjTjrjUjrjVjWjXjYjtjZkakbjwkckdkejzkfkgkhjzkikjjEkkklhzhzhzkmknkoiohzbHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakpkqkpaaaaaaaaadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadkrksaBaBahaBbLbMaeaektkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLjtkMkNkOjwkPkQkRjzkSkTkUjzkVkWkXkYkZlalbhzhzhzhzhzlcbraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaldleldaeaaaaadadadadadbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIlfbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIlglilhljadaaaaaaaaaaaaaektlklllmlnlolplqjSlrlshdjrjUjrltjrlulvjtlwlxlyjwlzlAlBjzlClDlEjzlFlGlHlIlJlJlKkllLagaBaBlMlNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalOlPlQlRaeaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIlglTlSlglgaaaaaaaaaaaaaektlUlVlWlXlWlYlZjSjSjShdmamcmbmdjrmemfjtmgmhmijwmjmkmljzmmmnmojzmpmqklmrmsmtmskllTmvmuaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalemwleldaeaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacmxmymxlgaaaaaaaaaaaaaaaektmzlZlZmAmBmClZmDjSmEmEmFmFmFmFjrmGkKjtmHmImJjwmKmLmMjzmNmOmPjzmQmRmSklklklklmTmUlgmumumuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalemVmWmXaeaeadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacacacmYnamZaaaaaaaaaaaaaaaeaektnbnbncmAndlZlZnejSmEmEnfnfnfnfjrngnhjtninjnkjwnlnmnnjznonpnqjznrnsmSlgmulgntlhnulgmumumuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanvlenwadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIacacacacacnxnynzaaaaaaaaaaaaaeaeaektktnAnAktktmAnBmAktnfnfnfnfnfnfjrjrjrjtjtjtjtjwjwjwjwjzjzjzjzjzmSmSnCksnDnDnEmvlglgmumumuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaenFnGlenwadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacacacacacnHnJnIaaaaaaaaaaaenLnKnNnMnOnPnQnRktlZlZnSktnfnfnfnfnfnfnTnVnUlglglglglglglglglglglglglglgnXnWmvnYlglglglglgmumumumuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaenZoaobocnwadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacacacacacacodofoeogogogogogogoiohodojojokolomktononooktnfnfnfnfnfnfnxnJoplglgmumumumumumulglglglglgnXnWmvoqnfoqlglglglgmumumumuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeorosotnwouovnwnwnwnwbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacacacacacacnfoxowowowowowowowowoxnfnfnfnfnfnfktmAoymAktnfnfnfnfnfnfozoBoAnDnDnDnDoCnDnDnDnDnDoDnMoFoEmvnfnfnfoqmxlgmumumumumumuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeoGoHleoIoJoKkpoLocnwouounwbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacacacacacbIododoMoMoMoMoMoMoMoMododnfnfnfnfnfnfoNoPoOoQnfnfnflglglgnUnUnUlglgmumumumumumumumuoSoRojoTnfoqnfnfoqlglglgmumumumumumuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaenGoUoHmWoVoWoWoXocouoYoZounwbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacacacacacacbIaaaaaaaaaaaaaapapapapapapapanfnfnfnfnfnfnfnflglglglglglglglglglglgmumumumumumumumxoqnfpbnfoqnfnfnflglglglglgmumumumumuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapcnGoUnGlelepdoVoVnwoupenwoupfnwbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIacacacacacacbIbIaaaaaaaaaaaaaapapapapgpgpgpglglglglglglglglglglglglglglglglglgmumumumumumumumumumumumumxmunfnYmulgmumulglglglgmumumumuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaephpilepjpklepdpepeplpdounwnwnwnwnwnwbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacacacacacacbIpgpgpgpgpgpgpgpgpgpgpgpgaaaapmpmpmpmpmpmpmpmpmpmpnpnpopnpnpnlglglglglgmumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaepppqprlepklemWpsptounwoWpunwpvleoVpwnwbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacacacacacacadadpgpgpgpgpgpgpgpgpgpgpgaapmpmpmpmpmaaaaaaaaaeaepnpxpypzpApnlglglglglglglglglglgmumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaebIbInwoKpdpBleproVpCpDpEkpoWoVnwpvlelepwnwbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacacacacacaclglgnfnfpapapgpgpgpgpgadadpmpmaaaaaaaaaaaaaeaeaepnpFpGpHpIpnlglglglglglglglglglgmumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaenwnwnwnwnwnwoJoVpJpdoVpepKpEpEoXlelenwpvmWoupwnwbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacacacnfnfnfnfnfnfnfnfpapapgpgbIadadaaaaaaaaaaaaaaaepnpnpnpnpnpLpMpnpnpnpnpnpnpnpnpnnflglglglgmumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaenwpNpOpPpQnwpppRpqnwplnwpSpSpSnwoVleleleleoZptnwbIbIbIbIbIbIbIbIbIbIbIbIlfbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacnfnfnfnfnfnfnfnfnfnfpapaadadadadaaaaaaaaaaaaaaaepnpTpUpVpWpXpYpZqaqaqaqbqcqdqepnnfnflglglglglgmumumumumumumumumumumumumulglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnwpNqfqgqfqhouqioZouoYptoLqjouptoLpdnwlepeouounwbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadnfnfnfnfnfnfnfnfnfnfnfnflglgadadadadaaaaaaaaaaaaaepnqkqaqlpWqmqnqopnpnqpqqqrqrqspnnfnflglglglglgmumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadnwpNqfqtqtqhpeououoLocouououoZououounwouptoYounwbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadlglgnfnfnfnfnfnfnfnfnfnfnfqulglglglglgaaaaaaaaaaaaaepnqvqwqxqyqxqzqAqBqCqDqEqFqGnfnfnflglglglglgmumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadnwpNqHqtqInwqJqKpSpSqKpeqKpSpSpSouounwqLoZoupenwbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadlgqunfnfnfnfnfnfnfnfnfnfnfnflglglglgaaaaaaaaaaaaaaaepnqMqaqNpWqaqOqAqPqQqDnfnfnfnfnflglglglglglgmumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadnwnwnwnwnwnwqRqKououououoZouqSpSoYptnwqTqUqVqWnwbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadlgqunfnfnfnfnfnfnfnfnfnfnfnflglglgaaaaaaaaaaaaaaaeaepnqXqaqYpWqZqaqAqPqQqDnfnfnfnfnfnflglglglglgmumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadbIbIbIbIbIbInwqJqKouperarbocptoupSouounwlercrcrdnwacbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadlglgnfnfnfnfnfnfnfnfnfnfnfnflglglgaaaaaaaaaaaaaeaeaepnpnpWpWpnpnpWrepWqQqDnfnfnfnfnfnflglglglglgmumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbInwqJqKouptououqSoupeqKqJnwnwpvlercrgrhacacbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIadadlglgnfnfnfnfnfnfnfnfnfnfnfnfododrirjrjrjrjrjrjrkododnfnfrlrmrnpnroqarpqQqDnfnfnfnfnfnfnflglglglgmumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarqrqrqrqrqrqrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbInwrrqKqKqKqKqKqKqKqKqKqJnwpvlerslerdrtacacbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadlgnfnfnfnfnfnfnfnfnfnfnfnfnfnfrurvrvrvrvrvrvrvrvrunfnfnfrwrwrwpnrxryrzqQqDnfnfnfnfnfnfnflglglglgmumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarqrqrqrqrqrqrArArArBrqrfrfrfrCrCrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbInwrrqJqJqJrDrEqJqJqJrrrrnwpvrsrsrspwnwacacacbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadlgnfnfnfnfnfnfnfnfnfnfnfnfnfododrFoMoMoMoMoMoMoMododnfnfnfnfnfpnpWrGpWqQrHnfnfnfnfnfnfnflglglglgmumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarqrIrJrKrLrMrNrOrOrOrqmxmxmxmxrPrCrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadbIbIbIbIbIbIbIbIbInwnwnwnwnwnwnwnwnwnwnwnwnwnwqWrQrRnwnwacacacacbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadlgnfnfnfnfnfnfnfnfnfnfnfnfnflgaaaaaaaaaaaaaaaalglglgnfnfnfnfnfnfrSrUrTrVrWrXnfnfnfnflglglglglgmumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarqrYrZsasbrMscrOsdsesfsgshshmxrPsirCrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacacnwrcrcrsnwacacacacacbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadlgnfnfnfnfnfnfnfnfnfnfnfnflgaaaaaaaaaaaaaalglglglglglglglgnfnfnfnfnfrSsjsjrTnfnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarqrqrqrMskslsmrMsnsorMrMrqrqrqspnUsqrCrCrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacacnwsrsssrnwacacacacacbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadlgnfnfnfnfnfnfnfnfnfnfnfnflgaaaaaaaaaaaaaalglglglglglglglglglgnfnfnfnfststnfnfnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarqsusvrMswrOrNsxsyrOszrMsAsAsArPshshrCrCrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacnwsBrQsCnwacacacacbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadlglgnfnfnfnfnfnfnfnflglglglgaaaaaaaaaaaaaaaalglglglglglglglglglglgnfnfststnfnflglglglglglgmumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaerqsDsEsFsGsHsIrOswrOrOsJsAsAshshshshsKrCrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacacsLsNsMacacacacbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIadadadlglglglglgnfnfququlgadadaaaaaaaaaaaaaaaaaalglglglglglglglglglglglgnfststnfnflglglglglglgmumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarqsPsQsRsSsHsTrOswsUrOrMsVsWsWshshrPrPrCrCrfrfrfrfrfrfrfrfaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacacacacsXacacacacbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadlglglglglglgadadaaaaaaaaaaaaaaaaaalglglgmumumulglglglglglgnfststnfnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarqrMrMrMsYrOsZsHtasmtbtctdtdtetfshrPrPtgrCrfrfrfrfrfrfrfrfaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacacacacacacsXacacbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadadadadadaaaaaaaaaaaaaaaaaaaalglglgmumumulglglglglgnfstthtinfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasOtjsOtltmrOswrOrOtntorMtptrtqshshrPrPtsrCrfrfrfrfrfrfrfrfrfaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacacacsXacacacacacbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadadaaaaaaaaaaaaaaaaaaaalglglgmumumumumulglglgnfthtistnfnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarqrqrqrqrOrOswsmttrMturMsAsAsArPrPrPrPtvrMrfrfrfrfrfrfrfrfrfrfaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacacacacacacacacacbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadaaaaaaaaaaaaaaaaaaaalglglglgmumumumulglglgnfnfststnfnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumulglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarqtwrOrOswtxtytztArMtBtCrPrPrPrPsKrCrCrfrfrfrfrfrfrfrfrfrfaeaeadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacacacacacacacacbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaalglglgmumumumulglglgnfnfststnfnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumulglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatDtDtDtEtEtFtGtHtItIrMtItItJrPshrPrPsKrCrfrfrfrfrfrfrfrfrfrfrfaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacacacacacbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadaaaaaaaaaaaaaaaaaalglglglgmumumulglglgnfnfststnfnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumulglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaatKtktEtLtEtEtMtNtOtPtQtRtStTsAsArPrPrPrCrCrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIacacacbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadaaaaaaaaaaaaaaaalglglglgmumumumulglglgnfststnfnfnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumulglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatDtItItItUtGtItItVtWtXtYtItZsArPrPrCrCrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaalglglglgmumumumulglglgnfststnfnfnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatDuaubucudueufuguhuiujukulumunuorCrCrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaalglglglgmumumumulglglgnfstthuptinfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeuqurubusubuttIuuuvuvuwuxtIrCrCrCrCrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaalglglgmumumumulglglgnfthuptistnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauyuzuAuBuCuDtIuEuFuGuHuxtIrCrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaadadadbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIlfbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaalglglgmumumumulglglgnfnfnfststnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauIuJuKtDtDtDtItItItItItItIrCrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaalglglgmumumumulglglgnfuLrWrWrXnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarCrCrCrCrCrCrCrCrCrCrCrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaeaeadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadaaaaaaaaaaaaaaaaaalglglglgmumumulglglgnfrSsjsjrTnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaalglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadaaaaaaaaaaaaaaaalglglglgmumumulglglgnfnfststnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIadadadadadaaaaaaaaaaaaaalglglglgmumumulglglgnfnfststnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaadadadadadadbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadaaaaaaaaaaaaaaaalglglglglgmulglglgnfnfststnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadaaaaaaaaaaaaaaaalglglglgmumulglglgnfststnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaaaaaadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaalglgmumulglglgnfststnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaalgmumulglglgnfststnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIadadaaaaaaaaaaaaaaaaaaaaaalgmumulglglgnfststnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaaaaaadadadbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadaaaaaaaaaaaaaaaaaaaalgmumulglglgnfstthtinflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadaaaaaaaaaaaaaaaaaaaalgmumulglglgnfthtistnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaaaaaadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaeaeaeaeaeaeaeaelglgmumulglglgnfnfststnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadaduMuMuMuMuMuMuMuMlglgmumulglglgnfnfststnflglglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadaeaeaeaeaeaeaeaelglgmumulglglgnfnfststnflglglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaalglgmumulglglgnfuLrWrWrXnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadaaaaaaaaaaaaaaaaaalglgmumulglglgnfrSsjsjrTnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaarfrfrfaaaaaaaaaaaaaaaaaaaaaaaaadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadadadaaaaaaaaaaaaaaaaaalglglgmumulglglgnfnfststnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaarfrfrfrfaaaaaaaaaaaaaaaaaaaaaaaaadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadaaaaaaaaaaaaaaaaaaaaaaaalglglgmumulglglgnfnfststnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaarfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIlfbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaalglglgmumulglglgnfuNuOstnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaarfrfrfrfrfrfaeaeaeaeaeaeaeaeaeadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalglgmumulglglgnfstuNuOnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaarfrfrfrfrfuMuMuMuMuMuMuMuMuMadadadadbIbIbIfCbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalglglgmulglglgnfststnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfaeaeaeaeaeaeaeaeaeadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalglglglglgnfnfststnflglglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfaaaaaaaaaaaaaaaaaaadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalglglglgnfuNuOstnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalglglglgnfstuNuOnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfuPrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaarfrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalglglgnfststnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfuRuQrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalgnfnfnfststnfnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfnfnfnfststnfnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfnfnfnfststnfnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfnfnfnfststnfnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfnfnfnfststnfnfnflglglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfnfnfnfnfststnfnfnflglglglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaarfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfnfnfnfnfnfststnfnfnfnflglglglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaaaaaarfrfaaaaaaaaaaaaaaaaaaaaaaaaaaadadadaaaaadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfnfnfnfnfnfststnfnfnfnfnfnfnfnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaarfrfrfrfrfaeaeaeaeaeaeaeaeaeaeaeadadadadadaaadadadbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfnfnfnfnfnfststnfuLrXnfnfnfnfnfnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfaarfrfrfrfrfuMuMuMuMuMuMuMuMuMuMuMadadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfnfnfnfnfstthupuSuTupupuptinfnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfrfadadadadadadadadadadadadadadadadadadadadadadadadadadadaeaeaeaeaeaeaeaeaeaeaeadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfnfnfnfnfthupupuSuTupuptistnfnfnfnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfrfrfrfrfrfrfrfadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadadadadadadadadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalglgnfnfnfnfnfrSrTnfnfstthuptinfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfadadadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalglglglglglgnfnfnfnfnfthuptistnfnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIfCbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalglglglglglglglglgnfnfnfststnfnfnfnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalglglglglglglglglglgnfstthupuptinfnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalglglglglglglglglgnfthupuptistnfnfnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalglglglglglglglgnfnfnfnfstthupuptinfnflglglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIaaaaaaaaaaaaaalglglglglglglglglglglgnfthupuptistnfnflglglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbIbIbIbIacacaaaalglglglglglglglglglglgnfnfnfnfststnfnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbIbIbIacacacaaaaaalglglgmumumulglglglglglglgnfstthuptinfnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbIbIbIacacaaaaaaaalglglgmumumumulglglglglglgnfthuptistnfnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbIbIbIacacaaaaaaaalglglgmumumumulglglglglglgnfnfnfststnfnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfrfadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaabIbIbIacacaaaaaaaalglglglglgmumumumulglglglglgnfnfuLrWrWrXnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfrfaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIlfbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalglglglglglglgmumumumulglglglglgnfnfrSsjsjrTnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalglglglglglgmumumumumumulglglglgnfnfnfnfststnfnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadaeaeaeaeaeaeaeaeaeaeaeaeaeaelglglglglglglgmumumumumulglglgnfnfnfnfnfnfststnfnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaduMuMuMuMuMuMuMuMuMuMuMuMuMuMlglglglglglglgmumumumumulglglgnfuNupupupupuOstnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadaeaeaeaeaeaeaeaeaeaeaeaeaelglglglglglglgmumumumumulglglgnfstuNupupupupuOnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadaaaaaaaaaaaaaaaaaaaaaaaalglglglglglglgmumumumumulglglgnfststnfnfnfnfnfnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadaaaaaaaaaaacacacaaaaaalglglglglglglgmumumumumulglglgnfststnfnfnfnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadaaaaaaaabIbIacaaaaaaaalglglglglglglgmumumumulglglgnfststnfnfnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadaaaaaaaabIbIaaaaaaaaaalglglglglglgmumumumulglglgnfststnfnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadaaadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaalglglglglgmumulglglglgnfststnfnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadaaaaadadadbIbIbIbIfCbIbIbIbIbIbIbIbIlfbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaacacaaaaaaaalglglglgmumulglglgnfnfststnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadaaaaaaaaaaacacbIacacaaaaaaaalglglgmumulglglgnfuNuOstnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaacbIbIbIacaaaaaaaalglglgmumulglglgnfstuNuOnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaacacbIbIacaaaaaaaalglglgmumulglgnfnfststnfnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaacacacacaaaaaaaalglglgmumulglgnfuLrWrWrXnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaalglglgmumulglgnfrSsjsjrTnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadlglglgadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadaaaaaaaaaaaaaaaaaalglglglglgmumulglgnfnfststnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadadadbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadlgnfnflgadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadaeaeaeaeaeaeaeaeaeaelglglglglgmumulglglgnfststnfnflglglglglgmumumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadlgnfnfnfnflgadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadaduMuMuMuMuMuMuMuMuMlglglglglglgmumulglglgnfststnfnfnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadlglgnfnfnfnflgadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadaeaeaeaeaeaeaeaeaeaelglglglglglgmumulglglgnfststnfnfnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadlgnfnfnfnflglgadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadaaaaaaaaaaaaaaaaaaaaaaaalglglglgmumumumulglglgnfststnfnfnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadlgnfnfnfnfnflgadbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIlfbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadaaaaaaaaaaaaaaaaaaaaaaaaaalglglglgmumulglglglglgnfststnfnfnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadlgnfnfnfnfnflgadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaalglglglgmumulglglglglgnfststnfnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadlgodnfodnflgadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalglglgmumulglglglgnfnfststnfnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIlgoduUodnflgadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalglglgmumulglglglgnfnfststnfnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadbIbIbIbIbIbIbIlguVuWuXlgadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalglglgmumulglglgnfnfnfststnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadlglglglglglglglglglglguVuWuYlgadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalglglgmumulglglgnfnfnfststnflglglglgmumumumumumumumumumumumumumumumumumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadaaaaadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadlgnfnfododuZrjrjrjrjrjrjvauWuYlgadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIlfbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIvbvbvbvbvbvbvbbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaalglglgmumulglglgnfnfnfststnflglglglgmumumumumumumumumumumumumumumumumumumumumumulglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadlgnfnfnfnfuUvcvcvcvcvcvcvcvdveuYlgadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIvbvfvgvhvivfvbbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaalglglglgmumulglglglgnfnfststnflglglglgmumumumumumumumumumumumumumumumumumumumulglglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadlgnfnfnfododoMoMoMoMoMoMvjuWvlvkpglglglglgadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIvbvfvmvnvovpvbbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaalglglglgmumulglglglgnfnfststnflglglglgmumumumumumumumumumumumumumumumumumumumulglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadlgnfnfnflgpgpgpgpgpgpguVuWuYpgpgpgnfnfnflgadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIvqvqvrbIvsvbvbvbvtvbvbvbbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaalglglglglgmumulglglglgnfnfststnflglglglglglgmumumumumumumumumumumumumumumumumumulglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadlgnfnflgpgpgpgpgpgpgpguVuWuYpgnfnfnfnfnflglgadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIvuvrvvbIvsvwvxvsvyvslglgadbIadadadaaaaaaaaaaaaaaaaaaaaaalglglglglglgmumulglglglglgnfststnfnflglglglglglglgmumumumumumumumumumumumumumumumumulglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIadadlgnflgpgpgpgpgpgpgpgvzuWuYnfnfnfnfnfnfnflgadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIvqmxbIvsvAvBvCvyvsnflglgadadadadaaaaaaaaaaaaaaaaaaaalglglglglglglgmumulglglglglgnfststnfnfnfnflglglglglgmumumumumumumumumumumumumumumumumulglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadlglglglglgpgpgpgpgoduUodnfnfnfnfnfnfnflglgadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIvDbIbIvsvsvsvsvEvsnfnflglglglglgaaaaaaaaaaaaaaaaaaaaaalglglglglglgmumulglglglglgnfststnfnfnfnfnfnflglglglgmumumumumumumumumumumumumumumumulglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadlgpgnfnfodnfodnfnfnfnfnfnfnfnflgadadbIbIbIbIbIbIbIbIbIbIbIbIbIfCbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIvFbIbIvsvwvGvsvyvHnfnfnfnfnfnflglgaaaaaaaaaaaaaaaaaaaalglglglglglglglglglglglglgnfststnfnfnfnfnfnfnflglglglglgmumumumumumumumumumumumumumulglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadlgnfnfnfnfnfnfnfnfvIvIvInfnfnflgadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIvFbIbIvsvAvBvJvyvHnfnfnfnfnfnfnfnfnfaaaaaaaaaaaaaaaaaapalglglglglglglglglglglgnfnfststnfnfnfnfnfnfnfnfnflglglglgmumumumumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIadadlglglglglglgnfnfnfnfnfnfnfnfvKvLvMnfnfnflgadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadlglglglglglglgadadadadadadadbIbIbIbIbIbIbIbIbIbIvsvsvNvsvsvsvsvsvsvyvHnfnfnfnfnfnfnfnfnfnfnfaaaaaaaaaaaaaaaaaalglglglglglglgnfnfnfnfuLrWrWrXnfnfnfnfnfnfnfnfnflglglglglgmumumumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIadlglgnfnfvOvOvOvOvOvOvPvPvPvPvOvOvOvOvQnfnflgadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadlglgnfnfnfnfnflglglglglgadadadadadadadbIbIbIbIvsvsvsvRvSvTvUvsvwvVvsvEvsvsvsvHvHvHvsnfnfnfnfnfnfaaaaaaaaaaaaaaaaaalglglglglgnfnfnfnfnfrSsjsjrTnfnfnfnfnfnfnfnfnflglglglglgmumumumumumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadadadbIbIbIbIbIbIbIadadlgnfnfnfvOvWvXvYvPvZwawbwcwdvPwewfwgrXnfnflglglglgadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadlglgnfnfnfnfnfnfnfnfnfnflglglglglgadadadadadbIbIvswhwiwjwkwjwlvsvAvBwmvyvswnwowpwpwpvHnfnfnfnfnfnfnfaaaaaaaaaaaaaaaaaalglglgnfnfnfnfnfnfnfstwqwrwswswtwtnfnfnfnfnfnflglglglglgmumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadbIbIbIbIbIbIadadlgnfnfnfvOwuwewvvPwwwwwwwwwxwywewfwzwAnfnfnfnfnflglglgadadadadadadadbIbIbIbIbIbIbIbIbIbIbIadadadlglglgnfnfnfnfnfnfnfnfnfnfnfnfnfnfnflglgadadadadadbIvswBwjwCwDwEwFvsvsvsvsvyvswnwGwGwGwHvHnfnfnfnfnfnfnfaaaaaaaaaaaaaaaaaanfnfnfnfnfnfnfnfuNupuOwtwIwJwKwKwtnfwLnfnfnfnflglglglglgmumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadaaadadadadadadadadbIbIbIadadlgnfnfnfvOwMwewewNwewewewewOvPwPwQvPrTnfnfnfnfnfnfnflglglglgadadadadadbIbIbIbIbIbIbIbIadadadadlglgnfnfnfnfnfnfnfnfnfnfuLrXnfnfnfnfnfnflglglglgadadbIvswRwjwSwjwTwjwUwHwVwWwXvswGwGwYwGwZvHnfnfnfnfnfnfaaaaaaaaaaaaaaaaaaaaaaaanfnfnfnfnfxaxbxcxcwtxdxexfxgwtwtwtwtnfnfnfnflglglglgmumumumumumumulglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadadadlglgnfnfvOxhwexixjxkxlxmwexnvOvOvOvOvOuLrXnfnfnfnfnfnfnfnflglglgadadadbIbIbIbIbIbIbIbIadadadlglgnfnfuNupupupupupupupupuSuTupupupuptinfnfnfnflglgadadvsvsvsvsvsvsvsvHxoxpvHxovsvsvsvsvsxqvsvsvHvHnfnfaaaaaaaaaaaaaaaaaaaaaaaeaaaaaanfnfxcxcxrxsxtxuxvxwxxxywsxzxAwsrXnfnfnfqulglglglglgmumumumumulglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadlgnfnfvOxBwexCvPxDxExFwexGxHxIxJxKxLuSuTupupupupuptinfnfnfnflglglgadadbIbIbIbIbIbIadadadlglgnfnfuNuOuNupupupupupupupuSuTupupuptithuptinfnfnflgadadadadadvsxMxNxOwGwZxPwHwZwUxQxRwGwHwZwGwGxSvHvHvHxTxUxUxUxUxUxUxUxVxVxVxVxVxVxVxcxcxcxWxXxYxZyaybxwxxxxycydyeyfwAnfnfnfqulglglglglgmumumumumulglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadlgnfnfvOvOvOvOvOygyhyivOvOyjykykykykuSuTupupupuptithupuptinfnfnflglgadadadbIbIadadadadlglgnfnfuNuOuNuOnfnfnfnfnfnfnfrSrTnfnfnfthuptistnfnfnfnflglglglgadvsvsvsvsylwZymynyowWypyqyqyrysyqyqytyuytyuyvyvyvyvyvyvyvyvywywywywywywywyxyyyxyyyzyAyBwsyCyDyEyFwsyGyHwsrTnfnfnfnflglglglglgmumumumumulglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadlglgnfnfnfnfnfvOyIyJyKyLvOyMyNvInfnfrSrTnfnfnfnfthupuptistnfnfnfnflglglgadadadadadadlglgnfnfuNuOuNuOnfnfnfnflgnfnfnfnfnfnfnfnfnfnfststnfnfnfnfnfnfnflglglglglgvswGyOyPyQyPyPyRySyTyQyPyPyPyUyVyVyVyWyWyWyWyWyWyWyWyXyXyXyXyXyXyYyZyZyZzazbzczdxaxaxbxaxaxaxaxaxazezfzgzfzhqulglglglglgmumumumulglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadlglgnfnfnfnfvOzizjzkzlvOnfnfnfnfnfnfnfnfnfnfnfnfnfnfstthtinfnfnfnfnflglglglglglglglgnfnfuNuOuNuOnfnflglglglglglglgnfnfnfnfnfnfnfststnfuLrXnfnfnfnfnfnflglgvsvsvHzmvHvsvsznzozpvsvsvHzqvHvsvHnfnfnfaaaaaaaaaeaaaaaaaeaaaaaaaaaaaeaaxcxczrzsztzuzvzwzxzyzzzzzAzBzCzCzCzCzhnflglglglglgmumumumulglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadlglgnfnfnfvOvOvOvOvOvOnfnflglglglglglglglglgnfnfnfthtithupupuptinfnfnfnfnfnfnfnfnfnfnfstuNuOnfnflglgadadadadadlgnfnfnfnfnfnfnfstthupuSuTupupupuptinfnflgvszDzEzFzGvszHzIzJzKzLvszMzNzOzPnfnfnfnfnfnfaaaaaeaaaaaaaeaeaeaeaeaeaeaeaexazQzRzSxaxaxaxaxaxaxaxaxazTzhzhzhzhnflglglglglgmumumumulglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadlgnfnfnfnfnfnfnfnfnfnfnflgadadadadadadadlglgnfnfnfthupupuptithtinfuLrXnfnfuNupupupupuOstnfnflglgadadadadadadlglgnfnfnfnfnfnfthupupuSuTupupuptistnfnfnfvszUzVzWzXvszYzZzZAaAbvsAcAdAevsnfnfnfnfnfnfaeaeaeaeaeaeaeaaaaaaaaaaaeaaaexaAgAhAiAjxaAkAlAmAnAoApxanfnfnfnfnflglglglgmumumumumumulglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadlgnfnfnfnfnfnfnfnfnflglglgadadadbIbIadadadlglglgnfnfnfnfnfthtithupuSuTupupuOuNupupupupuOnflglgadadadadadadadadlglglgnfnfnfnfnfnfnfrSrTnfnfnfststnfnfnfzPvsvsvsvsvsAqArAsAtAbvsvHAuvHvsnfnfnfnfnfnfaaaaaeaaaaaaaeaaaaaaaaaaaeaaxcxczrAvAiAjxcAwxWxXAxAyAzxanfnfnfnfnflglglglgmumumumumumulglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadlglglglgnfnfnfnflglglgadadbIbIbIbIbIbIbIadadadlglglgnfnfnfnfthupupuSuTupupupuOnfnfnfnfnfnflgadadadadadadbIbIadadadlglglglgnfnfnfnfnfnfnfnfnfstthuptinfnfnfnfnfnfzPvsvsvsvsvszPvvvvwAAAnfnfnfnfnfaaaaaaaeaaaaaaaeaaaaaaaaaaABxcACADAEAvAigTxaAGzrAHAIxaAJxanfnfnfnflglglglglgmumumumumumulglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadlglglglglglgadadadadbIbIbIbIbIbIbIbIadadadadlglglglgnfnfnfnfrSrTnfnfnfnfnfnflglglglglgadadadadadadbIbIbIadadadadadlglglglglglglglgnfnfthuptithtinfnfnfnfnfnfnfrSrUrUrUrUrUrUrTnfnfnfnfnfnfaeaeaeaeaeaeaeaeaaaaaaaaAfAFzrAFzrAkAMANAxxcxszrAOAPxcAQxanfnfnfnflglglglgmumumumumumumulglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIadadadadadlglgnfnfnfnfnfnfnfnfnflglglgadadadadadadadbIbIbIbIbIbIbIadadadadadadadadadadadlglgnfnfnfthtithtiAKnfnfnfnfnfnfnfnfnfnfnfnfnfnfnfnfnfnfnfnfaaaaaaaaaaaaaeaaaaaaaaaaxcxcxcASATAUAVAWAXAYAZBaBbBcBdxanfnfnfnflglglglgmumumumumumumulglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadlglglgnfnfnflglglglglgadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadadadadlgnfnfnfnfthtithupupupupupupupupupupupupupupuptinfnfnfnfnfnfaaaaaaaaaaaeaaaaaaaaaaaeaaxcxczrAvBeBfBgBhBiBiBjxcAQxanfnfnfnflglglglgmumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadlglglglglgadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadadadlglglgnfnfnfthupupupupupupupupupupupupupupuptistnfuLrXnfnfnfnUnUaeaaaaaeaaaaaaaaaaaeaaBkzxBlBmBiBjxcBnBoBpxcxcAQxanfnfnfnflglglglgmumumumumulglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadlglglgnfnfnfnfnfnfnfnfnfnfnfnfnfnfnfnfnfstthupuSuTupupupARALBsBsBsBsBsBsBsBsBsBsBsBtxaBuBvxsAGxaBwBxByBzBABBxanfnflglglglgmumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadlglglgnfnfnfnfnfnfnflglgnfnfnfnfnfnfthupupuSuTupupupBqALBsBsBsBsBsBsBsBsBsBsBsBszxBDxaxcxcxaBExaxaxaxaxaxanfnflglglglgmumumumumumulglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadlglglglglglglglglglglgnfnfnfnfnfnfnfnfrSrTnfnfnfnUnUaeaaaaaaaaaaaaaaaaaaaaaeaenfnfnfnfxaxaxanfnfnfnfnfnfnflglglglgmumumumumulglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIlfbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadadadadadadadlgnfnfnfnfnfnfnfnfnfnfnfnfnfnfnfnfaaaaaaaaaaaaaaaaaaaaaaaanfnfnfnfnfnfnfnfnfnfnfnfnflglglgmumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadadadadlgnfnfnfnfnfnfnfnfnfnfnfnflglglglgaaaaaaaaaaaaaaaaaaaaaaaaaanfnfnfnfnfnfnfnfnfnfnflglglglgmumumumumumulglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadadlglgnfnfnfnfnfnfnfnfnflgadadadadlgaaaaaaaaaaaaaaaaaaaaaaaaaanfnfnfnfnfnfnfnfnfnfnflglglglgmumumumumulglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadadadlglglglglglglglglglglgadadadadadlgaaaaaaaaaaaaaaaaaaaaaaaanfnfnfnfnfnfnfnfnfnflglglgmumumumumumumulglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadadadadadadadadadadadadadadaaaaaaaaaaaaaaaaaaaaaanfnfnfnfnfnfnflglglglglglgmumumumumumulglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadadadadadadadadbIbIadadadadaaaaaaaaaaaaaaaaaaaaaanfnflglglglglglglglglglgmumumumumumumulglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadaaaaaaaaaaaaaaaaaaaaaalglglglglglglglgmumumumumumumumulglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaalglglglglglgmumumumumumumumumulglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIlfbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadaaaaaaaaaaaaaaaaaaaaaaaaaalglglglglgmumumumumumumulglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadaaaaaaaaaaaaaaaaaaaaaaaaaaaalglglglglgmumumumulglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalglglglglglglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalglglglglglglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIlfbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalglglgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadaaaaaaaaadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIlfbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadbIbIbIbIbIbIbIbIbIbIbIadadadadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadadadadbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadadadadadadadadbIbIbIbIbIbIbIbIbIbIadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaaaaaaaaadadadadadadadadadadadadadadaaadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaaaaaaaaaaaaaaaaaaadadadaaaaaaaaadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadadadadadadadadadadadadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -"} - diff --git a/_maps/map_files/RandomZLevels/academy.dmm b/_maps/map_files/RandomZLevels/academy.dmm index 491938aa3e0..1bf4b376673 100644 --- a/_maps/map_files/RandomZLevels/academy.dmm +++ b/_maps/map_files/RandomZLevels/academy.dmm @@ -412,7 +412,7 @@ "hV" = (/obj/structure/closet,/obj/item/clothing/under/color/lightpurple,/obj/item/weapon/twohanded/staff,/turf/simulated/floor/plasteel,/area/awaymission/academy/academyaft) "hW" = (/obj/structure/closet,/obj/item/weapon/storage/wallet/random,/obj/item/clothing/glasses/regular/hipster,/turf/simulated/floor/plasteel,/area/awaymission/academy/academyaft) "hX" = (/obj/structure/closet,/obj/item/clothing/head/wizard/fake,/obj/item/clothing/suit/wizrobe/fake,/turf/simulated/floor/plasteel,/area/awaymission/academy/academyaft) -"hY" = (/obj/structure/closet,/obj/item/clothing/under/color/purple,/obj/item/weapon/contraband/poster,/turf/simulated/floor/plasteel,/area/awaymission/academy/academyaft) +"hY" = (/obj/structure/closet,/obj/item/clothing/under/color/purple,/obj/item/weapon/poster/random_contraband,/turf/simulated/floor/plasteel,/area/awaymission/academy/academyaft) "hZ" = (/obj/structure/closet,/obj/item/weapon/storage/box/snappops,/obj/item/weapon/storage/backpack,/obj/item/weapon/paper{info = "Current Grade: F. Educator's Notes: No improvement shown despite multiple private lessons. Suggest additional tutilage."; name = "Pyromancy Evaluation"},/turf/simulated/floor/plasteel,/area/awaymission/academy/academyaft) "ia" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft) "ib" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plasteel,/area/awaymission/academy/academyaft) diff --git a/_maps/map_files/RandomZLevels/beach.dmm b/_maps/map_files/RandomZLevels/beach.dmm index 55c36a22cf4..d3fa400f59b 100644 --- a/_maps/map_files/RandomZLevels/beach.dmm +++ b/_maps/map_files/RandomZLevels/beach.dmm @@ -38,7 +38,7 @@ "aL" = (/obj/structure/stool/bed/chair/sofa/left,/turf/unsimulated/beach/water/deep/wood_floor,/area/awaymission/undersea) "aM" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/unsimulated/beach/water/deep/wood_floor,/area/awaymission/undersea) "aN" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/unsimulated/beach/water/deep/wood_floor,/area/awaymission/undersea) -"aO" = (/obj/structure/closet/crate/bin{name = "Garbage bin"},/obj/item/weapon/storage/bag/trash,/turf/unsimulated/beach/water/deep/sand_floor,/area/awaymission/undersea) +"aO" = (/obj/structure/closet/crate/can,/obj/item/weapon/storage/bag/trash,/turf/unsimulated/beach/water/deep/sand_floor,/area/awaymission/undersea) "aP" = (/obj/item/flag/species/skrell,/turf/unsimulated/beach/water/deep/sand_floor,/area/awaymission/undersea) "aQ" = (/obj/structure/mirror{icon_state = "mirror_broke"; pixel_y = 28},/obj/item/weapon/storage/wallet/random,/turf/unsimulated/beach/water/deep/wood_floor,/area/awaymission/undersea) "aR" = (/obj/structure/mirror{icon_state = "mirror_broke"; pixel_y = 28},/turf/unsimulated/beach/water/deep/wood_floor,/area/awaymission/undersea) @@ -235,7 +235,7 @@ "eA" = (/obj/structure/shuttle/engine/propulsion,/turf/simulated/floor/plating/airless,/area/awaymission/beach) "eB" = (/turf/unsimulated/beach/sand,/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"},/area/awaymission/beach) "eC" = (/obj/structure/table/woodentable,/obj/effect/decal/cleanable/blood,/turf/unsimulated/beach/sand,/area/awaymission/beach) -"eD" = (/obj/structure/closet/crate/bin,/turf/unsimulated/beach/sand,/area/awaymission/beach) +"eD" = (/obj/structure/closet/crate/can,/turf/unsimulated/beach/sand,/area/awaymission/beach) "eE" = (/obj/structure/closet/crate,/turf/unsimulated/beach/sand,/area/awaymission/beach) (1,1,1) = {" diff --git a/_maps/map_files/RandomZLevels/blackmarketpackers.dmm b/_maps/map_files/RandomZLevels/blackmarketpackers.dmm index 62e480cd89e..05116a7fcfc 100644 --- a/_maps/map_files/RandomZLevels/blackmarketpackers.dmm +++ b/_maps/map_files/RandomZLevels/blackmarketpackers.dmm @@ -449,7 +449,7 @@ "iG" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/engine,/area/awaymission/BMPship/Aft) "iH" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/engine,/area/awaymission/BMPship/Aft) "iI" = (/obj/item/weapon/storage/box/matches,/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft) -"iJ" = (/obj/item/weapon/contraband/poster,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft) +"iJ" = (/obj/item/weapon/poster/random_contraband,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft) "iK" = (/turf/simulated/floor/plating,/area/awaymission) "iL" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/obj/item/weapon/grenade/chem_grenade/drugs,/turf/simulated/floor/plating,/area/awaymission) "iM" = (/turf/simulated/mineral/random/high_chance_clown,/area/awaymission) diff --git a/_maps/map_files/RandomZLevels/moonoutpost19.dmm b/_maps/map_files/RandomZLevels/moonoutpost19.dmm index 0bb35cdaab8..72f92839497 100644 --- a/_maps/map_files/RandomZLevels/moonoutpost19.dmm +++ b/_maps/map_files/RandomZLevels/moonoutpost19.dmm @@ -53,7 +53,7 @@ "ba" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/mob/living/simple_animal/hostile/alien/drone{plants_off = 1},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) "bb" = (/obj/structure/alien/weeds,/obj/effect/decal/cleanable/blood{color = "red"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) "bc" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) -"bd" = (/obj/machinery/vending/cigarette,/obj/structure/sign/poster{icon_state = "poster7"; pixel_y = 32; serial_number = 7; subtype = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) +"bd" = (/obj/machinery/vending/cigarette,/obj/structure/sign/poster/contraband/smoke{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "be" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 10; icon_state = "darkred"; tag = "icon-darkred (SOUTHWEST)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "bf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "bg" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "darkred"; tag = "icon-darkred (SOUTHEAST)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) @@ -63,7 +63,7 @@ "bk" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/cleanable/blood/gibs{color = "red"; icon_state = "gib2_flesh"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) "bl" = (/turf/simulated/mineral/random/high_chance,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) "bm" = (/obj/item/weapon/cigbutt,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) -"bn" = (/obj/machinery/light/small{dir = 8},/obj/structure/sign/poster{icon_state = "poster17"; pixel_x = -32; pixel_y = 0; serial_number = 17; subtype = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) +"bn" = (/obj/machinery/light/small{dir = 8},/obj/structure/sign/poster/contraband/power_people{pixel_x = -32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "bo" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "bp" = (/obj/machinery/alarm/monitor{frequency = 1439; locked = 1; pixel_y = 23; req_access = "150"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "bq" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/item/device/radio/off{pixel_x = -4; pixel_y = 4},/obj/item/device/radio/off{pixel_x = 2},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) @@ -83,7 +83,7 @@ "bE" = (/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "bF" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "bG" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) -"bH" = (/obj/structure/closet/crate/bin,/obj/item/trash/syndi_cakes,/obj/item/trash/sosjerky,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) +"bH" = (/obj/structure/closet/crate/can,/obj/item/trash/syndi_cakes,/obj/item/trash/sosjerky,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "bI" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "bJ" = (/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "bK" = (/turf/simulated/floor/plasteel{icon_state = "red"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) @@ -102,7 +102,7 @@ "bX" = (/obj/machinery/mineral/unloading_machine{dir = 1; icon_state = "unloader-corner"; input_dir = 4; output_dir = 8},/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plating/airless{name = "plating"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "bY" = (/obj/machinery/conveyor{dir = 2; id = "awaysyndie"},/turf/simulated/floor/plating/airless{dir = 4; icon_state = "warnplate"; name = "plating"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "bZ" = (/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) -"ca" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/structure/sign/poster{icon_state = "poster5"; pixel_x = 0; pixel_y = 32; serial_number = 5; subtype = 0},/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "loadingarea"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) +"ca" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/structure/sign/poster/contraband/syndicate_recruitment{pixel_y = 32},/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "loadingarea"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "cb" = (/obj/effect/decal/cleanable/dirt,/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plasteel/airless{dir = 4; icon_state = "red"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "cc" = (/obj/machinery/alarm/monitor{frequency = 1439; locked = 0; pixel_y = 23; req_access = "150"},/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "cd" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "red"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) @@ -113,7 +113,7 @@ "ci" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/table,/obj/machinery/cell_charger,/obj/machinery/light/small{dir = 8},/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/paper{info = "Alright, listen up. If you're reading this, I'm either taking a shit or I've been recalled back to Command. Either way, you'll need to know how to restore power. We've stolen this stuff from Nanotrasen, so all the equipment is jury-rigged. We have generators that work on both plasma and uranium, about 50 sheets should power the outpost for quite a while. If the generators aren't working, which is very likely, take the power cell on the desk and put it into the APC in the hallway. That should get the place running, at least for a little while."; name = "Engineering Instructions"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "cj" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplate"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "ck" = (/obj/structure/stool,/turf/simulated/floor/plating{broken = 1; icon_state = "platingdmg3"; tag = "icon-platingdmg3"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) -"cl" = (/obj/machinery/light/small{dir = 4},/obj/structure/sign/poster{icon_state = "poster10"; pixel_x = 32; pixel_y = 0; serial_number = 10; subtype = 0},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplate"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) +"cl" = (/obj/machinery/light/small{dir = 4},/obj/structure/sign/poster/contraband/hacking_guide{pixel_x = 32},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplate"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "cm" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"; tag = "icon-warnplatecorner (EAST)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "cn" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "co" = (/turf/simulated/floor/plasteel/airless{name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) @@ -170,7 +170,7 @@ "dn" = (/turf/simulated/floor/plasteel/airless{dir = 4; icon_state = "warningcorner"; name = "floor"; tag = "icon-warningcorner (NORTH)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "do" = (/obj/structure/closet/crate,/obj/item/weapon/storage/bag/ore,/obj/structure/alien/weeds,/obj/item/device/mining_scanner,/obj/item/weapon/shovel,/obj/item/weapon/pickaxe,/turf/simulated/floor/plating/airless{icon_state = "platingdmg3"; name = "plating"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "dp" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged1"; name = "floor"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) -"dq" = (/obj/structure/table/woodentable,/obj/structure/sign/poster{icon_state = "poster24"; pixel_x = 0; pixel_y = -32; serial_number = 24; subtype = 0},/obj/item/weapon/pen,/obj/item/weapon/paper{info = "Log 1:
While mining today I noticed the NT station was finished with its renovations. They placed some huge reinforced tumor on the station – looks so ugly. I wouldn't be surprised if those pigs decided to turn that little astronomy outpost into a prison with that thing, it'd be pretty typical of them.

Log 2:
Really dumb of me, but I just waved at an engineer in the outpost, and he waved back. I hope to god he was too dumb or drunk to recognize the suit, because if he isn't, then we might have to pull out before they come looking for us.

Log 3:
That huge reinforced tumor in their science section has been making a lot of noise lately. I've been hearing some banging and scratching from the other side and I'm kind of glad now that they reinforced this thing so much. I'll be sleeping with my gun under my pillow from now on."; name = "Personal Log"},/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "wood"; name = "floor"; tag = "icon-warningcorner (NORTH)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) +"dq" = (/obj/structure/table/woodentable,/obj/structure/sign/poster/contraband/c20r{pixel_y = -32},/obj/item/weapon/pen,/obj/item/weapon/paper{info = "Log 1:
While mining today I noticed the NT station was finished with its renovations. They placed some huge reinforced tumor on the station – looks so ugly. I wouldn't be surprised if those pigs decided to turn that little astronomy outpost into a prison with that thing, it'd be pretty typical of them.

Log 2:
Really dumb of me, but I just waved at an engineer in the outpost, and he waved back. I hope to god he was too dumb or drunk to recognize the suit, because if he isn't, then we might have to pull out before they come looking for us.

Log 3:
That huge reinforced tumor in their science section has been making a lot of noise lately. I've been hearing some banging and scratching from the other side and I'm kind of glad now that they reinforced this thing so much. I'll be sleeping with my gun under my pillow from now on."; name = "Personal Log"},/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "wood"; name = "floor"; tag = "icon-warningcorner (NORTH)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "dr" = (/obj/structure/closet/secure_closet{desc = "It's a secure locker for personnel. The first card swiped gains control."; icon_broken = "cabinetdetective_broken"; icon_closed = "cabinetdetective"; icon_locked = "cabinetdetective_locked"; icon_off = "cabinetdetective_broken"; icon_opened = "cabinetdetective_open"; icon_state = "cabinetdetective_locked"; locked = 1; name = "personal closet"; req_access_txt = "150"},/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/weapon/suppressor,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "wood"; name = "floor"; tag = "icon-warningcorner (NORTH)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "ds" = (/obj/structure/closet/secure_closet{desc = "It's a secure locker for personnel. The first card swiped gains control."; icon_broken = "cabinetdetective_broken"; icon_closed = "cabinetdetective"; icon_locked = "cabinetdetective_locked"; icon_off = "cabinetdetective_broken"; icon_opened = "cabinetdetective_open"; icon_state = "cabinetdetective"; locked = 0; name = "personal closet"; req_access_txt = "150"},/obj/item/stack/spacecash/c50,/turf/simulated/floor/wood,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "dt" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/syndie,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/wood,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) @@ -257,7 +257,7 @@ "eW" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitehall"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "eX" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitehall"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "eY" = (/obj/machinery/power/port_gen/pacman{desc = "A portable generator for emergency backup power."; name = "P.A.C.M.A.N.-type portable generator"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/awaycontent/a7) -"eZ" = (/obj/machinery/space_heater,/obj/machinery/light/small{dir = 1},/obj/structure/sign/poster{icon_state = "poster5_legit"; pixel_x = 0; pixel_y = 32; serial_number = 21; subtype = 1},/turf/simulated/floor/plating,/area/awaycontent/a7) +"eZ" = (/obj/machinery/space_heater,/obj/machinery/light/small{dir = 1},/obj/structure/sign/poster/official/build{pixel_y = 32},/turf/simulated/floor/plating,/area/awaycontent/a7) "fa" = (/obj/machinery/power/port_gen/pacman/super{desc = "A portable generator for emergency backup power."; name = "S.U.P.E.R.P.A.C.M.A.N.-type portable generator"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating{broken = 1; icon_state = "platingdmg2"; tag = "icon-platingdmg2"},/area/awaycontent/a7) "fb" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/smes{charge = 1.5e+006; input_level = 10000; inputting = 0; output_level = 200000; outputting = 0},/turf/simulated/floor/plating,/area/awaycontent/a7) "fc" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/alarm/monitor{frequency = 1439; locked = 0; pixel_y = 23; req_access = null},/turf/simulated/floor/plating,/area/awaycontent/a7) @@ -304,7 +304,7 @@ "fR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/alien/weeds,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurplecorner"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "fS" = (/obj/structure/table,/obj/item/clothing/gloves/color/yellow,/turf/simulated/floor/plating,/area/awaycontent/a7) "fT" = (/obj/structure/filingcabinet,/obj/item/weapon/paper{info = "Entry One — 27/05/2554:
I just arrived, and already I hate my job. I'm stuck on this shithole of an outpost, trying to avoid these damn eggheads running all over the place preparing for god knows what. There's no crimes to stop, no syndies to kill, and I'm not even allowed to beat the fuckin' assistant senseless! They said I was transferred from Space Station 13 for 'good behavior', but this feels more like a punishment than a reward. All I know is that if I don't get some action soon, I'm going to go insane.

Entry Two — 03/06/2554:
Okay, so get this: we got a fuckin' deathsquad coming in today! I thought the day I saw one of them would be the day my employment was 'terminated', if you get my drift. They're escorting some sort of weird alien creature for the eggheads to study. I heard one of the docs telling the chef that this thing killed a whole security force before it was captured. I sure as hell hope that I don't have to fight it.

Entry Three — 08/06/2554:
My first real bit of 'action' today, if you could call it that. Crazy Ivan got in a fight with Kuester today about his Booze-O-Mat. Apparently one of the crewmembers had stolen a couple bottles of booze from the machine after Ivan disabled the ID lock. Tell you the truth, I don't blame the thief. Everyone is going a little stir-crazy in here, and the bartender is being damn stingy with the alcohol. Either way, once they started to pick a fight, I had to take them down. It's a damn shame that we don't have a brig, though. I had to lock Ivan in a fuckin' freezer, for god's sake. Let's hope that we can keep our sanity together, at least for a while.

Entry Four — 10/06/2554:
Jesus fucking Christ riding on a motorbike. These things the scientists are studying are terrifying! Fucking great huge purple bug things as tall as the ceiling, with blades for arms and drooling at the mouth. I don't think my taser will do jack shit against these damn things, but the eggheads say that they're safely contained. If they do, I have a feeling that it's only a matter of time before we're all screwed. These bastards look like walking death.

Entry Five — 18/06/2554:
Finally caught who stole the booze from Kuester. It was that fuckin' loser assistant Steve! He was in the dorms, chugging his worries away. I took one of the bottles back to the barkeep, but no one has to know about this second one. I think I'm gonna enjoy this while watching tomorrow's Thunderdome match.

Entry Six — 19/06/2554:
Oh, great. The chef is still sleeping, so we get Ivan's gruel for breakfast today. I overheard Sano and Douglas saying something about the aliens being restless, so we might get some action today. As long as it happens after the big game, I'm fine with it. I still got one beer to drink before I'm ready to die."; name = "Personal Log — Kenneth Cunningham"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "red"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) -"fU" = (/obj/structure/sign/poster{icon_state = "poster21_legit"; pixel_y = 32; serial_number = 21; subtype = 1},/obj/item/device/radio/off,/obj/item/weapon/screwdriver{pixel_y = 10},/turf/simulated/floor/plasteel{dir = 5; icon_state = "red"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) +"fU" = (/obj/structure/sign/poster/official/safety_report{pixel_y = 32},/obj/item/device/radio/off,/obj/item/weapon/screwdriver{pixel_y = 10},/turf/simulated/floor/plasteel{dir = 5; icon_state = "red"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "fV" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/awaycontent/a7) "fW" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurplecorner"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "fX" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) @@ -376,7 +376,7 @@ "hl" = (/obj/structure/table,/obj/item/weapon/paper{info = "Ivan Volodin Stories:

Entry Won — 28/05/2554:
Hello. I am Crazy Ivan. Boss say I must write. I do good job fixing outpost. Is very good job. Much better than mines. Many nice people. I cause no trouble.

Entry Too — 05/06/2554:
I am finding problem with Booze-O-Mat. Is not problem. I solve very easy. Use yellow tool to make purple light go off. I am good engineer! Bartender will be very happy.

Entry Tree — 08/06/2554:
Bartender is not happy. Security man is not happy. Cannot feel legs, is very cold in freezer. Is not good. Table is jammed into door, have no tools. Is very not good. But, on bright side, found meat! Shall chew to keep spirits up.

Entry Fore — 12/06/2554:
Big nasty purple bug looked at me today. Make nervous. Blue wall wire can be broken, then bad thing happens. Very very bad thing. Man in orange spacesuit wave at me today too. He seem nice. Wonder who was?

Entry Fiv — 15/06/2554:
I eat cornflakes today. Is good day. Sun shine for a while. Was nice. I also take ride on disposals chute. Was fun, but tiny. Get clog out of pipes, was vodka bottle. Is empty. This make many sads.

Entry Sex: 19/06/2554:
Purple bugs jumpy today. When waved, get hiss. Maybe very bad. Maybe just ill. Do not know. Is science problem, is not engineer problem. I eat sandwich. Is glorious job. Wish to never end."; name = "Personal Log — Ivan Volodin"},/obj/item/weapon/pickaxe,/turf/simulated/floor/plating{broken = 1; icon_state = "platingdmg3"; tag = "icon-platingdmg3"},/area/awaycontent/a7) "hm" = (/obj/machinery/computer/monitor,/obj/structure/cable,/turf/simulated/floor/plating,/area/awaycontent/a7) "hn" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/awaycontent/a7) -"ho" = (/obj/structure/closet/crate/bin,/obj/item/clothing/gloves/color/latex,/obj/item/trash/chips,/obj/effect/decal/cleanable/dirt,/obj/machinery/light/small{active_power_usage = 0; dir = 1; icon_state = "bulb-broken"; status = 2},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitehall"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) +"ho" = (/obj/structure/closet/crate/can,/obj/item/clothing/gloves/color/latex,/obj/item/trash/chips,/obj/effect/decal/cleanable/dirt,/obj/machinery/light/small{active_power_usage = 0; dir = 1; icon_state = "bulb-broken"; status = 2},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitehall"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "hp" = (/obj/structure/table,/obj/item/weapon/storage/box/gloves{pixel_x = 0; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitecorner"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "hq" = (/obj/structure/cable,/obj/machinery/power/apc/noalarm{cell_type = 15000; dir = 4; locked = 0; name = "Research APC"; pixel_x = 25; req_access = null; start_charge = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurplecorner"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "hr" = (/obj/structure/table,/obj/item/weapon/retractor,/obj/item/weapon/hemostat,/obj/structure/alien/weeds,/obj/item/stack/cable_coil,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) @@ -475,7 +475,7 @@ "jg" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "jh" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "ji" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) -"jj" = (/obj/structure/closet/crate/bin,/obj/machinery/light/small{dir = 8},/obj/item/trash/cheesie,/obj/item/trash/can,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) +"jj" = (/obj/structure/closet/crate/can,/obj/machinery/light/small{dir = 8},/obj/item/trash/cheesie,/obj/item/trash/can,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "jk" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "jl" = (/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "jm" = (/obj/structure/stool,/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) @@ -485,8 +485,8 @@ "jq" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 3},/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -3; pixel_y = 0},/obj/machinery/door/poddoor/shutters{dir = 8; id_tag = "awaykitchen"; name = "Serving Hatch"},/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "jr" = (/obj/structure/closet/secure_closet{icon_broken = "rdsecurebroken"; icon_closed = "rdsecure"; icon_locked = "rdsecure1"; icon_off = "rdsecureoff"; icon_opened = "rdsecureopen"; icon_state = "rdsecure1"; locked = 1; name = "research director's locker"; req_access_txt = "271"},/obj/item/weapon/storage/backpack/satchel_tox,/obj/item/clothing/gloves/color/latex,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "js" = (/obj/item/weapon/twohanded/required/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched1"; tag = "icon-floorscorched1 (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) -"jt" = (/obj/structure/closet/crate/bin,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) -"ju" = (/obj/machinery/vending/snack,/obj/structure/sign/poster{icon_state = "poster14"; pixel_x = 0; pixel_y = 32; serial_number = 14; subtype = 0},/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched2"; tag = "icon-floorscorched2 (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) +"jt" = (/obj/structure/closet/crate/can,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) +"ju" = (/obj/machinery/vending/snack,/obj/structure/sign/poster/official/ue_no{pixel_y = 32},/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched2"; tag = "icon-floorscorched2 (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "jv" = (/obj/structure/stool/bed/chair,/obj/effect/decal/cleanable/generic,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "jw" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "jx" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched1"; tag = "icon-floorscorched1 (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) @@ -520,7 +520,7 @@ "jZ" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "ka" = (/obj/machinery/door/airlock/glass_research{name = "Research Storage"; req_access_txt = "271"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "kb" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/awaycontent/a7) -"kc" = (/obj/structure/closet/crate,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/contraband/poster,/turf/simulated/floor/plating{broken = 1; icon_state = "platingdmg1"; tag = "icon-platingdmg1"},/area/awaycontent/a7) +"kc" = (/obj/structure/closet/crate,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/poster/random_contraband,/turf/simulated/floor/plating{broken = 1; icon_state = "platingdmg1"; tag = "icon-platingdmg1"},/area/awaycontent/a7) "kd" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating/airless{name = "plating"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "ke" = (/obj/structure/grille,/turf/simulated/floor/plating/airless{name = "plating"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "kf" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) @@ -530,7 +530,7 @@ "kj" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door_control{id = "Awaybiohazard"; name = "Biohazard Shutter Control"; pixel_x = 0; pixel_y = 8; req_access_txt = "271"},/obj/machinery/door_control{id = "AwayRD"; name = "Privacy Shutter Control"; pixel_x = 0; pixel_y = -2; req_access_txt = "271"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "kk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/awaycontent/a7) "kl" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table,/obj/machinery/computer/id_upgrader,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warnwhite"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) -"km" = (/obj/structure/closet/crate/bin,/obj/item/trash/candy,/obj/item/trash/can,/turf/simulated/floor/plasteel{dir = 2; icon_state = "arrival"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) +"km" = (/obj/structure/closet/crate/can,/obj/item/trash/candy,/obj/item/trash/can,/turf/simulated/floor/plasteel{dir = 2; icon_state = "arrival"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "kn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/effect/decal/cleanable/blood/oil{color = "black"},/turf/simulated/floor/plating,/area/awaycontent/a7) "ko" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Diner"},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "kp" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) @@ -543,7 +543,7 @@ "kw" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "arrival"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "kx" = (/obj/machinery/light/small,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -32},/obj/machinery/camera{c_tag = "Arrivals North"; dir = 1; network = list("MO19")},/turf/simulated/floor/plasteel{dir = 2; icon_state = "arrival"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "ky" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitecorner"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) -"kz" = (/obj/structure/sign/poster{icon_state = "poster2_legit"; pixel_x = 0; pixel_y = -32; serial_number = 2; subtype = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "arrival"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) +"kz" = (/obj/structure/sign/poster/official/nanotrasen_logo{pixel_y = -32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "arrival"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "kA" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "kB" = (/obj/machinery/door/firedoor{density = 1; icon_state = "door_closed"; opacity = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "kC" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 1; icon_state = "purple"; tag = "icon-purple (NORTH)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) @@ -557,7 +557,7 @@ "kK" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "kL" = (/obj/effect/decal/cleanable/blood/xeno{color = "green"},/obj/effect/decal/cleanable/blood/gibs/xeno,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "kM" = (/obj/effect/decal/cleanable/blood/xeno{color = "green"},/obj/effect/decal/remains/xeno{desc = "They look like the remains of something... alien. The front of skull appears to have been completely obliterated."},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) -"kN" = (/obj/structure/closet/crate/bin,/obj/item/trash/plate,/obj/item/weapon/reagent_containers/food/snacks/badrecipe,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) +"kN" = (/obj/structure/closet/crate/can,/obj/item/trash/plate,/obj/item/weapon/reagent_containers/food/snacks/badrecipe,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "kO" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "arrival"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "kP" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "kQ" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) @@ -651,7 +651,7 @@ "mA" = (/obj/structure/table/woodentable,/obj/machinery/door_control{id = "awaydorm2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "mB" = (/obj/structure/stool/bed/chair/wood/normal{dir = 8},/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "mC" = (/obj/machinery/computer/arcade,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) -"mD" = (/obj/machinery/vending/cigarette,/obj/structure/sign/poster{icon_state = "poster7"; pixel_y = -32; serial_number = 7; subtype = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) +"mD" = (/obj/machinery/vending/cigarette,/obj/structure/sign/poster/contraband/smoke{pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "mE" = (/obj/machinery/light/small{dir = 8},/obj/structure/stool/bed/chair/comfy/beige,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "mF" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey{pixel_x = -6; pixel_y = 6},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 6; pixel_y = 8},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 3; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "mG" = (/obj/structure/stool/bed/chair/comfy/beige,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) diff --git a/_maps/map_files/RandomZLevels/spacebattle.dmm b/_maps/map_files/RandomZLevels/spacebattle.dmm index 8b0cfa0e30a..aa1ef17a354 100644 --- a/_maps/map_files/RandomZLevels/spacebattle.dmm +++ b/_maps/map_files/RandomZLevels/spacebattle.dmm @@ -310,7 +310,7 @@ "fX" = (/obj/structure/artilleryplaceholder{tag = "icon-22"; icon_state = "22"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) "fY" = (/obj/structure/artilleryplaceholder{tag = "icon-23"; icon_state = "23"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) "fZ" = (/obj/structure/artilleryplaceholder{tag = "icon-24"; icon_state = "24"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"ga" = (/obj/structure/closet/crate,/obj/item/weapon/contraband/poster,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"ga" = (/obj/structure/closet/crate,/obj/item/weapon/poster/random_contraband,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) "gb" = (/obj/effect/landmark/corpse/bridgeofficer{mobname = "Robert Faver"; name = "Robert Faver"},/obj/item/ammo_casing/shotgun,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) "gc" = (/obj/structure/artilleryplaceholder/decorative{tag = "icon-25"; icon_state = "25"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) "gd" = (/obj/structure/artilleryplaceholder/decorative{tag = "icon-26"; icon_state = "26"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) diff --git a/_maps/map_files/RandomZLevels/spacehotel.dmm b/_maps/map_files/RandomZLevels/spacehotel.dmm index b5bd1bdb320..4a666dd481c 100644 --- a/_maps/map_files/RandomZLevels/spacehotel.dmm +++ b/_maps/map_files/RandomZLevels/spacehotel.dmm @@ -237,7 +237,7 @@ "eC" = (/obj/machinery/light{dir = 1},/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) "eD" = (/obj/machinery/light,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) "eE" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 1},/area/space) -"eF" = (/obj/structure/closet/crate/bin,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) +"eF" = (/obj/structure/closet/crate/can,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) "eG" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) "eH" = (/obj/machinery/light{dir = 8},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) "eI" = (/obj/machinery/light{dir = 8},/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) @@ -290,7 +290,7 @@ "fD" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/unsimulated/beach/water/deep,/area/awaymission/spacehotel) "fE" = (/obj/machinery/light,/obj/structure/window/reinforced{icon_state = "rwindow"; dir = 1},/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) "fF" = (/obj/structure/window/reinforced{icon_state = "rwindow"; dir = 1},/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) -"fG" = (/obj/structure/closet/crate/bin,/obj/item/weapon/paper/crumpled/hotel_scrap_1,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) +"fG" = (/obj/structure/closet/crate/can,/obj/item/weapon/paper/crumpled/hotel_scrap_1,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) "fH" = (/obj/effect/landmark{name = "awaystart"},/turf/unsimulated/beach/water,/area/awaymission/spacehotel) "fI" = (/obj/machinery/door/unpowered/hotel_door{id = 104},/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) "fJ" = (/obj/machinery/door/unpowered/hotel_door{id = 105},/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) @@ -326,7 +326,7 @@ "gn" = (/obj/structure/stool/bed/chair/sofa/left{icon_state = "sofaend_left"; dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) "go" = (/obj/machinery/light{dir = 8},/turf/template_noop,/area/awaymission/spacehotel) "gp" = (/obj/structure/stool,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) -"gq" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/closet/crate/bin,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) +"gq" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/closet/crate/can,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) "gr" = (/obj/effect/landmark/map_loader/random{template_list = "light_floor_1.dmm;light_floor_2.dmm;light_floor_3.dmm"},/turf/template_noop,/area/awaymission/spacehotel) "gs" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/template_noop,/area/awaymission/spacehotel) "gt" = (/obj/machinery/door/unpowered/hotel_door{id = 101},/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) @@ -345,7 +345,7 @@ "gG" = (/obj/machinery/camera{c_tag = "Room 202"; c_tag_order = 999; network = list("Hotel")},/turf/template_noop,/area/awaymission/spacehotel) "gH" = (/obj/machinery/camera{c_tag = "Room 203"; c_tag_order = 999; network = list("Hotel")},/turf/template_noop,/area/awaymission/spacehotel) "gI" = (/obj/structure/stool,/turf/template_noop,/area/awaymission/spacehotel) -"gJ" = (/obj/structure/closet/crate/bin,/obj/item/weapon/paper/crumpled/hotel_scrap_6,/turf/template_noop,/area/awaymission/spacehotel) +"gJ" = (/obj/structure/closet/crate/can,/obj/item/weapon/paper/crumpled/hotel_scrap_6,/turf/template_noop,/area/awaymission/spacehotel) "gK" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 1},/area/awaymission/spacehotel) "gL" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/condiment/enzyme{layer = 5},/turf/unsimulated/floor{icon_state = "cafeteria"},/area/awaymission/spacehotel/kitchen) "gM" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/dough,/turf/unsimulated/floor{icon_state = "cafeteria"},/area/awaymission/spacehotel/kitchen) @@ -370,7 +370,7 @@ "hf" = (/obj/machinery/chem_master/condimaster,/turf/unsimulated/floor{icon_state = "cafeteria"},/area/awaymission/spacehotel/kitchen) "hg" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/unsimulated/floor{icon_state = "cafeteria"},/area/awaymission/spacehotel/kitchen) "hh" = (/obj/structure/table,/obj/machinery/microwave,/turf/unsimulated/floor{icon_state = "cafeteria"},/area/awaymission/spacehotel/kitchen) -"hi" = (/obj/structure/closet/crate/bin,/turf/unsimulated/floor{icon_state = "cafeteria"},/area/awaymission/spacehotel/kitchen) +"hi" = (/obj/structure/closet/crate/can,/turf/unsimulated/floor{icon_state = "cafeteria"},/area/awaymission/spacehotel/kitchen) "hj" = (/obj/structure/closet/secure_closet/freezer/meat,/turf/unsimulated/floor{icon_state = "cafeteria"},/area/awaymission/spacehotel/kitchen) "hk" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/unsimulated/floor{icon_state = "cafeteria"},/area/awaymission/spacehotel/kitchen) "hl" = (/obj/structure/kitchenspike,/turf/unsimulated/floor{icon_state = "cafeteria"},/area/awaymission/spacehotel/kitchen) @@ -380,7 +380,7 @@ "hp" = (/obj/structure/table,/obj/machinery/chem_dispenser/soda,/turf/unsimulated/floor{icon_state = "whiteyellowfull"},/area/awaymission/spacehotel) "hq" = (/obj/structure/table,/obj/machinery/chem_dispenser/beer,/turf/unsimulated/floor{icon_state = "whiteyellowfull"},/area/awaymission/spacehotel) "hr" = (/obj/machinery/light,/obj/structure/table,/turf/unsimulated/floor{icon_state = "whiteyellowfull"},/area/awaymission/spacehotel) -"hs" = (/obj/structure/closet/crate/bin,/turf/unsimulated/floor{icon_state = "whiteyellowfull"},/area/awaymission/spacehotel) +"hs" = (/obj/structure/closet/crate/can,/turf/unsimulated/floor{icon_state = "whiteyellowfull"},/area/awaymission/spacehotel) "ht" = (/obj/machinery/door/airlock{name = "Kitchen"; req_access_txt = "150"},/obj/effect/decal/cleanable/blood/old,/turf/unsimulated/floor,/area/awaymission/spacehotel) "hu" = (/obj/machinery/door/airlock{name = "Kitchen"; req_access_txt = "150"},/obj/effect/decal/cleanable/blood/old,/turf/unsimulated/floor{icon_state = "whiteyellowfull"},/area/awaymission/spacehotel) "hv" = (/turf/unsimulated/floor,/area/awaymission/spacehotel) @@ -509,7 +509,7 @@ "jO" = (/obj/structure/window/basic{icon_state = "window"; dir = 8},/obj/structure/flora/bush,/turf/unsimulated/floor/grass,/area/awaymission/spacehotel) "jP" = (/obj/item/weapon/restraints/legcuffs,/turf/unsimulated/floor{name = "engraved floor"; icon_state = "cult"},/area/awaymission/spacehotel) "jQ" = (/obj/structure/closet/crate/secure/unknownchemicals,/turf/unsimulated/floor{icon_state = "floor"},/area/awaymission/spacehotel) -"jR" = (/obj/structure/closet/crate/bin,/obj/item/weapon/paper/crumpled/hotel_scrap_7,/turf/unsimulated/floor{icon_state = "floor"},/area/awaymission/spacehotel) +"jR" = (/obj/structure/closet/crate/can,/obj/item/weapon/paper/crumpled/hotel_scrap_7,/turf/unsimulated/floor{icon_state = "floor"},/area/awaymission/spacehotel) "jS" = (/obj/structure/table/reinforced,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel/reception) "jT" = (/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel/reception) "jU" = (/obj/structure/table,/obj/machinery/computer/security/telescreen{desc = "Not used to spy on hotel rooms."; dir = 1; name = "Hotel Security Monitor"; network = list("Hotel"); use_power = 0},/obj/machinery/light,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) diff --git a/_maps/map_files/RandomZLevels/terrorspiders.dmm b/_maps/map_files/RandomZLevels/terrorspiders.dmm index fbf21c23670..1ee03e8a89d 100644 --- a/_maps/map_files/RandomZLevels/terrorspiders.dmm +++ b/_maps/map_files/RandomZLevels/terrorspiders.dmm @@ -10,11 +10,11 @@ "aj" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/plaza) "ak" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/plaza) "al" = (/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza) -"am" = (/obj/structure/sign/poster{icon_state = "poster2_legit"; pixel_x = 0; pixel_y = 32; serial_number = 2; subtype = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza) -"an" = (/obj/structure/sign/poster{icon_state = "poster2_legit"; pixel_x = 0; pixel_y = 32; serial_number = 2; subtype = 1},/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza) +"am" = (/obj/structure/sign/poster/official/nanotrasen_logo{pixel_y = 32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza) +"an" = (/obj/structure/sign/poster/official/nanotrasen_logo{pixel_y = 32},/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza) "ao" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/plaza) "ap" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/plaza) -"aq" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/structure/sign/poster{icon_state = "poster19_legit"; pixel_x = -32; pixel_y = 0; serial_number = 19; subtype = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/plaza) +"aq" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/structure/sign/poster/official/safety_internals{pixel_x = -32},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/plaza) "ar" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza) "as" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/plaza) "at" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/awaymission/UO71/plaza) @@ -69,10 +69,10 @@ "bq" = (/turf/simulated/floor/carpet,/area/awaymission/UO71/plaza) "br" = (/obj/structure/toilet{dir = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/UO71/plaza) "bs" = (/obj/structure/toilet{dir = 1},/obj/machinery/light/small{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/UO71/plaza) -"bt" = (/obj/structure/sign/poster{icon_state = "poster2_legit"; pixel_x = 0; pixel_y = -32; serial_number = 2; subtype = 1},/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza) +"bt" = (/obj/structure/sign/poster/official/nanotrasen_logo{pixel_y = -32},/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza) "bu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza) "bv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza) -"bw" = (/obj/structure/sign/poster{icon_state = "poster2_legit"; pixel_x = 0; pixel_y = -32; serial_number = 2; subtype = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza) +"bw" = (/obj/structure/sign/poster/official/nanotrasen_logo{pixel_y = -32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza) "bx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/wall,/area/awaymission/UO71/plaza) "by" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/awaymission/UO71/plaza) "bz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/rust,/area/awaymission/UO71/plaza) @@ -141,7 +141,7 @@ "cK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/awaymission/UO71/plaza) "cL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/rust,/area/awaymission/UO71/plaza) "cM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock{id_tag = "awaydorm1"; locked = 0; name = "Dorm 1"; req_access_txt = "271"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza) -"cN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/closet,/obj/item/weapon/contraband/poster,/turf/simulated/floor/plating,/area/awaymission/UO71/plaza) +"cN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/closet,/obj/item/weapon/poster/random_contraband,/turf/simulated/floor/plating,/area/awaymission/UO71/plaza) "cO" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; initialize_directions = 14; tag = "icon-manifold-b-f (NORTH)"},/turf/simulated/floor/plating{burnt = 1; icon_state = "panelscorched"; tag = "icon-panelscorched"},/area/awaymission/UO71/plaza) "cP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/stack/rods,/turf/simulated/floor/plating,/area/awaymission/UO71/plaza) "cQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/awaymission/UO71/plaza) @@ -226,7 +226,7 @@ "er" = (/obj/effect/decal/cleanable/dirt,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza) "es" = (/obj/structure/table,/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 13; pixel_y = 5},/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 8; pixel_y = 8},/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 0; pixel_y = 3},/obj/item/weapon/watertank,/turf/simulated/floor/plasteel{dir = 1; icon_state = "vault"},/area/awaymission/UO71/plaza) "et" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 4; icon_state = "green"},/area/awaymission/UO71/plaza) -"eu" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/device/radio/off,/obj/item/weapon/screwdriver{pixel_y = 10},/obj/structure/sign/poster{icon_state = "poster21_legit"; pixel_y = -32; serial_number = 21; subtype = 1},/turf/simulated/floor/plasteel{icon_state = "red"},/area/awaymission/UO71/plaza) +"eu" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/device/radio/off,/obj/item/weapon/screwdriver{pixel_y = 10},/obj/structure/sign/poster/official/safety_report{pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "red"},/area/awaymission/UO71/plaza) "ev" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 10; icon_state = "red"},/area/awaymission/UO71/plaza) "ew" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "red"},/area/awaymission/UO71/plaza) "ex" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "redcorner"},/area/awaymission/UO71/plaza) @@ -263,7 +263,7 @@ "fc" = (/obj/machinery/smartfridge,/turf/simulated/wall,/area/awaymission/UO71/centralhall) "fd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza) "fe" = (/turf/simulated/wall/rust,/area/awaymission/UO71/centralhall) -"ff" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/sign/poster{icon_state = "poster14"; pixel_x = 32; pixel_y = 0; serial_number = 14; subtype = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 4; icon_state = "greencorner"},/area/awaymission/UO71/plaza) +"ff" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/sign/poster/contraband/eat{pixel_x = 32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 4; icon_state = "greencorner"},/area/awaymission/UO71/plaza) "fg" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/plaza) "fh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/rust,/area/awaymission/UO71/centralhall) "fi" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/window/eastleft{dir = 1; name = "Hydroponics Desk"; req_access_txt = "271"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/centralhall) @@ -394,7 +394,7 @@ "hD" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/vault,/area/awaymission/UO71/prince) "hE" = (/obj/machinery/alarm/monitor{dir = 8; frequency = 1439; locked = 0; pixel_x = 23; pixel_y = 0; req_access = null},/turf/simulated/floor/vault,/area/awaymission/UO71/prince) "hF" = (/obj/machinery/r_n_d/circuit_imprinter,/turf/simulated/floor/plasteel,/area/awaymission/UO71/science) -"hG" = (/obj/item/weapon/paper{info = "The notes appear gibberish to you. Perhaps a destructive analyser in R&D could make sense of them."; name = "Research Notes"; origin_tech = "combat=2;materials=2;engineering=2;biotech=2"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/science) +"hG" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/vault,/area/awaymission/UO71/mother) "hH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science) "hI" = (/obj/structure/table/glass,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/stock_parts/matter_bin,/obj/item/weapon/stock_parts/matter_bin,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"},/area/awaymission/UO71/science) "hJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall) @@ -410,7 +410,7 @@ "hT" = (/obj/machinery/light{dir = 8},/obj/structure/window/reinforced,/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/gateway) "hU" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/unary/vent_scrubber,/turf/simulated/floor/vault,/area/awaymission/UO71/mother) "hV" = (/obj/machinery/light/small,/turf/simulated/floor/vault,/area/awaymission/UO71/mother) -"hW" = (/obj/machinery/alarm/monitor{dir = 8; frequency = 1439; locked = 0; pixel_x = 23; pixel_y = 0; req_access = null},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/vault,/area/awaymission/UO71/mother) +"hW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/vault,/area/awaymission/UO71/mother) "hX" = (/obj/structure/window/reinforced,/obj/effect/decal/cleanable/dirt,/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/gateway) "hY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/window{dir = 2; name = "Gateway Chamber"; req_access_txt = "271"},/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/gateway) "hZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/stool/bed/chair{tag = "icon-chair (WEST)"; icon_state = "chair"; dir = 8},/obj/effect/decal/cleanable/dirt,/obj/structure/sign/nosmoking_2{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/gateway) @@ -420,7 +420,7 @@ "id" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/wall/r_wall,/area/awaymission/UO71/prince) "ie" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0; welded = 1},/turf/simulated/floor/vault,/area/awaymission/UO71/prince) "if" = (/obj/machinery/light/small,/turf/simulated/floor/vault,/area/awaymission/UO71/prince) -"ig" = (/obj/machinery/atmospherics/unary/vent_pump{icon_state = "weld"; on = 1; welded = 1},/obj/machinery/light/small,/turf/simulated/floor/vault,/area/awaymission/UO71/prince) +"ig" = (/turf/simulated/floor/plasteel,/area/awaymission/UO71/science) "ih" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhite"},/area/awaymission/UO71/science) "ii" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science) "ij" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhitecorner"},/area/awaymission/UO71/science) @@ -455,7 +455,7 @@ "iM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/mineral/random/labormineral,/area/awaymission/UO71/outside) "iN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/wall/rust,/area/awaymission/UO71/centralhall) "iO" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel,/area/awaymission/UO71/mother) -"iP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science) +"iP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science) "iQ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science) "iR" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel,/area/awaymission/UO71/prince) "iS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall) @@ -508,7 +508,7 @@ "jN" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/research{name = "Research Lab"; req_access_txt = "271"; req_one_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science) "jO" = (/obj/machinery/door/poddoor{id_tag = "UO71_Containment"; name = "Containment 2"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/prince) "jP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall) -"jQ" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/structure/sign/poster{icon_state = "poster19_legit"; pixel_x = 0; pixel_y = 32; serial_number = 19; subtype = 1},/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched1"; tag = "icon-floorscorched1 (WEST)"},/area/awaymission/UO71/centralhall) +"jQ" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/structure/sign/poster/official/safety_internals{pixel_y = 32},/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched1"; tag = "icon-floorscorched1 (WEST)"},/area/awaymission/UO71/centralhall) "jR" = (/obj/structure/stool/bed/chair{tag = "icon-chair (EAST)"; icon_state = "chair"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/UO71/centralhall) "jS" = (/obj/structure/table,/obj/item/weapon/kitchen/utensil/fork,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/UO71/centralhall) "jT" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/UO71/centralhall) @@ -629,8 +629,8 @@ "me" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 3},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/UO71/centralhall) "mf" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/sign/deathsposal{desc = "A warning sign which reads 'DISPOSAL: LEADS TO EXTERIOR'"; name = "\improper DISPOSAL: LEADS TO EXTERIOR"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/UO71/centralhall) "mg" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall) -"mh" = (/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Engineering Secure Storage"; dir = 2; network = list("UO71")},/obj/item/weapon/rcd/combat,/obj/item/weapon/rcd_ammo/large,/obj/item/weapon/rcd_ammo/large,/turf/simulated/floor/plating,/area/awaymission/UO71/eng) -"mi" = (/obj/structure/closet/crate,/obj/item/stack/sheet/mineral/plasma{amount = 26},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/awaymission/UO71/eng) +"mh" = (/obj/machinery/light/small,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/vault,/area/awaymission/UO71/mother) +"mi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/vault,/area/awaymission/UO71/mother) "mj" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor/plating,/area/awaymission/UO71/eng) "mk" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warndark"; tag = "icon-warndark (EAST)"},/area/awaymission/UO71/gateway) "ml" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) @@ -645,9 +645,9 @@ "mu" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/awaymission/UO71/science) "mv" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurplecorner"},/area/awaymission/UO71/science) "mw" = (/obj/structure/closet/firecloset,/obj/machinery/light/small,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"},/area/awaymission/UO71/science) -"mx" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warnwhite"},/area/awaymission/UO71/science) -"my" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warnwhite"},/area/awaymission/UO71/science) -"mz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 1; icon_state = "purplecorner"; tag = "icon-purplecorner (NORTH)"},/area/awaymission/UO71/centralhall) +"mx" = (/obj/machinery/alarm/monitor{dir = 8; frequency = 1439; locked = 0; pixel_x = 23; pixel_y = 0; req_access = null},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/vault,/area/awaymission/UO71/mother) +"my" = (/obj/machinery/light/small,/obj/machinery/atmospherics/unary/vent_pump{icon_state = "weld"; on = 1; welded = 1},/turf/simulated/floor/vault,/area/awaymission/UO71/prince) +"mz" = (/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Engineering Secure Storage"; dir = 2; network = list("UO71")},/turf/simulated/floor/plating,/area/awaymission/UO71/eng) "mA" = (/obj/structure/table,/obj/item/weapon/newspaper,/obj/machinery/newscaster{pixel_x = 30; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/centralhall) "mB" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/centralhall) "mC" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/carpet,/area/awaymission/UO71/centralhall) @@ -701,7 +701,7 @@ "ny" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/awaymission/UO71/science) "nz" = (/obj/structure/table,/obj/item/weapon/cartridge/signal/toxins,/obj/item/weapon/cartridge/signal/toxins{pixel_x = -4; pixel_y = 2},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/science) "nA" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/science) -"nB" = (/obj/structure/disposalpipe/segment,/obj/item/weapon/paper{info = "The notes appear gibberish to you. Perhaps a destructive analyser in R&D could make sense of them."; name = "Research Notes"; origin_tech = "combat=2;materials=2;engineering=2;biotech=2"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/science) +"nB" = (/obj/structure/closet/crate,/obj/item/stack/sheet/mineral/plasma{amount = 25},/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/obj/effect/decal/cleanable/dirt,/obj/item/stack/sheet/mineral/uranium{amount = 25},/obj/item/stack/sheet/mineral/silver{amount = 25},/turf/simulated/floor/plating,/area/awaymission/UO71/eng) "nC" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-whitepurplecorner (EAST)"; icon_state = "whitepurplecorner"; dir = 4; heat_capacity = 1e+006},/area/awaymission/UO71/science) "nD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/science) "nE" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/turf/simulated/floor/plasteel,/area/awaymission/UO71/science) @@ -713,7 +713,7 @@ "nK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/awaymission/UO71/science) "nL" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 5; icon_state = "neutral"},/area/awaymission/UO71/centralhall) "nM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; tag = "icon-manifold-b-f (EAST)"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "neutral"},/area/awaymission/UO71/centralhall) -"nN" = (/obj/structure/sign/poster{icon_state = "poster7"; pixel_y = 32; serial_number = 7; subtype = 0},/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/centralhall) +"nN" = (/obj/structure/sign/poster/contraband/smoke{pixel_y = 32},/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/centralhall) "nO" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/centralhall) "nP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock{id_tag = "awaydorm5"; name = "Dorm 5"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall) "nQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock{id_tag = "awaydorm7"; name = "Dorm 7"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall) @@ -736,7 +736,7 @@ "oh" = (/obj/machinery/alarm/monitor{dir = 4; frequency = 1439; locked = 0; pixel_x = -23; pixel_y = 0; req_access = null},/obj/machinery/light/small{dir = 8},/obj/structure/table,/obj/item/device/radio/off,/obj/item/device/laser_pointer,/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/science) "oi" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/folder/white,/obj/item/weapon/stamp/rd{pixel_x = 3; pixel_y = -2},/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/science) "oj" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/science) -"ok" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/wall,/area/awaymission/UO71/science) +"ok" = (/obj/structure/closet/firecloset,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warnwhite"},/area/awaymission/UO71/science) "ol" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/awaymission/UO71/science) "om" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/rust,/area/awaymission/UO71/science) "on" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/computer/security/telescreen{desc = "Used for monitoring the research division and the labs within."; dir = 2; name = "research monitor"; network = list("UO71")},/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/science) @@ -859,14 +859,14 @@ "qA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating{burnt = 1; icon_state = "panelscorched"; tag = "icon-panelscorched"},/area/awaymission/UO71/science) "qB" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/science) "qC" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{current_temperature = 80; dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/science) -"qD" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table,/obj/machinery/light/small{dir = 4},/obj/item/borg/upgrade/vtec,/obj/item/weapon/stock_parts/cell/bluespace,/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/loot) +"qD" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warnwhite"},/area/awaymission/UO71/science) "qE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/awaymission/UO71/centralhall) "qF" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/loot) "qG" = (/obj/machinery/vending/medical{req_access_txt = "271"},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitehall"},/area/awaymission/UO71/medical) "qH" = (/obj/structure/table,/obj/machinery/alarm/monitor{frequency = 1439; locked = 0; pixel_y = 23; req_access = null},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/weapon/hand_labeler,/obj/item/clothing/accessory/stethoscope,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitecorner"},/area/awaymission/UO71/medical) "qI" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet/l3closet/general,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"},/area/awaymission/UO71/medical) "qJ" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/medical) -"qK" = (/obj/machinery/door/poddoor{id_tag = "UO71_Bridge"; name = "Bridge Lockdown Door"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall) +"qK" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; tag = "icon-manifold-b-f (EAST)"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "purplecorner"; tag = "icon-purplecorner (NORTH)"},/area/awaymission/UO71/centralhall) "qL" = (/obj/structure/stool/bed/chair/wood/normal,/turf/simulated/floor/carpet,/area/awaymission/UO71/centralhall) "qM" = (/obj/machinery/light/small{dir = 4},/obj/machinery/alarm/monitor{dir = 8; frequency = 1439; locked = 0; pixel_x = 23; pixel_y = 0; req_access = null},/turf/simulated/floor/carpet,/area/awaymission/UO71/centralhall) "qN" = (/obj/machinery/alarm/monitor{dir = 8; frequency = 1439; locked = 0; pixel_x = 23; pixel_y = 0; req_access = null},/turf/simulated/floor/carpet,/area/awaymission/UO71/centralhall) @@ -1177,8 +1177,8 @@ "wG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/eng) "wH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/vending/engivend{req_access_txt = "0"},/obj/machinery/camera{c_tag = "Engineering Foyer"; dir = 1; network = list("UO71")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/eng) "wI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng) -"wJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/device/t_scanner,/turf/simulated/floor/plasteel{dir = 6; icon_state = "yellow"},/area/awaymission/UO71/eng) -"wK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/vending/tool,/obj/structure/sign/poster{icon_state = "poster5_legit"; pixel_x = 0; pixel_y = -32; serial_number = 21; subtype = 1},/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched2"; tag = "icon-floorscorched2 (WEST)"},/area/awaymission/UO71/eng) +"wJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/stock_parts/cell/high,/obj/item/device/t_scanner,/turf/simulated/floor/plasteel{dir = 6; icon_state = "yellow"},/area/awaymission/UO71/eng) +"wK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/vending/tool,/obj/structure/sign/poster/official/build{pixel_y = -32},/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched2"; tag = "icon-floorscorched2 (WEST)"},/area/awaymission/UO71/eng) "wL" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/awaymission/UO71/eng) "wM" = (/obj/structure/closet/firecloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/awaymission/UO71/eng) "wN" = (/obj/structure/closet/firecloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/awaymission/UO71/eng) @@ -1327,17 +1327,20 @@ "zA" = (/obj/structure/spider/terrorweb,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen) "zB" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "271"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen) "zC" = (/obj/structure/spider/cocoon{icon_state = "cocoon_large1"},/obj/structure/spider/terrorweb,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen) -"zD" = (/turf/simulated/floor/plating/airless/asteroid,/area/awaymission/UO71/queen) +"zD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating{burnt = 1; icon_state = "panelscorched"; tag = "icon-panelscorched"},/area/awaymission/UO71/science) "zE" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "271"},/turf/simulated/wall/rust,/area/awaymission/UO71/queen) "zF" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen) "zG" = (/obj/machinery/door/poddoor{id_tag = "UO71_Caves"; name = "Caves Lockdown Door"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen) -"zH" = (/mob/living/simple_animal/hostile/poison/terror_spider/green{wander = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen) +"zH" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 7; tag = "icon-manifold-r-f (WEST)"},/turf/simulated/wall,/area/awaymission/UO71/science) "zI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 7; tag = "icon-manifold-b-f (WEST)"},/obj/structure/spider/terrorweb,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen) "zJ" = (/obj/structure/spider/terrorweb,/obj/structure/spider/terrorweb,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen) "zK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/spider/terrorweb,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen) "zL" = (/obj/structure/table,/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen) "zM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/mineral/random/labormineral,/area/awaymission/UO71/queen) "zN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen) +"zO" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table,/obj/machinery/light/small{dir = 4},/obj/item/borg/upgrade/vtec,/obj/item/weapon/stock_parts/cell/bluespace,/obj/item/weapon/paper/terrorspiders9,/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/loot) +"zP" = (/turf/simulated/wall,/area/awaymission/UO71/bridge) +"zQ" = (/obj/machinery/door/poddoor{id_tag = "UO71_Bridge"; name = "Bridge Lockdown Door"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/bridge) "zR" = (/obj/machinery/door/poddoor{id_tag = "UO71_Queen"; name = "Caves Lockdown Door"},/turf/simulated/floor/wood,/area/awaymission/UO71/queen) "zS" = (/turf/simulated/floor/wood,/area/awaymission/UO71/queen) "zT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/awaymission/UO71/queen) @@ -1410,27 +1413,27 @@ aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababab aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababzczczczczczczczczczczcabfbfRfQfbababababababababababababababfefefSfbfbfefbfxfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababfLfLfLfLfMfLfLabababababababababababababababababababfNfNfOfOababzcfPfPfPfPfPfPfPfPfPzcabfbfTfFfbababababababababababababababfbfVfUfYfWfZfegbfXabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababfMgggcghgcghfLfLfMfLababababgagagagagagagagagafNfNfOfOgjgifOfOabzcfPgdgdgegfgdgdgdfPzcabfbfRfRfbabababababfbfbfbfbfbfbfbfefbfbgkgkgkgkglfegmfXabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababfMgggngrgogggsgugtfLfMfLfMfMgagpgpgpgqgpgpgpgafOgvgygwgAgzgBfNabzcfPgdgdgegxgdgdgdfPzcabfegDgCfbabababababfbgEgGgFgIgHgKgJgLfbgNgMgOgkgPfefxfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababfLghgQgSgRghgsgVgTfMgWgYgXfLgagpgpgpgUgpgpgpgafNgZhbhahdhchefNabzcfPgdgdgdgdgdgegdfPzcabfbhffFfbabababababfbhghhgEhjhihlhkhkhmhohnhqhphshrhtfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababfLghhuhwhvghgshyhxfMhzhBhAfLgagpgpgpgpgpgpgpgafOhChGhFhdhHhIfNabzcfPhDgegdgegdgdhEfPzcabfbhJfFfbabababababfbhKhLgEhNhMgEgEhOfehPgOhQgkhRfbgbfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababfMhThShYhXhSgshyhZfLfLiafLfLgahUgphVgpgphVhWgafOibihicijiiikfNabzcidiegdifgdgdiggefPzcabfbhJfTfbabababababfbilhhgEhNimgEgEioiniqipgkgkirfeisfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababfMgggngrgogggsgugtfLfMfLfMfMgagpgpgpgqhGgpgpgafOgvgygwgAgzgBfNabzcfPgdgdgegxgdgdgdfPzcabfegDgCfbabababababfbgEgGgFgIgHgKgJgLfbgNgMgOgkgPfefxfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababfLghgQgSgRghgsgVgTfMgWgYgXfLgagpgpgpgUhWgpgpgafNgZhbhahdhchefNabzcfPgdgdgdgdgdgegdfPzcabfbhffFfbabababababfbhghhgEhjhihlhkhkhmhohnhqhphshrhtfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababfLghhuhwhvghgshyhxfMhzhBhAfLgagpgpgpgphWgpgpgafOhCighFhdhHhIfNabzcfPhDgegdgegdgdhEfPzcabfbhJfFfbabababababfbhKhLgEhNhMgEgEhOfehPgOhQgkhRfbgbfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababfMhThShYhXhSgshyhZfLfLiafLfLgahUgphVgpmimhmxgafOibihicijiiikfNabzcidiegdifgdgdmygefPzcabfbhJfTfbabababababfbilhhgEhNimgEgEioiniqipgkgkirfeisfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababfMiuitiwiviziyiGiEixiHiJiAiBiCiDgagaiOiOgaiFgafNiPiQgAfOfNfNfOabzciIfPfPfPiRiRiKiLiLjmiMiNiSfTfeabababababfbiTgEiohjhMgEgEiUfbiWiVgkfUiXfbiYfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababfMjaiZjcjbjejdjfjfjjjhjkfMababababjgjnjnjgjifOfOjojpgzfOababababzcyXzczcyYjqjqyYzczczcabfejsjrfefeababababfejtjugEiohMjyjvjAfbfbjBjwjwjxjxjCjzabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababfLjEjDiwjFjHfLfLfMfMjIjJfMababababjGjKjKjGjifOfOjLjNjMfOabababababjlababjGjOjOjGababababfbjPfRjQfefbfbfbfefejRjShhjThjhjgEgEjUjWjVjYjXkajZkbfeabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababfMfLfMkdkcfLfLkkkifMklkqfLfOfOfOfOkekfkgkekhfNkrkjktksfOfOfOfOfOfOkmfOfOknkokpkefOfOfNfOfOkufRfRkvfRfFfRfRjrgEgEgEkwiogEkxkykykAkzfbkBkDkCfefbabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaababababababfLkEiwkFfLkGkRkHixkSkUkTkIkJkKkLkMkJkNkOkPkQlckVleldkJkWkNkJkJkXkYkZlalblglflhfOljlilkfOlmlllllllnlllplojrgEiogElrlqlqlqlulslwlvfbfbfefefeababababababababababababababltltltltltabababababababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababfLlxlzlylAlylClBlElDlGlFlHlHlIlHlJlHlLlKlNlMlPlOlRlQlTlSlVlUlXlWlXlXlXlYgAlflhlZgAgAgAlZmbmafFmcfbfefbfbfefefbfbfbmdmehhmffbjsmgfeababababababababababababababababababltmimhmjltabababababababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababfMmkmmmliwjHjHmnfLmompfMfNfOfOfOfNfOfOmqfOfOmsmrfOfOfOmtfOfOfOfNmumumumumvlflhfOmxmwmyfOmzfEmBmAfbmCmDmCfemEmGmFfefefbfbfefbmImHfeababababababababababababababababababltmKmJmjltabababababababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababfLmLmNmMmPmOmSmQfMfLfLfLabfOgAgAmTfOmVmUmTfNmRmWfOmXmZmYnbnancfOnendnfmumvlbfOfOfNfOfOfNnhngfefefbninknjfbnlnnnmfenonsnqntfbnumHfbabababababababababababababababababnpltltnvnrnrnpababababababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababfLfLfMfMfLfLfMfMfLababababfOgAgAgAfOnwmUnxfOmRnyfOnznBnAnDnanafNnFnEnGmumvnCfNnHnJnInInKnMnLnOnNfbfXnPfbfefXnQfbfbnRfFnSnVnUnZnWfbabababababababababababababababababnToaobobobocnpababababababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababfOnXnYgAodgAoeoffOkmogfOohojoiooonopfNoroqosmumvlbfNogokolomomouotowovoyoxoAozoCoBoAoDoFoEoHoGoJoIoNoMfbabababababababababababababababababnToOoQoPoQoOnpnpnpnpabababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababfLlxlzlylAlylClBlElDlGlFlHlHlIlHlJlHlLlKlNlMlPlOlRlQlTlSlVlUlXlWlXlXlXlYgAlflhlZgAgAgAlZmbmafFmcfbfefbfbfefefbfbfbmdmehhmffbjsmgfeababababababababababababababababababltnBmzmjltabababababababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababfMmkmmmliwjHjHmnfLmompfMfNfOfOfOfNfOfOmqfOfOmsmrfOfOfOmtfOfOfOfNmumumumumvlflhfOokmwqDtDqKfEmBmAfbmCmDmCfemEmGmFfefefbfbfefbmImHfeababababababababababababababababababltmKmJmjltabababababababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababfLmLmNmMmPmOmSmQfMfLfLfLabfOgAgAmTfOmVmUmTfNmRmWfOmXmZmYnbnancfOnendnfmumvlbfOfOmRfOfOfNnhngfefefbninknjfbnlnnnmfenonsnqntfbnumHfbabababababababababababababababababnpltltnvnrnrnpababababababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababfLfLfMfMfLfLfMfMfLababababfOgAgAgAfOnwmUnxfOmRnyfOnzojnAnDnanafNnFnEnGmumvnCfNnHzDnInInKnMnLnOnNfbfXnPfbfefXnQfbfbnRfFnSnVnUnZnWfbabababababababababababababababababnToaobobobocnpababababababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababfOnXnYgAodgAoeoffOkmogfOohojoiooonopfNoroqosmumvlbfNogzHolomomouotowovoyoxoAozoCoBoAoDoFoEoHoGoJoIoNoMfbabababababababababababababababababnToOoQoPoQoOnpnpnpnpabababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababababfOoKoLgAfOoSoRoTfOkmoUfOoVojoWoYoXoZfNpbpapdpcmvlbfOnymRfbfbfbpfpellpgpiphpkpjplphpnpmpppopkpqprfbptpsfeabababababababababababababababababnppwpypxpApznppupvnpabababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababababfOfOfOfOfOfOfOfOfNpDpCfOpEpFnapGnaoXfOfOpBkmfOmvlafNpHmRfbfbfbpJpIfRpKfbpLfbfhfepMfbfbfepNfbfbpOfbpRmHfbabababababababababababababababababnppSpYpUpYpZnTpPpQnpabababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababababababababababababfNqbjifOfOfOqcfOpTqdpTpTpVpWpXqfqeqaogkmfbfbfbqiqgqkqjfeqlqmqhqoqnfeqpqtqqqwfeqxfehJmHfbababababababababnTnTnpnpnTababababnpqyqyqzqyqynpqrqsnpnpnpabababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababababababababababfOqAkhquqvmuqBqCpTqFqDpTpVqHqGqJqIqaogmRfbfbfbqEfbqKqKfbqLqMfbqOqNfbfbfbqPqQfeqRfbhJmHfbababababababababnTqTqSqSnpnTnTnTnpnpqUqWqVqYqXrcqZrerdrfnpabababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababababababababababfOrgjirarbrjrirkpTqFqFpTrhroqJqJrpqarqrlrmrmrmrnrmrsrrfertmCfbrvrufbrwrxqqryfbrzfbrBrAfbfbfbfbfefbfbfbfbnprDrCrFrEnTrHrJrIrGrKrMrLrOrNrNrPrSrRrfnpnpnTnTababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababababababababababfNrTkhqurQmurUrVpTrXrWpTpVrZrYscsbqasdmRsasgsfshsesirrfefefefefbfefbfefesjfbfbskfesmslsosnsqspsrsnstsssvsusxswszsysBsAsDsCsFsEsHsGsJsIsOsOsPsPsQsKsLsMnTababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababababababababababfNrgkhfOfOfOfNfNpTpTsNpTpVsSsRsUsTqaogmRsarrrrsVsarrsWfbabababababfbsXsYqqsZferzfejPtanUtbtctbtdtbtftethtgtititktjtmtltotnsFtptrtqtttstvtutAtztBtwtxtynpababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababababababababababfOqAkhquqvmuqBqCpTqFzOpTpVqHqGqJqIqaogmRfbfbfbqEzPzQzQzPqLqMfbqOqNfbfbfbqPqQfeqRfbhJmHfbababababababababnTqTqSqSnpnTnTnTnpnpqUqWqVqYqXrcqZrerdrfnpabababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababababababababababfOrgjirarbrjrirkpTqFqFpTrhroqJqJrpqarqrlrmrmrmrnrmrsrrsartmCfbrvrufbrwrxqqryfbrzfbrBrAfbfbfbfbfefbfbfbfbnprDrCrFrEnTrHrJrIrGrKrMrLrOrNrNrPrSrRrfnpnpnTnTababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababababababababababfNrTkhqurQmurUrVpTrXrWpTpVrZrYscsbqasdmRsasgsfshsesirrsafefefefbfefbfefesjfbfbskfesmslsosnsqspsrsnstsssvsusxswszsysBsAsDsCsFsEsHsGsJsIsOsOsPsPsQsKsLsMnTababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababababababababababfNrgkhfOfOfOfNfNpTpTsNpTpVsSsRsUsTqaogmRsarrrrsVsarrsWsaabababababfbsXsYqqsZferzfejPtanUtbtctbtdtbtftethtgtititktjtmtltotnsFtptrtqtttstvtutAtztBtwtxtynpababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababababababababababababfNtGtFnJtJnInItCtDAitDtDtEtLtKtHtItItMkmsasasatNsatOtOsasasasaababfbtPqqqqsZferzfbtRtQfefbfbfbfefbfbfbfbnptTtStVtUnptWtYtXuatZubtzuducuerFrFuguhnpnpnTnTababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababababababababababababfOufuiolomomujulukunumukuouqupuvuuukuwusutsarruyuxrrrruxuzsgsaababfefeuDuAfefeqRfbuFuEfbababababababababnTuBuCuGnpnpuHuJuInpuKuMuLuOuNuQuPuSuRuTnTabababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababababababababababababfNuXuUuYfOfOfOfOqapVpXpXqauZuVpXfNfNfNfNabsarrrrrrrrrrrrsgrrsaababuWfefefefevarzvbuFuEfbababababababababnTvdvcvivenpqyvjqynpnpvkvfnpvgvhnTvgvhnTnTabababababababababababababaaaaaaaaaaaaaa @@ -1460,34 +1463,34 @@ aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababab aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuyZzfwuwuabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababwuzazfzbwuabababababababababababababababababababababababababababababababababababababababababababababababab zczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczczdzdzdzezmzdzdzdzdzdzdzdzdzczczczczczczczczczczczczcpTpTpTpTpTzczczczczczczczczczczczczczczczczczczczczczczczc -aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababzgzgzhziagzhzhzgzgzgzgzgzgabababababababababababababpTzoznzppTabababababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababzgzgzhzqagagzhzgzgzgzgzgzgabababababababababababababpTztzszupTababababababzruWabababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWabababababzgzgzhzqagagzhzgzgzgzgzgzgabababababababababababababpTzvzszspTababzruWuWuWuWzrabababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWabababuWuWuWababababzgzgzhzqagzwzhzgzgzgzgzgzgabababababababababababababpTpTzxpTpTabuWuWuWuWuWuWuWabababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWababzgzgzhzqaiagzhzgzgzgzgzgzgababababababababababababuWuWuWuWabababuWuWabuWuWuWuWabababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababuWzruWuWuWababababababababababuWuWuWabzgzgzhzqagzAzhzgzgzgzgzgzgabuWuWuWuWuWuWabababababuWababababuWzruWabzruWuWuWuWabababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababuWababababababababababababababababababababababababababuWuWuWuWababababababababababababuWuWuWzyzyzyzzzBzyzyzyzyzgzgzgzguWuWabababuWuWuWabababuWuWuWuWuWuWuWuWuWabuWuWuWuWuWabababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababuWuWabababababababababababababababababababababababababuWuWuWababababababababababababababuWuWzyzyzyzzagzFzCzAzyzyzyzgzDuWabababababuWababababuWabababuWuWuWabuWuWuWuWuWuWuWabababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababababababababababababababababuWuWabababababababababababababababababababababababuWuWzrabababababababababababababababuWuWzEzHzGzqaiagagzAzAzyzyzgzDuWababuWabuWuWabababababababuWuWuWababababuWuWuWuWuWuWababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababababuWuWuWababababababababababababababababababababuWuWuWabababababababababababababababababuWzyzyzyzIaeahagzAzJzyzyzgzguWababuWabuWabababababababuWuWuWababababababuWuWuWuWzrababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababababababababababababababababababuWuWuWababababababababuWuWuWuWuWabababababuWuWuWabababababababababababababababababababzyzyzyzKzAagagaizAzyzyzyzyuWababuWuWuWababuWababababuWuWabababababababuWuWuWuWuWababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababababababababababababababababababababuWuWababababababuWuWuWuWuWuWuWuWabababuWuWzrabababababababababababababababababababzyzyzyzMzAzAagagagagzyzyzyuWababuWuWabababuWababababuWuWabababababababzruWuWuWuWababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababababababababuWuWuWuWuWuWuWuWababababababuWuWuWabuWuWababababababababababababababababababababzyzyzyzMzAzCagagagagzyzyzyuWabababababababuWuWababuWuWababababababababuWuWuWuWuWababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababababababababababuWuWuWabababababababababababuWuWuWuWababababababababababababababababababababzyzyzyzMzAzAagagagagzGzHzEuWuWuWabababababuWuWababuWuWabababababababababuWuWuWabababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababababababababuWuWuWabababababababababababababababuWuWababababababababababababababababababababzyzyzgzMzAagagaizAzgzyzyzyuWuWuWuWuWuWababuWuWababuWuWabababababuWuWuWuWuWuWababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababababababababababababababababababababuWuWababababababababababababababababababuWababababababababababababababababababababzyzyzgzKzAagagagzAzgzgzyzyabuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWabababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababababuWuWuWuWababababababababababababuWzruWababababuWuWuWabababababababababuWababababababababzyzyzgzKaiagagagzAzAzgzyzyabuWuWuWuWuWuWuWuWuWuWababababababababababuWuWuWabababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababababuWabababababababababababababuWuWuWuWuWuWzrababababuWuWuWuWabababababuWuWababuWabababababzyzyzgafaezNzLagzAzAzgzyzyababuWuWuWuWuWuWuWuWababababababababababuWuWuWuWabababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababzruWuWuWuWuWuWuWababababababuWuWuWababababuWababuWabababababzyzyzyzqagzAzgagzCagzgzgzyabababuWuWuWuWuWuWuWabababuWuWuWuWabababuWabuWuWabababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWababababababuWababababuWababuWuWababababzyzyzyzqagagzgagzAzAzgzgzyababuWuWuWuWababuWuWabababuWabababababuWuWuWuWababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWzruWuWuWuWabababuWuWuWababababuWababuWuWabababuWzyzyzyzqzCzgzgzgzAzAzgzgzyababuWuWababababuWuWuWababuWababababuWuWuWuWabababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababuWuWzruWuWuWabuWuWuWzruWuWuWuWuWababababababuWababuWuWabuWuWuWzEagzGzqzAzgzgzgzgzAzgzyzyabuWuWuWuWuWabababuWuWababuWuWabababuWuWuWuWabababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWzyzyzyzqzAagzgzgagagzyzyzyuWuWuWababuWuWababuWuWuWababuWababuWuWuWuWuWabababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWababababzyzyzgzqagzAzgagzAaizGagzEuWuWababababuWabababuWuWababuWuWabuWuWuWuWuWabababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWabababzyzgzgzqagaizFagagagzyzyzyabuWababuWabuWuWababuWuWabababuWuWuWuWuWuWuWabababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWabababuWuWuWuWabababzyzgzgafaeahagaiagagzyzyzyabuWuWuWuWababuWababuWuWuWababuWuWuWuWuWuWababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWabababababuWuWuWababzyzgzgzMagagagagagzgzyzyzyabababababababuWabababuWuWabuWuWuWabuWuWuWababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWabababababababuWuWuWabzyzyzyzMzgagagagzgzgzyzyzyababababababuWuWababababuWuWuWuWabuWuWuWabababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababzgzdzhziagzhzhzgzgzgzgzdzgabababababababababababababpTzoznzppTabababababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababzgzdzhzqagagzhzgzgzgzgzdzgabababababababababababababpTztzszupTababababababzruWabababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWabababababzgzdzhzqagagzhzgzgzgzgzdzgabababababababababababababpTzvzszspTababzruWuWuWuWzrabababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWabababuWuWuWababababzgzdzhzqagzwzhzgzgzgzgzdzgabababababababababababababpTpTzxpTpTabuWuWuWuWuWuWuWabababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWababzgzdzhzqaiagzhzgzgzgzgzdzgababababababababababababuWuWuWuWabababuWuWabuWuWuWuWabababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababuWzruWuWuWababababababababababuWuWuWabzgzdzhzqagzAzhzgzgzgzgzdzgabuWuWuWuWuWuWabababababuWababababuWzruWabzruWuWuWuWabababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababuWababababababababababababababababababababababababababuWuWuWuWababababababababababababuWuWuWzyzdzyzzzBzyzyzyzyzgzgzdzguWuWabababuWuWuWabababuWuWuWuWuWuWuWuWuWabuWuWuWuWuWabababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababuWuWabababababababababababababababababababababababababuWuWuWababababababababababababababuWuWzyzdzyzzagzFzCzAzyzyzyzdzguWabababababuWababababuWabababuWuWuWabuWuWuWuWuWuWuWabababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababababababababababababababababuWuWabababababababababababababababababababababababuWuWzrabababababababababababababababuWuWzEagzGzqaiagagzAzAzyzyzdzguWababuWabuWuWabababababababuWuWuWababababuWuWuWuWuWuWababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababababuWuWuWababababababababababababababababababababuWuWuWabababababababababababababababababuWzyzdzyzIaeahagzAzJzyzyzdzguWababuWabuWabababababababuWuWuWababababababuWuWuWuWzrababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababababababababababababababababababuWuWuWababababababababuWuWuWuWuWabababababuWuWuWabababababababababababababababababababzyzdzyzKzAagagaizAzyzyzdzyuWababuWuWuWababuWababababuWuWabababababababuWuWuWuWuWababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababababababababababababababababababababuWuWababababababuWuWuWuWuWuWuWuWabababuWuWzrabababababababababababababababababababzyzdzyzMzAzAagagagagzyzdzyuWababuWuWabababuWababababuWuWabababababababzruWuWuWuWababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababababababababuWuWuWuWuWuWuWuWababababababuWuWuWabuWuWababababababababababababababababababababzyzdzyzMzAzCagagagagzyzdzyuWabababababababuWuWababuWuWababababababababuWuWuWuWuWababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababababababababababuWuWuWabababababababababababuWuWuWuWababababababababababababababababababababzyzdzyzMzAzAagagagagzGagzEuWuWuWabababababuWuWababuWuWabababababababababuWuWuWabababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababababababababuWuWuWabababababababababababababababuWuWababababababababababababababababababababzyzdzgzMzAagagaizAzgzyzdzyuWuWuWuWuWuWababuWuWababuWuWabababababuWuWuWuWuWuWababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababababababababababababababababababababuWuWababababababababababababababababababuWababababababababababababababababababababzyzdzgzKzAagagagzAzgzgzdzyabuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWabababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababababuWuWuWuWababababababababababababuWzruWababababuWuWuWabababababababababuWababababababababzyzdzgzKaiagagagzAzAzgzdzyabuWuWuWuWuWuWuWuWuWuWababababababababababuWuWuWabababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababababuWabababababababababababababuWuWuWuWuWuWzrababababuWuWuWuWabababababuWuWababuWabababababzyzdzgafaezNzLagzAzAzgzdzyababuWuWuWuWuWuWuWuWababababababababababuWuWuWuWabababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababzruWuWuWuWuWuWuWababababababuWuWuWababababuWababuWabababababzyzdzyzqagzAzgagzCagzgzdzyabababuWuWuWuWuWuWuWabababuWuWuWuWabababuWabuWuWabababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWababababababuWababababuWababuWuWababababzyzdzyzqagagzgagzAzAzgzdzyababuWuWuWuWababuWuWabababuWabababababuWuWuWuWababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWzruWuWuWuWabababuWuWuWababababuWababuWuWabababuWzyzdzyzqzCzgzgzgzAzAzgzdzyababuWuWababababuWuWuWababuWababababuWuWuWuWabababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababuWuWzruWuWuWabuWuWuWzruWuWuWuWuWababababababuWababuWuWabuWuWuWzEagzGzqzAzgzgzgzgzAzgzdzyabuWuWuWuWuWabababuWuWababuWuWabababuWuWuWuWabababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWzyzdzyzqzAagzgzgagagzyzdzyuWuWuWababuWuWababuWuWuWababuWababuWuWuWuWuWabababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWababababzyzdzgzqagzAzgagzAaizGagzEuWuWababababuWabababuWuWababuWuWabuWuWuWuWuWabababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWabababzyzdzgzqagaizFagagagzyzdzyabuWababuWabuWuWababuWuWabababuWuWuWuWuWuWuWabababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWabababuWuWuWuWabababzyzdzgafaeahagaiagagzyzdzyabuWuWuWuWababuWababuWuWuWababuWuWuWuWuWuWababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWabababababuWuWuWababzyzdzgzMagagagagagzgzyzdzyabababababababuWabababuWuWabuWuWuWabuWuWuWababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWabababababababuWuWuWabzyzdzyzMzgagagagzgzgzyzdzyababababababuWuWababababuWuWuWuWabuWuWuWabababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWabababababababababuWuWabzgzdzdzezdzRzRzRzdzdzdzdzgababuWuWuWuWuWabababuWuWuWuWabuWuWuWuWababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWabababababababababababuWuWuWzgzdzSzTzUzSzSzSzVzWzSzdzgabababababababababuWuWuWuWuWuWuWabababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWabababababababababababababuWuWzgzdzSzXzYzSzSzSzZzYAazdzgabababababababuWuWuWuWuWuWababababababababababababababababababababababaaaaaaaaaaaaaa diff --git a/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm b/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm index 9182b9e11df..6536e72fec6 100644 --- a/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm @@ -30,12 +30,12 @@ "aD" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "aE" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "aF" = (/obj/machinery/door_control{desc = "A remote control-switch to call the elevator to your level."; id = "UO45_useless"; name = "Call Elevator"; pixel_x = -6; pixel_y = 24; req_access_txt = "0"},/obj/machinery/door_control{desc = "A remote control-switch for the elevator doors."; id = "UO45_Elevator"; name = "Elevator Doors"; pixel_x = 6; pixel_y = 24; req_access_txt = "0"},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) -"aG" = (/obj/structure/sign/poster{icon_state = "poster2_legit"; pixel_x = 0; pixel_y = 32; serial_number = 2; subtype = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) +"aG" = (/obj/structure/sign/poster/official/nanotrasen_logo{pixel_y = 32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "aH" = (/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) -"aI" = (/obj/structure/sign/poster{icon_state = "poster2_legit"; pixel_x = 0; pixel_y = 32; serial_number = 2; subtype = 1},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) +"aI" = (/obj/structure/sign/poster/official/nanotrasen_logo{pixel_y = 32},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "aJ" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "aK" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) -"aL" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/structure/sign/poster{icon_state = "poster19_legit"; pixel_x = -32; pixel_y = 0; serial_number = 19; subtype = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) +"aL" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/structure/sign/poster/official/safety_internals{pixel_x = -32},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "aM" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "aN" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "aO" = (/obj/machinery/light{dir = 8},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) @@ -87,10 +87,10 @@ "bI" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "bJ" = (/obj/structure/toilet{dir = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "bK" = (/obj/structure/toilet{dir = 1},/obj/machinery/light/small{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) -"bL" = (/obj/structure/sign/poster{icon_state = "poster2_legit"; pixel_x = 0; pixel_y = -32; serial_number = 2; subtype = 1},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) +"bL" = (/obj/structure/sign/poster/official/nanotrasen_logo{pixel_y = -32},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "bM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "bN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) -"bO" = (/obj/structure/sign/poster{icon_state = "poster2_legit"; pixel_x = 0; pixel_y = -32; serial_number = 2; subtype = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) +"bO" = (/obj/structure/sign/poster/official/nanotrasen_logo{pixel_y = -32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "bP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/wall,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "bQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "bR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/rust,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) @@ -157,7 +157,7 @@ "da" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock{id_tag = "awaydorm2"; name = "Dorm 2"},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "db" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "dc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock{id_tag = "awaydorm1"; name = "Dorm 1"},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) -"dd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/closet,/obj/item/weapon/contraband/poster,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) +"dd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/closet,/obj/item/weapon/poster/random_contraband,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "de" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; initialize_directions = 14; tag = "icon-manifold-b-f (NORTH)"},/turf/simulated/floor/plating{burnt = 1; icon_state = "panelscorched"; tag = "icon-panelscorched"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "df" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "dg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/rust,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) @@ -255,7 +255,7 @@ "eU" = (/obj/structure/table,/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 13; pixel_y = 5},/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 8; pixel_y = 8},/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 0; pixel_y = 3},/obj/item/weapon/watertank,/turf/simulated/floor/plasteel{dir = 1; icon_state = "vault"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "eV" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 4; icon_state = "green"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "eW" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/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},/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) -"eX" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/device/radio/off,/obj/item/weapon/screwdriver{pixel_y = 10},/obj/structure/sign/poster{icon_state = "poster21_legit"; pixel_y = -32; serial_number = 21; subtype = 1},/turf/simulated/floor/plasteel{icon_state = "red"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) +"eX" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/device/radio/off,/obj/item/weapon/screwdriver{pixel_y = 10},/obj/structure/sign/poster/official/safety_report{pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "red"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "eY" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor/plasteel{dir = 10; icon_state = "red"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "eZ" = (/obj/machinery/computer/security{network = list("UO45")},/turf/simulated/floor/plasteel{dir = 6; icon_state = "red"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "fa" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "redcorner"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) @@ -292,7 +292,7 @@ "fF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "fG" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 14; tag = "icon-manifold-r-f (NORTH)"},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "fH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) -"fI" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/sign/poster{icon_state = "poster14"; pixel_x = 32; pixel_y = 0; serial_number = 14; subtype = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 4; icon_state = "greencorner"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) +"fI" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/sign/poster/contraband/eat{pixel_x = 32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 4; icon_state = "greencorner"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "fJ" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "fK" = (/obj/structure/alien/weeds,/obj/effect/decal/cleanable/blood/tracks{color = "red"; desc = "Your instincts say you shouldn't be following these."; dir = 6; icon = 'icons/effects/blood.dmi'; icon_state = "tracks"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a7{always_unpowered = 1; has_gravity = 1; name = "UO45 Caves"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) "fL" = (/turf/simulated/wall/r_wall,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) @@ -510,7 +510,7 @@ "jP" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/research{name = "Research Lab"; req_access_txt = "201"; req_one_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "jQ" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "jR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) -"jS" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/structure/sign/poster{icon_state = "poster19_legit"; pixel_x = 0; pixel_y = 32; serial_number = 19; subtype = 1},/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched1"; tag = "icon-floorscorched1 (WEST)"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) +"jS" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/structure/sign/poster/official/safety_internals{pixel_y = 32},/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched1"; tag = "icon-floorscorched1 (WEST)"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "jT" = (/obj/structure/stool/bed/chair{tag = "icon-chair (EAST)"; icon_state = "chair"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "jU" = (/obj/structure/table,/obj/item/weapon/kitchen/utensil/fork,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "jV" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) @@ -698,7 +698,7 @@ "nv" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 5; icon_state = "neutral"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "nw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "nx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; tag = "icon-manifold-b-f (EAST)"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "neutral"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) -"ny" = (/obj/machinery/vending/cigarette,/obj/structure/sign/poster{icon_state = "poster7"; pixel_y = 32; serial_number = 7; subtype = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) +"ny" = (/obj/machinery/vending/cigarette,/obj/structure/sign/poster/contraband/smoke{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "nz" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "nA" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutral"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "nB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) @@ -909,7 +909,7 @@ "ry" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "rz" = (/obj/machinery/computer/rdservercontrol,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "rA" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) -"rB" = (/obj/structure/closet/crate,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/contraband/poster,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{burnt = 1; icon_state = "panelscorched"; tag = "icon-panelscorched"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"rB" = (/obj/structure/closet/crate,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/poster/random_contraband,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{burnt = 1; icon_state = "panelscorched"; tag = "icon-panelscorched"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "rC" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = -32},/turf/simulated/floor/plating,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "rD" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitehall"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "rE" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) @@ -1136,7 +1136,7 @@ "vR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = -32},/obj/machinery/vending/engivend{req_access_txt = "0"},/obj/machinery/camera{c_tag = "Engineering Foyer"; dir = 1; network = list("UO45")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "vS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "vT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plasteel{dir = 6; icon_state = "yellow"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"vU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/vending/tool,/obj/structure/sign/poster{icon_state = "poster5_legit"; pixel_x = 0; pixel_y = -32; serial_number = 21; subtype = 1},/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched2"; tag = "icon-floorscorched2 (WEST)"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"vU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/vending/tool,/obj/structure/sign/poster/official/build{pixel_y = -32},/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched2"; tag = "icon-floorscorched2 (WEST)"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "vV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "vW" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "vX" = (/obj/structure/closet/firecloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index d951f68a85e..8fd85ee88be 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -393,8 +393,8 @@ "ahC" = (/obj/structure/table,/obj/item/weapon/paper,/obj/item/weapon/pen,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/security/permabrig) "ahD" = (/obj/structure/stool/bed,/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/security/permabrig) "ahE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/permabrig) -"ahF" = (/obj/item/weapon/restraints/handcuffs/pinkcuffs,/turf/simulated/floor/plating,/area/security/permabrig) -"ahG" = (/obj/item/clothing/mask/muzzle/gag,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/security/permabrig) +"ahF" = (/turf/space,/area/shuttle/gamma/station) +"ahG" = (/obj/structure/table,/obj/effect/decal/warning_stripes/red/hollow,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/lock_buster,/obj/machinery/light{dir = 1; on = 1},/obj/item/device/radio/intercom{broadcasting = 0; name = "station intercom (General)"; pixel_y = 25},/obj/item/weapon/storage/box/chemimp{pixel_x = 4; pixel_y = 3},/obj/item/weapon/storage/box/trackimp,/obj/item/weapon/storage/lockbox/mindshield,/turf/simulated/floor/plasteel,/area/security/armoury) "ahH" = (/obj/machinery/deployable/barrier,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/armoury) "ahI" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/shuttle/plating/vox,/area/shuttle/vox) "ahJ" = (/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id_tag = "voxshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/shuttle/window{tag = "icon-window5_end (EAST)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; dir = 4},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox) @@ -422,7 +422,7 @@ "aif" = (/obj/machinery/deployable/barrier,/obj/structure/window/reinforced{dir = 8},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/security/armoury) "aig" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/permabrig) "aih" = (/turf/simulated/wall/r_wall,/area/security/hos) -"aii" = (/obj/structure/table,/obj/effect/decal/warning_stripes/red/hollow,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/lock_buster,/obj/machinery/light{dir = 1; on = 1},/obj/item/device/radio/intercom{broadcasting = 0; name = "station intercom (General)"; pixel_y = 25},/turf/simulated/floor/plasteel,/area/security/armoury) +"aii" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/permabrig) "aij" = (/obj/machinery/deployable/barrier,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{dir = 6; icon_state = "red"},/area/security/armoury) "aik" = (/obj/machinery/flasher/portable,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{dir = 6; icon_state = "red"},/area/security/armoury) "ail" = (/turf/simulated/shuttle/plating/vox,/area/shuttle/vox) @@ -434,9 +434,9 @@ "air" = (/obj/effect/decal/warning_stripes/west,/obj/effect/decal/warning_stripes/east,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/securearmoury) "ais" = (/obj/machinery/door/airlock{name = "Toilet"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/vacantoffice{name = "\improper Security Toilet"}) "ait" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/permabrig) -"aiu" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/permabrig) +"aiu" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) "aiv" = (/turf/simulated/wall/r_wall,/area/security/securearmoury) -"aiw" = (/obj/machinery/power/apc{cell_type = 5000; dir = 8; name = "west bump Important Area"; pixel_x = -24; shock_proof = 0},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/armoury) +"aiw" = (/obj/machinery/power/apc{cell_type = 5000; dir = 8; name = "west bump Important Area"; pixel_x = -24; shock_proof = 0},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/machinery/camera{c_tag = "Brig Armory"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/armoury) "aix" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel,/area/security/armoury) "aiy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/armoury) "aiz" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/armoury) @@ -472,7 +472,7 @@ "ajd" = (/obj/item/weapon/storage/toolbox/syndicate,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "aje" = (/obj/item/weapon/skeleton/r_arm,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "ajf" = (/obj/structure/stool/bed,/turf/simulated/floor/plasteel{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/security/execution{name = "\improper Prisoner Transfer Center"}) -"ajg" = (/obj/structure/rack,/obj/item/weapon/storage/box/chemimp{pixel_x = 4; pixel_y = 3},/obj/item/weapon/storage/box/trackimp,/obj/effect/decal/warning_stripes/red/hollow,/obj/item/weapon/storage/lockbox/mindshield,/obj/machinery/light_switch{pixel_x = -25},/obj/machinery/camera{c_tag = "Brig Armory"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/armoury) +"ajg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/permabrig) "ajh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/armoury) "aji" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/armoury) "ajj" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/securearmoury) @@ -527,7 +527,7 @@ "akg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/execution{name = "\improper Prisoner Transfer Center"}) "akh" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/execution{name = "\improper Prisoner Transfer Center"}) "aki" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/permabrig) -"akj" = (/obj/structure/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},/obj/item/weapon/storage/box/handcuffs,/obj/effect/decal/warning_stripes/red/hollow,/obj/item/weapon/storage/box/teargas{pixel_x = -3; pixel_y = -3},/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/armoury) +"akj" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) "akk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/armoury) "akl" = (/obj/machinery/door/airlock/security{name = "Warden's office"; req_access = null; req_access_txt = "3"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/armoury) "akm" = (/obj/effect/decal/warning_stripes/northwestcorner,/obj/effect/decal/warning_stripes/northeastcorner,/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/securearmoury) @@ -737,7 +737,7 @@ "aoi" = (/obj/effect/landmark/start{name = "Brig Physician"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/medbay) "aoj" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/security/medbay) "aok" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/medbay) -"aol" = (/turf/simulated/floor/plasteel,/area/shuttle/gamma/station) +"aol" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/permabrig) "aom" = (/turf/simulated/wall,/area/security/prisonlockers) "aon" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/medbay) "aoo" = (/obj/structure/table/glass,/obj/machinery/computer/med_data/laptop,/turf/simulated/floor/plasteel{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/security/medbay) @@ -870,7 +870,7 @@ "aqL" = (/obj/effect/landmark{name = "carpspawn"},/obj/structure/lattice,/turf/space,/area/space) "aqM" = (/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/range) "aqN" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/range) -"aqO" = (/obj/structure/sign/poster/legit{pixel_x = 0; pixel_y = 32},/obj/machinery/camera{c_tag = "Firing Range"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/range) +"aqO" = (/obj/structure/sign/poster/official/random{pixel_x = 0; pixel_y = 32},/obj/machinery/camera{c_tag = "Firing Range"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/range) "aqP" = (/obj/structure/closet/crate,/obj/item/target,/obj/item/target,/obj/item/target,/obj/item/target,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plasteel,/area/security/range) "aqQ" = (/obj/effect/decal/cleanable/dirt,/obj/item/device/radio/intercom{broadcasting = 0; name = "station intercom (General)"; pixel_y = 25},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/security/range) "aqR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkredcorners"},/area/security/brig) @@ -908,11 +908,11 @@ "arx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkredcorners"},/area/security/brig) "ary" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "arz" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/camera{c_tag = "Brig Main Hall East 1"; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkredcorners"},/area/security/brig) -"arA" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/sign/poster/legit{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkredcorners"},/area/security/brig) +"arA" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/sign/poster/official/random{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkredcorners"},/area/security/brig) "arB" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkredcorners"},/area/security/brig) "arC" = (/obj/item/device/radio/intercom/department/security{pixel_x = 0; pixel_y = 25},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkredcorners"},/area/security/brig) "arD" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkredcorners"},/area/security/brig) -"arE" = (/obj/structure/sign/poster/legit{pixel_x = 0; pixel_y = 32},/obj/machinery/camera{c_tag = "Brig Main Hall East 2"; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkredcorners"},/area/security/brig) +"arE" = (/obj/structure/sign/poster/official/random{pixel_x = 0; pixel_y = 32},/obj/machinery/camera{c_tag = "Brig Main Hall East 2"; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkredcorners"},/area/security/brig) "arF" = (/turf/simulated/wall,/area/security/podbay) "arG" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) "arH" = (/obj/structure/table/reinforced,/obj/item/clothing/suit/jacket/pilot,/obj/item/clothing/head/beret/sec,/obj/machinery/light_switch{pixel_x = -25},/obj/item/device/spacepod_key{id = 100000},/obj/item/device/gps,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) @@ -955,7 +955,7 @@ "ass" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j1s"; sortType = 7},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "ast" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "asu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/brig) -"asv" = (/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"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/sign/poster/legit{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/brig) +"asv" = (/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"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/sign/poster/official/random{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/brig) "asw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/brig) "asx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light,/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/brig) "asy" = (/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,/obj/structure/disposalpipe/segment{dir = 4},/obj/item/device/radio/intercom{dir = 0; name = "station intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/brig) @@ -994,12 +994,12 @@ "atf" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkredcorners"},/area/security/brig) "atg" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/brig) "ath" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/brig) -"ati" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/sign/poster/legit{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/brig) +"ati" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/sign/poster/official/random{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/brig) "atj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/brig) "atk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkredcorners"},/area/security/brig) "atl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 4},/obj/item/device/radio/intercom{dir = 0; name = "station intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/brig) "atm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/brig) -"atn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/sign/poster/legit{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/brig) +"atn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/sign/poster/official/random{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/brig) "ato" = (/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"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkred"},/area/security/brig) "atp" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkredcorners"},/area/security/brig) "atq" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) @@ -1603,14 +1603,14 @@ "aEQ" = (/obj/structure/table/reinforced,/obj/structure/mirror{pixel_x = 28},/obj/item/weapon/razor,/turf/simulated/floor/plasteel{dir = 2; icon_state = "barber"},/area/civilian/barber) "aER" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "solar_chapel_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "solar_chapel_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "solar_chapel_airlock"; pixel_x = 25; req_access_txt = "13"; tag_airpump = "solar_chapel_pump"; tag_chamber_sensor = "solar_chapel_sensor"; tag_exterior_door = "solar_chapel_outer"; tag_interior_door = "solar_chapel_inner"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aES" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitecorner"},/area/maintenance/abandonedbar) -"aET" = (/obj/structure/table/woodentable,/obj/item/weapon/lipstick/random,/obj/structure/sign/poster{pixel_x = -32},/turf/simulated/floor/plating,/area/maintenance/abandonedbar) +"aET" = (/obj/structure/table/woodentable,/obj/item/weapon/lipstick/random,/obj/structure/sign/poster/contraband/random{pixel_x = -32},/turf/simulated/floor/plating,/area/maintenance/abandonedbar) "aEU" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating{dir = 10; icon_regular_floor = "escape"},/area/maintenance/abandonedbar) "aEV" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{dir = 6; icon_state = "escape"},/area/maintenance/abandonedbar) "aEW" = (/obj/item/stack/rods,/turf/simulated/floor/plasteel{dir = 2; icon_state = "escape"},/area/maintenance/abandonedbar) "aEX" = (/obj/item/trash/pistachios,/obj/machinery/light_construct,/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken"},/area/maintenance/abandonedbar) "aEY" = (/obj/structure/stool,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/wood,/area/maintenance/abandonedbar) "aEZ" = (/obj/machinery/light,/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/plating,/area/maintenance/abandonedbar) -"aFa" = (/obj/structure/sign/poster{pixel_x = 32},/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken"},/area/maintenance/abandonedbar) +"aFa" = (/obj/structure/sign/poster/contraband/random{pixel_x = 32},/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken"},/area/maintenance/abandonedbar) "aFb" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/condiment/saltshaker,/obj/item/weapon/reagent_containers/food/condiment/peppermill,/turf/simulated/floor/plating,/area/maintenance/abandonedbar) "aFc" = (/obj/machinery/door/airlock/external{id_tag = "s_docking_airlock"; name = "Shuttle Airlock"; req_access_txt = "150"},/obj/machinery/door/poddoor{icon_state = "pdoor1"; id_tag = "syndicate_elite"; name = "Front Hull Door"; opacity = 1},/turf/simulated/shuttle/plating,/area/shuttle/syndicate_elite) "aFd" = (/turf/simulated/wall/r_wall,/area/maintenance/abandonedbar) @@ -2145,7 +2145,7 @@ "aPm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aPn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Unisex Restrooms"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aPo" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) -"aPp" = (/obj/structure/sign/poster{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/bar) +"aPp" = (/obj/structure/sign/poster/contraband/random{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/bar) "aPq" = (/obj/structure/closet/gmcloset{icon_closed = "black"; icon_state = "black"; name = "formal wardrobe"},/obj/machinery/light/small{dir = 4},/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/crew_quarters/bar) "aPr" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/camera{c_tag = "Fore Primary Hallway South"; dir = 4; network = list("SS13")},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24; shock_proof = 0},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/hallway/primary/fore) "aPs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plating,/area/maintenance/fsmaint) @@ -2192,7 +2192,7 @@ "aQh" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/fpmaint) "aQi" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/fpmaint) "aQj" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint) -"aQk" = (/obj/effect/decal/cleanable/dirt,/obj/structure/sign/poster{pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/fpmaint) +"aQk" = (/obj/effect/decal/cleanable/dirt,/obj/structure/sign/poster/contraband/random{pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/fpmaint) "aQl" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/fpmaint) "aQm" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 8},/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aQn" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 8},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) @@ -2208,7 +2208,7 @@ "aQx" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/closet/secure_closet/exam,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/exam_room) "aQy" = (/obj/item/device/radio/intercom{broadcasting = 0; name = "station intercom (General)"; pixel_y = 25},/obj/machinery/body_scanconsole,/obj/machinery/camera{c_tag = "Medbay Examination Room"; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/exam_room) "aQz" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/cryopod/right,/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/sleep) -"aQA" = (/obj/structure/filingcabinet/chestdrawer{desc = "A large drawer filled with autopsy reports."; name = "Autopsy Reports"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "blue"},/area/medical/morgue) +"aQA" = (/obj/structure/filingcabinet/chestdrawer/autopsy,/turf/simulated/floor/plasteel{dir = 9; icon_state = "blue"},/area/medical/morgue) "aQB" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/closet/crate,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aQC" = (/obj/structure/closet/crate,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aQD" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/obj/machinery/requests_console{department = "Morgue"; departmentType = 5; name = "Morgue Requests Console"; pixel_x = 0; pixel_y = 30},/obj/item/weapon/storage/box/bodybags{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/box/bodybags,/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/medical/morgue) @@ -2235,7 +2235,7 @@ "aQY" = (/obj/structure/stool,/turf/simulated/floor/plating,/area/maintenance/electrical) "aQZ" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) "aRa" = (/obj/item/device/radio/intercom{broadcasting = 0; name = "station intercom (General)"; pixel_y = 25},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Arrivals Escape Pods"; dir = 2},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) -"aRb" = (/obj/machinery/door/airlock/external{id_tag = "trade_dock"},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"aRb" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/space) "aRc" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry) "aRd" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plasteel{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry) "aRe" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry) @@ -2286,8 +2286,8 @@ "aRX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/maintenance/electrical) "aRY" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plating,/area/maintenance/electrical) "aRZ" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plating,/area/maintenance/electrical) -"aSa" = (/obj/effect/spawner/window/reinforced,/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/hallway/secondary/entry) -"aSb" = (/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},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry) +"aSa" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "sol_pump"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "sol_sensor"; pixel_x = 12; pixel_y = -25},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "sol_airlock"; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; tag_airpump = "sol_pump"; tag_chamber_sensor = "sol_sensor"; tag_exterior_door = "sol_outer"; tag_interior_door = "sol_inner"},/turf/simulated/floor/plating,/area/space) +"aSb" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "sol_outer"; locked = 1; name = "Arrivals External Access"; req_access = null; req_access_txt = "0"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; layer = 3.3; master_tag = "sol_airlock"; name = "exterior access button"; pixel_x = -13; pixel_y = -23; req_access_txt = "0"},/turf/simulated/floor/plating,/area/space) "aSc" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry) "aSd" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry) "aSe" = (/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry) @@ -2610,6 +2610,7 @@ "aYj" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/bridge) "aYk" = (/obj/machinery/door/window/eastright{name = "Coroner Office"; req_access_txt = "5"},/turf/simulated/floor/plasteel,/area/medical/morgue) "aYl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2) +"aYm" = (/obj/structure/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},/obj/item/weapon/storage/box/handcuffs,/obj/effect/decal/warning_stripes/red/hollow,/obj/item/weapon/storage/box/teargas{pixel_x = -3; pixel_y = -3},/obj/machinery/light{dir = 8},/obj/machinery/light_switch{pixel_x = -22; pixel_y = 9},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/armoury) "aYn" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aYo" = (/obj/item/weapon/storage/box/monkeycubes,/obj/item/weapon/storage/box/monkeycubes/stokcubes,/obj/item/weapon/storage/box/monkeycubes/neaeracubes,/obj/structure/table/glass,/obj/item/weapon/storage/box/monkeycubes/wolpincubes,/obj/item/weapon/storage/box/monkeycubes/farwacubes,/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{tag = "icon-whitepurple (SOUTHEAST)"; icon_state = "whitepurple"; dir = 6},/area/medical/genetics) "aYp" = (/obj/machinery/ai_status_display{pixel_y = 32},/obj/machinery/computer/card/minor/rd,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) @@ -2684,8 +2685,18 @@ "aZG" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/hallway/primary/fore) "aZH" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 3; name = "Atmospherics Requests Console"; pixel_y = -30},/obj/item/stack/sheet/glass{amount = 50},/obj/item/clothing/head/welding,/obj/item/clothing/head/welding,/turf/simulated/floor/plasteel,/area/atmos) "aZI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint) +"aZJ" = (/obj/effect/decal/cleanable/cobweb,/obj/item/clothing/mask/muzzle/gag,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "aZK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) +"aZL" = (/obj/item/weapon/restraints/handcuffs/pinkcuffs,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) +"aZM" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "aZN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) +"aZO" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/twohanded/required/kirbyplants,/obj/structure/sign/bobross{pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/captain) +"aZP" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; initialize_directions = 10},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; layer = 3.3; master_tag = "sol_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "0"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/space) +"aZQ" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "sol_inner"; locked = 1; name = "Arrivals External Access"; req_access = null; req_access_txt = "0"},/turf/simulated/floor/plating,/area/space) +"aZR" = (/obj/effect/spawner/window/reinforced,/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/space) +"aZS" = (/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/atmospherics/unary/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/space) +"aZT" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent/roomfiller{anchored = 1; valve_open = 0; volume = 1e+006},/turf/simulated/floor/engine/n20,/area/atmos) +"aZU" = (/obj/machinery/portable_atmospherics/canister/toxins{anchored = 1},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/atmos) "aZV" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/bar) "aZW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aZX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/junction{tag = "icon-pipe-j1 (EAST)"; icon_state = "pipe-j1"; dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) @@ -2767,6 +2778,7 @@ "bbv" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Dormitories"; req_access_txt = "0"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutral"},/area/crew_quarters/fitness) "bbw" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "bbx" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) +"bby" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide{anchored = 1},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/atmos) "bbz" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/hallway/primary/central/north) "bbA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/bar) "bbB" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/structure/sign/securearea{desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; pixel_x = -28; pixel_y = 4},/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/wood,/area/crew_quarters/bar) @@ -2780,7 +2792,9 @@ "bbJ" = (/obj/machinery/door/airlock{name = "Unit 1"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "bbK" = (/obj/machinery/door/airlock{name = "Unit 2"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "bbL" = (/obj/machinery/door/airlock{name = "Unit B"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) +"bbM" = (/obj/machinery/portable_atmospherics/canister/nitrogen{anchored = 1},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/atmos) "bbN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) +"bbO" = (/obj/machinery/portable_atmospherics/canister/oxygen{anchored = 1},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/atmos) "bbP" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/wall,/area/crew_quarters/kitchen) "bbQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/wall,/area/crew_quarters/kitchen) "bbR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{name = "Kitchen Maintenance"; req_access_txt = "28"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) @@ -2876,6 +2890,7 @@ "bdD" = (/turf/simulated/floor/plasteel,/area/hallway/primary/central/north) "bdE" = (/obj/machinery/camera{c_tag = "Dormitories Toilets"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "bdF" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Bar Office"; req_access_txt = "25"},/turf/simulated/floor/plasteel,/area/crew_quarters/bar) +"bdG" = (/obj/machinery/portable_atmospherics/canister/air{anchored = 1},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos) "bdH" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/primary/central/ne) "bdI" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/central/ne) "bdJ" = (/obj/machinery/light/small{dir = 1},/obj/item/device/radio/intercom{broadcasting = 0; name = "station intercom (General)"; pixel_y = 25},/obj/structure/closet/chefcloset,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) @@ -2959,6 +2974,7 @@ "bfj" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/camera{c_tag = "Bar North"; dir = 2; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/table/reinforced,/obj/machinery/chem_dispenser/soda,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/crew_quarters/bar) "bfk" = (/obj/machinery/requests_console{department = "Bar"; name = "Bar Requests Console"; departmentType = 2; pixel_x = 0; pixel_y = 30},/obj/structure/table/reinforced,/obj/machinery/chem_dispenser/beer,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/crew_quarters/bar) "bfl" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/stool/bed/chair/comfy/brown{dir = 4},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/carpet,/area/crew_quarters/bar) +"bfm" = (/obj/effect/decal/warning_stripes/north,/obj/machinery/atmospherics/unary/portables_connector,/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) "bfn" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/primary/central/ne) "bfo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/primary/central/ne) "bfp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/primary/central/ne) @@ -2966,6 +2982,7 @@ "bfr" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/stool/bed/chair/comfy/brown{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/bar) "bfs" = (/obj/machinery/light{dir = 1},/obj/machinery/vending/boozeomat,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/crew_quarters/bar) "bft" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/crew_quarters/bar) +"bfu" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "ai_outer"; locked = 1; name = "MiniSat External Access"; req_access = null; req_access_txt = "75;13"},/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) "bfv" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bfw" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bfx" = (/obj/machinery/door/window/eastright{tag = "icon-right"; name = "Hydroponics Delivery"; icon_state = "right"; dir = 2; req_access_txt = "35"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics) @@ -3062,6 +3079,7 @@ "bhk" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plasteel,/area/hallway/primary/central/ne) "bhl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/table/reinforced,/obj/item/stack/packageWrap,/obj/item/weapon/pen/blue{pixel_x = 0; pixel_y = 4},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/disposalpipe/segment{dir = 4},/obj/item/weapon/book/manual/barman_recipes,/obj/item/weapon/book/manual/sop_service,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/crew_quarters/bar) "bhm" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/crew_quarters/bar) +"bhn" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "ai_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "75;13"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "bho" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/kitchenspike,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bhp" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/plasteel,/area/hallway/primary/central/ne) "bhq" = (/turf/simulated/floor/plasteel,/area/hallway/primary/central/ne) @@ -3072,6 +3090,7 @@ "bhv" = (/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/crew_quarters/bar) "bhw" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bhx" = (/obj/structure/stool/bed/chair/comfy/brown{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/bar) +"bhy" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "ai_inner"; locked = 1; name = "MiniSat External Access"; req_access = null; req_access_txt = "75;13"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) "bhz" = (/obj/structure/stool/bed/chair/comfy/brown{dir = 8},/obj/machinery/light{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/bar) "bhA" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics) "bhB" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "asteroid"; tag = "icon-asteroid (NORTH)"},/turf/simulated/floor/plasteel{tag = "icon-siding2 (NORTH)"; icon_state = "siding2"; dir = 1},/mob/living/simple_animal/pig,/turf/simulated/floor/plasteel{tag = "icon-siding1 (NORTH)"; icon_state = "siding1"; dir = 1},/area/hydroponics) @@ -3152,6 +3171,7 @@ "biY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/hallway/primary/central/ne) "biZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "L8"},/area/hallway/primary/central/north) "bja" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/light_switch{pixel_x = -25},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/crew_quarters/bar) +"bjb" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "ai_pump"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "ai_sensor"; pixel_x = 12; pixel_y = 25},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "ai_airlock"; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; tag_airpump = "ai_pump"; tag_chamber_sensor = "ai_sensor"; tag_exterior_door = "ai_outer"; tag_interior_door = "ai_inner"},/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) "bjc" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/obj/structure/table/woodentable,/obj/item/ashtray/bronze{pixel_x = -1; pixel_y = 1},/turf/simulated/floor/carpet,/area/crew_quarters/bar) "bjd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/hallway/primary/central/ne) "bje" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/central/ne) @@ -3237,6 +3257,7 @@ "bkG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/ne) "bkH" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel,/area/hallway/primary/central/ne) "bkI" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/crew_quarters/bar) +"bkJ" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "ai_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = 25; req_access_txt = "0"},/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) "bkK" = (/obj/machinery/vending/cigarette{pixel_x = 0; pixel_y = 0},/turf/simulated/floor/carpet,/area/crew_quarters/bar) "bkL" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/freezer{req_access_txt = "28"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bkM" = (/obj/machinery/slot_machine,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/crew_quarters/bar) @@ -3275,7 +3296,7 @@ "blt" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) "blu" = (/obj/machinery/status_display{pixel_y = 30},/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor4,/area/shuttle/escape) "blv" = (/obj/machinery/status_display{pixel_y = 30},/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape) -"blw" = (/obj/structure/sign/poster/legit{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) +"blw" = (/obj/structure/sign/poster/official/random{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) "blx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) "bly" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry) "blz" = (/obj/effect/decal/warning_stripes/east,/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) @@ -3320,6 +3341,7 @@ "bmm" = (/obj/structure/stool,/turf/simulated/floor/wood,/area/crew_quarters/bar) "bmn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/stool,/turf/simulated/floor/wood,/area/crew_quarters/bar) "bmo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar) +"bmp" = (/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main) "bmq" = (/turf/simulated/floor/wood,/area/crew_quarters/bar) "bmr" = (/obj/structure/noticeboard{pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bms" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) @@ -3407,7 +3429,9 @@ "bnW" = (/obj/machinery/computer/station_alert/all,/turf/simulated/floor/plasteel{dir = 0; icon_state = "yellow"},/area/bridge) "bnX" = (/obj/machinery/computer/communications,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/bridge) "bnY" = (/obj/machinery/computer/shuttle/labor,/turf/simulated/floor/plasteel{dir = 10; icon_state = "blue"},/area/bridge) +"bnZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main) "boa" = (/obj/machinery/computer/shuttle/mining,/turf/simulated/floor/plasteel{dir = 6; icon_state = "blue"},/area/bridge) +"bob" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/east) "boc" = (/obj/machinery/computer/crew,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 0; icon_state = "green"},/area/bridge) "bod" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "bluecorner"},/area/hallway/primary/central/ne) "boe" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel,/area/hallway/primary/central/ne) @@ -3452,7 +3476,7 @@ "boR" = (/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/plasteel,/area/hallway/secondary/entry) "boS" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "boT" = (/obj/machinery/firealarm{dir = 2; pixel_y = -24},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) -"boU" = (/obj/structure/sign/poster/legit{pixel_y = -32},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"boU" = (/obj/structure/sign/poster/official/random{pixel_y = -32},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "boV" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "boW" = (/obj/machinery/camera{c_tag = "Arrivals Hallway"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "boX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) @@ -3462,7 +3486,7 @@ "bpb" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/table,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/plating,/area/storage/emergency2) "bpc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/wood,/area/civilian/pet_store) "bpd" = (/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/plasteel,/area/crew_quarters/locker) -"bpe" = (/obj/structure/sign/poster/legit{pixel_x = 32},/turf/simulated/floor/plasteel,/area/crew_quarters/locker) +"bpe" = (/obj/structure/sign/poster/official/random{pixel_x = 32},/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "bpf" = (/obj/structure/grille/broken,/turf/simulated/floor/plating,/area/maintenance/port) "bpg" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/obj/item/device/radio/intercom{frequency = 1459; name = "station intercom (General)"; pixel_x = 28},/turf/simulated/floor/wood,/area/civilian/pet_store) "bph" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/storage/emergency2) @@ -3479,6 +3503,7 @@ "bps" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/door_control{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = 28; pixel_y = -2; req_access_txt = "19"},/obj/machinery/keycard_auth{pixel_x = 29; pixel_y = 8},/turf/simulated/floor/plasteel,/area/bridge) "bpt" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel,/area/bridge) "bpu" = (/obj/structure/table/reinforced,/obj/item/weapon/book/manual/sop_command,/obj/item/device/aicard,/obj/item/device/multitool,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/bridge) +"bpv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "bpw" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 4},/area/bridge) "bpx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 4; icon_state = "greencorner"},/area/bridge) "bpy" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plating,/area/crew_quarters/bar) @@ -3510,7 +3535,7 @@ "bpY" = (/obj/machinery/door/window/northright{base_state = "right"; dir = 8; icon_state = "right"; name = "Library Desk Door"; req_access_txt = "37"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/library) "bpZ" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/light{dir = 8},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24; shock_proof = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "bqa" = (/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics) -"bqb" = (/obj/structure/stool,/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main) +"bqb" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "bqc" = (/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/wood,/area/library) "bqd" = (/obj/structure/table/woodentable,/obj/machinery/computer/library/checkout{pixel_y = 0},/obj/machinery/light/small{dir = 4},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/wood,/area/library) "bqe" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main) @@ -3640,6 +3665,7 @@ "bsy" = (/obj/effect/landmark{name = "Marauder Entry"},/turf/simulated/floor/plasteel,/area/bridge) "bsz" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plasteel,/area/bridge) "bsA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/effect/landmark{name = "Marauder Entry"},/turf/simulated/floor/plasteel,/area/bridge) +"bsB" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "bsC" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plasteel,/area/bridge) "bsD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/item/device/radio/beacon,/obj/effect/landmark{name = "Marauder Entry"},/turf/simulated/floor/plasteel,/area/bridge) "bsE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plasteel{dir = 1; icon_state = "browncorner"; tag = "icon-browncorner (EAST)"},/area/bridge) @@ -3682,7 +3708,7 @@ "btp" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main) "btq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/chapel/main) "btr" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) -"bts" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/stool,/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main) +"bts" = (/obj/machinery/door/airlock/maintenance{name = "Science Maintenance"; req_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/maintenance/asmaint2) "btt" = (/obj/structure/stool/bed/chair{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "station intercom (General)"; pixel_x = -28},/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) "btu" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) "btv" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall/interior{tag = "icon-swall_f9"; icon_state = "swall_f9"},/area/shuttle/transport) @@ -3756,7 +3782,7 @@ "buL" = (/obj/machinery/hydroponics/constructable,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics) "buM" = (/obj/structure/table/woodentable,/obj/item/weapon/kitchen/utensil/fork,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/wood,/area/crew_quarters/bar) "buN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j2s"; sortType = 16},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/east) -"buO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/sign/poster/legit{pixel_y = 32},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/east) +"buO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/sign/poster/official/random{pixel_y = 32},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/east) "buP" = (/obj/machinery/light{dir = 8},/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics) "buQ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/east) "buR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/east) @@ -3956,7 +3982,7 @@ "byD" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/hallway/primary/central/west) "byE" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/west) "byF" = (/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/hallway/primary/central/west) -"byG" = (/obj/machinery/photocopier,/obj/structure/sign/poster/legit{pixel_x = -32},/turf/simulated/floor/wood,/area/bridge/meeting_room) +"byG" = (/obj/machinery/photocopier,/obj/structure/sign/poster/official/random{pixel_x = -32},/turf/simulated/floor/wood,/area/bridge/meeting_room) "byH" = (/obj/machinery/door_control{id = "heads_meeting"; name = "Privacy Shutters Control"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/wood,/area/bridge/meeting_room) "byI" = (/obj/machinery/newscaster{pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor/wood,/area/bridge/meeting_room) "byJ" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/camera{c_tag = "Bridge Conference Room"; dir = 2; network = list("SS13")},/turf/simulated/floor/wood,/area/bridge/meeting_room) @@ -3975,7 +4001,7 @@ "byW" = (/obj/machinery/ai_status_display{pixel_y = 32},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/carpet,/area/crew_quarters/captain) "byX" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "north bump Important Area"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/wood,/area/crew_quarters/captain) "byY" = (/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/carpet,/area/crew_quarters/captain) -"byZ" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/twohanded/required/kirbyplants,/turf/simulated/floor/wood,/area/crew_quarters/captain) +"byZ" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 8; location = "Research Division"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/medical/research{name = "Research Division"}) "bza" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/ne) "bzb" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/hallway/primary/central/ne) "bzc" = (/obj/structure/sign/directions/evac{dir = 4},/obj/structure/sign/directions/medical{dir = 4; pixel_y = 7},/obj/structure/sign/directions/science{dir = 4},/turf/simulated/wall,/area/crew_quarters/bar) @@ -3984,7 +4010,7 @@ "bzf" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard/west) "bzg" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard/west) "bzh" = (/obj/machinery/camera{c_tag = "Starboard Primary Hallway 2"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard/west) -"bzi" = (/obj/item/weapon/twohanded/required/kirbyplants,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard/west) +"bzi" = (/obj/structure/closet/crate/can{pixel_y = 8},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard/west) "bzj" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/window/westright{dir = 1; name = "Hydroponics Desk"; req_access_txt = "35"},/turf/simulated/floor/plasteel,/area/hydroponics) "bzk" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Hydroponics"; req_access_txt = "35"},/turf/simulated/floor/plasteel,/area/hydroponics) "bzl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/east) @@ -4154,7 +4180,7 @@ "bCt" = (/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/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port) "bCu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) "bCv" = (/obj/item/stack/sheet/cardboard,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) -"bCw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/sign/poster{pixel_x = -32},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port) +"bCw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/sign/poster/contraband/random{pixel_x = -32},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port) "bCx" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bCy" = (/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/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) "bCz" = (/obj/machinery/camera{c_tag = "Cargo Bay Storage"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) @@ -4213,7 +4239,7 @@ "bDA" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/mask/breath,/obj/item/weapon/tank/emergency_oxygen,/turf/simulated/floor/plasteel{dir = 2; icon_state = "escape"},/area/hallway/secondary/exit) "bDB" = (/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = "s_docking_airlock"; name = "Shuttle Hatch"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) "bDC" = (/obj/machinery/door/airlock/external{id_tag = "specops_home"},/turf/simulated/floor/plating,/area/hallway/secondary/entry) -"bDD" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) +"bDD" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) "bDE" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/disposaloutlet{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/disposal) "bDF" = (/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0; req_access_txt = "0"},/obj/structure/stool/bed/roller,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) "bDG" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops) @@ -4263,6 +4289,7 @@ "bEy" = (/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"},/turf/simulated/wall,/area/medical/reception) "bEz" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/medical/reception) "bEA" = (/turf/simulated/wall/r_wall,/area/assembly/robotics) +"bEB" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Research Division Delivery"; req_access_txt = "47"},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "bEC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/genetics) "bED" = (/turf/simulated/wall/r_wall,/area/toxins/lab) "bEE" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/item/weapon/twohanded/required/kirbyplants,/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/east) @@ -4296,7 +4323,7 @@ "bFg" = (/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,/turf/simulated/floor/plating,/area/maintenance/port) "bFh" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bFi" = (/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},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/port) -"bFj" = (/obj/structure/sign/poster{pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) +"bFj" = (/obj/structure/sign/poster/contraband/random{pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) "bFk" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) "bFl" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor/plating,/area/maintenance/port) "bFm" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/quartermaster/storage) @@ -4348,8 +4375,17 @@ "bGg" = (/obj/machinery/newscaster{pixel_x = 30},/obj/machinery/alarm{pixel_y = 26},/obj/item/weapon/twohanded/required/kirbyplants,/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTHEAST)"; icon_state = "whiteblue"; dir = 5},/area/medical/reception) "bGh" = (/obj/structure/closet/walllocker/emerglocker/north,/obj/structure/table,/obj/machinery/computer/mob_healer_terminal,/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/reception) "bGi" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/obj/machinery/bodyscanner,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/exam_room) +"bGj" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/asmaint2) +"bGk" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/rack,/obj/item/weapon/circuitboard/aicore{pixel_x = -2; pixel_y = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) +"bGl" = (/obj/structure/rack,/obj/item/device/aicard,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) +"bGm" = (/obj/structure/rack,/obj/item/device/taperecorder{pixel_x = -3},/obj/item/device/paicard{pixel_x = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/crew_quarters/hor) +"bGn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) +"bGo" = (/obj/machinery/atmospherics/pipe/simple/insulated{dir = 4},/turf/space,/area/space) +"bGp" = (/obj/machinery/atmospherics/pipe/simple/insulated{dir = 6},/turf/simulated/wall/r_wall,/area/maintenance/asmaint2) "bGq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/assembly/chargebay) "bGr" = (/turf/simulated/wall/r_wall,/area/assembly/chargebay) +"bGs" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 8; frequency = 1441; id = "co2_in"; pixel_y = 1},/turf/simulated/floor/plating/airless,/area/toxins/mixing) +"bGt" = (/obj/structure/table,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/item/device/flashlight/pen,/obj/item/device/flashlight/pen,/obj/item/device/flashlight/pen,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/accessory/stethoscope,/obj/item/clothing/accessory/stethoscope,/obj/item/clothing/accessory/stethoscope,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/turf/simulated/floor/plasteel{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay3) "bGu" = (/obj/machinery/computer/rdconsole/robotics,/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics) "bGv" = (/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/turf/simulated/floor/plasteel,/area/medical/morgue) "bGw" = (/obj/machinery/r_n_d/circuit_imprinter,/obj/item/weapon/reagent_containers/glass/beaker/sulphuric,/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics) @@ -4403,7 +4439,7 @@ "bHs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/r_wall,/area/engine/gravitygenerator) "bHt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/space,/area/space) "bHu" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/gravitygenerator) -"bHv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/rack,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/clothing/suit/space/captain,/obj/item/clothing/mask/gas,/obj/item/clothing/head/helmet/space/capspace,/obj/item/device/radio/intercom/private{pixel_x = -28},/turf/simulated/floor/wood,/area/crew_quarters/captain) +"bHv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/rack,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/jetpack/oxygen/captain,/obj/item/clothing/suit/space/captain,/obj/item/clothing/mask/gas,/obj/item/clothing/head/helmet/space/capspace,/obj/item/device/radio/intercom/private{pixel_x = -28},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bHw" = (/obj/machinery/computer/card,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bHx" = (/obj/structure/table/woodentable,/obj/machinery/recharger{pixel_y = 4},/obj/item/weapon/melee/chainofcommand,/obj/item/weapon/card/id/captains_spare,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bHy" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/wood,/area/crew_quarters/captain) @@ -4426,7 +4462,10 @@ "bHP" = (/obj/structure/stool,/turf/simulated/floor/plasteel{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/reception) "bHQ" = (/turf/simulated/floor/plasteel,/area/medical/morgue) "bHR" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/exam_room) +"bHS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light{dir = 1; on = 1},/obj/structure/bookcase/manuals/medical,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/medbreak) +"bHT" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/cell_charger,/obj/item/weapon/gun/syringe,/obj/item/weapon/screwdriver,/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/medbay3) "bHU" = (/obj/structure/morgue,/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel,/area/medical/morgue) +"bHV" = (/obj/machinery/cell_charger,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 7; pixel_y = 1},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 0; pixel_y = 0},/obj/machinery/camera{c_tag = "Medbay Cryogenics"; network = list("SS13")},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/table/glass,/obj/item/weapon/screwdriver,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/cryo) "bHX" = (/turf/simulated/floor/plasteel,/area/assembly/chargebay) "bIa" = (/turf/simulated/wall,/area/assembly/robotics) "bIb" = (/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel,/area/medical/morgue) @@ -4533,7 +4572,7 @@ "bKg" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access_txt = "29"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics) "bKh" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics) "bKi" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) -"bKj" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/sign/poster/legit{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) +"bKj" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/sign/poster/official/random{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "bKk" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = 6},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/clothing/head/welding{pixel_x = -3; pixel_y = 5},/obj/item/clothing/glasses/welding,/obj/structure/disposalpipe/segment{dir = 4},/obj/item/device/radio/headset/headset_sci{pixel_x = -3},/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics) "bKl" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bKm" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/shuttle/escape) @@ -4631,7 +4670,7 @@ "bMe" = (/obj/machinery/mass_driver{id_tag = "trash"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal) "bMf" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/lab) "bMg" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/item/stack/packageWrap,/obj/item/weapon/pen,/obj/item/weapon/hand_labeler,/obj/structure/table/glass,/obj/item/weapon/book/manual/sop_science,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) -"bMh" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/structure/sign/poster{pixel_x = 32},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/asmaint2) +"bMh" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/structure/sign/poster/contraband/random{pixel_x = 32},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bMi" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/hallway/secondary/entry) "bMj" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry) "bMk" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) @@ -4715,12 +4754,8 @@ "bNS" = (/obj/machinery/light{dir = 8},/obj/machinery/computer/rdconsole/core,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/lab) "bNT" = (/obj/machinery/r_n_d/circuit_imprinter{pixel_x = 3; pixel_y = 5},/obj/item/weapon/reagent_containers/glass/beaker/sulphuric,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/lab) "bNU" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/camera{c_tag = "Research Research and Development Lab"; dir = 8; network = list("Research","SS13")},/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/micro_laser,/obj/item/weapon/stock_parts/micro_laser,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) -"bNV" = (/obj/structure/grille,/obj/structure/window/full/shuttle,/turf/simulated/shuttle/plating,/area/shuttle/research) "bNW" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"bNX" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/shuttle/research) "bNY" = (/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/plasteel,/area/quartermaster/office) -"bNZ" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/research) -"bOa" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/shuttle/research) "bOb" = (/obj/effect/spawner/window/reinforced,/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},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "bOc" = (/turf/simulated/shuttle/floor,/area/shuttle/supply) "bOd" = (/obj/machinery/door/poddoor{id_tag = "trash"; name = "disposal bay door"; protected = 0},/obj/structure/fans/tiny,/turf/simulated/floor/plating,/area/maintenance/disposal) @@ -4769,7 +4804,7 @@ "bOU" = (/turf/simulated/wall,/area/medical/chemistry) "bOV" = (/obj/effect/decal/warning_stripes/yellow/partial,/obj/effect/decal/warning_stripes/arrow,/turf/simulated/floor/plasteel,/area/medical/reception) "bOW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/yellow/partial,/obj/effect/decal/warning_stripes/arrow,/turf/simulated/floor/plasteel,/area/medical/reception) -"bOX" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/sign/poster/legit{pixel_x = -32},/turf/simulated/floor/plasteel,/area/hallway/primary/central/se) +"bOX" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/sign/poster/official/random{pixel_x = -32},/turf/simulated/floor/plasteel,/area/hallway/primary/central/se) "bOY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/item/device/radio/intercom{frequency = 1459; name = "station intercom (General)"; pixel_x = 28},/turf/simulated/floor/plasteel,/area/hallway/primary/central/se) "bOZ" = (/turf/simulated/floor/plasteel,/area/medical/reception) "bPa" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Chemistry Lab"; req_access_txt = "33"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) @@ -4796,15 +4831,9 @@ "bPz" = (/obj/machinery/newscaster{pixel_x = -27; pixel_y = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "bPA" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bPB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) -"bPC" = (/obj/structure/closet/crate,/turf/simulated/shuttle/floor,/area/shuttle/research) -"bPD" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/research) -"bPE" = (/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/research) -"bPF" = (/turf/simulated/shuttle/floor,/area/shuttle/research) -"bPG" = (/obj/structure/table,/turf/simulated/shuttle/floor,/area/shuttle/research) "bPH" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "bPI" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/administration) "bPJ" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/stock_parts/matter_bin,/obj/item/weapon/stock_parts/matter_bin,/obj/structure/table/glass,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) -"bPK" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/research) "bPL" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/shuttle/administration) "bPM" = (/obj/machinery/door/airlock/external{id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; req_access_txt = "106"},/obj/docking_port/mobile{dir = 2; dwidth = 8; height = 15; id = "admin"; name = "administration shuttle"; roundstart_move = "admin_away"; width = 18},/obj/docking_port/stationary{dir = 2; dwidth = 8; height = 15; id = "admin_home"; name = "port bay 1"; width = 18},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "bPN" = (/obj/machinery/door/airlock/external{id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; req_access_txt = "106"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) @@ -4820,7 +4849,6 @@ "bPX" = (/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/quartermaster/office) "bPY" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plasteel,/area/quartermaster/office) "bPZ" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "browncorner"},/area/quartermaster/office) -"bQa" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/research_shuttle_dock) "bQb" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/primary/central/sw) "bQc" = (/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"; tag = "icon-pipe-j2"},/turf/simulated/floor/plasteel,/area/quartermaster/office) "bQd" = (/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/plasteel,/area/quartermaster/office) @@ -4833,7 +4861,7 @@ "bQk" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/crew_quarters/heads) "bQl" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/carpet,/area/crew_quarters/heads) "bQm" = (/turf/simulated/floor/plasteel,/area/engine/gravitygenerator) -"bQn" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/sign/poster/legit{pixel_x = 32},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"bQn" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/sign/poster/official/random{pixel_x = 32},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "bQo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/space,/area/space) "bQp" = (/obj/structure/stool/bed/chair/office/dark,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel,/area/engine/gravitygenerator) "bQq" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel,/area/engine/gravitygenerator) @@ -4882,9 +4910,6 @@ "bRo" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera{c_tag = "Research Hallway Entrance"; dir = 2; network = list("Research","SS13")},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/medical/research{name = "Research Division"}) "bRp" = (/obj/machinery/door_control{id = "rdlab2"; name = "Research and Development Lab Shutters Control"; pixel_x = -24; pixel_y = -24; req_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "bRq" = (/obj/structure/table,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 0; pixel_y = 0},/obj/item/stack/tape_roll,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) -"bRr" = (/obj/structure/shuttle/engine/propulsion/burst{dir = 8},/turf/space,/area/shuttle/research) -"bRs" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/shuttle/research) -"bRt" = (/obj/machinery/computer/shuttle/science,/turf/simulated/shuttle/floor,/area/shuttle/research) "bRu" = (/obj/machinery/vending/boozeomat,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/administration) "bRv" = (/obj/structure/table/reinforced,/obj/machinery/chem_dispenser/beer,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "bRw" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/drinkingglasses,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) @@ -4937,7 +4962,6 @@ "bSr" = (/obj/structure/closet/secure_closet/chemical,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bSs" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTHEAST)"; icon_state = "whiteblue"; dir = 5},/area/medical/medbay2) "bSt" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyerPort"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = -26; pixel_y = 6; range = 3; req_access_txt = null},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/medbay2) -"bSu" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/cell_charger,/obj/item/weapon/gun/syringe,/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/medbay3) "bSv" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/medical/medbay3) "bSw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay3) "bSx" = (/obj/structure/closet/secure_closet/medical3,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay3) @@ -4974,10 +4998,7 @@ "bTe" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/toxins/lab) "bTf" = (/obj/effect/landmark{name = "lightsout"},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/medical/research{name = "Research Division"}) "bTg" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "rdlab2"; name = "Research and Development Lab Shutters"; opacity = 0},/obj/machinery/door/window/eastright{base_state = "left"; dir = 1; icon_state = "left"; name = "Research and Development Desk"; req_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) -"bTh" = (/turf/simulated/wall/r_wall,/area/medical/research_shuttle_dock) -"bTi" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating/airless,/area/medical/research_shuttle_dock) "bTj" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/glass_research{name = "Research and Development"; req_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) -"bTk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bTl" = (/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "bTm" = (/obj/structure/table,/obj/item/pod_parts/core,/obj/item/weapon/circuitboard/mecha/pod,/obj/item/clothing/glasses/welding{pixel_y = 12},/obj/item/device/gps,/turf/simulated/floor/plasteel,/area/engine/mechanic_workshop) "bTn" = (/obj/machinery/door/poddoor/preopen{id_tag = "adminshuttleblast"; name = "Blast Doors"; req_access_txt = "101"},/obj/machinery/door/airlock/centcom{id_tag = "adminshuttle"; name = "General Access"; opacity = 1; req_access_txt = "101"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) @@ -5036,7 +5057,7 @@ "bUo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2) "bUp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/medbay2) "bUq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/medbay2) -"bUr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/sign/poster/legit{pixel_y = -32},/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/medbay2) +"bUr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/sign/poster/official/random{pixel_y = -32},/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/medbay2) "bUs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/medbay2) "bUt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/medbay2) "bUu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/medbay2) @@ -5053,34 +5074,19 @@ "bUF" = (/obj/machinery/computer/operating{name = "Robotics Operating Computer"},/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics) "bUG" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/genetics) "bUH" = (/obj/structure/closet/wardrobe/robotics_black,/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics) -"bUI" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags{pixel_x = -4; pixel_y = -4},/obj/structure/sign/poster/legit{pixel_x = -32},/obj/item/weapon/storage/box/masks,/obj/item/weapon/storage/box/gloves{pixel_x = 4; pixel_y = 4},/obj/item/weapon/tank/anesthetic,/obj/item/clothing/mask/breath/medical,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; name = "Surgery Cleaner"},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 4},/area/assembly/robotics) +"bUI" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags{pixel_x = -4; pixel_y = -4},/obj/structure/sign/poster/official/random{pixel_x = -32},/obj/item/weapon/storage/box/masks,/obj/item/weapon/storage/box/gloves{pixel_x = 4; pixel_y = 4},/obj/item/weapon/tank/anesthetic,/obj/item/clothing/mask/breath/medical,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; name = "Surgery Cleaner"},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 4},/area/assembly/robotics) "bUJ" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics) "bUK" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "bUL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "bUM" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bUN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bUO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/noticeboard{pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bUP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) -"bUQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bUR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) -"bUS" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) -"bUT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bUU" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/medical/research{name = "Research Division"}) -"bUV" = (/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Research Shuttle Maintenance"; dir = 2; network = list("Research","SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) -"bUW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) -"bUX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/research_shuttle_dock) -"bUY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/glass_research{name = "Research Shuttle Dock"; req_access_txt = "65"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research_shuttle_dock) -"bUZ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/research_shuttle_dock) -"bVa" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/research_shuttle_dock) -"bVb" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/research_shuttle_dock) -"bVc" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/research) -"bVd" = (/obj/machinery/door/airlock/external{id_tag = "s_docking_airlock"; name = "External Hatch"; req_access_txt = "65"},/obj/docking_port/mobile{dwidth = 3; height = 5; id = "science"; name = "research shuttle"; rebuildable = 1; width = 7},/obj/docking_port/stationary{dwidth = 3; height = 5; id = "science_home"; name = "research dock"; width = 7},/turf/simulated/shuttle/floor,/area/shuttle/research) "bVe" = (/obj/machinery/kitchen_machine/microwave/upgraded,/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "bVf" = (/obj/machinery/door/window/northright{name = "bar"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "bVg" = (/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "bVh" = (/obj/item/ashtray/glass,/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "bVi" = (/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,/obj/item/weapon/lighter/zippo{pixel_x = 5},/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) -"bVj" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/research) "bVk" = (/obj/machinery/door_control{id = "adminshuttleblast"; name = "blast door control"; pixel_x = -30; req_access_txt = "106"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "bVl" = (/obj/machinery/door/airlock/centcom{id_tag = "adminshuttle"; name = "Workshop"; opacity = 1; req_access_txt = "105"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "bVm" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/supply) @@ -5118,7 +5124,6 @@ "bVS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "MedbayFoyer"; name = "Medical Supplies"; req_access_txt = "5"},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/chemistry) "bVT" = (/turf/simulated/wall,/area/medical/medbay3) "bVU" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/medbay2) -"bVV" = (/obj/structure/table,/obj/item/bodybag/cryobag{pixel_x = -3},/obj/item/bodybag/cryobag,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/item/device/flashlight/pen,/obj/item/device/flashlight/pen,/obj/item/device/flashlight/pen,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/accessory/stethoscope,/obj/item/clothing/accessory/stethoscope,/obj/item/clothing/accessory/stethoscope,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/turf/simulated/floor/plasteel{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay3) "bVW" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) "bVX" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/item/roller,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) "bVY" = (/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/structure/cable,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/medbay3) @@ -5142,19 +5147,7 @@ "bWq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bWr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bWs" = (/obj/machinery/camera{c_tag = "Research Hallway North"; dir = 1; network = list("Research","SS13")},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bWt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bWu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bWv" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bWw" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 8; location = "Research Division"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/medical/research{name = "Research Division"}) -"bWx" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Research Division Delivery"; req_access_txt = "47"},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) -"bWy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) -"bWz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) -"bWA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research_shuttle_dock) -"bWB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/glass_research{name = "Research Shuttle Dock"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research_shuttle_dock) -"bWC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research_shuttle_dock) -"bWD" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/research_shuttle_dock) -"bWE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research_shuttle_dock) -"bWF" = (/obj/machinery/door/airlock/external{id_tag = "science_home"; name = "Shuttle Airlock"; req_access_txt = "65"},/turf/simulated/floor/plating,/area/medical/research_shuttle_dock) "bWG" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/obj/structure/window/plasmareinforced{color = "#FF0000"; dir = 4},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/administration) "bWH" = (/obj/structure/stool,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "bWI" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) @@ -5210,7 +5203,6 @@ "bXG" = (/obj/structure/closet/secure_closet/medical1,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/cryo) "bXH" = (/obj/machinery/atmospherics/unary/cryo_cell,/turf/simulated/floor/plasteel,/area/medical/cryo) "bXI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/medbay2) -"bXJ" = (/obj/machinery/cell_charger,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 7; pixel_y = 1},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 0; pixel_y = 0},/obj/machinery/camera{c_tag = "Medbay Cryogenics"; network = list("SS13")},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/cryo) "bXK" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/atmospherics/unary/cryo_cell,/turf/simulated/floor/plasteel,/area/medical/cryo) "bXL" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/genetics_cloning) "bXM" = (/obj/machinery/camera{c_tag = "Medbay Cloning"; network = list("SS13")},/obj/structure/closet/wardrobe/medic_white,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/genetics_cloning) @@ -5237,15 +5229,7 @@ "bYh" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/crew_quarters/hor) "bYi" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/crew_quarters/hor) "bYj" = (/turf/simulated/wall/r_wall,/area/crew_quarters/hor) -"bYk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/crew_quarters/hor) "bYl" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/crew_quarters/hor) -"bYm" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/research_shuttle_dock) -"bYn" = (/obj/machinery/light{dir = 8},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research_shuttle_dock) -"bYo" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "cmo"},/area/medical/research_shuttle_dock) -"bYp" = (/obj/machinery/camera{c_tag = "Research Shuttle Dock"; dir = 2; network = list("SS13","Research")},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cmo"},/area/medical/research_shuttle_dock) -"bYq" = (/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/medical/research_shuttle_dock) -"bYr" = (/obj/machinery/door/airlock/external{id_tag = "science_home"; name = "Shuttle Airlock"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research_shuttle_dock) -"bYs" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/medical/research_shuttle_dock) "bYt" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "bYu" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_r"; tag = "icon-propulsion_r (EAST)"},/turf/space,/area/shuttle/administration) "bYv" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/administration) @@ -5329,19 +5313,14 @@ "bZV" = (/obj/machinery/computer/aifixer,/obj/machinery/requests_console{announcementConsole = 1; department = "Research Director's Desk"; departmentType = 7; name = "Research Director Requests Console"; pixel_x = -2; pixel_y = 30},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "bZW" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) "bZX" = (/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","Research Outpost","RD"); pixel_x = 0; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) -"bZY" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/rack,/obj/item/weapon/circuitboard/aicore{pixel_x = -2; pixel_y = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) "bZZ" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"caa" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research_shuttle_dock) "cac" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"cad" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cmo"},/area/medical/research_shuttle_dock) "cae" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/shuttle/administration) "caf" = (/obj/machinery/vending/snack,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "cag" = (/obj/machinery/vending/cola,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "cah" = (/obj/machinery/vending/coffee,/obj/machinery/light/spot,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "cai" = (/obj/machinery/vending/cigarette,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) -"caj" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/medical/research_shuttle_dock) "cak" = (/obj/machinery/computer/communications,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) -"cal" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/medical/research_shuttle_dock) "cam" = (/turf/simulated/wall,/area/quartermaster/miningdock) "can" = (/obj/structure/table/reinforced,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "cao" = (/obj/structure/filingcabinet,/turf/simulated/floor/plasteel,/area/quartermaster/qm) @@ -5360,7 +5339,7 @@ "caB" = (/obj/machinery/camera{c_tag = "Central Hallway South-East"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel,/area/hallway/primary/central/se) "caC" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "acute1"; name = "Acute 1 Privacy Shutters"; opacity = 0},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) "caD" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "acute1"; name = "Acute 1 Privacy Shutters"; opacity = 0},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) -"caE" = (/obj/structure/sign/poster/legit{pixel_x = -32},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) +"caE" = (/obj/structure/sign/poster/official/random{pixel_x = -32},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) "caF" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2) "caG" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2) "caH" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/item/device/radio/intercom/department/medbay{pixel_y = 25},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) @@ -5400,10 +5379,7 @@ "cbq" = (/obj/machinery/computer/robotics,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "cbr" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/effect/landmark/start{name = "Research Director"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "cbs" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) -"cbt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/rack,/obj/item/device/aicard,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) "cbu" = (/obj/structure/lamarr,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) -"cbv" = (/obj/machinery/computer/shuttle/science,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/research_shuttle_dock) -"cbw" = (/obj/item/device/radio/intercom{name = "station intercom (General)"; pixel_y = -28},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research_shuttle_dock) "cbx" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "cby" = (/obj/machinery/computer/shuttle/admin,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "cbz" = (/obj/machinery/door/airlock/centcom{id_tag = "adminshuttle"; name = "Bridge"; opacity = 1; req_access_txt = "106"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) @@ -5494,7 +5470,6 @@ "cdg" = (/obj/machinery/computer/mecha,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "cdh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "cdi" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) -"cdj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/rack,/obj/item/device/taperecorder{pixel_x = -3},/obj/item/device/paicard{pixel_x = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/crew_quarters/hor) "cdk" = (/obj/item/device/radio/intercom{frequency = 1459; name = "station intercom (General)"; pixel_x = 28},/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/crew_quarters/hor) "cdl" = (/obj/machinery/dna_scannernew/upgraded,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration) "cdm" = (/obj/machinery/computer/cloning,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration) @@ -5578,8 +5553,6 @@ "ceM" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "ceN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "ceO" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) -"ceP" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) -"ceQ" = (/obj/machinery/atmospherics/unary/outlet_injector/on,/turf/simulated/floor/plating/airless,/area/toxins/mixing) "ceR" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration) "ceS" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "ceT" = (/obj/machinery/door/airlock/centcom{id_tag = "adminshuttle"; name = "Medbay"; opacity = 1; req_access_txt = "103"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) @@ -5721,7 +5694,6 @@ "chA" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/light{dir = 1; on = 1},/obj/machinery/door_control{id = "staffroom"; name = "Staff Room Privacy Shutters Control"; pixel_x = -25; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/medbreak) "chB" = (/obj/machinery/camera{c_tag = "Medbay Break Room"; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/obj/machinery/washing_machine,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/medbreak) "chC" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/medbreak) -"chD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light{dir = 1; on = 1},/obj/structure/bookcase/manuals/medical,/obj/item/weapon/book/manual/stasis,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/medbreak) "chE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/medical/genetics) "chF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/table/woodentable,/obj/item/weapon/phone{pixel_x = -3; pixel_y = 3},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/medbreak) "chG" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor/plasteel{tag = "icon-whitepurple (NORTHWEST)"; icon_state = "whitepurple"; dir = 9},/area/medical/genetics) @@ -5739,7 +5711,7 @@ "chS" = (/mob/living/simple_animal/mouse/white,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/storage) "chT" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/storage) "chU" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera{c_tag = "Research Toxins Storage Room"; dir = 4; network = list("Research","SS13"); pixel_y = -22},/turf/simulated/floor/plasteel,/area/toxins/storage) -"chV" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/sign/poster/legit{pixel_x = -32},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) +"chV" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/sign/poster/official/random{pixel_x = -32},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "chW" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "chX" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "chY" = (/obj/machinery/atmospherics/pipe/simple/insulated{dir = 6},/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) @@ -6104,7 +6076,7 @@ "coW" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/apmaint) "coX" = (/obj/structure/table/woodentable,/obj/item/ashtray/glass{pixel_x = -4; pixel_y = -4},/obj/item/weapon/lighter/zippo/blue{pixel_x = 7; pixel_y = 4},/turf/simulated/floor/plasteel{icon_state = "bcarpet05"},/area/blueshield) "coY" = (/obj/machinery/keycard_auth{pixel_x = -24; pixel_y = 0},/obj/machinery/door/window{dir = 1; name = "Desk Door"; req_access_txt = "67"},/turf/simulated/floor/wood,/area/blueshield) -"coZ" = (/obj/structure/sign/poster/legit{pixel_x = 32},/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/blueshield) +"coZ" = (/obj/structure/sign/poster/official/random{pixel_x = 32},/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/blueshield) "cpa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/wall,/area/ntrep) "cpb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/ntrep) "cpc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/carpet,/area/ntrep) @@ -6196,7 +6168,7 @@ "cqK" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/plasteel{icon_state = "bcarpet05"},/area/blueshield) "cqL" = (/obj/item/flag/nt,/turf/simulated/floor/wood,/area/blueshield) "cqM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/ntrep) -"cqN" = (/obj/item/flag/nt,/obj/structure/sign/poster/legit{pixel_x = -32},/turf/simulated/floor/wood,/area/ntrep) +"cqN" = (/obj/item/flag/nt,/obj/structure/sign/poster/official/random{pixel_x = -32},/turf/simulated/floor/wood,/area/ntrep) "cqO" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/carpet,/area/ntrep) "cqP" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/apmaint) "cqQ" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/effect/landmark/start{name = "Nanotrasen Representative"},/turf/simulated/floor/carpet,/area/ntrep) @@ -6239,7 +6211,7 @@ "crB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "crC" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "crD" = (/turf/simulated/wall,/area/medical/psych) -"crE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera{c_tag = "Medbay Psych Office Corridor West"; network = list("SS13")},/obj/structure/sign/poster/legit{pixel_y = 32},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) +"crE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera{c_tag = "Medbay Psych Office Corridor West"; network = list("SS13")},/obj/structure/sign/poster/official/random{pixel_y = 32},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "crF" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/medical/psych) "crG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/disposalpipe/segment,/obj/structure/closet/walllocker/emerglocker/north,/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTHEAST)"; icon_state = "whiteblue"; dir = 5},/area/medical/medbay2) "crH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Psych Office"; req_access_txt = "64"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/psych) @@ -6299,7 +6271,7 @@ "csJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/engine/controlroom) "csK" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/asmaint) "csL" = (/turf/simulated/floor/plating,/area/maintenance/asmaint) -"csM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/sign/poster/legit{pixel_x = 32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) +"csM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/sign/poster/official/random{pixel_x = 32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) "csN" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/closet/firecloset,/obj/item/taperoll/engineering,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel,/area/engine/controlroom) "csO" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/obj/structure/closet/firecloset,/obj/item/taperoll/engineering,/turf/simulated/floor/plasteel,/area/engine/controlroom) "csP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/medical/sleeper) @@ -6416,7 +6388,7 @@ "cuW" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) "cuX" = (/obj/machinery/camera{c_tag = "Research Hallway South"; dir = 1; network = list("Research","SS13"); pixel_x = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cuY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/visible{dir = 6; level = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"cuZ" = (/obj/machinery/atmospherics/pipe/manifold/visible,/obj/structure/sign/poster/legit{pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) +"cuZ" = (/obj/machinery/atmospherics/pipe/manifold/visible,/obj/structure/sign/poster/official/random{pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) "cva" = (/obj/machinery/atmospherics/binary/valve{dir = 4},/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) "cvb" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) "cvc" = (/obj/item/device/assembly/prox_sensor{pixel_x = -5; pixel_y = -5},/obj/item/device/assembly/prox_sensor{pixel_x = -4; pixel_y = 4},/obj/item/device/assembly/prox_sensor{pixel_x = 5; pixel_y = 5},/obj/structure/table,/obj/item/device/assembly/prox_sensor,/obj/item/device/assembly/prox_sensor{pixel_x = -5; pixel_y = -5},/obj/item/device/assembly/prox_sensor,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) @@ -6497,7 +6469,7 @@ "cwz" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/apmaint) "cwA" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/obj/item/stack/sheet/metal{amount = 2},/turf/simulated/floor/plating,/area/maintenance/apmaint) "cwB" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating,/area/maintenance/apmaint) -"cwC" = (/obj/structure/sign/poster{pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/apmaint) +"cwC" = (/obj/structure/sign/poster/contraband/random{pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/apmaint) "cwD" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating,/area/maintenance/apmaint) "cwE" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/apmaint) "cwF" = (/turf/simulated/floor/plasteel,/area/maintenance/consarea) @@ -6567,7 +6539,7 @@ "cxR" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/maintenance{name = "E.X.P.E.R.I-MENTOR Lab Maintenance"; req_access_txt = "47"},/turf/simulated/floor/plating,/area/maintenance/asmaint) "cxS" = (/obj/effect/decal/cleanable/fungus,/turf/simulated/wall,/area/maintenance/asmaint2) "cxT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/wall,/area/toxins/explab) -"cxU" = (/obj/structure/sign/poster{pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint) +"cxU" = (/obj/structure/sign/poster/contraband/random{pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint) "cxV" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "cxW" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Xenobiology Research"; req_access_txt = "47"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cxX" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 4},/turf/simulated/floor/plating/airless,/area/maintenance/incinerator) @@ -6782,7 +6754,7 @@ "cBY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/asmaint) "cBZ" = (/obj/machinery/alarm{pixel_y = 22},/obj/structure/table,/obj/item/device/radio/electropack,/obj/item/device/assembly/signaler,/obj/item/device/healthanalyzer,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) "cCa" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Xenobiology Research"; req_access_txt = "47"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) -"cCb" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/clothing/ears/earmuffs,/obj/item/device/multitool,/obj/item/clothing/ears/earmuffs,/obj/structure/sign/poster/legit{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) +"cCb" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/clothing/ears/earmuffs,/obj/item/device/multitool,/obj/item/clothing/ears/earmuffs,/obj/structure/sign/poster/official/random{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) "cCc" = (/obj/structure/reagent_dispensers/fueltank,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) "cCd" = (/obj/structure/closet/bombcloset,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) "cCe" = (/obj/structure/closet/secure_closet/scientist,/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) @@ -6873,7 +6845,7 @@ "cDL" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "cDM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/toxins/test_area) "cDN" = (/obj/machinery/camera{c_tag = "Research Toxins Test Chamber South"; dir = 1; network = list("Toxins","Research","SS13")},/obj/machinery/light,/turf/simulated/floor/plasteel/airless,/area/toxins/test_area) -"cDO" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/structure/sign/poster{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) +"cDO" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/structure/sign/poster/contraband/random{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "cDP" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine/insulated,/area/maintenance/incinerator) "cDQ" = (/obj/structure/closet/toolcloset,/turf/simulated/floor/plating,/area/maintenance/apmaint) "cDR" = (/obj/item/weapon/table_parts,/turf/simulated/floor/plasteel,/area/maintenance/consarea) @@ -7540,7 +7512,7 @@ "cQC" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "cQD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/aft) "cQE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/hallway/primary/aft) -"cQF" = (/obj/structure/table,/obj/structure/sign/poster{pixel_x = -32},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/assembly/assembly_line) +"cQF" = (/obj/structure/table,/obj/structure/sign/poster/contraband/random{pixel_x = -32},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/assembly/assembly_line) "cQG" = (/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/assembly/assembly_line) "cQH" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/assembly/assembly_line) "cQI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/aft) @@ -7857,7 +7829,7 @@ "cWJ" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) "cWK" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) "cWL" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_y = 5},/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/weapon/storage/belt/utility,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) -"cWM" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/item/weapon/stock_parts/cell/high,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/sign/poster/legit{pixel_x = 32},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) +"cWM" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/item/weapon/stock_parts/cell/high,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/sign/poster/official/random{pixel_x = 32},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) "cWN" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/atmos) "cWO" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 4},/turf/simulated/floor/plasteel,/area/atmos) "cWP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) @@ -7925,7 +7897,6 @@ "cYa" = (/obj/machinery/atmospherics/binary/pump{dir = 0; name = "Pure to Port"; on = 0},/turf/simulated/floor/plasteel,/area/atmos) "cYb" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/visible/cyan{level = 2},/turf/simulated/floor/plating,/area/atmos) "cYc" = (/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")},/turf/simulated/floor/plasteel{icon_state = "escape"; dir = 4},/area/atmos) -"cYd" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent/roomfiller{valve_open = 0; volume = 1e+006},/turf/simulated/floor/engine/n20,/area/atmos) "cYe" = (/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "cYf" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "n2o_sensor"},/turf/simulated/floor/engine/n20,/area/atmos) "cYg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -8010,7 +7981,7 @@ "cZI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/engine/engineering) "cZJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel,/area/engine/engineering) "cZK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel,/area/engine/engineering) -"cZL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/sign/poster/legit{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel,/area/engine/engineering) +"cZL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/sign/poster/official/random{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel,/area/engine/engineering) "cZM" = (/turf/simulated/wall,/area/engine/engineering) "cZN" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/engine/engineering) "cZO" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/glass_engineering{name = "Engine Room"; req_access_txt = "10"; req_one_access_txt = null},/turf/simulated/floor/plasteel,/area/engine/engineering) @@ -8086,7 +8057,7 @@ "dbg" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "dbh" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "dbi" = (/obj/structure/closet/crate,/obj/item/clothing/under/color/lightpurple,/obj/item/stack/spacecash/c200,/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"dbj" = (/obj/structure/sign/poster{pixel_x = -32},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) +"dbj" = (/obj/structure/sign/poster/contraband/random{pixel_x = -32},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "dbk" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "dbl" = (/obj/machinery/floodlight,/turf/simulated/floor/plating,/area/storage/secure) "dbm" = (/obj/item/device/radio/intercom{dir = 1; name = "station intercom (General)"; pixel_y = -28},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreencorner"},/area/medical/virology) @@ -8119,7 +8090,6 @@ "dbN" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4; initialize_directions = 11; level = 2},/turf/simulated/floor/plasteel,/area/atmos) "dbO" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "tox_in"; name = "Toxin Supply Control"; output_tag = "tox_out"; sensors = list("tox_sensor" = "Tank")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/atmos) "dbP" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/wall/r_wall,/area/medical/virology) -"dbQ" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/atmos) "dbR" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/engine,/area/toxins/xenobiology) "dbS" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "tox_sensor"},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/atmos) "dbT" = (/obj/structure/lattice,/obj/structure/grille,/obj/structure/lattice,/turf/space,/area/space) @@ -8281,7 +8251,6 @@ "deT" = (/obj/structure/stool,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/asmaint) "deU" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 9; tag = "icon-intact-y (NORTHWEST)"},/turf/simulated/floor/plasteel,/area/atmos) "deV" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "co2_in"; name = "Carbon Dioxide Supply Control"; output_tag = "co2_out"; sensors = list("co2_sensor" = "Tank")},/turf/simulated/floor/plasteel{icon_state = "caution"; dir = 4},/area/atmos) -"deW" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/atmos) "deX" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "co2_sensor"},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/atmos) "deY" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/atmos) "deZ" = (/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/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -8399,7 +8368,7 @@ "dhh" = (/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk12"; icon_state = "catwalk12"},/area/space) "dhi" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk9"; icon_state = "catwalk9"},/area/space) "dhj" = (/obj/machinery/door/airlock/atmos{name = "Turbine Access"; req_access_txt = "12;24"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/turbine) -"dhk" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/obj/item/toy/minimeteor,/obj/item/weapon/contraband/poster,/turf/simulated/floor/plating,/area/maintenance/asmaint) +"dhk" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/obj/item/toy/minimeteor,/obj/item/weapon/poster/random_contraband,/turf/simulated/floor/plating,/area/maintenance/asmaint) "dhl" = (/obj/machinery/the_singularitygen{anchored = 0},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/storage/secure) "dhm" = (/obj/machinery/power/port_gen/pacman,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/storage/secure) "dhn" = (/obj/structure/grille,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) @@ -8584,14 +8553,11 @@ "dkK" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/extinguisher,/obj/structure/extinguisher_cabinet{pixel_y = -30},/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) "dkL" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/computer/turbine_computer{id = "incineratorturbine"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) "dkM" = (/obj/machinery/power/smes{charge = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) -"dkN" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/atmos) "dkO" = (/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/atmos) "dkP" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint) "dkQ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/asmaint) -"dkR" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/atmos) "dkS" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint) "dkT" = (/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/atmos) -"dkU" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos) "dkV" = (/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos) "dkW" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/door_control{id = "auxiliaryturbinevent"; name = "Auxiliary Vent"; pixel_x = 6; pixel_y = -24; req_access_txt = "32"},/obj/machinery/door_control{id = "turbinevent"; name = "Turbine Vent"; pixel_x = -6; pixel_y = -24; req_access_txt = "32"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) "dkX" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/embedded_controller/radio/airlock/access_controller{frequency = 1449; id_tag = "turbine_control"; name = "Turbine Access Console"; pixel_x = 6; pixel_y = -26; req_access_txt = "12"; tag_exterior_door = "gas_turbine_exterior"; tag_interior_door = "gas_turbine_interior"},/obj/machinery/ignition_switch{id = "gasturbine"; pixel_x = -6; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) @@ -8741,7 +8707,6 @@ "dnL" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk3"; icon_state = "catwalk3"},/area/solar/starboard) "dnM" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "dnN" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) -"dnO" = (/obj/machinery/door/airlock/external{name = "MiniSat External Access"; req_access = null; req_access_txt = "75;13"},/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) "dnP" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "dnQ" = (/turf/simulated/floor/plating/airless,/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk3"; icon_state = "catwalk3"},/area/solar/starboard) "dnR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) @@ -9042,18 +9007,18 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNagkagjagmaglagoagnagqagpagragrafsagsagsaftagsagvabNaabaabaabaabaabaaaaaaaaaaabaaaafOafXafXafOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiCaiDaiEaiFaiGaiHagwahZagZahZagZahZagwaiIaiJaiKaiLaiDaiMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNagMagLagNagOagPagQafvafuafUafwafUafVafYafWagPagWabNaaaaaaaabaaaaabaabaivaivaivaivaaaafOafXafXafOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahJaiDahaahaahaajdagwahaahaahaahaahaagwahaahaajeahaaiDahMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNabNabNabNabNabNahjahkabNabNabNabNabNabNabNagtagtagtagtagtagtagtaaaaguaivagSagRaivaguaaaafOafXafXagUagTagTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwajzajAajBajCajDagwajEahaahaahaajFagwajGahaajHajIajzagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNagVahDahCabNahEaigacWahGahFabNaaaaaaaaaagtahHahRagtahTahSagtaaaaivahUahVahVahWaivaaaaaaafOafXagTahXahYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwajYajYagZagZagZagwajZahaahaahaakaagwagZagZagZajYajYagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNaiaaicaibaieaidaitabNabNabNabNabNabNabNagtaifaijaiiainaikagtaaaaivaioaiqaipairaivaaaaaaaaaagTagTaisagTagTagTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahsakpakpahnaaaaaaagwakqahaahaahaakragwaaaaaaahsakpakpahnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahQahQahQahQahQahQajJaiuabNaolaolaolaolaolaolagtaiwaiyaixannaizagtaivaivaiAaiNaiBaiOaivaivaaaaabagTaiQaiPaiSaiRagTaaaanHaiTaiVaiUanHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwakAahaahaahaakragwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahQahQahQahQaiZaiXajfajaahQahEaigabNaolaolaolaolaolaolagtajgajiajhajlajkajnajmajpajoajrajqajLajKaivaaaajMagTajOajNajQajPanAanHanHajRajTajSanHanHaihaihaihaihaihaihaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwakRakPahZakRakPagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajWajUakcakbakeakdakhakgahQakiaitalcaolaolaolaolaolaolajnakjanWakkannanWaklajjajjakmajjaksakwaktaivaabaabagTakCakxakEakDanAakFakGaoJaoJakHakJakIakvakKakMakLakNaihaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvalvalvalwalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwalxalyahaalzalAagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajWakOakSakQakVakTalaakYaldalbaitaleaolaolaolaolaolaolagtalfalgakkalialhajnaljallalkalnalmakfakuaivanHanHanAanAanAanAaloanAalpalralqalualtalFalCalGaiYaiYaiYalHaihaihaaaaaaaaaajbajbajbajbajbajbajbalIalJaaaabpaaaaaaalvaaaaabaaaamhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwamiamjahaamkamlagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajWalKalMalLalOalNalQalPahQalRalSalcaolaolaolaolaolaolagtagtalUalTapPagtagtalValWaivalYalXalZaivaivanHambamaamdamcamfameanAamgaoJammampamnalFamqamramvajVamsamuamtaihaaaaaaaaaajbajsajtajvajuajwajxajyaaaaaaaaaaaaaaaamWaabamUaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahsagZamYamZanaagZahnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahQahQaqqahQahQahQahQahQahQamwaigapFapFapFapFapFapFapFapFamxamzamyamzamAamCamBamEamDamGamFamIamHamJauiaoJamKamKamKamKamLakIaoJapmamMamOamNamQamPamTamSanbamXandancaneaaaaaaaaaajbajXajwajwajwajwajxajyaaaaaaaaaaaaamWalvaaaanGaaaalvamWamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahsagZagZagZahnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfangaomanianhankanjanlajJanmapGanpanoanranqantansapFanuanwanvanzanyanCanBanEanDanIanFanJanJanJanKaoJanLanNanManPanOanQaofaofanRanTanSalFanUanVajVajVanXanZanYaoaaaaaaaaaaajbaknajwakoajwajwajxajyaaaaaaaaaaaaamWaabaabanGaabaabaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfangaomaocaobaoeaodaohaogaitapGaojaoiaonaokaopaooapFaoqaosaoraouaotaowaovaoxalWaozaoyaoBaoAaoDaoCaoJaoEaoGaoFaoFaoHaoLaoIaoIaoMaoPaoNalFaoQaoRaiYaiYaiYaoTaoSaihaabaaaaaaajbakyajwajwajwajwakzajyaaaaaaaaaaaaamWaaaaaaaoKaaaaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfaoUaomaoValEaoXaoWanlajJaigapGaoZaoYapbapaapdapcapFapeapgapfaphamyapjapiapkapSapAaplapCapBapEapDapIapHapJapJapLapKapNapMapOaoJapQaoJapRapNapTaiYapVapUapXapWaihaaaaabaabajbapYaqaapZaqcaqbajbalIaqeaaaaaaaaaamWaabappapnapqaabaabamWamWamWamWamWamWaqpamWamWamWamWamWamWamWamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapsaprapuaptapwapraprapxapraprapvaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabapyaabalvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBakBakBakBaslakWakZaomaomaomaomakUaqsapFapGapGapGaqtaquapGapFaqvalUaqwaqwalTaqxaqxapPapSapSaqyaqzapSapSapSanAaqAaqCaqBanxanAanAaqAaqDanxaqFaqEanxanAaqGaqGaqGaqGaqHaihaihaqIaqIaqIaqIajbalsaqJaqKalsajbaabaaaaaaaaaaaaamWaaaappaqdapqaaaaaaaabaabaabaabaabaabaabaabaqLaabaabaabaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNagVahDahCabNahEaigacWahFahFahFahFahFahFagtahHahRagtahTahSagtaaaaivahUahVahVahWaivaaaaaaafOafXagTahXahYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwajYajYagZagZagZagwajZahaahaahaakaagwagZagZagZajYajYagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNaiaaicaibaieaidaitabNahFahFahFahFahFahFagtaifaijahGainaikagtaaaaivaioaiqaipairaivaaaaaaaaaagTagTaisagTagTagTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahsakpakpahnaaaaaaagwakqahaahaahaakragwaaaaaaahsakpakpahnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahQahQahQahQahQahQaiiaigaiuahFahFahFahFahFahFagtaiwaiyaixannaizagtaivaivaiAaiNaiBaiOaivaivaaaaabagTaiQaiPaiSaiRagTaaaanHaiTaiVaiUanHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwakAahaahaahaakragwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahQahQahQahQaiZaiXajfajaahQajgaolakjahFahFahFahFahFahFalealgajiajhajlajkajnajmajpajoajrajqajLajKaivaaaajMagTajOajNajQajPanAanHanHajRajTajSanHanHaihaihaihaihaihaihaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwakRakPahZakRakPagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajWajUakcakbakeakdakhakgahQakiaitalcahFahFahFahFahFahFajnaYmanWakkannanWaklajjajjakmajjaksakwaktaivaabaabagTakCakxakEakDanAakFakGaoJaoJakHakJakIakvakKakMakLakNaihaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvalvalvalwalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwalxalyahaalzalAagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajWakOakSakQakVakTalaakYaldalbaitaleahFahFahFahFahFahFagtalfalgakkalialhajnaljallalkalnalmakfakuaivanHanHanAanAanAanAaloanAalpalralqalualtalFalCalGaiYaiYaiYalHaihaihaaaaaaaaaajbajbajbajbajbajbajbalIalJaaaabpaaaaaaalvaaaaabaaaamhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwamiamjahaamkamlagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajWalKalMalLalOalNalQalPahQalRalSabNahFahFahFahFahFahFagtagtalUalTapPagtagtalValWaivalYalXalZaivaivanHambamaamdamcamfameanAamgaoJammampamnalFamqamramvajVamsamuamtaihaaaaaaaaaajbajsajtajvajuajwajxajyaaaaaaaaaaaaaaaamWaabamUaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahsagZamYamZanaagZahnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahQahQaqqahQahQahQahQahQahQamwaigapFapFapFapFapFapFapFapFamxamzamyamzamAamCamBamEamDamGamFamIamHamJauiaoJamKamKamKamKamLakIaoJapmamMamOamNamQamPamTamSanbamXandancaneaaaaaaaabajbajXajwajwajwajwajxajyaaaaaaaaaaaaamWalvaaaanGaaaalvamWamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahsagZagZagZahnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfangaomanianhankanjanlajJanmapGanpanoanranqantansapFanuanwanvanzanyanCanBanEanDanIanFanJanJanJanKaoJanLanNanManPanOanQaofaofanRanTanSalFanUanVajVajVanXanZanYaoaaaaaabaabajbaknajwakoajwajwajxajyaaaaaaaaaaaaamWaabaabanGaabaabaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfangaomaocaobaoeaodaohaogaitapGaojaoiaonaokaopaooapFaoqaosaoraouaotaowaovaoxalWaozaoyaoBaoAaoDaoCaoJaoEaoGaoFaoFaoHaoLaoIaoIaoMaoPaoNalFaoQaoRaiYaiYaiYaoTaoSaihaqIaqIaqIajbakyajwajwajwajwakzajyaaaaaaaaaaaaamWaaaaaaaoKaaaaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfaoUaomaoValEaoXaoWanlajJaigapGaoZaoYapbapaapdapcapFapeapgapfaphamyapjapiapkapSapAaplapCapBapEapDapIapHapJapJapLapKapNapMapOaoJapQaoJapRapNapTaiYapVapUapXapWaihaZJaZMaZLajbapYaqaapZaqcaqbajbalIaqeaaaaaaaaaamWaabappapnapqaabaabamWamWamWamWamWamWaqpamWamWamWamWamWamWamWamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapsaprapuaptapwapraprapxapraprapvaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabapyaabalvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBakBakBakBaslakWakZaomaomaomaomakUaqsapFapGapGapGaqtaquapGapFaqvalUaqwaqwalTaqxaqxapPapSapSaqyaqzapSapSapSanAaqAaqCaqBanxanAanAaqAaqDanxaqFaqEanxanAaqGaqGaqGaqGaqHaihaihaqIaucaqIaqIajbalsaqJaqKalsajbaabaaaaaaaaaaaaamWaaaappaqdapqaaaaaaaabaabaabaabaabaabaabaabaqLaabaabaabaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqfaqhaqiaqgaqkaqlaqlaqlaqmaqjaqoaaaaaaaaaalwalwalwalvalvaabaabaaaaqnaaaaabaabalvalvalwalwalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBakXaqraqMaqNaqraqOapzaqQaqPakWaqRaqSaqXaqVaqUaqXaqWariaqYarjaqXaqXaqXaqXarkaqXaqXaqXarlarnarmarparoarrarqarsarsarsartarsaruarwarvarxaqXaryaqWaqXarzarBarAarCaqXariaqXaqXarDarEaqVaqXarFarHarGarJarIajbaabaaaaaaaaaaaaamWaaaappaqdapqaaaaaaaabaqZaraaraaraaraarbaraaraaraaraarcaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaardaqhareargaqlarharharharharharfaaaaaaaaaalwaaaaaaaabaaaaabaaaaaaaqnaaaaaaaabaaaaabaaaaaaalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBalDarKalDarLalDarNarMarParOarRaqTarSarQasdascaseaseasfaseasgaseaseaseasiashasiasjasiasiassaskasnasmaspasoasoasoasoasqasoasoasoasrastasAasvasuasxaswaszasyasAasAasCasBasBasDasEasEasEasFasHasGasIamRamVaaaaaaaaaaaaaaaamWaabappaqdapqaaaaaaaabarUaabaaaaaaaabarUaabaabaaaaaaarUaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarVaqharWarYarharharharharZasaaqoaaaaaaaaaalwaabarXarXarXarXarXaaaasbaaaarXarXarXarXarXaabalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBamoasYasXasZasYasYataatbalBakWaryatgatgatgatfatiathatkatjatmatlatnatjatpatoatratqatratsatuattatwatvatyatxatAatzatCatBatEatDatAatOatRatQaFLaFLaFLaFLaFLaFLaFLaxeatSatSatSatTatSatSatSarFatVatUatXatWajbaaaaaaaaaaaaaabamWaaaappaqdapqaabaabappapnapqaabaabappapnapqaabaabappapnapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9080,9 +9045,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMsaLaaMpaLaaMsaLeaMtaLeaMsaGnaIIaMuaEAaIIaIIaGnaHSaHSaHSaHSaHSaHSaHSaLkaLsaGnaGnaGnaGnaGnaMxaGnaGnaHSaMyaGnaMvaLsaGnaGnaGnaaaaaaaaaaaaaaaaMAaMAaMAaMAaMAaMAaMAaMAaMAaLAaItaMCaIuaLAaGHaIlaIxaIvaINaIyaJbaMMaIQaIOaMPaMOaMRaMQaMSaJiaFyaFFaFGaEjaFMaLPaISaIRaLNaLPaITaMVaMVaMVaMVaMVaMVaMVaIXaIUaJlaIYaJnaJmaJoaNbaNbaJpaJqaKPaKQaKQaKQaKQaKQaKPaKOaKOaKOaaaaaaaHNaGYaNfaNgaJIaMzaMoaKXaMkaGYaNhaGVaNlaIEaGYaGYaGYaGYaNiaGYaGYaMoaNjaGYaMnaGYaMqaNkaNnaNmaMqaNpaNoaNqaMqaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMsaNraNtaNsaMsaNuaNyaNvaNwaNxaHSaNzaNCaNAaMyaNBaHSaGnaGnaGnaGnaGnaGnaGnaLsaGnaNDafOaNGaGnaNEaNFaNHaHSaNBaGnaNAaNIaKeaKgaIIaaaaaaaaaaaaaaaaNKaNJaNMaNLaNOaNNaNPaMAaiWaLAaJraNQaIVaLAaJsaIlaJuaJtaJwaJvaJbaNWaJzaJxaKiaJAaKlaKjaKoaJiaFyaFFaFGaEjaFMaLPaOjaKpaLNaLPaKxaMVaOpaOpaOpaMVaMVaOoaOraOraOsaMWaOqaOuaOvaOvaOwaKyaZzaMjaKQaKQaKQaKQaKQaMwaOBaOyaODaaaaaaaHNaGYaGYaOCaGYaMzaOFaGYaOEaOGaOGaOGaOGaOHaOGaOIaGYaGYaGYaGYaGYaGYaGYaGYaMzaGVaMqaOKaOLaOLaMqaOMaOJaONaMqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMsaOPaOQaORaMsaOPaOQaORaNwaKaaHSaOSaHSaHSaHSaHSaHSaGnaOTaOOaOVaOUaOWaGnaLsaGnafOaOXaNDaOYaPaaOZaGnaPcaGnaGnaGnaGnaPcaLsaIIaaaaHQaHQaHQaHQaPdaNJaPeaPbaPfaPhaPiaPjaMAaLAaLAaLAaLAaLAaJsaIlaIlaIlaIlaIlaIlaKzaKAaIoaIoaIoaIoaIoaIoaIoaPraFFaPwaEjaFMaLPaOnaKpaLNaLPaITaOpaPAaPAaPBaOpaMVaPCaPDaPDaPEaPFaOqaPGaPHaPIaPJaKBaKCaODaKQaKQaKQaKQaKQaODaPLaPMaODaabaabaGXaGYaGYaMzaMzaMzaHPaHPaGXaGXaGXaMzaMzaMzaGXaPNaPKaGXaMzaMzaGXaMzaMzaGXaGXaPPaPOaPRaPQaPTaPSaPUaOKaPWaMqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPVaSdaSdaLdaMsaPZaQaaLdaMsaPZaQaaLdaGnaLkaGnaGnaGnaGnaGnaHSaGnaHSaQbaPXaHSaHSaGnaLsaGnaPYaabaPYaGnaJYaOZaGnaQeaQcaGnaNAaKaaGnaLsaMAaMAaQgaQgaQgaQgaQgaQgaQgaQgaQgaPiaPiaPjaQhaQiaQjaQkaQlaQdaKEaKDaKFaKFaKFaKFaKFaKGaKIaKHaKFaKFaKFaKKaKKaKLaLzaKNaLBaEjaHBaLPaQzaKpaLNaLPaITaOpaPAaQEaQFaOpaMVaPCaPDaPDaPEaQGaOqaPGaPIaPIaPJaKBaKCaODaKQaKQaKQaKQaKQaODaQHaPMaODaaaaaaaGXaQIaGYaGYaQBaMzaQCaHOaQLaQJaHbaGXaOFaHbaGXaQKaGYaGXaQMaGYaGXaQOaQNaQPaOGaQQaOGaQSaQRaQUaQTaQVaQYaQWaMqaMraMrafOafOaMraMraMraMraabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaRbaOQaRbaQZaQZaQZaRaaQZaQZaQZaRdaRcaReaReaReaReaRfaGnaHSaGnaRhaRgaRiaHSaRjaPcaLsaGnaGnaGnaGnaGnaGnaPcaGnaHSaRiaLkaHSaHSaHSaRkaRmaRlaRnaRnaRnaRnaRoaRnaRnaRpaRqaRlaRsaRraRraRraRraRraRraRraRtaRwaRwaRwaRwaRxaRwaRwaLDaRwaRwaRxaRwaRwaRwaRwaRzaLFaLKaLGaLLaLPaRDaLMaLWaLOaLXaOpaRJaRKaRLaOpaMVaRMaRNaRNaRGaMWaOqaRPaRQaRQaRIaLYaLZaOzaKQaKQaKQaKQaKQaOAaRVaRRaODaaaaaaaGXaGYaGYaGYaGYaGYaGYaQPaOGaOGaOGaOGaOGaOGaOGaKSaGYaGYaGYaGYaMnaGYaGYaMkaGYaRTaRSaRXaRWaRYaOLaOLaOLaRZaMqaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaSdaSdaSbaSfaScaSgaSiaSjaShaSkaSjaSmaSlaSjaSjaSnaGnaHSaGnaSoaHSaHSaSpaSqaGnaNIaKgaHSaHSaHSaHSaHSaHSaPcaSsaHSaGnaNxaNxaGnaSraMAaSuaSwaSvaSvaSvaSxaSvaSvaSvaSyaSuaSzaSAaSAaSAaSAaSAaSAaSAaPiaRwaSBaSCaSEaSDaMdaMcaMDaMBaMEaSJaSLaSCaSMaRwaSNaFFaSOaEjaMFaLPaSRaMGaSTaSSaMHaSUaSXaSWaSWaMIaMJaSZaSYaTaaTaaTbaTeaTcaMVaMVaTdaKBaThaTfaKQaKQaKQaKQaKQaTfaKOaKOaKOaGXaGXaGXaHbaMzaMzaIEaGXaGXaMkaMzaGXaTgaMzaGXaIEaGXaMkaQIaMzaGXaIEaGXaGYaQIaMkaGYaTiaMqaTjaQRaTlaTkaTmaQRaTnaMqaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPVaRbaRbaoOaMraPZaQaaLdaMsaPZaQaaLdaGnaLkaGnaGnaGnaGnaGnaHSaGnaHSaQbaPXaHSaHSaGnaLsaGnaPYaabaPYaGnaJYaOZaGnaQeaQcaGnaNAaKaaGnaLsaMAaMAaQgaQgaQgaQgaQgaQgaQgaQgaQgaPiaPiaPjaQhaQiaQjaQkaQlaQdaKEaKDaKFaKFaKFaKFaKFaKGaKIaKHaKFaKFaKFaKKaKKaKLaLzaKNaLBaEjaHBaLPaQzaKpaLNaLPaITaOpaPAaQEaQFaOpaMVaPCaPDaPDaPEaQGaOqaPGaPIaPIaPJaKBaKCaODaKQaKQaKQaKQaKQaODaQHaPMaODaaaaaaaGXaQIaGYaGYaQBaMzaQCaHOaQLaQJaHbaGXaOFaHbaGXaQKaGYaGXaQMaGYaGXaQOaQNaQPaOGaQQaOGaQSaQRaQUaQTaQVaQYaQWaMqaMraMrafOafOaMraMraMraMraabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaSbaSaaZQaZPaQZaQZaRaaQZaQZaQZaRdaRcaReaReaReaReaRfaGnaHSaGnaRhaRgaRiaHSaRjaPcaLsaGnaGnaGnaGnaGnaGnaPcaGnaHSaRiaLkaHSaHSaHSaRkaRmaRlaRnaRnaRnaRnaRoaRnaRnaRpaRqaRlaRsaRraRraRraRraRraRraRraRtaRwaRwaRwaRwaRxaRwaRwaLDaRwaRwaRxaRwaRwaRwaRwaRzaLFaLKaLGaLLaLPaRDaLMaLWaLOaLXaOpaRJaRKaRLaOpaMVaRMaRNaRNaRGaMWaOqaRPaRQaRQaRIaLYaLZaOzaKQaKQaKQaKQaKQaOAaRVaRRaODaaaaaaaGXaGYaGYaGYaGYaGYaGYaQPaOGaOGaOGaOGaOGaOGaOGaKSaGYaGYaGYaGYaMnaGYaGYaMkaGYaRTaRSaRXaRWaRYaOLaOLaOLaRZaMqaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZRaRbaRbaZSaSfaScaSgaSiaSjaShaSkaSjaSmaSlaSjaSjaSnaGnaHSaGnaSoaHSaHSaSpaSqaGnaNIaKgaHSaHSaHSaHSaHSaHSaPcaSsaHSaGnaNxaNxaGnaSraMAaSuaSwaSvaSvaSvaSxaSvaSvaSvaSyaSuaSzaSAaSAaSAaSAaSAaSAaSAaPiaRwaSBaSCaSEaSDaMdaMcaMDaMBaMEaSJaSLaSCaSMaRwaSNaFFaSOaEjaMFaLPaSRaMGaSTaSSaMHaSUaSXaSWaSWaMIaMJaSZaSYaTaaTaaTbaTeaTcaMVaMVaTdaKBaThaTfaKQaKQaKQaKQaKQaTfaKOaKOaKOaGXaGXaGXaHbaMzaMzaIEaGXaGXaMkaMzaGXaTgaMzaGXaIEaGXaMkaQIaMzaGXaIEaGXaGYaQIaMkaGYaTiaMqaTjaQRaTlaTkaTmaQRaTnaMqaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaMsaSdaRUaSdaToaSfaSfaTpaSdaRUaSdaTqaTraTsaTtaGnaHSaPcaPcaGnaGnaGnaTuaTuaTuaIfaTuaTuaTuaTuaTuaHSaGnaGnaGnaGnaGnaGnaGnaSraKbaStaaaaabaaaaabaaaaabaaaaabaaaaSuaSzaSAaTwaTvaTyaTxaTAaSAaPiaRwaTzaTzaTCaTBaTEaTDaTFaTDaMKaTGaTIaTzaTzaRwatcaFFaTJaEjaMFaLPaOnaKpaLNaLPaMNaMLaMUaMTaMYaMXaNaaMZaNdaNcaNdaNeaNSaNRaNUaNTaNXaNVaKOaTfaKQaKQaKQaKQaKQaTfaGXaLcaGYaTXaUaaMzaGXaMzaLcaGYaGXaLcaMkaGXaTZaGYaGXaUbaGYaMzaUdaUcaGXaUeaGYaMzaIEaIEaMkaIEaUfaMqaUgaQRaUiaUhaUiaQRaUjaMqaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaLdaLdaSdaOQaSdaUkaUoaUmaUlaSdaOQaSdaSdaLdaUnaUpaGnaHSaHSaHSaHSaHSaHSaTuaUuaUvaUqaUxaUsaUzaUuaTuaUwaUAaUyaUyaUyaUyaUyaUyaUBaNxaStaabaUEaUEaUEaUEaUEaUEaUEaabaSuaSzaSAaUFaUCaUHaUDaUFaSAaPiaRwaUJaUJaUJaUGaULaSCaUIaSCaULaUKaUJaUJaUJaRwaSNaFFaUMaEjaMFaLPaOjaKpaLNaLPaNYaUNaUQaUQaUQaUQaUQaUQaUQaNZaUQaUSaUSaUSaUSaUSaOaaGXaKOaTfaKQaKQaKQaKQaKQaTfaGXaGXaGYaURaUaaMzaUTaGXaGYaGYaGXaGYaMkaMzaGYaGYaGXaGYaGYaMzaMkaGVaGXaGYaGYaMzaUWaGYaMkaGYaUUaUYaUYaMqaMqaMqaMqaMqaMqaMqaMraMraMraMraMraabaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdaRUaSdaSdaSdaSdaSdaSdaRUaSdaUZaLdaUVaUXaVcaVcaVcaVcaVcaVcaVaaTuaUuaVeaUqaVfaVeaVeaUuaTuaVgaVbaViaViaViaViaViaViaViaViaVjaaaaUEaVkaVdaVmaVlaVnaUEaaaaSuaSzaSAaVpaVoaVraVqaUFaSAaPiaRwaVsaVsaTCaVtaVuaTDaTFaTDaVuaVvaVwaTzaTzaRwaSNaFFaSOaEjaObaLPaOdaOcaLNaLPaOeaUNaUQaVzaVAaVCaVCaUQaVBaOfaVDaUSaVGaVFaVHaUSaOgaGXaaaaVKaVLaVLaVLaVLaVLaVMaaaaGXaGYaVNaVJaMzaMzaGXaGXaMzaMzaVOaVPaMzaGXaHPaGXaGXaMzaMzaVRaVQaGXaGXaGXaQLaUWaGYaMkaGYaUUaHOaHbaOFaYPbcDaVhbcDaYPaYPaYPaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9094,37 +9059,37 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabehbejaVSaXmaXzaXsbeGbesaXsaXsbexbeGaXzaXpbeyaSdaTobeEbezbeMbeFbeMbeMbeMbeMbeMbeHaSfaTubePbeQbePaTuaTubeRbeIbeRaViaViaViaVibeRbeJbeUaVjbeLbeKbeKbeNbeObeNbeKbeKbeSaSubfaaSAbeTaSAbeWbeVbfeaSAbffaRwaRwaRwaRwbfgbfhbeXbeYbeXbfhbfgaRwaRwbeZbdDbdDbdDbdDbfbbfdbfnbfobfpbbEbfqbdBbfiaUQaUQaUQaUQaUQaUQaUQaUSaUSbdObfsbftbfkbfjaQvbflaSQbfrbdTbfAbfvbfCbfwbfEbdTbfxbfybfHbfzbfHbfJbfKbfMbfBbfFbfDbfIbfGbfNbfLbebbfObfQbfPbfSbfRbelbfYbfZbeobfTbazbfVbfUbfXbfWbgfbczbczbazbazbcBbcCbcDbcnbggaYPbgabgibgbbgkbgcbgmbaTbaTbgdbaVaaaaaaaaaaaaaaaaYDbaWbgobeCbeCbeCbgpbaYaYHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabehaVSaVXaVSaVSaVYaVZaVSaVSaVXbejbgeaLdbghbeEaSdbgsbgsbgtbgsbgjaMsbgvbglaSfbgnbfcbgzbgzbgqbgrbgzbgubgzbgzbgzbgDbgzbgzbgwbgFbgAbgCbgBbgEbgCbgHbgCbgCbgCbgCbgIbgMbgJbgzbgzbgKbfcbgQbgxbgSbgLbgObgNbgTbgPbgPbgPbgPbgPbgPbgPbgVbgUbhabhbbhcbhdbhebgWbgYbgXbdDbdDbhfbgZbhgbgZbhgbhhbhjbhibhkbhpbhqaUSbhrbhlbhtbhmbhvbhvaWMbhxaWNbhzbdTbhobhubhsbhsbhwbdTbhAbhCbhBbhEbhDbhDbhFbhHbhGbfMbhIbhJbhPbhQbhRbebbdXaTgbaubhKbhTbhTbhUbhVbhTbhLbazbhXbhNbazbhObhSbczbhWbazbhZbhYbiabcDaYPaYPaYPbibbigbihbiibigbigbigbigaYSafXajcaaaaaaaaaaaabicbikbilbeCbeCbimbinbeCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbgyaSdaSdaSdaSdaSdaSdbgyaSdaUZaLdbidbieaSdbirbisbitbitbiuaMsbivbglbifbgGbfcbijbipbiobiqbiqbixbiwbiwbiwbizbiybiybiAbiCbiBbiqbiqbiDbiybiFbiEbiGbiGbiIbiHbiKbiJbiJbiJbiLbfcbgQbgxbgSbgSbgSbgSbiMbgSbgSbgSbgSbgSbgSbiNbiUbiVbiWbiXbiObiZbiQbiPbiRbiVbiVbiVbjdbjebjebjebiSbhqbhqbhqbiYbiTbhqaUSbjabjjbhvbhvbjkbhvaWTbjmaWNbjcbdTbjobjfbjqbjhbjgbdTbjtbjibjvbjwbjxbjybebbebbjzbebbebbebbjBbjlbjBbebbdXaGYbaubjDbcpbcpbcpbjEbcpbjFbazbazbazbazbazbazbazbjnbazbcDbcDbcCbcDbjpbjIaYPbjrbjNbjLblwbgRbjubjsbjAbjRaaaaaaaaaaaaaYDbjCbjGbjCbjCbjCbjHbjCbjJbjCbjGbjCaYHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabbjQaLdaSdaOQaSdbjTbjSbjVbjUaSdaOQaSdaSdaLdbjWbeEaSdbjXbkcbitbitbiuaMsbkdbglaSfbgGbfcbgzbjZbjYbkgbkgbkabkibkbbkgbkebkgbkfbkgbkhbjPbkgbkgbkgbkgbkgbkjbkkbkgbklbkrbknbkmbgzbgzbkpbkobksbkqbkubktbkubkvbkwbkvbkvbkvbkvbkvbkvbkybkAbkzbkzbkzbkzbkBbkzbkCbkDbkzbkzbkEbkGbkFbkFbkFbkFbkFbkFbkFbkHbhqbhqaUSbkMbkNbkObkPbkPbkIaYdbjmaWNbkKbdTbdTbdTbdTbdTbkLbdTbkQbkRbkWbkSbfHbkYbebbhMbkTbkUblcbkVbleblfblgbebbdXaQLbaublhblibcpbljblkbcpbllbllbaubkXblabkZaYPbldblnblmbcDbcDblpbloaYPblqaYPblrbjKbjLblxblsbltbjKblzbjRaaaaaaaaaaaabicbmXblubmYbmYblDbeCblCblDblAblvblCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabbjQaLdaSdaOQaSdbjTbjSbjVbjUaSdaOQaSdaSdaLdbjWbeEaSdbjXbkcbitbitbiuaMsbkdbglaSfbgGbfcbgzbjZbjYbkgbkgbkabkibkbbkgbkebkgbkfbkgbkhbjPbkgbkgbkgbkgbkgbkjbkkbkgbklbkrbknbkmbgzbgzbkpbkobksbkqbkubktbkubkvbkwbkvbkvbkvbkvbkvbkvbkybkAbkzbkzbkzbkzbkBbkzbkCbkDbkzbkzbkEbkGbkFbkFbkFbkFbkFbkFbkFbkHbhqbhqaUSbkMbkNbkObkPbkPbkIaYdbjmaWNbkKbdTbdTbdTbdTbdTbkLbdTbkQbkRbkWbkSbfHbkYbebbhMbkTbkUblcbkVbleblfblgbebbdXaQLbaublhblibcpbljblkbcpbllbllbaubkXblabkZaYPbldblnblmbcDbcDblpbloaYPblqaYPblrdsfbjLblxblsbltbjKblzbjRaaaaaaaaaaaabicbmXblubmYbmYblDbeCblCblDblAblvblCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaMsaSdbgyaSdaToaSfaSfaTpaSdbgyaSdblyblEblBblFaSdblIblIbgtblIbgjaMsblJbglaSfaMsblKblKblGblMblMblMblMblMblMbkxblHblMblMblMblMblMblMblPblQblRblRblLblRblTblNblVblTblTblWblXblOblKblZblZblSblSblSbmbbmbbmbbmbbmbbmbbmbbmbbmcblUblUblYblUbmabmabmabmabmebmdbmabmcbmibmibmibmibmibmibmibmibmfbmfbmfaUSbmkbmlbmmbmmbmmbmmbmnbmoaYebmqbmrbmgbmjbmhbmtbmsbdTbdTbmubmybmzbmybmybebbmAbmvbmwbmwbmwbmwbmBbmxbebbmCbmHbaubmIbcpbljbljblkbljbcpbmDbaubmEbmGbmFaYPbcDbmJbmObmPbmPbmKbmRbmLbmTbmUbmMbmWboObmNbjMbjKbjKblzbjRbjRbjRbjRbjRbicbBTbDzbDzbDzbmQbeCblCbnbblAbeCbncbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbmSaSfbmVbndbnabnibnebnfbnibnhbngbnibnibnkbnjbnmbnlbnnbnnbnnbnobnnbnpbnuaMsbnvbnwbnqblMbnybnrbnAbnBbnCbnDbnsbnFbnGbnHbnIbnJblMbnKbnLblRbnxbntbnzblTbnEbnQbnMblTbnSbnTbnNbnSbnSbnSbnObgSbnPbmbaaaaaaaaaaaaaaaaaaaaabmcbnUbnRbnWbnVbnYbnXboaaYfbocaQsbohbmcaaaaaaaaaaaaaaaaaaaaabmibodbhqboeaUSbokbmlbmqbmqbmqbmqbmqbolbombmqbmqbmqbogbofbofboibonbojbopbooborboqbosbebboubotboBboAboAboBbowbovbebbdXaGYbauboEboFbcpbljblkbcpboGboGbaubauboybauaYPbozblnbloboJboJboCbloaYPaYPaYPboDbjKbEFboHbjMbjKbjKbmZbAMboIbrMbrMboIboKbDzbDzbGJbGJbnbbeCblCbnbblAbeCblCaYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdboLboPboLboLboLboLboLboLboPboLboLboQaSfboRbgGboUaSfboSaSfboTboXboYboVboWaMsbnwbnwboZblMbpabnDbnDbnDbnDbnDbnsbpdbnDbnDbnDbpeblMbnKbpfblRbpbbphbpiblTbpjbpcbpgblTbplbpkbpmbppbpnbnTbnObgSbnPbmbaaaaaaaaaaaabmcbmcbmcbmcbprbpobptbpqbpubpsbpwaYgbpzbpxbpBbmcbmcbmcbmcaaaaaaaaaaaabmibodbhqbpAbpybpDbpCbpFbpEbpDbpGbpIbpHbpJbpMbpKbmqbpNbpLbofbpObpPbofbpRbpQbpTbpSbofbpWbpVbpUboBboAboAboBbpXbqabebbdXaTgbaubmIbcpbljbljblkbljbcpbcpbpYbqcbcpbqdaYPbpZbqbbqgboJboJbqebqgbqfaYPbqibqhbjKbjRbjRbqjbqkbjRbjRbjRbqnbjRbjRbjRbqpbjCbjCbjCbjCbqobeCblCbqoblAbeCblCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdboLboPboLboLboLboLboLboLboPboLboLboQaSfboRbgGboUaSfboSaSfboTboXboYboVboWaMsbnwbnwboZblMbpabnDbnDbnDbnDbnDbnsbpdbnDbnDbnDbpeblMbnKbpfblRbpbbphbpiblTbpjbpcbpgblTbplbpkbpmbppbpnbnTbnObgSbnPbmbaaaaaaaaaaaabmcbmcbmcbmcbprbpobptbpqbpubpsbpwaYgbpzbpxbpBbmcbmcbmcbmcaaaaaaaaaaaabmibodbhqbpAbpybpDbpCbpFbpEbpDbpGbpIbpHbpJbpMbpKbmqbpNbpLbofbpObpPbofbpRbpQbpTbpSbofbpWbpVbpUboBboAboAboBbpXbqabebbdXaTgbaubmIbcpbljbljblkbljbcpbcpbpYbqcbcpbqdaYPbpZbmpbqgboJboJbqebqgbqfaYPbqibqhbjKbjRbjRbqjbqkbjRbjRbjRbqnbjRbjRbjRbqpbjCbjCbjCbjCbqobeCblCbqoblAbeCblCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLdaLdaSdaSdaSdaSdaSdaSdaSdaSdaSdaLdaMsbgGbqqbqrbqrbqrbqrbqrbqrbqsbqrbqrbqraMsbnwbnKbqtblMbqubnDbnDbqvbqwbqxbqybqvbnDbnDbnDbqzblMbnKbnLblRbqAbqBbqCblTbqDbqEbqFblTbqGbqHbqIbqJbqKbnTbqLbqMbnPbmbbmbbqNbmcbmcbmcbqObqQbqPbqRbqSbqSbqTbqUbqSbqVaYibqWbqXbqYbqZbrbbrabmcbmcbmcbqNbmibmibodbhqbhqaUSbrdbrcbpMbrebmqbrfbrgbmqbrhbribpKbmqbogbofbofbrjbrlbrkbrnbrmbrpbrobofbrqbpVbrrboBboAboAbrsbrubrtbebbdXaGYbaubrvbrwbrxbljblkbrybcpbcpbrzbcpbrAbrBaYPbrCbrEbrDboJboJbrFbrDbrGaYPbrHbqhbjKbjObGIbjMbjKbjKbrIbrJboIbrLbrMboIbrKbeCbeCbeCbeCbeCbeCbeCbeCbeCbeCblCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrNbrObrObrQbrObrObrObrRbrObrObrPaabaSdaUkaSgbrSbqrbrUbrVbrWbrXbrYbrTbsabrZbqrbscbsdbsbbseblMbsfbnDbnDbqvbqxbsgbshbqvbnDbnDbsjbskblMbnKbnLblRblRbslblRblTbsibsnbsoblTbsmbqJbsqbqJbsrbnTbnObssbnPbgPbgPbspbsubstbmcbsvbptbswbqSbqSbsybsxbsAbszbsAaYjbsDbsCbsFbsEbsHbsGbmcbsIbsubsJbsLbsKbodbhqbhqbsNbmqbsObmqbmqbmqbsPbsQbmqbrhbsMbpKbmqbpNbofbofbsRbsTbsSbsVbsUbsWbrobsXbebbqabrrboBboAboAboBbrubsYbebbsZbtebaubtfbaubaubtablkbthbtibcpbtjbtbbtlbtcbmUbtdbtgbtpbtqbtqbtkbtsbtmbmUbtobtnbtrbtwbjKbjMdsfbjKbtxbjRbjRbjRbjRbqnbicbttbeCblCblDblAbeCblCblDblAbeCbtubicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrNbrObrObrQbrObrObrObrRbrObrObrPaabaSdaUkaSgbrSbqrbrUbrVbrWbrXbrYbrTbsabrZbqrbscbsdbsbbseblMbsfbnDbnDbqvbqxbsgbshbqvbnDbnDbsjbskblMbnKbnLblRblRbslblRblTbsibsnbsoblTbsmbqJbsqbqJbsrbnTbnObssbnPbgPbgPbspbsubstbmcbsvbptbswbqSbqSbsybsxbsAbszbsAaYjbsDbsCbsFbsEbsHbsGbmcbsIbsubsJbsLbsKbodbhqbhqbsNbmqbsObmqbmqbmqbsPbsQbmqbrhbsMbpKbmqbpNbofbofbsRbsTbsSbsVbsUbsWbrobsXbebbqabrrboBboAboAboBbrubsYbebbsZbtebaubtfbaubaubtablkbthbtibcpbtjbtbbtlbtcbmUbtdbtgbtpbtqbtqbtkbnZbtmbmUbtobtnbtrbtwbjKbjMdsfbjKbtxbjRbjRbjRbjRbqnbicbttbeCblCblDblAbeCblCblDblAbeCbtubicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrNbtvbtybtCbtDbtDbtzbtDbtDbtDbtzbrQaSdaSdaSdaToboRbqrbrUbtFbtGbrUbtBbtAbtHbtEbqrbtLbtMbtIblQblMbtObtPbtKbtJbtQbtNbtSbtRbtRbtRbtUbtTblMbnKbsdbtYbtZbtVbubblTblTblTblTblTbucbudbtWbufbugbnTbnObssbgSbgSbgSbtXbuebuabuibuhbujbqSbunbukbumbulbupbuoburbuqbutbusbuubuhbuwbuvbuybuxbuAbuzbuEbuEbuBbhqbuCaUSbmqbuDbuIbpKbmqbuFbuGbmqbuHbuMbpKbmqbogbofbofbofboibofbuJbofbsWbrobuKbebbuPbrrboBboAboAboBbrubuLbebbuNbuQbuObuSbuRbuUbuTbuWbuVbuVbuVbuVbuVbuVbuXbuZbuYboJboJboJboJboJboJbvdbvabvcbvbbjKbjKbjKbvebltbjKbvgbqnbwDbvhcUBbjRblDblAbeCblCbnbblAbeCblCbnbblAbeCblCblDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvibvjbvjbvjbvjbvjbvjbvjbvjbvjbvjbvfbvlaOQbvlaSfboRbqrbvmbrUbvnbvnbvnbvkbrUbvobqrbvqbvrbtIbvsbvsbvsbvsbvpbvsbvtbnDbvvbvubvwbvwbvybvxblMbvzbvBbvAbvDbvCbvFbvGbvHbvIbvHbvJbvJbvJbvJbvJbvKbvEbnObvLbvNbvMbvPbvObvRbvQbvTbvSbuobvUbvVbvXbvXbvXbvXbvWbvXbvZbwabwbbvYbvUbwdbwcbmcbwebwgbwfbwibwhbwjbhqbhqbsNbmqbwkbmqbmqbmqaZVbmqbmqbwmbwmbmqbmqbwlbofbofbwnbwobofbofbofbwqbwpbwrbebbqabrrboBboBboBboBbrubwsbebbwtbwvbwvbwwbwvbwubljbljbljbljbwybljbljbljbwzbvaboJboJboJboJboJboJboJbvdbvabvcbvbbjKboMboMboNboMbjKbwxbjRbwBbwAbwCbjRbnbblAbeCblCbnbblAbeCblCbnbblAbeCblCbnbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwFbwEbwGbwHbwIbwIbwJbwIbwIbwIbwJbrQaSdaSdaSdbwKblFbwLbrUbwMbvnbvnbvnbvkbwMbrUbqrbwNbwObtIbvsbwPbwQbwRbwSbvsbwUbwTbwVblMbwWbwXbwZbwYblMbnKbxabxbbxbbxcbxbbxbbxbbxbbxebxdbxdbxdbxfbxdbxgbxhbxibxjbxkbxlbxlbxlbxlbxlbxmbxmbxnbxmbvXbvXbxobxpbxqbxrbxtbxsbxobxubvXbxvbxwbxvbxvbxvbxvbxvbxvbxvbwjbhqbhqaUSbxxbmqbxybxzbmqbxAbmqbxBbxDbxCbmqbxEbdTbxFbxGbdTbdTbxHbxJbxIbxJbdTbdTbebblbbxLbxMbxMbxMbxMbxLbxNbebbxObwvbwvbwwbxPbaubxQbxRbxSbxTbxUbxVbxWbxXbxYaYPbxZbcDbyaboJboJbyabcDbybaYPbycbvbbjKbqlbqlbqmbqlbjKbvgbqnbwDbvhcUBbjRbqoblAbeCblCbqoblAbeCblCbqoblAbeCblCbqoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwFbrObrObrQbrObrObrObrRbrObrObydaabaSdbyebndbyfbqrbtFbtFbtFbrUbyhbygbyjbyibqrbykbylbtIbvsbymbvsbynbyobvsbyqbypbyrblMbwWbwXbwZbskblMbnKbxabxbbytbysbyubyvbywbxbbyybyxbyAbyzbyBbyBbyBbyCbyEbyDbyFbxlbyGbyHbyIbyJbyLbyKbyMbyNbvXbyObxqbxqbyPbyQbyPbxqbxqbyRbvXbySbyUbyTbyWbyVbyYbyXbyZbxvbzabzbbzbbzcaUSaUSaUSaUSbzdbsNbzdbzeaUSbdRaUSaUSbdTbdTbdTbdTbzgbzfbzfbzfbzfbzhbzibebbjBbzjbjBbzkbzkbjBbzjbjBbebbxObwvbwvbzlbxPbaubaubaubaubaubtfbaubaubaubauaYPaYOaYQaYQaYQaYQaYQaYQaYPaYPbznbzmbzobxKbjKbjMbjKbjKbzpbjRbjRbjRbjRbqnbicbzqbeCbeCbeCbeCbeCbeCbeCbeCbeCbeCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwFbrObrObrQbrObrObrObrRbrObrObydaabaSdbyebndbyfbqrbtFbtFbtFbrUbyhbygbyjbyibqrbykbylbtIbvsbymbvsbynbyobvsbyqbypbyrblMbwWbwXbwZbskblMbnKbxabxbbytbysbyubyvbywbxbbyybyxbyAbyzbyBbyBbyBbyCbyEbyDbyFbxlbyGbyHbyIbyJbyLbyKbyMbyNbvXbyObxqbxqbyPbyQbyPbxqbxqbyRbvXbySbyUbyTbyWbyVbyYbyXaZObxvbzabzbbzbbzcaUSaUSaUSaUSbzdbsNbzdbzeaUSbdRaUSaUSbdTbdTbdTbdTbzgbzfbzfbzfbzfbzhbzibebbjBbzjbjBbzkbzkbjBbzjbjBbebbxObwvbwvbzlbobbaubaubaubaubaubtfbaubaubaubauaYPaYOaYQaYQaYQaYQaYQaYQaYPaYPbznbzmbzobxKbjKbjMbjKbjKbzpbjRbjRbjRbjRbqnbicbzqbeCbeCbeCbeCbeCbeCbeCbeCbeCbeCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjQaLdaSdaSdaSdaMsaMsaMsaMsaMsaMsbzrbzsbqrbqrbqrbqrbqrbqrbztbqrbqrbqrbnKbnKbzwbvsbzubzvbynbzxbvsbzzbzybzAblMbwWbwXbwZbnDblMbnKbxabxbbzDbzBbzCbyvbzCbxbbyybzGbzEbzFbzIbzHbzKbzJbzMbzLbyFbzRbzNbzObzPbzQbzQbzPbzUbzSbvXbzTbxqbxqbyPbzWbyPbxqbxqbzVbwbbzXbAbbzYbzZbAabAdbzYbAcbxvbAlbAebAfbAgbAhbAibAjbAkbAkbAkbAkbAkbAkbAmbAobAnbAkbAkbAqbAkbAkbAkbAkbAkbAkbAkbAkbApbAsbArbArbArbArbArbArbAtbAibAubAvbAvbAxbAwbAybAwbAzbAwbABbAAbACbAwbAFbADbAEbAHbAGbAGbAGbAGbAGbAGbAGbAIbALbAJbAJbAKbAJbBObjKbjKbrIbAMboIbANbrMboIbAObeCbeCbeCbeCbAPbeCbAPbeCbeCbeCbeCaYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAQbARbARbARbARbASbASbARbARbATaaaaabaSdaUkaSgbAVbAUbAXbAWbAWbAWbAWbAYbAZbBablQbnwbBcbBbbvsbvsbvsbBdbyobvsblMblMblMblMbwWbBebBgbBfblMbBhbBibxbbBjbBkbyvbzCbBlbxbbyybBmbzEbzFbBnbBobBpbzJbBqbzLbyFbzRbBrbBsbBtbBubBvbBwbzUbBxbvXbBybyPbxqbBAbBzbBAbxqbyPbBBbxubBCbzYbzYbzZbBDbAdbzYbBEbxvbBFbAfbAfbAgbAhbAibAkbAkbAkbAkbAkbAkbAkbBGbAkbAkbAkbAkbAkbAkbBHbBIbBIbBIbBIbBIbBIbBIbBIbBIbBIbBIbBIbBIbBIbBJbBKbBLbAGbAGbBMbwvbwvbwvbwvbwvbwwbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbBNbwvbDobBPbjKbjKbBQbjKbjKbjKbjKbBUbjRbqnbjRbjRbjRbqpbjCbBWbBVbjCbBXaYUbBXaYUbBYbBRbBSbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbCcbBZbCebCbbCbbClbCibARbATaSdaSdaSdaTobCnbCfbCgbCfbCfbCfbCfbChbCtbCjblQblQbCkbCwbvsbwPbCmbCxbzxbvsbCobCpbCoblMblMblMblMbCqblMbCrbCsbxbbCybCubzCbCvbCzbxbbyybzJbCBbzFbBnbBnbCEbzJbCFbzLbyFbzRbCAbBsbBtbCGbCCbBwbzUbCDbvXbCHbCIbxqbCKbCJbCLbxqbCRbCNbCSbCMbCTbCObCPbCQbCUbzYbCVbxvbCYbCXbAfbAgbAhbAibAkbCZbAkbAkbAkbAkbCWbDbbDbbDbbDbbDcbAkbAkbAkbAkbDdbAkbCZbDabAkbAkbDebDgbDfbDhbDibDibDlbDjbDnbDmbwvbwvbwvbwvbwvbwvbwvbDkbDpbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbDrbDqbDqbDsbDubDtbDxbDvbDvbDybDAbEHbmZbAMboIbrMbrMboIbDBdsldsldsldsnbicaaabicbDDbDwbDwbDFbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbDGbCbbCbbCbbCbbCbbCbbCbbDHbDCaOQbDCaSfbDIbCfbDEbDJbDLbDKbDMbChbDObDNbDQbDQbDWbDVbvsbvsbvsbynbDYbymblQblQblQblQbDPbnKbnKbCsbnKbCrbCsbxbbDZbDRbDSbDTbyvbxbbDUbzJbEbbzFbBnbBnbEfbDXbEjbzLbElbxlbEabEmbzPbzPbzPbzPbzUbEcbvXbEdbEebvXbvXbvXbvXbvXbvXbvXbxubxvbErbEgbEhbEibEsbEkbEvbxvbEwbEnbEnbEobEobEobEobEobEobEobEpbEpbEqbEybEzbEzbEybEqbEpbEpbEtbEtbEtbEtbEtbEubEubEubEuaQwbEubEubPgbEubEubECbExbEEbwvbwvbEIbEIbEAbEAbEAbEAbEAbEJbDqbDqbDrbDqbwvbDqbDqbDqbDqbEMbEDbEDbEDbEDbENbEFbEFbEGbEGbEGbEGbEGbEGbEGbjRbjRbjRbjRaYUdsqdsldslbEObicaaabicbEPbDwbDwbEQbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbEKbELbELbCbbELbELbELbARbERaSdaSdaSdaTobEVbCfbEYbEXbEXbEXbFcbChbnKbFfbESbETbEUbFgbvsbwPbEWbynbFhbymbFibEZbFabFbbFlbFdbFdbFebFdbFnbFobxbbFqbFpbFjbFkbFrbFmbFsbyBbFubFtbBnboxbFybFxbEjbzLbFzbxlbFAbFvbFwbFFbFIbFGbFMbxmbxmbFBbFCbFDbFEbFNbFEbFPbFCaaabFHbxvbFRbFJbFKbFLbEsbzYbFSbxvbFUbFObFWbEobFQbFXbFYbFTbFZbFVbGcbGbbGebGdbGabGabGdbGfbGhbGgbEtbGiaQyaQxbEtaQAaRuaQDaRyaRvaRBaRAaRCbGvbEubGxbGqbGrbGybGrbGzbGzbEAbGubGAbGwbEAbGBbGEbGBbEAbGFbDqbEMbEDbGKbGLbGKbEDbGCbGDbEDbGNbGMbGGbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabicdsudswdsvdsvbicaaabicbGObDwbGObDwbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGPbARbARbARbARbARbARbARbARbERaaaaaaaSdbGRbndbHabCfbHdbCfbHebEXbHfbGQbChbHgbGSbGTbGUbFgbvsbvsbvsbvsbvsbvsbGVbGWbGXbGYbGZbxbbxbbxbbxbbxbbxbbxbbHhbxbbxbbxbbHbbxbbHcbHibHjbBnbBnbBnbHnbDXbHobzLbHpbxlbHqbFvbxlbxlbxlbxmbHrbxmbHkbHlbHmbHubHBbHzbHDbHCbHsbHtbHFbxvbHvbzYbHwbHxbEsbHybzYbxvbHHbHAbHIbEobHLbHJbHEbHMbHGbHNbHObGabGabGabGabGabGabGabGabHPbHKbHRaRFaREbEtaRHaSFaROaSHaSGbIbbHUbHQbIbbEubIebGqbIfbHXbIgbIhbIhbIabIjbIcbIdbImbIlbIqbInbEAbIibIrbIkbEDbItbIwbIvbIobIpbIybEDbIzbGGbIsbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIAbjJbIubIubIubICaaabIEbIxbIxbIxbjJbIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjQaLdaSdaSdaSdaSdaSdaSdaSdaSdaSdaToaSfbIGbCfbIHbIBbIIbIDbIDbIJbILbIKbIMbIMbIObINbDQbDQbDQbDQbDQbDQbIQbIPbIPbIRbITbxbbIVbIUbIYbIXbISbIZbJfbJbbxbbIWbJibyBbyCbDXbHjbBnbBnbJjbzJbzJbJmbJabJobJcbJdbJebJpbJgbJhbJsbJtbJkbJlbJubHsbJnbJvbJnbJvbJwbHsbHtbJqbJrbJybJxbJDbJzbJGbJEbJHbJrbJIbFObFObEobJAbJBbJCbJJbJKbEobHObGabGabGabGabGabGabGabJFbJLbJPbHRaSIbHRaSKbHQbHQaYkbHQaSVbIbbHUbHQbIbbEubJWbJZbJXbJTbJTbKcbKabKgbKebJYbJYbJYbKhbJYbKkbKbbKnbKdbKobKfbKqbKrbKibKibKibKjbEDbKubGGbKlbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIAbKmbKmbKmbIFaaabIAbKmbKmbKmbIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbKybKxbKpaQZaQZaQZbndaSfaSfbCfbKCbCfbKDbKsbKtbKEbCfblQbKvbKvbKwbKFbKwbKwbKwbKFbKwblQblQbxbbxbbxbbKGbxbbKzbKzbKzbKzbKzbKzbJfbKAbKBbKHbzFbKIbKKbKJbKMbKLbKObKNbKQbKPbKSbKRbKVbKUbKXbKXbLabKZbKTbLbbLfbKWbLgbKYbFCbLhbHDbLibHBbLkbFCaaabLcbLdbLebLnbLdbLdbLdbLdbLpbxvbLqbFObLrbLjbLsbLlbLmbLtbLobEobLvbLubLxbLwbLzbLybLBbLAbGabLDbEtaTHaTLaTKaTNaTMbHQaTObHQaSVbIbbHUbHQbIbbEubIebGqbLNbLEbLPbLSbLQbLIbLTbLKbLLbLMbLUbLObLVbEAbLXbLRbLYbEDbLZbMfbMabIpbLWbMgbEDbKubGGbMhbGHaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbMjbMibKpaSeaSebMbbMcaSebMdbCfbMebIBbMlbMkbMnbMmbCfaaaaabaabbMpbMobMobMobMobMobMraaaaaabKBbMtbMsbMubMqbKzbKzbKzbKzbKzbKzbMwbMvbMzbMybMDbMBbMxbDXbzJbzJbMFbMAbzJbzJbMJbMCbMLbMEbMMbMGbMGbMHbMGbMIbMNbMGbMKbKYbFCbMObFEbFEbFEbMPbFCaaabLcbLdbMRbMQbMVbMTbMWbMSbNbbMUbNcbFObNdbEobMXbMYbMZbNabNfbNebNjbNgbNlbNkbNhbNibNnbNmbNqbNpbNrbLFaTQaTPbEtaTRaTTaTSaTUaSVbNAaTVaTWbGvbEubNKbNzbNLbNBbNBbNMbNDbNEbNFbNGbNHbNIbNJbNObNNbEAbNQbLRbNRbEDbNSbNPbNTbIpbIpbNUbEDbIzbGGbNWbGHaaaaaaaaaaaaaabbNXbNZbNVbNZbNVbNZbOaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbKpbKpbObaSdaSdbjQaLdaSdaSdbCfbOdbIBbIBbIBbCfbCfbCfaaaaaaaaabOebOcbOcbOfbOcbOcbOeaaaaaabKBbOgbKzbOibOhbOhbOhbOhbOhbOkbOjbOhbOlbOnbOmbOpbOobOrbOqbzJbOtbBnbOvbOsbDXbOwbOubOxbMEbMEbMGbOAbOybOCbOBbODbMGbFBbKYbFCbOEbOHbOFbOObOMbFCaaabOGbLdbOPbOIbOJbOKbOLbOKbOSbONbOXbFObOYbEobOQbOQbORbPabOTbOUbOVbOWbPcbPbbOZbOZbPebPdbPhbPfbEtbNoaUOaTYbEtbEubPgbEubEuaUPbEubEubEubEubPrbPmbGqbPvbLEbLPbPxbNBbNEbPnbPobPobPpbIdbPqbPybPsbPtbIrbPubEDbPzbPwbIpbPHbPBbPJbEDbKubPAbGHbGHaaaaaaaaaaaaaabbPKbPCbPDbPEbPFbPGbPKaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbPIbPIbPIbPNbPMbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbOebPTbKBbKBbPUbPObPPbPQbPQbPQbPObKzbJfbKAbKzbKzbKBbPZbPSbQcbQdbPVbQebPXbBnbBnbPYbDXbOwbOubQhbQfbQbbQibQkbOzbQlbQgbQnbMGbQobQjbHmbQpbQqbQmbQsbQrbHsbHtbQtbLdbQvbQubQwbOKbQxbOKbQybONbQzbFObQAbEobQDbQBbQGbQEbQHbQCbQJbQIbQFbQFbQMbQKbQFbQFbQObQNbQPbQLaVyaVxbQTbQSaWIaHgaVIaYlaWObQVbRebQXbRgbRfbGqbRabRbbRcbRjbRibIabRkbPobPobRlbRhbPqbRmbEAbRnbRnbRobEDbRpbRybRqbRzbIpbREbEDbKubRFbGHaaaaaaaaaaaaaaaaabbRrbRsbPDbPFbPDbRtbNVaabaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbRubRvbRwbRxbRGbRHbRAbRGbRBbRCbRDbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbRJbRIbRKbRIbRSbRRbRTbRRbRRbRRbRRbRUbJfbKAbRLbxbbxbbRMbBnbzFbQdbRNbDXbRObRPbRPbRQbNYbRYbRXbRZbRVbRWbSbbSdbScbSabQgbSebMGbMKbKYbFCbSfbShbSgbSlbSkbFCaaabOGbSibSjbSibSibSibSibSibSmbSibSpbFObQAbEobSqbSnbSnbSobSrbOUbStbSsbSvbSubSxbSwbSybSvbSAbSzbSDbSBaWSaWRbSGbSGbSEbSHbSJbSIbSLbSKbSNbSMbSPbSObSRbSQbSQbSSbSUbSTbIabSWbIdbIdbSXbSVbPqbSYbTabSZbTfbTcbTbbTgbTdbTebTjbTebEDbEDbTkbPtbThbTibTibTibTibTibThbPKbPFbPDbPFbPFbPGbPKaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbRAbRAbRAbTlbRGbTnbTnbRGbTobRAbRAbTpbWLbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbTtbTrbTqbTrbTubKzbPPbPQbPQbPQbKzbKzbJfbKAbTsbTxbxbbTAbBnbTBbQdbTvbDXbTwbBnbBobBnbPWbOwbTybTzbRVbRWbTCbTEbTDbTKbTFbTLbTGbTHbTIbTJbTJbTNbTMbTPbFCbFCaaabOGbSibTQbTObTSbTRbTVbTTbTWbTUbTXbFObQAbNebTZbTYbUbbUabUcbOUbUebUdbUibUhbUfbUgbUkbUjbUmbUlbUobUnbUqbUpbUsbUrbUubUtbUybUvbUDbQVbUwbQXbUxbUGbGrbUzbUAbUBbUCbUCbIabUIbUEbUFbIabUJbPqbUHbIabUKbUMbULbUObUNbUQbUPbUSbURbUUbUTbUWbUVbUYbUXbUXbUZbVbbVabQabVcbNZbNVbVdbNVbNZbVjaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbVebVfbVgbVhbVibRGbVkbRAbVlbRAbRAbRAbRAbRAbTlbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebVmbOcbOcbOcbVnbOebPTbKBbKBbVobKzbPPbKzbKzbKzbKzbKzbJfbKAbTsbVpbxbbVrbBnbVqbVsbBnbVwbzEbBnbBnbVtbDXbOwbTybTzbRVbRWbMGbVubVvbVybVxbVzbMHbVBbVAbVDbVCbHsbVEbVFbHsbHtbHtbVGbSibVIbVHbVKbVJbVLbVLbVNbVMbVObFObVPbEobOUbVQbOQbVSbVRbOUbUebVUbVTbVVbVXbVWbVYbVTbUebVZbWebWabWbbWabWcbWabWdbWdbWhbWfbWgbWgbWgbWmbWgbWgbWibWibWjbWkbWjbWjbIabIabIabIabIabWlbWnbLIbIabWobWrbWpbWqbWqbWvbWsbWtbWubWxbWwbWzbWybWBbWAbWAbWCbWEbWDbThbQabQabQabWFbThaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWObWGbRAbRAbWHbWHbWHbRGbRAbRAbRGbWIbWJbWKbRAbWMbWNbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbWPbTrbTqbTrbPUbWQbWRbKzbKzbKzbWQbKzbJfbKAbTsbWSbxbbWWbBnbzFbQdbBnbzJbWTbBnbBnbWUbDXbOwbTybWVbRVbWXbMGbXbbWYbWZbXabXdbMHbXcbXebXgbXfbXibXhbXjbFCaaaaaaaaabSibXpbXkbXlbXlbXmbXnbXobSibXrbXqbQAbXsbXubXtbXwbXvbXybXxbXAbUdbXzbXBbXDbXCbXEbXzbUebVZbXIbXFbXGbXHbXKbXJbWdbXMbXLbXObXNbXPbXRbXQbXTbXSbXVbXUbUUbXWbWqbWqbXYbXXbWqbXZbYbbYabYdbYcbWqbYebYgbYfbYibYhbYlbYjbYkbYjbYjbYjbTkbPtbThbTibTibThbYnbYmbYpbYobYrbYqbYsbQaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubWGbRAbRAbRAbRAbRAbYtbRAbRAbRGbPIbPIbPIbPIbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbYxbYwbYybYwbYAbYzbYBbYBbYBbYBbYBbYCbYEbYDbTsbYFbxbbYGbYIbYHbYNbYJbYKbYLbYLbYLbYMbYMbYObTybYRbYQbRWbMGbYTbYSbYVbVvbYWbMHbYUbYXbZdbTJbZebQmbYYbFCaaaaaaaaabSibYZbZabZbbZcbXmbXnbXobSibZgbZfbZibZhbZkbZjbZmbZlbZobZnbZrbZqbVTbVTbZpbZvbVTbVTbUebVZbZwbZsbZtbZubZybZxbWdbZAbZBbZzbZDbZCbZFbZEbZEbZGbZIbZHbZKbZJbUNbUNbZLbUNbZMbUNbZNbUNbZPbZObZObZQbZSbZRbZUbZTbZXbZVbZYbZWaYpbYjcacbZZaaaaaaaaabThcaabVbcadbYobQacajcalbThaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIcafcagcahcaibRAbRGbRAbRAbRGbRAcancakcaraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbOebPTbKBbKBbxbbxbbKBbKBbKBbKBbKBbxbbxbbKBbKBbKBbxbcamcamcamcascambYMcaocapcaqcatbYMbOwbTycawbMEbMEbMGbMGbMGbMGbMGbMNbMHbTJbTIcaubTJcavcaxbFCbFCbFCbFCbFCbSibSjbSibSibSibSibSibSibSicaybFOcaBcazcaAcaCcaDcaAcaAcaEcaGcaFcaIcaHcaKcaJcaMcaLbXAcaNcaPcaOcaRcaQcaTcaScaVcaUcaXcaWcaZcaYcbbcbabXQcbcbWgbWicbdcbecbdcbfcbicbfcbfcbfcbhcblcbjcbjcbkcbmcbocbnbZUcbpcbrcbqcbtcbscbubYjcacbZZaaaaaaaaabThcbwcbvbThbQabThbThbQabThaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPIbPIbPIbPIbPIbPIbRGbTobRAcbzbRAcbxcbycbAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbDcbBbOccbCbOccbEcbFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbGaabaaaaaaaaaaaacamcbIcbHcbKcbJbYMcbNcbLcbMcbRbYMbOwbTycbOcbPcbQcbScbVcbTcbUcbWcbYcbXccacbZcccccbccfccdcceccgccjcchccicckccqcclccmbEnccnbFOccoccpccrbFOccscaAccvcctccuccwccxbUecczccyccBccAccDccCccFccEccHccGccIbWaccKbZuccJccMccLccOccNccPbXNccQbXQbXQbXQccRbWgcbdccTccSccVccUccXccWcdbcbfccYccZcdacbjcbjcdccbocddcdfcdecdhcdgcdjcdicdkbYjcdnbGHaaaaaaaaabThbThbThbThaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIcdlcdmcdpcdlcdobRGbRAbRAbRGbRAcdrcdqcdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdvcdtcducducducdtcdwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacamcdycdxcdAcdzbYLcdBcdDcdCcdEbYMbOwcdGcdFbTybTycdHcdKcdIcdJcclcdOcdLcdOcdMcdNcdNcdQcdPcdRcdNcdNcdTcdNcdScdNcclccmbEncdVcdUcdXcdWcdZcdYbFOcaAcebcctceaccucedbUececceecegcefceicehcekcejbUecelcembWaceocencencercepceqcetcesbXNceucevbXQcexcewbWgcbdcezceyceBceAceDceCceGcbfceEccZceFceFcbjceHceJceIceLceKceNceMcePceOceSbYjcacbGHceQaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWObWGceRceRceRceRceRceTbRAbRAbRGbPIbPIbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceVceUceUceUceWaaaaaaaaaaaaaaaaaaaaaceXceZceYceZcfaaaaaaaaaacamcamcamcffcfbcdAcfcbYLcfdcbMcfecfgbYMbOwcfhcfjcficflcfkcfncfmcfpcfocfrcfqcfucfscftcftcfxcfvcfvcfvcfvcfvcfvcfwcfAcfycfzcfBcfDcfCcfFcfEcfHcfGcfIcaAcfJcctccucfKcedbUececceecfMcfLcfOcfNcfQcfPbUmcfRcfSbWabWacfUcfUbWacepbWdcfTcfVbWgcfXcfWcfZcfYcgabWgcbdcgccgbcgecgdcghcgfcggcbfcgiccZceFceFcbjcgjcgmcgkcglcgncgpcgocgrcgqcgvbYjcaccgscgtcgscgucgycgucgucguaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubWGceRceRceRcgwcgxbRGbRAbRAbRGbRAbRAbRAcgzbRAcgAbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgFcgBcgCcgDcgFbYPbYPbYPcamcgHcgGcgJcgIcgLcgKcgNcgMcgOcgOcgPbYMcgRcgQcgTcgScgScgUcgXcgVcgScgWcgWcgYchbcgZcgWcgWchacclcclchechcchcchcchdchgchcchcchfchichhchhchjchhaCuchkchhchnchmchpcaAchochqcecchschrchtchvchuchwchrbUecelchychxchAchzchCchBchFchDchEchGchLchHchIchJchKchNbWicbdcbdchMchQchOchPchOchRcbfchUchSchTchTcbjchVchXchWbYjbYjbYjbYjbYjbYjbYjbYjcaccgscifchYchZciaciacibcguaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcicciccicciccidcidcieciecieciecijaabaabaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbEKbELbELbCbbELbELbELbARbERaSdaSdaSdaTobEVbCfbEYbEXbEXbEXbFcbChbnKbFfbESbETbEUbFgbvsbwPbEWbynbFhbymbFibEZbFabFbbFlbFdbFdbFebFdbFnbFobxbbFqbFpbFjbFkbFrbFmbFsbyBbFubFtbBnboxbFybFxbEjbzLbFzbxlbFAbFvbFwbFFbFIbFGbFMbxmbxmbFBbFCbFDbFEbFNbFEbFPbFCaaabFHbxvbFRbFJbFKbFLbEsbzYbFSbxvbFUbFObFWbEobFQbFXbFYbFTbFZbFVbGcbGbbGebGdbGabGabGdbGfbGhbGgbEtbGiaQyaQxbEtaQAaRuaQDaRyaRvaRBaRAaRCbGvbEubGxbGqbGrbGybGrbGzbGzbEAbGubGAbGwbEAbGBbGEbGBbEAbGFbDqbEMbEDbGKbGLbGKbEDbGCbGDbEDbGNbGMbGGbGHaaaaaaaaaaaaaaaaaaaaaaaaaabaabbicdsudswdsvdsvbicaaabicbGObDwbGObDwbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGPbARbARbARbARbARbARbARbARbERaaaaaaaSdbGRbndbHabCfbHdbCfbHebEXbHfbGQbChbHgbGSbGTbGUbFgbvsbvsbvsbvsbvsbvsbGVbGWbGXbGYbGZbxbbxbbxbbxbbxbbxbbxbbHhbxbbxbbxbbHbbxbbHcbHibHjbBnbBnbBnbHnbDXbHobzLbHpbxlbHqbFvbxlbxlbxlbxmbHrbxmbHkbHlbHmbHubHBbHzbHDbHCbHsbHtbHFbxvbHvbzYbHwbHxbEsbHybzYbxvbHHbHAbHIbEobHLbHJbHEbHMbHGbHNbHObGabGabGabGabGabGabGabGabHPbHKbHRaRFaREbEtaRHaSFaROaSHaSGbIbbHUbHQbIbbEubIebGqbIfbHXbIgbIhbIhbIabIjbIcbIdbImbIlbIqbInbEAbIibIrbIkbEDbItbIwbIvbIobIpbIybEDbIzbGGbIsbGHaaaaaaaaaaaaaaaaaaaaaaaaaabaabbIAbjJbIubIubIubICaaabIEbIxbIxbIxbjJbIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjQaLdaSdaSdaSdaSdaSdaSdaSdaSdaSdaToaSfbIGbCfbIHbIBbIIbIDbIDbIJbILbIKbIMbIMbIObINbDQbDQbDQbDQbDQbDQbIQbIPbIPbIRbITbxbbIVbIUbIYbIXbISbIZbJfbJbbxbbIWbJibyBbyCbDXbHjbBnbBnbJjbzJbzJbJmbJabJobJcbJdbJebJpbJgbJhbJsbJtbJkbJlbJubHsbJnbJvbJnbJvbJwbHsbHtbJqbJrbJybJxbJDbJzbJGbJEbJHbJrbJIbFObFObEobJAbJBbJCbJJbJKbEobHObGabGabGabGabGabGabGabJFbJLbJPbHRaSIbHRaSKbHQbHQaYkbHQaSVbIbbHUbHQbIbbEubJWbJZbJXbJTbJTbKcbKabKgbKebJYbJYbJYbKhbJYbKkbKbbKnbKdbKobKfbKqbKrbKibKibKibKjbEDbKubGGbKlbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabbIAbKmbKmbKmbIFaaabIAbKmbKmbKmbIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbKybKxbKpaQZaQZaQZbndaSfaSfbCfbKCbCfbKDbKsbKtbKEbCfblQbKvbKvbKwbKFbKwbKwbKwbKFbKwblQblQbxbbxbbxbbKGbxbbKzbKzbKzbKzbKzbKzbJfbKAbKBbKHbzFbKIbKKbKJbKMbKLbKObKNbKQbKPbKSbKRbKVbKUbKXbKXbLabKZbKTbLbbLfbKWbLgbKYbFCbLhbHDbLibHBbLkbFCaaabLcbLdbLebLnbLdbLdbLdbLdbLpbxvbLqbFObLrbLjbLsbLlbLmbLtbLobEobLvbLubLxbLwbLzbLybLBbLAbGabLDbEtaTHaTLaTKaTNaTMbHQaTObHQaSVbIbbHUbHQbIbbEubIebGqbLNbLEbLPbLSbLQbLIbLTbLKbLLbLMbLUbLObLVbEAbLXbLRbLYbEDbLZbMfbMabIpbLWbMgbEDbKubGGbMhbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbMjbMibKpaSeaSebMbbMcaSebMdbCfbMebIBbMlbMkbMnbMmbCfaaaaabaabbMpbMobMobMobMobMobMraaaaaabKBbMtbMsbMubMqbKzbKzbKzbKzbKzbKzbMwbMvbMzbMybMDbMBbMxbDXbzJbzJbMFbMAbzJbzJbMJbMCbMLbMEbMMbMGbMGbMHbMGbMIbMNbMGbMKbKYbFCbMObFEbFEbFEbMPbFCaaabLcbLdbMRbMQbMVbMTbMWbMSbNbbMUbNcbFObNdbEobMXbMYbMZbNabNfbNebNjbNgbNlbNkbNhbNibNnbNmbNqbNpbNrbLFaTQaTPbEtaTRaTTaTSaTUaSVbNAaTVaTWbGvbEubNKbNzbNLbNBbNBbNMbNDbNEbNFbNGbNHbNIbNJbNObNNbEAbNQbLRbNRbEDbNSbNPbNTbIpbIpbNUbEDbIzbGGbNWbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbKpbKpbObaSdaSdbjQaLdaSdaSdbCfbOdbIBbIBbIBbCfbCfbCfaaaaaaaaabOebOcbOcbOfbOcbOcbOeaaaaaabKBbOgbKzbOibOhbOhbOhbOhbOhbOkbOjbOhbOlbOnbOmbOpbOobOrbOqbzJbOtbBnbOvbOsbDXbOwbOubOxbMEbMEbMGbOAbOybOCbOBbODbMGbFBbKYbFCbOEbOHbOFbOObOMbFCaaabOGbLdbOPbOIbOJbOKbOLbOKbOSbONbOXbFObOYbEobOQbOQbORbPabOTbOUbOVbOWbPcbPbbOZbOZbPebPdbPhbPfbEtbNoaUOaTYbEtbEubPgbEubEuaUPbEubEubEubEubPrbPmbGqbPvbLEbLPbPxbNBbNEbPnbPobPobPpbIdbPqbPybPsbPtbIrbPubEDbPzbPwbIpbPHbPBbPJbEDbKubGGbPAbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbPIbPIbPIbPNbPMbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbOebPTbKBbKBbPUbPObPPbPQbPQbPQbPObKzbJfbKAbKzbKzbKBbPZbPSbQcbQdbPVbQebPXbBnbBnbPYbDXbOwbOubQhbQfbQbbQibQkbOzbQlbQgbQnbMGbQobQjbHmbQpbQqbQmbQsbQrbHsbHtbQtbLdbQvbQubQwbOKbQxbOKbQybONbQzbFObQAbEobQDbQBbQGbQEbQHbQCbQJbQIbQFbQFbQMbQKbQFbQFbQObQNbQPbQLaVyaVxbQTbQSaWIaHgaVIaYlaWObQVbRebQXbRgbRfbGqbRabRbbRcbRjbRibIabRkbPobPobRlbRhbPqbRmbEAbRnbRnbRobEDbRpbRybRqbRzbIpbREbEDbKubGGbRFbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbRubRvbRwbRxbRGbRHbRAbRGbRBbRCbRDbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbRJbRIbRKbRIbRSbRRbRTbRRbRRbRRbRRbRUbJfbKAbRLbxbbxbbRMbBnbzFbQdbRNbDXbRObRPbRPbRQbNYbRYbRXbRZbRVbRWbSbbSdbScbSabQgbSebMGbMKbKYbFCbSfbShbSgbSlbSkbFCaaabOGbSibSjbSibSibSibSibSibSmbSibSpbFObQAbEobSqbSnbSnbSobSrbOUbStbSsbSvbHTbSxbSwbSybSvbSAbSzbSDbSBaWSaWRbSGbSGbSEbSHbSJbSIbSLbSKbSNbSMbSPbSObSRbSQbSQbSSbSUbSTbIabSWbIdbIdbSXbSVbPqbSYbTabSZbTfbTcbTbbTgbTdbTebTjbTebEDbEDcacbGGbGHbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbRAbRAbRAbTlbRGbTnbTnbRGbTobRAbRAbTpbWLbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbTtbTrbTqbTrbTubKzbPPbPQbPQbPQbKzbKzbJfbKAbTsbTxbxbbTAbBnbTBbQdbTvbDXbTwbBnbBobBnbPWbOwbTybTzbRVbRWbTCbTEbTDbTKbTFbTLbTGbTHbTIbTJbTJbTNbTMbTPbFCbFCaaabOGbSibTQbTObTSbTRbTVbTTbTWbTUbTXbFObQAbNebTZbTYbUbbUabUcbOUbUebUdbUibUhbUfbUgbUkbUjbUmbUlbUobUnbUqbUpbUsbUrbUubUtbUybUvbUDbQVbUwbQXbUxbUGbGrbUzbUAbUBbUCbUCbIabUIbUEbUFbIabUJbPqbUHbIabUKbUMbULbUObUNbZNbpvbsBbqbbRnbtscacbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbVebVfbVgbVhbVibRGbVkbRAbVlbRAbRAbRAbRAbRAbTlbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebVmbOcbOcbOcbVnbOebPTbKBbKBbVobKzbPPbKzbKzbKzbKzbKzbJfbKAbTsbVpbxbbVrbBnbVqbVsbBnbVwbzEbBnbBnbVtbDXbOwbTybTzbRVbRWbMGbVubVvbVybVxbVzbMHbVBbVAbVDbVCbHsbVEbVFbHsbHtbHtbVGbSibVIbVHbVKbVJbVLbVLbVNbVMbVObFObVPbEobOUbVQbOQbVSbVRbOUbUebVUbVTbGtbVXbVWbVYbVTbUebVZbWebWabWbbWabWcbWabWdbWdbWhbWfbWgbWgbWgbWmbWgbWgbWibWibWjbWkbWjbWjbIabIabIabIabIabWlbWnbLIbIabWobWrbWpbWqbWqbWvbWsbLRctvbEBbyZcacbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWObWGbRAbRAbWHbWHbWHbRGbRAbRAbRGbWIbWJbWKbRAbWMbWNbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbWPbTrbTqbTrbPUbWQbWRbKzbKzbKzbWQbKzbJfbKAbTsbWSbxbbWWbBnbzFbQdbBnbzJbWTbBnbBnbWUbDXbOwbTybWVbRVbWXbMGbXbbWYbWZbXabXdbMHbXcbXebXgbXfbXibXhbXjbFCaaaaaaaaabSibXpbXkbXlbXlbXmbXnbXobSibXrbXqbQAbXsbXubXtbXwbXvbXybXxbXAbUdbXzbXBbXDbXCbXEbXzbUebVZbXIbXFbXGbXHbXKbHVbWdbXMbXLbXObXNbXPbXRbXQbXTbXSbXVbXUbUUbXWbWqbWqbXYbXXbWqbXZbYbbYabYdbYcbWqbYebYgbYfbYibYhbYlbYjbYjbYjbYjbYjcacbGjbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubWGbRAbRAbRAbRAbRAbYtbRAbRAbRGbPIbPIbPIbPIbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbYxbYwbYybYwbYAbYzbYBbYBbYBbYBbYBbYCbYEbYDbTsbYFbxbbYGbYIbYHbYNbYJbYKbYLbYLbYLbYMbYMbYObTybYRbYQbRWbMGbYTbYSbYVbVvbYWbMHbYUbYXbZdbTJbZebQmbYYbFCaaaaaaaaabSibYZbZabZbbZcbXmbXnbXobSibZgbZfbZibZhbZkbZjbZmbZlbZobZnbZrbZqbVTbVTbZpbZvbVTbVTbUebVZbZwbZsbZtbZubZybZxbWdbZAbZBbZzbZDbZCbZFbZEbZEbZGbZIbZHbZKbZJbUNbUNbZLbUNbZMbUNbZNbUNbZPbZObZObZQbZSbZRbZUbZTbZXbZVbGkbZWaYpbYjcacbGGbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIcafcagcahcaibRAbRGbRAbRAbRGbRAcancakcaraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbOebPTbKBbKBbxbbxbbKBbKBbKBbKBbKBbxbbxbbKBbKBbKBbxbcamcamcamcascambYMcaocapcaqcatbYMbOwbTycawbMEbMEbMGbMGbMGbMGbMGbMNbMHbTJbTIcaubTJcavcaxbFCbFCbFCbFCbFCbSibSjbSibSibSibSibSibSibSicaybFOcaBcazcaAcaCcaDcaAcaAcaEcaGcaFcaIcaHcaKcaJcaMcaLbXAcaNcaPcaOcaRcaQcaTcaScaVcaUcaXcaWcaZcaYcbbcbabXQcbcbWgbWicbdcbecbdcbfcbicbfcbfcbfcbhcblcbjcbjcbkcbmcbocbnbZUcbpcbrcbqbGlcbscbubYjcacbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPIbPIbPIbPIbPIbPIbRGbTobRAcbzbRAcbxcbycbAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbDcbBbOccbCbOccbEcbFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbGaabaaaaaaaaaaaacamcbIcbHcbKcbJbYMcbNcbLcbMcbRbYMbOwbTycbOcbPcbQcbScbVcbTcbUcbWcbYcbXccacbZcccccbccfccdcceccgccjcchccicckccqcclccmbEnccnbFOccoccpccrbFOccscaAccvcctccuccwccxbUecczccyccBccAccDccCccFccEccHccGccIbWaccKbZuccJccMccLccOccNccPbXNccQbXQbXQbXQccRbWgcbdccTccSccVccUccXccWcdbcbfccYccZcdacbjcbjcdccbocddcdfcdecdhcdgbGmcdicdkbYjcdndfcbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIcdlcdmcdpcdlcdobRGbRAbRAbRGbRAcdrcdqcdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdvcdtcducducducdtcdwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacamcdycdxcdAcdzbYLcdBcdDcdCcdEbYMbOwcdGcdFbTybTycdHcdKcdIcdJcclcdOcdLcdOcdMcdNcdNcdQcdPcdRcdNcdNcdTcdNcdScdNcclccmbEncdVcdUcdXcdWcdZcdYbFOcaAcebcctceaccucedbUececceecegcefceicehcekcejbUecelcembWaceocencencercepceqcetcesbXNceucevbXQcexcewbWgcbdcezceyceBceAceDceCceGcbfceEccZceFceFcbjceHceJceIceLceKceNceMbGnceOceSbYjcaccLhbGpbGobGsaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWObWGceRceRceRceRceRceTbRAbRAbRGbPIbPIbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceVceUceUceUceWaaaaaaaaaaaaaaaaaaaaaceXceZceYceZcfaaaaaaaaaacamcamcamcffcfbcdAcfcbYLcfdcbMcfecfgbYMbOwcfhcfjcficflcfkcfncfmcfpcfocfrcfqcfucfscftcftcfxcfvcfvcfvcfvcfvcfvcfwcfAcfycfzcfBcfDcfCcfFcfEcfHcfGcfIcaAcfJcctccucfKcedbUececceecfMcfLcfOcfNcfQcfPbUmcfRcfSbWabWacfUcfUbWacepbWdcfTcfVbWgcfXcfWcfZcfYcgabWgcbdcgccgbcgecgdcghcgfcggcbfcgiccZceFceFcbjcgjcgmcgkcglcgncgpcgocgrcgqcgvbYjcaccgscgtcgscgucgycgucgucguaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubWGceRceRceRcgwcgxbRGbRAbRAbRGbRAbRAbRAcgzbRAcgAbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgFcgBcgCcgDcgFbYPbYPbYPcamcgHcgGcgJcgIcgLcgKcgNcgMcgOcgOcgPbYMcgRcgQcgTcgScgScgUcgXcgVcgScgWcgWcgYchbcgZcgWcgWchacclcclchechcchcchcchdchgchcchcchfchichhchhchjchhaCuchkchhchnchmchpcaAchochqcecchschrchtchvchuchwchrbUecelchychxchAchzchCchBchFbHSchEchGchLchHchIchJchKchNbWicbdcbdchMchQchOchPchOchRcbfchUchSchTchTcbjchVchXchWbYjbYjbYjbYjbYjbYjbYjbYjcaccgscifchYchZciaciacibcguaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcicciccicciccidcidcieciecieciecijaabaabaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIcigceRceRcihciibRGbRAbRAcikbRAbRAbRAciobRAcilbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceYcimcincimceYbYPcipciqcamcitcfbcircisciyciubYMcivciwcixcizbYMcgQcgQciCcgSciAciBciEciDciHcgWciFciGciJciIciKcgWciMciLciNchcciPciOciSciQciRciTciVciUciXciWciZciYcjbcjacjdcjccjgcjecjfcjhcjjcjicjkceecjocjlcjmcjncjqcjpbUmcjrcjtcjscjuchCcjvcjvcjxcjwbWgcjycjAcjzcjCcjBcjEaYobWicjFcjHcjGcjIcjGcjGcjLcjJcjKcjPcjMcjNcjOcbjcjQcjRcbnbPtbGGcjTcjScjUcjUcjScjUcjYcgscjVcjWchZciackecjXcguaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciccjZckacjZcidciecieckbckcckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIckdceRceRckfbRGbRAbRAbRGckgbRAbRAckjckhbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgFckicimcimckkcklcfbcfbckmckncfbcfbcisckqckobYMbYMbYMbYMbYMbYMckpcgQcksckrckxcktcktcktckucgWckvckwckwckwckzckyckBckAckDckCckFckEckHckGckJckIchcchfckKchhckMckLckOckNckPchhcebccuceaccuckRckQckUckSckTckVckXckWckYchrclackZclcclbclecldclgclfcljclhbWgbWgbWgbWgbWgclicllclkbWiclncjGcjGclmclocjGcltclpcbjclqccZclrclrcbjcbmclscbnbPtcgsclvcgscgscgscgscgscgscgscluclwcguclxclzclycguafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOclBcjZcjZclAciecieckbckbclHckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIclCclDclEbRGbRAclFbRGclGclIbRAbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceYcincincinceYbYPclJclMclKckncfbcfbclLclOclNclQclPclPclPclTcgQcgQcgQciCcgSclRcktclScktclVcgWckvckwclUckwclWcgWclYclXclZchccmccmacmbcmecmdcmhcmfcmgcmjcmicmlcmkcmocmmcmnchhcfJccuccucmpckRckQcmrcmqcmucjlcmscmtaYqcmvcmycmxcmAcmzcmCcmBcmEcmDcjvcmHchxcmFcmGcmJcmIcmKcmNcmLclpclncmMcjGcjGcjGcmQcmOclpcbjcmPccZclrclrcbjcmTcmRcbnbPtcmScmVcmUcgscmWcmYcmXcnbcmZcnacnfcgucnccndcnecgucgscgscgscgEcgEcgEcgEcgEaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaacnkcieclBciecieckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9156,15 +9121,15 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcTRcTScTScTUcTTcTVcTVcTVcTTcTVcTVcTVcTTcTVcTVcTVcTWcTScTScTScTScTScTXcTZcTYcUbcUacUecUdcUgcUfcNBcLwcUccRCcKbcKbcKbcUhcMvcSUcUkcUjcUmcUlcUicUncUpcUocUrcUqcUucUscUxcUwcUycUqcUtcUzcTecUvcRXcRXcRXcUAcPTcUCcUCcSdcUEcUDcUGcUFcUIcUHcUKcUJcUPcUNcUScSqcUVcSncUWcSwcSwcQZcRecBQcPdcQkcULcUMcVacQncQkcUOcVbcQncQkcUQcURcVccUTcUTcQkcBYcsLcUUcBPaaacBRcJKcMgcJKcVecMjcEHcVfcUXcUYcEHcUZcVgcxNcxNcxNcBRaaaaaaaabaabaaaaaaaaaaaaaaabGHcJQcFcbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaabcVkaabaaaaabcVkaabaaaaabcVkaabaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcVlcVdcVmcRAcVncNBcNNcTccTccTccTccVocTccUfcSUcVhcVicVjcVpcVrcVqcVtcVscVvcVucVycVwcVAcVzcVCcVBcUtcTjcTecVxcVDcRXcRXcVFcPTcVGcVHcSdcVIcQPcVJcVEcVLcVKcVOcVMcVQcVPcVQcVRaabcQZcQZcQZcQZcQZcRecBPcPdcQkcVScVNcVUcVTcVWcVVcVYcVXcWbcWacWccSAcWecWdcQkcBYcsLcVZcBPaaacBRcJKcJKcJKcWicWhcWpcWjcWqcWfcEHcEHcEHcEHcWgcWrcWwaaaaaaaaaaabaabaaaaaaaaaaaabGHbGHcFcbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwaabcNFcWxcNMaaacNFcWxcNMaaacNFcWxcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabcRzcRAcRAcRAcRAcWkcWlcWmcNBcWncNBcNBcMvcWocNBcSUcWzcWycVjcWAcUicWscWtcWucWucWvcWDcWCcWFaYtaZBcWvcWBcWHcWJcWIcWLcWKcWPcWMcWScWQcUGcWTcWUcWNcWOcWVcWWcWRcWYcWXcXbcXacXdcXccQpcSncXecWZcWZcQZcRecBPcPdcQkcQkcQkcQkcQkcXgcXfcXicXhcXncXkcXpcXocXqcXjcQkcBYcXrcXlcXlcXlcXmcXmcXmcXmcXmcXscXvcXtcXzcXxcNocXAcNocXAcNocXBcWwaaaaaaaaaaaaaabaabaaaaaaaaaaaabGHcFcbGHaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNFcWxcNMaabcNFcWxcNMaaacNFcWxcNMaaaaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabcXucXucXucXucXucXucXucXCcXucXucSUcXwcXDcVjcWAcUicXycUicUicXEcRRcXGcXFcUwcXHcXIcRRcXLcRXcTecXMcXOcXNcWPcXPcXJaZCcXRcXQcXVcXScXRcXWcXYcXXcYacSdcXTcXUcYccYbaabcTocYfcYdcXZcQZcRecBQcYhcYgcYgcYgcYlcQkcYmcUMcYecYncURcYocUTcUTcURcYpcQkcBYcYichfcsLcYjcYkcBPaaaaaacBRcYqcYscYrcYvcYqcYscYwcYxcYqcYscYycBRaabaabaabaabaabaabaabaabaabaabbGHcFcbGHbGHbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNFcWxcNMaabcNFcWxcNMaaacNFcWxcNMaaaaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabcXucXucXucXucXucXucXucXCcXucXucSUcXwcXDcVjcWAcUicXycUicUicXEcRRcXGcXFcUwcXHcXIcRRcXLcRXcTecXMcXOcXNcWPcXPcXJaZCcXRcXQcXVcXScXRcXWcXYcXXcYacSdcXTcXUcYccYbaabcTocYfaZTcXZcQZcRecBQcYhcYgcYgcYgcYlcQkcYmcUMcYecYncURcYocUTcUTcURcYpcQkcBYcYichfcsLcYjcYkcBPaaaaaacBRcYqcYscYrcYvcYqcYscYwcYxcYqcYscYycBRaabaabaabaabaabaabaabaabaabaabbGHcFcbGHbGHbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcWxcNMaaacNFcWxcNMaaacNFcWxcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaabaabaabcXucYtcYtcYucYAcYBcYBcYDcYCcYCcYEcYGcYFcVjcWAcVjcYHcVjcVjcVjcRRcYLcYKcYOcYNcYPcYIcYJcYQcYRcYMcYMcYMcYXcYUcYZaZHcZacYScVIcQPcYTcZbcYVcYWcZccSdcXTcZdcZgcZecZhcSncZicWZcWZcQZcRecBQcPdchfchfchfckKcQkcZkcZjcZfcZlcURcZmcZncUTcZpcZocQkcBYcYichfcsLcJGcsLcBPaaaaaacBRcZqcZscZrcxNcZtcZycZvcxNcZzcZBcZAcBRaabaabaaaaaaaaaaaaaaaaaaaaaaaabGHcFcbGGbGGbGHaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcWxcNMaaacNFcWxcNMaabcNFcWxcNMaabaabaabaabaaaaabaaaaaaaabaabaaaaaaaaaaabaaaaaacXucYtcYtcYucZucZucZucZCcZwcZxcSUcZEcZDcZHcZGcZJcZIcZKcZFcZFcZLcZOcZNcVjcVjcVjcZPcZRcZQcZMcZTdaacZVdacdabcSUcZScZSdafcVIcQPcZUdagcZWcZXcZYcSdcZZdahdajdaidadcQZcQZcQZcQZcQZcRecBQcPddaecsLcsLckKcQkdakcSAcSAdaldandamdaqcUTdatdascQkcBYcYicMfcsLcuccTBcBPaaaaaacBRcMkcJKcJKcxNcMkcJKcJKcxNcMkcJKcJKcBRaaaaabaabaaaaaaaaaaaaaaacuQcuQbGHdaucuQbGGbGHbGHbGHcTQcTQaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamhaabcNFdavcNMaaacNFdavcNMaaacNFdavcNMaabalvaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaabcXudaodapcZucZucZudaxdardardardardardardardazdaDdaCdaEdawdawdawdaFdaydaJdaAdaBdawdaydaKdaRdaQdaadaSdacdabdaGdaHdaIdaTdaUdaLdaMdaNcZcdaOdaPdaVdaYdaWdaZcXcdbacSndbcdbbdbbcQZcRecBPcPdchfcBNdaXckKcQkdbdcSAdbkdbecURdbmdbncUTdbpdbocQkcBYcYichfcsLchfchfcBPaabaabcBRdbfcKZcJKcxNdbfcKZcJKcxNdbfcKZcJKcBRaaaaaaaabaabaaaaaaaaaaaacuQdbgbGGcFccuQdbhcuQdbibGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaalvaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaabcXudbjcZucZucZucZucZudardbtdbldbudbwdbvdardbxdbqdbrcXDcVjcVjdbsdbBdbydbEdbCdbGdbFdbzcSUdbAdaQdaadbHdacdbJcSUdbDcZSdbKdbLcSddaMdaNdbNcSddaPdaVcXTcXUdbOcYbdbIcTodbSdbQdbWcQZcRecBPcPdchfdbMdbMckKcQkcQkdbXdbYcQkdbPcQkcQkcQkcQkcQkcQkcBYcYichfcsLcsLdbZcBPaaaaaacBRdbRcJKcJKcxNdbRcJKcJKcxNdbRcJKcJKcBRaaaaaaaaaaabaabaaaaaadcacuQbGGbGGcFccuQbGGbGGbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaalvaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaabcXudbjcZucZucZucZucZudardbtdbldbudbwdbvdardbxdbqdbrcXDcVjcVjdbsdbBdbydbEdbCdbGdbFdbzcSUdbAdaQdaadbHdacdbJcSUdbDcZSdbKdbLcSddaMdaNdbNcSddaPdaVcXTcXUdbOcYbdbIcTodbSaZUdbWcQZcRecBPcPdchfdbMdbMckKcQkcQkdbXdbYcQkdbPcQkcQkcQkcQkcQkcQkcBYcYichfcsLcsLdbZcBPaaaaaacBRdbRcJKcJKcxNdbRcJKcJKcxNdbRcJKcJKcBRaaaaaaaaaaabaabaaaaaadcacuQbGGbGGcFccuQbGGbGGbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwalwamhalvalvalvalvalwalvalvalwdbTaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacXudbUcZwcZucZucZudbVdardbldccdcbdcedcddcgdcfdcjdcidckcVjdcmdcldchdcodcqdcpdcudcrdcndcwdbrcXDdcydcxcZMdczcSUdcscZSdctdcLcSddaMdaNcZccSddcvdaVcXTdcOdcRcZedcScSndcTdbbdbbcQZcRecBQcPddcAcuccABckKdcBcQkcQkdcCcQkdcDdcEdcFchfdcGdcHcsLcBYcYichfcsLdcIcTBcBPaaaaaacBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRaaaaaaaaaaaaaabaabaaaaaabGHbGHbGHcFccuQdcJdcKbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcXucXucXudcUdcMdcMdcMdardcNdcVdcPdcPdcQdcWdawdcYdcXddadcZdddddcddfddeddgddbddiddhddfddjddlddkddoddnddqddpddrdbDcZSddmddscSddaMcSdddtcSddaPdaVcXTcXUddxcYbdbIcQZcQZcQZcQZcQZcRecBQddycYlcuccTBddAddzddzddzddCchfdduddvddwchfddDcYgcYgddEddHcMfcsLcsLcBPcBPaaaaaaddFaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaabaaabGHcJQddBddKcuQddJddIbGGbZZaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddLcXucZucZucZudcMaabaabdarddGddMdcPdcPddNdarddOddQddPddUddTddWddVcSUddXddRddScVjddYcSUdebdeededddUddUdegdefcSUddZcZSdeadehcSddaMcSdcZUdagdecdeidaYdejdekcXcdelcSndendemdemcQZcRecBQdepdeochfchfcPdchfchfcsLdeqchfchfdetchfchfdewdevdeydexdercBPcBPcBPcBPaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaabaabbGHdbgcAScaccuQcuQcuQbGGbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcXucZucZucZudcMaabaaadardesddMdcPdcPdezdardeudeDcSUdeFdeEdeEdeGcSUdeLdeAdeBdeCdeMcSUdeEdeEdeEdeFcSUdeNdeucSUdbDcZSdeOdePdeHdeIdeJdeKdeQdeRcXbdeUcXUdeVcYbdbIcTodeXdeWdeYcQZcRecBPcBPcPdcprdeScPddeTchfcsLdfadeZdffdfbddzddzdfgcYichfdfjcBPcBPaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabGHbGHbGHbGHbGHdfhcaccuQdfidfcbGGbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcXucZucZucZudcMaabaaadardesddMdcPdcPdezdardeudeDcSUdeFdeEdeEdeGcSUdeLdeAdeBdeCdeMcSUdeEdeEdeEdeFcSUdeNdeucSUdbDcZSdeOdePdeHdeIdeJdeKdeQdeRcXbdeUcXUdeVcYbdbIcTodeXbbydeYcQZcRecBPcBPcPdcprdeScPddeTchfcsLdfadeZdffdfbddzddzdfgcYichfdfjcBPcBPaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabGHbGHbGHbGHbGHdfhcaccuQdfidfcbGGbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacXucXudcMdcUdfdaaaaaadardfedfpdcPdcPdfudardfwdfAdfzdfkdfldfmdfndfodfCdfqdfrdfsddpdfodfldfldfldftdfzdfDdfvcSUdbDdfEdaMdfxdfydeQdfFdfGdfBdfIdfHdfKdfJdfNcZedcScSndfOdemdemcQZcRecBPcsLdfQdfTdfRdfgcsKchfcsLcsLcsLcYidfLcsLcXrdfMddHcuQcFcbGHaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabGHbGGbGGbGGcJQdfSdfUcuQdfPbGGbGGbGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfXdfYdfYdfZdfYdfYdgadardfVdcVdcPdcPdgbdardaGdgccSUcSUdfodfodfodfodgddgfdgeddUdgidfodfodfodfocSUcSUdgqdglcSUdbDcZSdgrdgsdfydggdghcSdcSddgtcXWdggcXUdgjcYbdbIcQZcQZcQZcQZcQZcRecBPcTBcsLdgkdgCcsLdgmchfchfdgnchfdgocpscJGdgpchfchfcuQcFcbGHaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaabGHbGHcuQdgAdgycJQdfScacbGGbGGbGGdgBbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgDdgudgvdgwdgvdgxdgFdardgzdgGcMMdcPdgHdarcSUdgIcSUdgJafOdgEdfodfodfodfodgKdfodfodfodfodgEafOdgJcSUdgLcSUcSUdbDcZSdgMdeHdgNdgPdgOdgRdgQdgPdgQdgPdgVdeQdgWdbIdhgdhhdhhdhhdhhdhidgSdgTdgTdgUdhjdgTdgTdgTdhkdgXdgYdgodgZchfdgochfdhacuQcFcbGHbZZbZZbZZbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHbGHbGHbGHbGHbGHbGHbGHbGHbGHcMsbGHcJQcuQdhbbGGcQwdfScaccuQcuQdbhcuQbGHaabdhcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9173,15 +9138,15 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiSdfYdfYdfYdfYdfYdiTdardiKdjgdcPdcPdjjdardjndjpdiPaabdiiafOdjqaaaaaaaaaaaadjqaaaaaadjqafOdiiaaadiRdjudjtcSUdaGcSUaabdiUaabdiVdiWdiXdiYdiZdiYdjadiYdjadjbdjcdhKaaaalwaabdjddgSdjedjfdjwdjhdjidjxdjkdgTdjlcsLcsLcYidjmchfcYicYidjzbGHbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHdjobGGcuQcTLbGGcuQcuQbZZbZZcxScuQdjAbGGdjAcuQdjCcacdjrbGHbGHbGHbGHbGHaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadardjsdjgdcPdcPdjDdardjHdibdjvaaadjIdjLaaaaaaaaaaaaaaadjyaaaaaaaaadjRdjOaaadibdibdjHcSUdaGcSUcQZdjBcTodjBcQZdjBcTodjBcQZdjScTodjUcQZaabdhKaaaalwaabdjEdgSdjFdjfdjGdjVdjidjWdjJdjKdirdjYdjMcYicpscsLdjNdgochfcBPaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaabGHdjXcLhcuQdjPbGGcuQaaaaaaaaaaaacuQbGGbGGdbgdjQdjQdkadkbdjQaaaaabaabaabaabdjTaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadardkcdcVdcPdcPdigdardkddkedibaaadiiafOaaaaaaaabaabaabaabaabaaaaaaafOdiiaaadibdkgdkfcSUdjZcSUcQZdkidkhdkkcQZdkqdkpdkscQZdkwdkudkxcQZaabdhKaaaalwaaadjEdkjdkydkldkmdkndkodkEdkDdgTdkrdgochfdgodkGchfdktdgocBNcBPcBQcBQcBQaHQaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaabGHdkFcuQcuQcQCbGGcuQcuQbZZbZZcuQcuQbGGdkvcLhdjQdkIdkHdkMdjQaaaaaaaabaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafOdardardardardardardarcSUdihdibaaadiiafOdjqaabaabdkzdkAdkBaabdkCaaaafOdiiaaadibdihcSUcSUdaGcSUcQZdkOdkNdkOcQZdkTdkRdkTcQZdkVdkUdkVcQZaabdhKaaaalwaaadjddgSdkJdkKdkLcOQdkWdkYdkXdgTdkPdkQdkZdkSdlacsLcYicYidlbdlddlccsLdlhaHQaaaaabaaabZZbZZbZZbGHbGHbGHbGHbGHbGHdlicJQcuQdljbGGbGGcuQbGGbGGbGGbGGdhbbGGdfPdjQdlodlkdlqdjQaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafOdardardardardardardarcSUdihdibaaadiiafOdjqaabaabdkzdkAdkBaabdkCaaaafOdiiaaadibdihcSUcSUdaGcSUcQZdkObbMdkOcQZdkTbbOdkTcQZdkVbdGdkVcQZaabdhKaaaalwaaadjddgSdkJdkKdkLcOQdkWdkYdkXdgTdkPdkQdkZdkSdlacsLcYicYidlbdlddlccsLdlhaHQaaaaabaaabZZbZZbZZbGHbGHbGHbGHbGHbGHdlicJQcuQdljbGGbGGcuQbGGbGGbGGbGGdhbbGGdfPdjQdlodlkdlqdjQaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabafOaabafOafOaabaabaabalwalwcSUcSUdltdibaaadjIdjLaaaaaaaabdledlfdlgaabaaaaaadjRdjOaaadibdlucSUcSUdaGcSUcQZdkOdlvdkOcQZdkTdlwdkTcQZdkVdlxdkVcQZaabdhKaaaalwaaadjddgSdgSdgSdlldlmdlndlydlndlmdkPdlpcsLdlAdlrdfMddHcYidlscBPcBQcBQcBQdlKaabaabaaabZZdlBdlCcuQbGGdlDdlJdbgcuQdlPbGGcuQdlzbGGbGGdlLbGGbGHbGHbGHbZZbZZbGHdjQdlSdlRdlUdjQaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaabaaaaaaaabaabalwcSUcSUdihdibaaadiiafOaaadlEaabdlFdlGdlHaabaabdjqafOdiiaaadibdihcSUcSUdaGcSUcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZaabdhKaaaayiaaadjdaaaaaaaaadlIdlmdlVdlXdlWdlmcsLdlMcsLcsLdlNdlOcXrdmcdlQcBPaaaaaaaaaaaaaaaaabaaabZZdlZdmbdlLbGGdgybGGbGGdlLdjobGGcuQcuQcuQcuQcuQbGGbGHaabaaaaaaaaaaabdlTdlTdmddlTdlTaabaabdhcaabaabdjTaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabcSUdkgdkfdibaaadiiafOaaaaaaaabaabaabaabaabaaaaaaafOdiiaaadibdkddkecSUdmecSUcSUcSUcSUdmfdhhdhhdhhdhhdhhdhhdhhdhhdhhdhhdmgaabaabaabdjEaaaaaaaaadlYdlmdlndmhdlndlmdmadmidfMdfMdmldmrdmmcBPcBPcBPaaaaaaaaaaaaaaaaabaaabZZdlBdmncuQdbgbGGbGGdmpcuQdmqbGGbGGbGGbGGbGGbGGbGGbGHaabaaaaaaaaaaabaaadlTdmsdlTaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaabcSUdjHdibdmjaaadjIdjLaaaaaaaaaaabaaaaaaaaaaaaaaadjRdjOaaadibdibdjHcSUdmkdmwdmvdaGdmxdmgaabaabaabaabaabaabaabdmoaabaabaabaabaabaabdjEaabaabaabdlYdlmdmydmAdmzdmEaabdmacBPcBQdmtcBQcBPcBPaaaaabaaaaaaaaaaaaaaaaabaabbZZbZZbZZbGHbGHbGHbGGcuQbGHdmubGHbGHdbgbPAcLhbKlcMsbGHaabaaaaaaaaaaabaaadlTdmGdlTaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcSUdmHdmIdiPaabdiiafOdjqaaaaaadjqaaaaaaaaaaaadjqafOdiiaaadiRdmKdmJcSUdmLcSUcSUcSUcSUcSUcSUaaaaaaaabaaaaaaaaadmoaaaaaadmBdmBdmBdmBdmCaaaaaaaabdlYdmDdlmdmOdlmdlmaaaaabaaaaaadmFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaabGHdmbdmMbGHdmNaabbGHbGHbZZbZZcMsbGHaaaaabaaaaaaaaaaabaaaaaadmRaaaaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUdmSdmUdmTaaadiiafOafOdncafOafOdncafOafOdncafOafOdiiaaadnhdmUdnicSUdmPdmQdnjdnldnkdnmdmVdmWdmWdmXdmWdmWdmWdmYdmWdmWdmZdnadnbdnodmCaaaaaaaabdndaHQdlmdnedlmdnfaabaabaaaaaadngaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaabpaaaaaabGHdnqdnnbGHdnpaabaaaaabaaaaaaaabaaaaaaaabaaaaaaaaaaabaaaaaadnraaaaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnscSUcSUdntaaadnudhrdhrdnydhrdhrdnydhrdhrdnydhrdhrdnzaaadntcSUcSUcSUdmPdnBdnAdnEdnCdnHdfoaaaaaaaabaaaaaaaaadmodmBdmBdmBdnvdnwdnvdmCaaaaaaaabaabaHQdnxdnIdnxaHQaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaaaaaaaaabZZdnJbZZbZZaabdhcaaaaabaaaaaaaabaaaamWamWalwayiaabaabaabaabdnLaabaabaabaabdhcamhamWamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcSUcYXdnMdmTaabaabaabaabaaaaaaaaaaaaaaaaabaabaabaabdnhdnNcYXcSUcSUdnDcSUcSUcSUcSUdfocSUaabaabaabaabaabaabdmodnOdnFdnOdnFdnGdnFdmCaaaaaaaaaaabaHQaaaaaaaaaaHQaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaabZZdnPbZZaaaaaaaaaaaaaabaaaaaaaabaaaamWaaaaaaaabaaaaabaaaaaadnQaaaaaaaabaaaaabaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnscSUcSUdntaaadnudhrdhrdnydhrdhrdnydhrdhrdnydhrdhrdnzaaadntcSUcSUcSUdmPdnBdnAdnEdnCdnHdfoaaaaaaaabaaaaaaaaadmodmBdmBdmBbfmdnwdnvdmCaaaaaaaabaabaHQdnxdnIdnxaHQaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaaaaaaaaabZZdnJbZZbZZaabdhcaaaaabaaaaaaaabaaaamWamWalwayiaabaabaabaabdnLaabaabaabaabdhcamhamWamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcSUcYXdnMdmTaabaabaabaabaaaaaaaaaaaaaaaaabaabaabaabdnhdnNcYXcSUcSUdnDcSUcSUcSUcSUdfocSUaabaabaabaabaabaabbhnbfubjbbhybkJdnGdnFdmCaaaaaaaaaaabaHQaaaaaaaaaaHQaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaabZZdnPbZZaaaaaaaaaaaaaabaaaaaaaabaaaamWaaaaaaaabaaaaabaaaaaadnQaaaaaaaabaaaaabaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaacSUcSUdnMdnRdnRdnRdnRdnRdnRdnRdnRdnRdnRdnRdnRdnRdnNcSUcSUcSUdnKdnScSUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnUdnTdnWdnVdobdoadofdoeaaaaaaaaaaabaHQaHQaHQaHQaHQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaabZZdogbZZaaaaaaaaaaaaaabaaaaaaaabaaaamWaaadohdohdohdohdohaabdoiaabdohdohdohdohdohaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUaaacSUcSUdnXcSUcSUcSUcSUaaaaaaaaaaaaaaaaaaaaaaaadnYdnZdnZdnZdnZdojdokdocdoddolaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaabZZdombZZaaaaaaaaaaaaaaaaaaaaaaabaaaamWaabdondoodoodoodoodoqdopdosdordordordordotaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUdaGdaGdovdoudoudowaaaaaaaaaaaaaaaaaaaaaaaadjdaaadnZdnZdoydoxdoAdnZdnZdnZdnZdnZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdoBdoEdoEaaaaaaaaaaaaaaaaaaaaaaabaaaamWaabdoGdoGdoGdoGdoGaaadoiaaadoGdoGdoGdoGdoGaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm index 79d5bede9fd..fdaf1531777 100644 --- a/_maps/map_files/cyberiad/z2.dmm +++ b/_maps/map_files/cyberiad/z2.dmm @@ -152,7 +152,7 @@ "cV" = (/obj/structure/flora/ausbushes/brflowers,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/specops) "cW" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/specops) "cX" = (/obj/structure/flora/ausbushes/reedbush,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/specops) -"cY" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/ammo_box/shotgun/buck,/obj/item/ammo_box/shotgun/buck,/obj/item/ammo_box/shotgun/buck,/obj/item/weapon/gun/projectile/shotgun/automatic/combat,/obj/item/weapon/gun/projectile/shotgun/automatic/combat,/obj/item/weapon/gun/projectile/shotgun/automatic/combat,/turf/simulated/floor/engine,/area/shuttle/gamma/space) +"cY" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/shuttle/gamma/space) "cZ" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/mousetraps,/obj/item/weapon/storage/box/trackimp,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) "da" = (/obj/structure/table/reinforced,/obj/item/weapon/scalpel,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) "db" = (/turf/simulated/floor/holofloor{tag = "icon-carpet2-0 (EAST)"; icon_state = "carpet2-0"; dir = 4},/area/holodeck/source_theatre) @@ -634,7 +634,7 @@ "mj" = (/obj/structure/stool/bed/chair/comfy/black{dir = 1},/obj/effect/landmark{name = "ERT Director"},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/specops) "mk" = (/obj/structure/stool,/obj/effect/landmark{name = "Syndicate-Spawn"},/obj/effect/decal/warning_stripes/east,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "ml" = (/obj/structure/stool,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/syndicate_mothership) -"mm" = (/obj/structure/stool,/obj/structure/sign/poster/legit{pixel_y = 32},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/control) +"mm" = (/obj/structure/stool,/obj/structure/sign/poster/random{pixel_y = 32},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/control) "mn" = (/obj/structure/stool,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/control) "mo" = (/obj/structure/stool,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/unsimulated/floor{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/centcom/control) "mp" = (/obj/structure/stool,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control) @@ -756,25 +756,25 @@ "oB" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)"; icon_state = "fakewindows"; dir = 8},/area/syndicate_mothership) "oC" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)"; icon_state = "fakewindows"; dir = 4},/area/syndicate_mothership) "oD" = (/turf/unsimulated/floor/snow,/obj/structure/flora/bush,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (WEST)"; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership) -"oE" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/weapon/gun/energy/gun/nuclear,/obj/item/weapon/gun/energy/gun/nuclear,/obj/item/weapon/gun/energy/gun/nuclear,/obj/machinery/light{dir = 1},/turf/simulated/floor/engine,/area/shuttle/gamma/space) -"oF" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/weapon/gun/projectile/automatic/pistol{name = "pistol"},/obj/item/weapon/gun/projectile/automatic/pistol{name = "pistol"},/obj/item/weapon/gun/projectile/automatic/pistol{name = "pistol"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/engine,/area/shuttle/gamma/space) -"oG" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/ammo_casing/rocket,/obj/item/ammo_casing/rocket,/obj/item/ammo_casing/rocket,/obj/item/weapon/gun/rocketlauncher,/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/engine,/area/shuttle/gamma/space) +"oE" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/shuttle/gamma/space) +"oF" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/gamma/space) +"oG" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/gamma/space) "oH" = (/obj/structure/table,/obj/item/weapon/storage/fancy/crayons,/obj/item/weapon/storage/fancy/crayons,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) "oI" = (/obj/machinery/washing_machine,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"oJ" = (/obj/structure/table/reinforced,/obj/item/weapon/grenade/clusterbuster,/turf/simulated/floor/engine,/area/shuttle/gamma/space) +"oJ" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/weapon/gun/projectile/automatic/pistol{name = "pistol"},/obj/item/weapon/gun/projectile/automatic/pistol{name = "pistol"},/obj/item/weapon/gun/projectile/automatic/pistol{name = "pistol"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) "oK" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/centcom/gamma) "oL" = (/turf/unsimulated/floor{tag = "icon-red (EAST)"; icon_state = "red"; dir = 4},/area/centcom/gamma) "oM" = (/obj/machinery/door/airlock/centcom{name = "Team Storage"; opacity = 1; req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/specops) -"oN" = (/obj/machinery/power/apc{dir = 8; name = "Gamma Armory APC"; pixel_x = -27; pixel_y = 2},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/engine,/area/shuttle/gamma/space) +"oN" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/ammo_box/shotgun/buck,/obj/item/ammo_box/shotgun/buck,/obj/item/ammo_box/shotgun/buck,/obj/item/weapon/gun/projectile/shotgun/automatic/combat,/obj/item/weapon/gun/projectile/shotgun/automatic/combat,/obj/item/weapon/gun/projectile/shotgun/automatic/combat,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) "oO" = (/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"oP" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/engine,/area/shuttle/gamma/space) +"oP" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/weapon/gun/energy/sniperrifle,/obj/item/weapon/gun/energy/sniperrifle,/obj/item/weapon/gun/energy/sniperrifle,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/obj/machinery/ai_status_display{pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) "oQ" = (/obj/machinery/vending/syndisnack,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "oR" = (/obj/machinery/vending/syndicigs,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "oS" = (/obj/structure/table/woodentable{dir = 10},/obj/machinery/door_control{desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; id = "SPECOPS"; name = "Ready Room"; pixel_x = 6; pixel_y = 6; req_access_txt = "114"},/obj/machinery/door_control{desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; id = "ASSAULT"; name = "Assault Armor"; pixel_x = -6; pixel_y = 6; req_access_txt = "114"},/obj/machinery/door_control{desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; id = "specopsoffice"; name = "Privacy Shutters"; pixel_x = 6; pixel_y = -6; req_access_txt = "114"},/obj/machinery/door_control{desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; id = "CCGAMMA"; name = "Gamma Lockdown"; pixel_x = -6; pixel_y = -6; req_access_txt = "114"},/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/centcom/specops) "oT" = (/turf/simulated/floor/plasteel{icon_state = "red"},/area/centcom/gamma) "oU" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/centcom/gamma) "oV" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/centcom/gamma) -"oW" = (/obj/structure/sign/securearea,/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/shuttle/gamma/space) +"oW" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/weapon/gun/energy/gun/nuclear,/obj/item/weapon/gun/energy/gun/nuclear,/obj/item/weapon/gun/energy/gun/nuclear,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) "oX" = (/obj/machinery/door/airlock/centcom{name = "Prison"; opacity = 1; req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/specops) "oY" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/flora/ausbushes,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/specops) "oZ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/flora/ausbushes/fernybush,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/specops) @@ -783,20 +783,21 @@ "pc" = (/mob/living/simple_animal/pet/fox/Syndifox,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "pd" = (/obj/effect/decal/warning_stripes/southeastcorner,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "pe" = (/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"pf" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/shuttle/gamma/space) -"pg" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/shuttle/gamma/space) -"ph" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/shuttle/gamma/space) -"pi" = (/obj/structure/cable,/obj/machinery/mech_bay_recharge_port/upgraded,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/shuttle/gamma/space) -"pj" = (/obj/structure/cable,/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/shuttle/gamma/space) -"pk" = (/obj/mecha/combat/durand/loaded{operation_req_access = list(1)},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/shuttle/gamma/space) +"pf" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) +"pg" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "16"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) +"ph" = (/obj/machinery/recharger/wallcharger{pixel_x = 32},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) +"pi" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "15"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) +"pj" = (/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) +"pk" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/ammo_casing/rocket,/obj/item/ammo_casing/rocket,/obj/item/ammo_casing/rocket,/obj/item/weapon/gun/rocketlauncher,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) "pl" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "pm" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/cans/beer{pixel_x = -2; pixel_y = 5},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"pn" = (/obj/structure/table/reinforced,/obj/item/weapon/kitchen/knife/combat,/obj/item/weapon/kitchen/knife/combat,/obj/item/weapon/kitchen/knife/combat,/turf/simulated/floor/engine,/area/shuttle/gamma/space) -"po" = (/obj/structure/table/reinforced,/obj/item/weapon/grenade/chem_grenade/incendiary{name = "Incendiary Grenade"},/turf/simulated/floor/engine,/area/shuttle/gamma/space) +"pn" = (/obj/machinery/door/airlock/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) +"po" = (/obj/structure/table/reinforced,/obj/item/weapon/grenade/clusterbuster,/obj/item/weapon/grenade/chem_grenade/incendiary{name = "Incendiary Grenade"},/obj/item/weapon/kitchen/knife/combat,/obj/item/weapon/kitchen/knife/combat,/obj/item/weapon/kitchen/knife/combat,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) "pp" = (/obj/machinery/computer/telecrystals/uplinker,/turf/unsimulated/floor{icon_state = "floor4"},/area/syndicate_mothership) "pq" = (/obj/machinery/camera{c_tag = "CentComm Special Ops. Bathroom"; dir = 2; network = list("ERT","CentComm")},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) "pr" = (/obj/machinery/door/airlock/centcom{name = "Bathroom"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "ps" = (/obj/machinery/telecomms/server/presets/centcomm,/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control) +"pt" = (/obj/machinery/door/airlock/shuttle{req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) "pu" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (NORTHWEST)"; icon_state = "fakewindows"; dir = 9},/area/syndicate_mothership) "pv" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)"; icon_state = "fakewindows2"; dir = 8},/area/syndicate_mothership) "pw" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice{pixel_x = -5; pixel_y = 5},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) @@ -806,6 +807,7 @@ "pA" = (/obj/machinery/light,/turf/unsimulated/floor{icon_state = "floor"},/area/syndicate_mothership) "pB" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{dir = 4; pixel_x = 32; pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) "pC" = (/obj/machinery/door/poddoor{id_tag = "nukeop_ready"; name = "Shuttle Dock Door"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"pD" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/shuttle/gamma/space) "pE" = (/obj/structure/stool/bed,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "pF" = (/turf/unsimulated/wall/fakeglass,/area/syndicate_mothership) "pG" = (/obj/structure/toilet{dir = 8},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) @@ -890,16 +892,15 @@ "rh" = (/obj/structure/toilet{dir = 8},/turf/unsimulated/floor{icon_state = "platingdmg1"},/area/centcom) "ri" = (/obj/structure/toilet{dir = 8},/turf/unsimulated/floor{icon_state = "floorscorched2"},/area/centcom) "rj" = (/obj/structure/rack,/obj/item/weapon/implanter/adrenalin{pixel_x = 12; pixel_y = -12},/obj/item/weapon/implanter/emp{pixel_x = 9; pixel_y = -9},/obj/item/weapon/implanter/explosive{pixel_x = 6; pixel_y = -6},/obj/item/weapon/implanter/explosive_macro{pixel_x = 3; pixel_y = -3},/obj/item/weapon/implanter/freedom,/obj/item/weapon/implanter/krav_maga{pixel_x = -9; pixel_y = 9},/obj/item/weapon/implanter/mindshield{pixel_x = -6; pixel_y = 6},/obj/item/weapon/implanter/storage{pixel_x = -3; pixel_y = 3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"rk" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/gamma/space) +"rl" = (/obj/structure/sign/securearea{pixel_x = 32; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) +"rm" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/mech_bay_recharge_port/upgraded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) +"rn" = (/obj/machinery/power/apc{dir = 2; name = "Gamma Armory APC"; pixel_y = -24},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) +"ro" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/computer/mech_bay_power_console,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) +"rp" = (/obj/mecha/combat/durand/loaded{operation_req_access = list(1)},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/mech_bay_recharge_floor,/area/shuttle/gamma/space) "rE" = (/turf/unsimulated/wall,/area/start) "rH" = (/obj/effect/landmark/start,/turf/unsimulated/floor,/area/start) "rK" = (/turf/unsimulated/wall/splashscreen,/area/start) -"rV" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/weapon/gun/energy/sniperrifle,/obj/item/weapon/gun/energy/sniperrifle,/obj/item/weapon/gun/energy/sniperrifle,/turf/simulated/floor/engine,/area/shuttle/gamma/space) -"rX" = (/turf/simulated/floor/engine,/area/shuttle/gamma/space) -"sa" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/shuttle/gamma/space) -"sb" = (/turf/simulated/floor/plasteel{tag = "icon-stage_stairs"; icon_state = "stage_stairs"},/area/shuttle/gamma/space) -"se" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-stage_stairs"; icon_state = "stage_stairs"},/area/shuttle/gamma/space) -"sg" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/shuttle/gamma/space) -"sm" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/shuttle/gamma/space) "sq" = (/turf/unsimulated/wall,/area/centcom/control) "sr" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control) "ss" = (/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control) @@ -946,7 +947,7 @@ "tl" = (/obj/machinery/mass_driver{dir = 8; drive_range = 50; id_tag = "ASSAULT3"; name = "gravpult"},/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/specops) "tm" = (/turf/unsimulated/floor{icon_state = "loadingarea"; dir = 8},/area/centcom/specops) "tn" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) -"to" = (/obj/structure/sign/poster/legit{pixel_x = -32},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/control) +"to" = (/obj/structure/sign/poster/random{pixel_x = -32},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/control) "tp" = (/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -6},/obj/structure/table,/turf/unsimulated/floor{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/centcom/control) "tq" = (/obj/machinery/vending/dinnerware{req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control) "tr" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/food/condiment/enzyme,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control) @@ -1619,14 +1620,14 @@ aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititItktitititItJtmtntdtdtdsqtKtLtMedtFtFtFtFtFeesqsusxsusqsusususususususqsqfLsqsqsqsqsqsqsqsqsqsqsqsqsqsqfXaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXtatttutdtdtdsqsqeWeVsqeWeVsqsqsqsqsqtQtRtStTtTtTtTtTtTtTtTtTuEtRtZsqfXaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititVtktitititVtWtXtYtdtdtdsXaNaNaNaNaNaNsXfecoflsqtQtRtRtRtRtRtRtRtRtRtRtRtRtRtZsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmfmfmfmfmfmfmfmfmfmsXsXsXsXsXsXuaubsXsXsXsXsXsXsXsXsXfeujflsqtQtRucudududududududududuetRtZsqaNaNoeodododododododofaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmfofnfqfpfsfrfnfEfmufuguguhuiujujujsXukukukukulukumunfeujflsqtQtRtZsususususususususutQtRtZsqaNaNohogojoioioioiokohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmfmfmfmfmfmfmfmjHfFkdkdkdkdfFlZmdujujujujujujujujuqururururururussXfeujflsqtQtRtZsuutuuuvuwuxuyuzsutQtRtZsqaNaNohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmcYoFoErVoGoJfmoKkdkdkdkdkdkdoLmdujujujujujujujujsXuAuBuBuBuBuBuCsXsXoMsXsquEtRtSsuuFtRuGuHtRtRtRsuuEtRtZsqsqsqohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmoNoPrXrXrXrXfdoUoToToToToToToVfdujujujuIuIujujujuJuKuKuKuKuKuKuKuLuKuKuKuMtRtRtRuNtRtRtRtRtRtRtRuNtRtRtZoltRolomogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmsasesbsbsaoWfmfmfmfmfmfmfmfmfmfmujujuOuPuQuRujuSsXsXuTuUuTsXsXoXsXoZoYpbsquetRucsutRtRtRtRtRtRtRsuuetRtZsqsqsqohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpfphpgsgsgsgfmaNaNaNaNaNaNaNaNsXujuXuRooonvavbujvcvdvdvdvdvesXuKsXsXsXsXsqtQtRtZsuvfuuvgvgvgvhvisutQtRtZsqaNaNohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpipkpjsmpnpofmaNaNaNaNsXuWuWsXsXujujvauRvmuRujujvnvdvovpvqvdsXuKsXvrtTtUsqtQtRtZsqsqvsvtvuvvvwsqsqtQtRtZsqaNaNohogogogopogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmfmfmfmfmfmfmfmfmfmfmfmfmfmfmfmfmsXsXsXsXsXsXuaubsXsXsXsXsXsXsXsXsXfeujflsqtQtRucudududududududududuetRtZsqaNaNoeodododododododofaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmcYoEoEoEoEoFfmfofnfqfpfsfrfnfEfmufuguguhuiujujujsXukukukukulukumunfeujflsqtQtRtZsususususususususutQtRtZsqaNaNohogojoioioioiokohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmoGoNoJoWoPoGfmjHfFkdkdkdkdfFlZmdujujujujujujujujuqururururururussXfeujflsqtQtRtZsuutuuuvuwuxuyuzsutQtRtZsqaNaNohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpgpfpfpfphoGfmoKkdkdkdkdkdkdoLmdujujujujujujujujsXuAuBuBuBuBuBuCsXsXoMsXsquEtRtSsuuFtRuGuHtRtRtRsuuEtRtZsqsqsqohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpipfpkpopfptfdoUoToToToToToToVfdujujujuIuIujujujuJuKuKuKuKuKuKuKuLuKuKuKuMtRtRtRuNtRtRtRtRtRtRtRuNtRtRtZoltRolomogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmoGpjpfpfrloGfmfmfmfmfmfmfmfmfmfmujujuOuPuQuRujuSsXsXuTuUuTsXsXoXsXoZoYpbsquetRucsutRtRtRtRtRtRtRsuuetRtZsqsqsqohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpnrnrmrprooGfmaNaNaNaNaNaNaNaNsXujuXuRooonvavbujvcvdvdvdvdvesXuKsXsXsXsXsqtQtRtZsuvfuuvgvgvgvhvisutQtRtZsqaNaNohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpDoEoEoEoErkfmaNaNaNaNsXuWuWsXsXujujvauRvmuRujujvnvdvovpvqvdsXuKsXvrtTtUsqtQtRtZsqsqvsvtvuvvvwsqsqtQtRtZsqaNaNohogogogopogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmfmfmfmfmfmfmfmaNaNaNaNsXvkvkpqprujujujvyvyujujujvzvdvAvBvCbesXuKsqpstRtRvFtRtRtZsqsqsusususususqsqtQtRtZsqaNaNoqodododododododoraNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvkvkvksXvIvJujujujujvLujsXvdoSmjeTvPsXuKsqvQtRtZsutQtRtStTtTtTtTtTtTtTtTtTuEtRtZsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvkpBsXsXsXsXsXsXbfbfsXsXsXvSvTvUvVvdsXuKsqvWtRvXsutQtRtRtRtRtRtRtRtRtRtRtRtRtRtZsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN diff --git a/_maps/map_files/cyberiad/z4.dmm b/_maps/map_files/cyberiad/z4.dmm index 49a33f2eace..a70b3a16126 100644 --- a/_maps/map_files/cyberiad/z4.dmm +++ b/_maps/map_files/cyberiad/z4.dmm @@ -213,7 +213,7 @@ "ee" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engiestation) "ef" = (/obj/structure/mirror,/turf/simulated/wall,/area/engiestation) "eg" = (/obj/machinery/computer/station_alert,/turf/simulated/floor/plasteel,/area/engiestation) -"eh" = (/obj/structure/table/woodentable,/obj/item/ashtray/plastic,/obj/structure/sign/poster/legit{pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/engiestation) +"eh" = (/obj/structure/table/woodentable,/obj/item/ashtray/plastic,/obj/structure/sign/poster/random{pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/engiestation) "ei" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/engiestation) "ej" = (/obj/machinery/light,/obj/item/device/radio/intercom{dir = 1; name = "station intercom (General)"; pixel_y = -28},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/engiestation) "ek" = (/turf/simulated/floor/plating/airless,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk5"; icon_state = "catwalk5"},/area/space) @@ -222,7 +222,7 @@ "en" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "cmo"},/area/engiestation) "eo" = (/obj/machinery/light,/obj/item/device/radio/intercom{dir = 1; name = "station intercom (General)"; pixel_y = -28},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engiestation) "ep" = (/obj/structure/table/reinforced,/obj/item/weapon/lipstick/random,/obj/item/weapon/lipstick/random,/obj/item/weapon/storage/fancy/cigarettes/cigpack_carp,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engiestation) -"eq" = (/obj/effect/decal/cleanable/dirt,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka,/turf/simulated/floor/plasteel,/area/engiestation) +"eq" = (/obj/effect/decal/cleanable/dirt,/obj/item/weapon/poster/random_contraband,/obj/item/weapon/poster/random_contraband,/obj/item/weapon/poster/random_contraband,/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka,/turf/simulated/floor/plasteel,/area/engiestation) "er" = (/obj/structure/sign/nosmoking_2{pixel_x = -32},/turf/simulated/floor/plasteel{tag = "icon-stage_stairs"; icon_state = "stage_stairs"},/area/engiestation) "es" = (/turf/simulated/floor/plasteel{tag = "icon-stage_stairs"; icon_state = "stage_stairs"},/area/engiestation) "et" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/paint/remover,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/box/mousetraps,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plasteel,/area/engiestation) @@ -233,7 +233,7 @@ "ey" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/space,/area/space) "ez" = (/obj/item/device/radio/intercom{dir = 1; name = "station intercom (General)"; pixel_x = -28; pixel_y = 0},/turf/simulated/floor/plasteel,/area/engiestation) "eA" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellow"},/area/engiestation) -"eB" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/sign/poster/legit{pixel_x = 32},/turf/simulated/floor/plasteel,/area/engiestation) +"eB" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/sign/poster/random{pixel_x = 32},/turf/simulated/floor/plasteel,/area/engiestation) "eC" = (/obj/machinery/computer/shuttle/engineering,/turf/simulated/floor/plasteel,/area/engiestation) "eD" = (/obj/structure/closet/wardrobe/atmospherics_yellow,/obj/machinery/light_switch{pixel_y = -28},/turf/simulated/floor/plasteel,/area/engiestation) "eE" = (/obj/structure/reagent_dispensers/fueltank,/obj/effect/decal/cleanable/dirt,/obj/machinery/light,/obj/item/device/radio/intercom{dir = 1; name = "station intercom (General)"; pixel_y = -28},/turf/simulated/floor/plasteel,/area/engiestation) diff --git a/_maps/map_files/cyberiad/z5.dmm b/_maps/map_files/cyberiad/z5.dmm deleted file mode 100644 index 86b225e0d1b..00000000000 --- a/_maps/map_files/cyberiad/z5.dmm +++ /dev/null @@ -1,1702 +0,0 @@ -"aa" = (/turf/space,/area/space) -"ab" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_z5"; name = "northeast of the Mining Asteroid"; width = 18},/turf/space,/area/space) -"ac" = (/turf/simulated/mineral,/area/mine/dangerous/unexplored) -"ad" = (/obj/machinery/door/airlock/external{id_tag = "science_away"; name = "Research Outpost Dock Airlock"; req_access_txt = "65"},/turf/simulated/floor/plating,/area/research_outpost/entry) -"ae" = (/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"af" = (/turf/simulated/mineral,/area/mine/dangerous/explored) -"ag" = (/obj/structure/lattice,/turf/space,/area/space) -"ah" = (/obj/structure/transit_tube{icon_state = "D-SE"},/obj/structure/lattice,/turf/space,/area/space) -"ai" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "E-SW"},/turf/space,/area/space) -"aj" = (/obj/structure/lattice,/obj/structure/transit_tube,/turf/space,/area/space) -"ak" = (/obj/structure/transit_tube,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"al" = (/obj/machinery/light/small,/obj/structure/transit_tube,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"am" = (/obj/structure/transit_tube{icon_state = "W-SE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"an" = (/obj/structure/transit_tube{icon_state = "D-SW"},/turf/simulated/mineral,/area/mine/dangerous/explored) -"ao" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/hallway) -"ap" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "NE-SW"},/turf/space,/area/space) -"aq" = (/obj/structure/transit_tube{icon_state = "D-NW"},/obj/structure/lattice,/turf/space,/area/space) -"ar" = (/turf/simulated/wall/r_wall,/area/research_outpost/maintstore1) -"as" = (/obj/structure/transit_tube{icon_state = "D-NE"},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore1) -"at" = (/obj/structure/transit_tube{icon_state = "NW-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore1) -"au" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/mineral,/area/mine/dangerous/explored) -"av" = (/obj/structure/transit_tube{icon_state = "E-SW"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"aw" = (/obj/structure/transit_tube,/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/hallway) -"ax" = (/obj/structure/transit_tube/station,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/research_outpost/hallway) -"ay" = (/obj/structure/transit_tube,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/research_outpost/hallway) -"az" = (/obj/effect/spawner/window/reinforced,/obj/structure/transit_tube,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/hallway) -"aA" = (/obj/structure/transit_tube,/obj/structure/lattice,/turf/space,/area/space) -"aB" = (/obj/structure/transit_tube{icon_state = "W-SE"},/obj/structure/lattice,/turf/space,/area/space) -"aC" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "D-SW"},/turf/space,/area/space) -"aD" = (/obj/structure/transit_tube{icon_state = "S-NE"},/obj/structure/lattice,/turf/space,/area/space) -"aE" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/research_outpost/maintstore1) -"aF" = (/obj/structure/closet/hydrant{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/research_outpost/maintstore1) -"aG" = (/obj/structure/table,/obj/item/device/plant_analyzer,/obj/item/weapon/stock_parts/cell,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/machinery/light/small{dir = 1},/obj/machinery/alarm{dir = 2; pixel_y = 25},/turf/simulated/floor/plating,/area/research_outpost/maintstore1) -"aH" = (/obj/structure/transit_tube{icon_state = "D-SW"},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore1) -"aI" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore1) -"aJ" = (/obj/structure/transit_tube{icon_state = "NE-SW"},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore1) -"aK" = (/obj/structure/transit_tube{icon_state = "D-NW"},/turf/simulated/wall/r_wall,/area/research_outpost/hallway) -"aL" = (/turf/simulated/wall/r_wall,/area/research_outpost/hallway) -"aM" = (/turf/simulated/floor/plasteel,/area/research_outpost/hallway) -"aN" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel,/area/research_outpost/hallway) -"aO" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "D-NE"},/turf/space,/area/space) -"aP" = (/obj/structure/transit_tube{icon_state = "NW-SE"},/obj/structure/lattice,/turf/space,/area/space) -"aQ" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "N-S"},/turf/space,/area/space) -"aR" = (/obj/structure/rack,/obj/item/stack/sheet/metal{pixel_x = 5; pixel_y = 5},/obj/item/stack/sheet/glass,/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/research_outpost/maintstore1) -"aS" = (/turf/simulated/floor/plating,/area/research_outpost/maintstore1) -"aT" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plating,/area/research_outpost/maintstore1) -"aU" = (/turf/simulated/wall,/area/research_outpost/maintstore1) -"aV" = (/obj/structure/transit_tube{icon_state = "D-NE"},/obj/structure/table,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/research_outpost/maintstore1) -"aW" = (/obj/structure/transit_tube{icon_state = "E-NW"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/research_outpost/maintstore1) -"aX" = (/obj/structure/transit_tube/station,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/research_outpost/maintstore1) -"aY" = (/obj/structure/transit_tube{icon_state = "W-NE"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/research_outpost/maintstore1) -"aZ" = (/obj/structure/transit_tube{icon_state = "D-NW"},/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plasteel,/area/research_outpost/maintstore1) -"ba" = (/turf/simulated/wall,/area/research_outpost/hallway) -"bb" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/brown,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/carpet,/area/research_outpost/hallway) -"bc" = (/obj/machinery/door_control{id = "rdorm1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/carpet,/area/research_outpost/hallway) -"bd" = (/obj/machinery/camera{c_tag = "Research Outpost Hallway Fore"; dir = 4; network = list("Research Outpost")},/turf/simulated/floor/plasteel,/area/research_outpost/hallway) -"be" = (/obj/machinery/door_control{id = "rdorm2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/carpet,/area/research_outpost/hallway) -"bf" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/brown,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/carpet,/area/research_outpost/hallway) -"bg" = (/obj/structure/transit_tube{icon_state = "D-NE"},/obj/structure/lattice,/turf/space,/area/space) -"bh" = (/obj/structure/transit_tube{icon_state = "S-NW"},/obj/structure/lattice,/turf/space,/area/space) -"bi" = (/obj/spacepod/random,/turf/space,/area/space) -"bj" = (/turf/simulated/mineral/random,/area/mine/dangerous/unexplored) -"bk" = (/obj/structure/transit_tube{icon_state = "N-SW"},/obj/structure/lattice,/turf/space,/area/space) -"bl" = (/turf/simulated/wall/r_wall,/area/research_outpost/spectro) -"bm" = (/obj/structure/closet/crate/hydroponics,/obj/item/weapon/shovel/spade,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/cultivator,/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 13; pixel_y = 5},/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez,/turf/simulated/floor/plating,/area/research_outpost/maintstore1) -"bn" = (/obj/machinery/light/small,/obj/structure/closet/walllocker/emerglocker/north{dir = 1; pixel_y = -32},/turf/simulated/floor/plating,/area/research_outpost/maintstore1) -"bo" = (/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/plating,/area/research_outpost/maintstore1) -"bp" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Auxiliary Storage"; req_access_txt = "0"; req_one_access_txt = "65;12"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/maintstore1) -"bq" = (/turf/simulated/floor/plasteel,/area/research_outpost/maintstore1) -"br" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel,/area/research_outpost/maintstore1) -"bs" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/camera{c_tag = "Research Outpost Auxiliary Storage"; dir = 8; network = list("Research Outpost")},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel,/area/research_outpost/maintstore1) -"bt" = (/obj/structure/table,/turf/simulated/floor/carpet,/area/research_outpost/hallway) -"bu" = (/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/carpet,/area/research_outpost/hallway) -"bv" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{id_tag = "rminingdorm1"; name = "Dorm 1"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/research_outpost/hallway) -"bw" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{id_tag = "rdorm2"; name = "Dorm 2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/research_outpost/hallway) -"bx" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/structure/lattice,/turf/space,/area/space) -"by" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "D-SE"},/turf/space,/area/space) -"bz" = (/obj/structure/transit_tube{icon_state = "E-SW"},/obj/structure/lattice,/turf/space,/area/space) -"bA" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "W-NE"},/turf/space,/area/space) -"bB" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "D-NW"},/turf/space,/area/space) -"bC" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bucket,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/spectro) -"bD" = (/obj/structure/reagent_dispensers/coolanttank,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/research_outpost/spectro) -"bE" = (/turf/simulated/wall/r_wall,/area/research_outpost/sample) -"bF" = (/obj/machinery/power/apc{dir = 8; name = "Auxiliary Storage APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plasteel,/area/research_outpost/maintstore1) -"bG" = (/turf/simulated/floor/plasteel{icon_state = "warning"},/area/research_outpost/maintstore1) -"bH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/research_outpost/maintstore1) -"bI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/sign/botany{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/research_outpost/maintstore1) -"bJ" = (/obj/effect/decal/cleanable/fungus,/turf/simulated/wall,/area/research_outpost/hallway) -"bK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel,/area/research_outpost/hallway) -"bL" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitecorner"},/area/research_outpost/hallway) -"bM" = (/turf/simulated/wall/r_wall,/area/research_outpost/atmos) -"bN" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/atmos) -"bO" = (/obj/effect/spawner/window/reinforced,/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/atmos) -"bP" = (/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/airless,/area/mine/abandoned) -"bQ" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) -"bR" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "S-NE"},/turf/space,/area/space) -"bS" = (/obj/structure/dresser,/turf/simulated/floor/carpet,/area/research_outpost/hallway) -"bT" = (/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/spectro) -"bU" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/research_outpost/spectro) -"bV" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Spectrometry Lab Sample Preparation"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/spectro) -"bW" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/sample) -"bX" = (/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/sample) -"bY" = (/obj/structure/table,/obj/machinery/light{dir = 1},/obj/machinery/reagentgrinder,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/sample) -"bZ" = (/obj/structure/table,/obj/item/weapon/storage/box/solution_trays,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/sample) -"ca" = (/obj/machinery/door/window/westleft{dir = 1; name = "Sample Preparation Loading"; req_access_txt = "65"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/research_outpost/sample) -"cb" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "bluecorner"},/area/research_outpost/sample) -"cc" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/research_outpost/spectro) -"cd" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel{tag = "icon-whitegreen (NORTHWEST)"; icon_state = "whitegreen"; dir = 9},/area/research_outpost/maintstore1) -"ce" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/research_outpost/maintstore1) -"cf" = (/obj/structure/sink{pixel_y = 30},/obj/structure/mirror{dir = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/research_outpost/hallway) -"cg" = (/obj/structure/toilet{dir = 8},/obj/machinery/light/small{dir = 1},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/research_outpost/hallway) -"ch" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitecorner"},/area/research_outpost/hallway) -"ci" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) -"cj" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/wall/r_wall,/area/research_outpost/atmos) -"ck" = (/obj/machinery/atmospherics/trinary/filter{density = 0; dir = 4; filter_type = 2; name = "Gas filter (N2 tank)"; on = 1},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"cl" = (/obj/machinery/atmospherics/trinary/filter{density = 0; dir = 4; filter_type = 1; name = "Gas filter (O2 tank)"; on = 1},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"cm" = (/obj/machinery/meter,/obj/machinery/power/apc{dir = 1; name = "Outpost Atmospherics APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 1},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"cn" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister,/obj/machinery/camera{c_tag = "Research Outpost Atmospherics"; dir = 2; network = list("Research Outpost")},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"co" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/research_outpost/atmos) -"cp" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/research_outpost/atmos) -"cq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"cr" = (/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) -"cs" = (/turf/simulated/mineral/random/high_chance,/area/mine/dangerous/unexplored) -"ct" = (/obj/machinery/radiocarbon_spectrometer,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/research_outpost/spectro) -"cu" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/spectro) -"cv" = (/obj/machinery/power/apc{dir = 4; name = "Mass Spectrometry APC"; pixel_x = 24; pixel_y = 0; pixel_x = 0},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/research_outpost/spectro) -"cw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel{tag = "icon-whitegreen (NORTHEAST)"; icon_state = "whitegreen"; dir = 5},/area/research_outpost/maintstore1) -"cx" = (/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/sample) -"cy" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/sample) -"cz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/sample) -"cA" = (/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/research_outpost/sample) -"cB" = (/obj/structure/disposaloutlet{dir = 8},/obj/structure/disposalpipe/trunk{dir = 2},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore1) -"cC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/obj/machinery/light_switch{pixel_y = -23},/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel{tag = "icon-whitegreen (SOUTHEAST)"; icon_state = "whitegreen"; dir = 6},/area/research_outpost/maintstore1) -"cD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/research_outpost/maintstore1) -"cE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/wall,/area/research_outpost/hallway) -"cF" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/curtain/open/shower,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/research_outpost/hallway) -"cG" = (/obj/machinery/door_control{id = "rbath"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/research_outpost/hallway) -"cH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock{id_tag = "rbath"; name = "Bathroom"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/research_outpost/hallway) -"cI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) -"cJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) -"cK" = (/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 5; level = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"cL" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 4; initialize_directions = 11; level = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"cM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 8},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"cN" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 10},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"cO" = (/obj/machinery/door/window/westleft,/turf/simulated/floor/plasteel,/area/research_outpost/atmos) -"cP" = (/obj/structure/transit_tube/station{dir = 8; icon_state = "closed"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/research_outpost/atmos) -"cQ" = (/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"cR" = (/obj/item/stack/rods,/obj/structure/door_assembly/door_assembly_ext{name = "Broken External Airlock"},/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) -"cS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"cT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"cU" = (/obj/structure/sign/nosmoking_2{pixel_x = 32},/obj/machinery/camera{c_tag = "Research Outpost Mass Spectrometry"; dir = 8; network = list("Research Outpost")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/research_outpost/spectro) -"cV" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker/fuel,/obj/item/weapon/reagent_containers/glass/beaker/sulphuric{name = "beaker 'sulphuric acid'"},/obj/item/weapon/reagent_containers/glass/beaker/water,/obj/item/weapon/reagent_containers/glass/bottle/toxin,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/sample) -"cW" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/sample) -"cX" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/sample) -"cY" = (/obj/machinery/light/small{dir = 4},/obj/machinery/power/apc{dir = 4; name = "Sample Preparation APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/sample) -"cZ" = (/turf/simulated/wall/r_wall,/area/research_outpost/anomaly) -"da" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/research_outpost/anomaly) -"db" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Anomalous Materials Loading"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/anomaly) -"dc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/closet/walllocker/emerglocker/west,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) -"dd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) -"de" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 4},/obj/structure/sign/nosmoking_1{pixel_x = -32},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"df" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 6},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dg" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dh" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel,/area/research_outpost/atmos) -"di" = (/turf/simulated/shuttle/wall{tag = "icon-pwall (NORTH)"; icon_state = "pwall"; dir = 1},/area/space) -"dj" = (/turf/simulated/floor/plating/airless,/turf/simulated/shuttle/wall{tag = "icon-pwall (SOUTHWEST)"; icon_state = "pwall"; dir = 10},/area/space) -"dk" = (/obj/item/stack/rods,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"dl" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"dm" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitegreen"},/area/research_outpost/spectro) -"dn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; layer = 2.4; on = 1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitegreen"},/area/research_outpost/spectro) -"do" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker/sulphuric{name = "beaker 'sulphuric acid'"},/obj/item/weapon/reagent_containers/glass/beaker/fuel,/obj/item/weapon/reagent_containers/glass/bottle/toxin,/obj/item/weapon/reagent_containers/glass/beaker/water,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/research_outpost/sample) -"dp" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/dropper{pixel_y = -4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/research_outpost/sample) -"dq" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/camera{c_tag = "Research Outpost Sample Preparation"; dir = 1; network = list("Research Outpost")},/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/firealarm{dir = 1; pixel_y = -24},/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 3; pixel_x = 2; pixel_y = 2},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/research_outpost/sample) -"dr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/research_outpost/sample) -"ds" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/research_outpost/sample) -"dt" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Anomalous Materials Sample Preparation"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"du" = (/obj/machinery/power/apc{dir = 1; name = "Anomalous Materials APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurplecorner"},/area/research_outpost/anomaly) -"dv" = (/obj/machinery/alarm{dir = 2; pixel_y = 25},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/research_outpost/anomaly) -"dw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/research_outpost/anomaly) -"dx" = (/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/research_outpost/anomaly) -"dy" = (/obj/machinery/light{dir = 1},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitepurple"},/area/research_outpost/anomaly) -"dz" = (/obj/machinery/conveyor{dir = 1; id = "anolaser"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/research_outpost/anomaly) -"dA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) -"dB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) -"dC" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 4},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dD" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan,/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dE" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; layer = 2.4; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 8; initialize_directions = 11; level = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dF" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dG" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion"; tag = "icon-propulsion (EAST)"},/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"; tag = ""},/turf/simulated/floor/plating/airless,/area/space) -"dH" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/space) -"dI" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/space) -"dJ" = (/obj/machinery/door/airlock/hatch,/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/space) -"dK" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"dL" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/mine/abandoned) -"dM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"dN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/hallway) -"dO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Spectrometry Lab"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/spectro) -"dP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/sample) -"dQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Sample Preparation"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/sample) -"dR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/research_outpost/sample) -"dS" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurple"},/area/research_outpost/anomaly) -"dT" = (/obj/structure/table,/obj/item/weapon/lighter/random,/obj/item/weapon/crowbar,/obj/item/weapon/reagent_containers/dropper{pixel_y = -4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"dU" = (/obj/machinery/artifact_analyser,/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/bluegrid,/area/research_outpost/anomaly) -"dV" = (/obj/machinery/artifact_scanpad,/turf/simulated/floor/bluegrid,/area/research_outpost/anomaly) -"dW" = (/obj/machinery/conveyor_switch{id = "anolaser"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"dX" = (/obj/machinery/conveyor{dir = 1; id = "anolaser"},/obj/structure/plasticflaps,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/research_outpost/anomaly) -"dY" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) -"dZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) -"ea" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/atmos{name = "Outpost Atmospherics"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"eb" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"ec" = (/obj/machinery/light/small,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/visible/cyan,/turf/simulated/floor/plating,/area/research_outpost/atmos) -"ed" = (/obj/machinery/meter,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/visible/cyan,/turf/simulated/floor/plating,/area/research_outpost/atmos) -"ee" = (/obj/structure/sign/fire{pixel_x = 32},/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"ef" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"eg" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-pwall (NORTHEAST)"; icon_state = "pwall"; dir = 5},/area/space) -"eh" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-pwall (NORTHWEST)"; icon_state = "pwall"; dir = 9},/area/space) -"ei" = (/turf/simulated/floor/plating/airless,/turf/simulated/shuttle/wall{tag = "icon-pwall (SOUTHEAST)"; icon_state = "pwall"; dir = 6},/area/space) -"ej" = (/obj/item/weapon/shard,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"ek" = (/turf/simulated/wall,/area/mine/abandoned) -"el" = (/obj/docking_port/stationary{dwidth = 3; height = 5; id = "science_away"; name = "research outpost dock"; width = 7},/turf/space,/area/space) -"em" = (/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},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"en" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"eo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"ep" = (/obj/machinery/camera{c_tag = "Research Outpost Lobby"; dir = 2; network = list("Research Outpost")},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/obj/machinery/light{dir = 1},/obj/structure/noticeboard/anomaly{icon_state = "nboard05"; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreencorner"},/area/research_outpost/hallway) -"eq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/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/scrubbers{level = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreencorner"},/area/research_outpost/hallway) -"er" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreen"},/area/research_outpost/hallway) -"es" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/alarm{dir = 2; pixel_y = 25},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"et" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"eu" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/structure/closet/walllocker/emerglocker/north,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/hallway) -"ev" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "barber"},/area/research_outpost/hallway) -"ew" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "barber"},/area/research_outpost/hallway) -"ex" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/sign/chemistry{desc = "A warning sign which reads 'SAMPLE PREPARATION'"; name = "\improper SAMPLE PREPARATION"; pixel_y = 32},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "barber"},/area/research_outpost/hallway) -"ey" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurple"},/area/research_outpost/anomaly) -"ez" = (/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"eA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"eB" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"eC" = (/obj/machinery/light/small{dir = 1},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plating,/area/research_outpost/power) -"eD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/conveyor{dir = 1; id = "anolaser"},/obj/machinery/door/window/westleft{dir = 2; layer = 3.1; name = "laser testing"; req_access_txt = "65"},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/research_outpost/anomaly) -"eE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/anomaly) -"eF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurplecorner"},/area/research_outpost/hallway) -"eG" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) -"eH" = (/turf/simulated/wall/r_wall,/area/research_outpost/power) -"eI" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_atmos{name = "Outpost Atmospherics"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor/plasteel,/area/research_outpost/power) -"eJ" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 5},/turf/simulated/wall/r_wall,/area/research_outpost/power) -"eK" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/wall/r_wall,/area/research_outpost/power) -"eL" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/mineral,/area/mine/dangerous/explored) -"eM" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"eN" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 8},/turf/simulated/floor/plating/airless,/area/research_outpost/atmos) -"eO" = (/obj/item/stack/rods,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"eP" = (/obj/item/stack/rods,/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"eQ" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) -"eR" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"eS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"eT" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/research_outpost/power) -"eU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"eV" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"eW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"eX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"eY" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"eZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"fa" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/hallway) -"fb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10; initialize_directions = 10; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "barber"},/area/research_outpost/hallway) -"fc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/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/plasteel{dir = 2; icon_state = "barber"},/area/research_outpost/hallway) -"fd" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"fe" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplecorner"},/area/research_outpost/anomaly) -"ff" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/research_outpost/anomaly) -"fg" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/research_outpost/anomaly) -"fh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/research_outpost/anomaly) -"fi" = (/obj/structure/sign/nosmoking_1{pixel_y = 32},/turf/simulated/floor/plating,/area/research_outpost/power) -"fj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/research_outpost/anomaly) -"fk" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"fl" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/research_outpost/hallway) -"fm" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) -"fn" = (/obj/structure/sign/science,/turf/simulated/wall/r_wall,/area/research_outpost/entry) -"fo" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/mineral/unloading_machine,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "vault"},/area/research_outpost/tempstorage) -"fp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) -"fq" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/sign/electricshock{pixel_x = 32},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/camera{c_tag = "Research Outpost Power Room"; dir = 2; network = list("Research Outpost")},/turf/simulated/floor/plating,/area/research_outpost/power) -"fr" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"fs" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "medium"},/turf/space,/area/space) -"ft" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"fu" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) -"fv" = (/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/mine/abandoned) -"fw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"fx" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/wood,/area/research_outpost/hallway) -"fy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/wood,/area/research_outpost/hallway) -"fz" = (/obj/structure/table,/obj/machinery/cell_charger,/turf/simulated/floor/wood,/area/research_outpost/hallway) -"fA" = (/obj/structure/table,/turf/simulated/floor/wood,/area/research_outpost/hallway) -"fB" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/wood,/area/research_outpost/hallway) -"fC" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/research_outpost/hallway) -"fD" = (/obj/machinery/vending/cola,/turf/simulated/floor/wood,/area/research_outpost/hallway) -"fE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/hallway) -"fF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/sign/science{desc = "A warning sign which reads 'ANOMALOUS MATERIALS'"; name = "\improper ANOMALOUS MATERIALS"; pixel_x = 32},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "barber"},/area/research_outpost/hallway) -"fG" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/research_outpost/anomaly) -"fH" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"fI" = (/obj/machinery/firealarm{pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"fJ" = (/obj/structure/rack,/obj/item/clothing/head/welding,/obj/item/weapon/weldingtool,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"fK" = (/obj/structure/table,/obj/item/device/multitool,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"fL" = (/obj/machinery/light/small,/obj/machinery/hologram/holopad,/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"fM" = (/obj/machinery/camera{c_tag = "Research Outpost Anomalous Materials Lab"; dir = 8; network = list("Research Outpost")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"fN" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/structure/sign/science{desc = "A warning sign which reads 'ANOMALOUS MATERIALS'"; name = "\improper ANOMALOUS MATERIALS"; pixel_x = -32},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurplecorner"},/area/research_outpost/hallway) -"fO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) -"fP" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{name = "Power substation"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor/plating,/area/research_outpost/power) -"fQ" = (/turf/simulated/floor/plating,/area/research_outpost/power) -"fR" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable,/turf/simulated/floor/plating,/area/research_outpost/power) -"fS" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/power) -"fT" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/wall/r_wall,/area/research_outpost/power) -"fU" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"fV" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"fW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"fX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"fY" = (/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/mine/abandoned) -"fZ" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) -"ga" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) -"gb" = (/obj/structure/table,/obj/item/weapon/folder,/turf/simulated/floor/wood,/area/research_outpost/hallway) -"gc" = (/obj/structure/table,/obj/item/device/camera,/obj/item/weapon/stamp/granted,/turf/simulated/floor/wood,/area/research_outpost/hallway) -"gd" = (/turf/simulated/floor/wood,/area/research_outpost/hallway) -"ge" = (/obj/machinery/vending/snack,/obj/machinery/light{dir = 4},/turf/simulated/floor/wood,/area/research_outpost/hallway) -"gf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/hallway) -"gg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"gh" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/research{name = "Anomalous Materials Locker Room"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"gi" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"gj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/camera{c_tag = "Research Outpost Hallway Engineering"; dir = 4; network = list("Research Outpost")},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"gk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellowcorner"},/area/research_outpost/hallway) -"gl" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/machinery/power/apc{dir = 8; name = "Outpost Power APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/research_outpost/power) -"gm" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/research_outpost/power) -"gn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/research_outpost/power) -"go" = (/obj/machinery/portable_atmospherics/scrubber,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/research_outpost/power) -"gp" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/power) -"gq" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/floor/plating/airless/asteroid,/area/research_outpost/power) -"gr" = (/obj/machinery/mass_driver{dir = 4; id_tag = "researchdriver"},/turf/simulated/floor/plating/airless/asteroid,/area/research_outpost/power) -"gs" = (/obj/item/stack/rods,/obj/structure/lattice,/turf/space,/area/space) -"gt" = (/obj/item/weapon/shard,/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"gu" = (/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"gv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"gw" = (/obj/structure/table,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) -"gx" = (/obj/structure/table,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"gy" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) -"gz" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"gA" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"gB" = (/obj/machinery/light_switch{pixel_y = -23},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/wood,/area/research_outpost/hallway) -"gC" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/simulated/floor/wood,/area/research_outpost/hallway) -"gD" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/research_outpost/tempstorage) -"gE" = (/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/turf/simulated/floor/wood,/area/research_outpost/hallway) -"gF" = (/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/research_outpost/hallway) -"gG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) -"gH" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"gI" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 23},/turf/simulated/floor/plasteel,/area/research_outpost/anomaly) -"gJ" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/research_outpost/anomaly) -"gK" = (/obj/machinery/light{dir = 1},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/research_outpost/anomaly) -"gL" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/research_outpost/anomaly) -"gM" = (/obj/structure/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/color/latex,/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/research_outpost/anomaly) -"gN" = (/obj/machinery/door/window/westleft{dir = 4; name = "Monkey Pen"; req_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"gO" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"gP" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"gQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/power/apc{dir = 4; name = "Outpost Hallways APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"gR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/power) -"gS" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/research_outpost/power) -"gT" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; layer = 2.4; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/research_outpost/power) -"gU" = (/obj/machinery/driver_button{id_tag = "researchdriver"; pixel_x = 6; pixel_y = -26},/turf/simulated/floor/plating,/area/research_outpost/power) -"gV" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plating,/area/research_outpost/power) -"gW" = (/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"gX" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"gY" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/mine/abandoned) -"gZ" = (/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"ha" = (/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) -"hb" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) -"hc" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"hd" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/mine/abandoned) -"he" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/wall,/area/research_outpost/entry) -"hf" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/entry) -"hg" = (/obj/machinery/door/airlock/external{id_tag = "mining_away"; name = "Mining Dock Airlock"; req_access_txt = "48"},/turf/simulated/floor/plating,/area/mine/lobby) -"hh" = (/turf/simulated/floor/plating,/area/research_outpost/tempstorage) -"hi" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_research{name = "Outpost Primary Access"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"hj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_research{name = "Outpost Primary Access"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"hk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/wood,/area/research_outpost/hallway) -"hl" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/wood,/area/research_outpost/hallway) -"hm" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) -"hn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"ho" = (/obj/machinery/door/window/westleft{dir = 8; name = "Locker room"; opacity = 0; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/anomaly) -"hp" = (/turf/simulated/floor/plasteel,/area/research_outpost/anomaly) -"hq" = (/obj/structure/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/color/latex,/obj/machinery/camera{c_tag = "Research Outpost Anomaly Lab Storage"; dir = 8; network = list("Research Outpost")},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/research_outpost/anomaly) -"hr" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"hs" = (/obj/machinery/alarm{dir = 4; pixel_x = -25; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"ht" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"hu" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"hv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/power) -"hw" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/light/small,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/firealarm{pixel_y = -24},/turf/simulated/floor/plating,/area/research_outpost/power) -"hx" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/research_outpost/power) -"hy" = (/obj/structure/sign/deathsposal{pixel_x = 32},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal,/turf/simulated/floor/plating,/area/research_outpost/power) -"hz" = (/obj/structure/rack,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"hA" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall/r_wall,/area/research_outpost/power) -"hB" = (/obj/effect/spawner/window/reinforced,/obj/structure/transit_tube{icon_state = "N-SE"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/hallway) -"hC" = (/obj/structure/transit_tube{icon_state = "D-SW"},/turf/simulated/wall/r_wall,/area/research_outpost/hallway) -"hD" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/hallway) -"hE" = (/obj/structure/transit_tube{icon_state = "D-SW"},/turf/space,/area/space) -"hF" = (/obj/item/weapon/shard,/obj/structure/lattice,/turf/space,/area/space) -"hG" = (/obj/effect/gibspawner/robot,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"hH" = (/obj/effect/gibspawner/human,/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) -"hI" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/remains/xeno,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"hJ" = (/obj/effect/spawner/window/reinforced,/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/entry) -"hK" = (/obj/machinery/computer/shuttle/science,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/research_outpost/entry) -"hL" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"hM" = (/obj/docking_port/stationary{dir = 8; dwidth = 3; height = 5; id = "mining_away"; name = "asteroid mine"; width = 7},/turf/space,/area/space) -"hN" = (/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"hO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6; level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"hP" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plating,/area/research_outpost/entry) -"hQ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"hR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"hS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"hT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plasteel,/area/research_outpost/med) -"hU" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/toxin,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/med) -"hV" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/firstaid/fire,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/med) -"hW" = (/turf/simulated/wall/r_wall,/area/research_outpost/tempstorage) -"hX" = (/obj/machinery/camera{c_tag = "Research Outpost Temporary Storage"; dir = 2; network = list("Research Outpost")},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/research_outpost/tempstorage) -"hY" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"hZ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 23},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/research_outpost/tempstorage) -"ia" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/tempstorage) -"ib" = (/obj/machinery/camera{c_tag = "Research Outpost Hallway Central"; dir = 4; network = list("Research Outpost")},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) -"ic" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"id" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/closet/secure_closet/xenoarchaeologist{req_access_txt = "47"},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel,/area/research_outpost/anomaly) -"ie" = (/obj/structure/closet/secure_closet/xenoarchaeologist{req_access_txt = "47"},/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced,/turf/simulated/floor/plasteel,/area/research_outpost/anomaly) -"if" = (/obj/structure/closet/secure_closet/scientist,/obj/structure/window/reinforced,/turf/simulated/floor/plasteel,/area/research_outpost/anomaly) -"ig" = (/obj/machinery/door/window/westleft{dir = 2; name = "Locker room"; opacity = 0; req_access_txt = "65"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/research_outpost/anomaly) -"ih" = (/obj/structure/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/color/latex,/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/research_outpost/anomaly) -"ii" = (/obj/machinery/door/window/westleft{dir = 2; name = "Monkey Pen"; req_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"ij" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/anomaly) -"ik" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"il" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{name = "Power substation"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor/plating,/area/research_outpost/power) -"im" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/harvesting) -"in" = (/obj/structure/transit_tube{icon_state = "D-NE"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/research_outpost/hallway) -"io" = (/obj/structure/transit_tube{icon_state = "E-NW"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/research_outpost/hallway) -"ip" = (/obj/structure/transit_tube/station,/obj/structure/sign/securearea{desc = "A warning sign which reads 'INTERNALS REQUIRED'."; name = "INTERNALS REQUIRED"; pixel_x = 32; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/research_outpost/hallway) -"iq" = (/obj/structure/transit_tube{icon_state = "W-NE"},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting) -"ir" = (/obj/structure/transit_tube{icon_state = "D-NW"},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting) -"is" = (/turf/simulated/wall/r_wall,/area/research_outpost/harvesting) -"it" = (/obj/effect/spawner/window/reinforced,/obj/structure/transit_tube{icon_state = "N-SE"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/entry) -"iu" = (/obj/structure/transit_tube{icon_state = "D-NE"},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting) -"iv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"iw" = (/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"ix" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "small"},/turf/space,/area/mine/abandoned) -"iy" = (/obj/structure/lattice,/turf/space,/area/mine/abandoned) -"iz" = (/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) -"iA" = (/obj/machinery/door/airlock,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) -"iB" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/mine/abandoned) -"iC" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/mine/abandoned) -"iD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_research{name = "Research Shuttle Dock"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"iE" = (/obj/structure/transit_tube{icon_state = "D-SW"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/research_outpost/entry) -"iF" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"iG" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_medical{id_tag = ""; name = "Medbay"; req_access_txt = "0"; req_one_access_txt = "65;5"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/med) -"iH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"iI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"iJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"iK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Temporary Storage"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) -"iL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/med) -"iM" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/med) -"iN" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/entry) -"iO" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) -"iP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) -"iQ" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"iR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) -"iS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"iT" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/machinery/camera{c_tag = "Research Outpost Hallway Starboard"; dir = 2; network = list("Research Outpost"); pixel_x = 24},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"iU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"iV" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"iW" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"iX" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"iY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"iZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"ja" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"jb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"jc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"jd" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellowcorner"},/area/research_outpost/hallway) -"je" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteyellow"},/area/research_outpost/hallway) -"jf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteyellowcorner"},/area/research_outpost/hallway) -"jg" = (/obj/effect/spawner/window/reinforced,/obj/structure/transit_tube{icon_state = "D-NE"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/entry) -"jh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 32; pixel_y = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurple"},/area/research_outpost/hallway) -"ji" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting) -"jj" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Research Outpost Exotic Particles Airlock"; dir = 2; network = list("Research Outpost")},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel,/area/research_outpost/harvesting) -"jk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/machinery/power/apc{dir = 4; name = "Exotic Particles APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel,/area/research_outpost/harvesting) -"jl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting) -"jm" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/research_outpost/harvesting) -"jn" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/research_outpost/harvesting) -"jo" = (/obj/machinery/artifact_scanpad,/turf/simulated/floor/bluegrid,/area/research_outpost/harvesting) -"jp" = (/obj/machinery/artifact_harvester,/turf/simulated/floor/bluegrid,/area/research_outpost/harvesting) -"jq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"jr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"js" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged4"},/area/mine/abandoned) -"jt" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) -"ju" = (/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) -"jv" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/mine/abandoned) -"jw" = (/obj/structure/table,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) -"jx" = (/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned) -"jy" = (/obj/structure/rack,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) -"jz" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) -"jA" = (/obj/structure/transit_tube{icon_state = "S-NW"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/research_outpost/entry) -"jB" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"jC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera{c_tag = "Research Outpost Shuttle Dock"; dir = 8; network = list("Research Outpost")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "arrival"},/area/research_outpost/entry) -"jD" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/research_outpost/entry) -"jE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"jF" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"jG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"jH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/sign/greencross,/turf/simulated/wall,/area/research_outpost/med) -"jI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/med) -"jJ" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 4; name = "Outpost Medbay APC"; pixel_x = 24; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/med) -"jK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) -"jL" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/research_outpost/tempstorage) -"jM" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal/deliveryChute{dir = 8; name = "disposal inlet"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/research_outpost/tempstorage) -"jN" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/research_outpost/tempstorage) -"jO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) -"jP" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) -"jQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"jR" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) -"jS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurplecorner"},/area/research_outpost/hallway) -"jT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/sign/examroom{desc = "A guidance sign which reads 'ISOLATION ROOM ONE'"; name = "\improper ISOLATION ROOM ONE"; pixel_y = -32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway) -"jU" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway) -"jV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway) -"jW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/machinery/firealarm{pixel_y = -24},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway) -"jX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/sign/examroom{desc = "A guidance sign which reads 'ISOLATION ROOM TWO'"; name = "\improper ISOLATION ROOM TWO"; pixel_y = -32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway) -"jY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway) -"jZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/sign/examroom{desc = "A guidance sign which reads 'ISOLATION ROOM THREE'"; name = "\improper ISOLATION ROOM THREE"; pixel_y = -32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway) -"ka" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurplecorner"},/area/research_outpost/hallway) -"kb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Exotic Particles Collection"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/harvesting) -"kc" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/machinery/firealarm{pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/research_outpost/hallway) -"kd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/sign/biohazard{pixel_y = -32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurplecorner"},/area/research_outpost/hallway) -"ke" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitepurple"},/area/research_outpost/hallway) -"kf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/external{name = "Access Airlock"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/harvesting) -"kg" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/research_outpost/harvesting) -"kh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/research_outpost/harvesting) -"ki" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;65"},/turf/simulated/floor/plating,/area/research_outpost/maint) -"kj" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/research_outpost/harvesting) -"kk" = (/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/harvesting) -"kl" = (/obj/structure/table,/obj/item/weapon/anodevice{pixel_x = 3; pixel_y = 3},/obj/item/weapon/anodevice,/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/harvesting) -"km" = (/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) -"kn" = (/obj/effect/decal/remains/human,/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/mine/abandoned) -"ko" = (/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"kp" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/mine/abandoned) -"kq" = (/obj/structure/transit_tube/station{icon_state = "closed"; dir = 4},/obj/structure/transit_tube_pod,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/research_outpost/entry) -"kr" = (/obj/machinery/hologram/holopad,/obj/machinery/light,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/research_outpost/entry) -"ks" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/obj/machinery/alarm{dir = 1; pixel_y = -25},/turf/simulated/floor/plasteel{dir = 2; icon_state = "arrival"},/area/research_outpost/entry) -"kt" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/plasteel{dir = 2; icon_state = "arrival"},/area/research_outpost/entry) -"ku" = (/obj/structure/cable,/obj/structure/table,/obj/machinery/power/apc{dir = 0; name = "Outpost Shuttle Dock APC"; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cmo"},/area/research_outpost/entry) -"kv" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/research_outpost/entry) -"kw" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/alarm{dir = 1; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"kx" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"ky" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"kz" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plasteel,/area/research_outpost/med) -"kA" = (/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"},/area/research_outpost/med) -"kB" = (/obj/machinery/light/small,/obj/machinery/camera{c_tag = "Research Outpost Medbay"; dir = 8; network = list("Research Outpost")},/obj/machinery/sleeper,/turf/simulated/floor/plasteel{icon_state = "warnwhite"; dir = 5},/area/research_outpost/med) -"kC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) -"kD" = (/turf/simulated/wall/r_wall,/area/research_outpost/entry) -"kE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Maintenance Storage"; req_access_txt = "0"; req_one_access_txt = "12;65"},/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"kF" = (/turf/simulated/wall/r_wall,/area/research_outpost/maint) -"kG" = (/obj/machinery/light/small{dir = 1},/obj/machinery/conveyor{dir = 4; id = "anosample"},/turf/simulated/floor/plating,/area/research_outpost/maint) -"kH" = (/turf/simulated/wall/r_wall,/area/research_outpost/iso1) -"kI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/iso1) -"kJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Isolation room one"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/iso1) -"kK" = (/turf/simulated/wall/r_wall,/area/research_outpost/iso2) -"kL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/iso2) -"kM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Isolation room two"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/iso2) -"kN" = (/turf/simulated/wall/r_wall,/area/research_outpost/iso3) -"kO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/iso3) -"kP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Isolation Room Three"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/iso3) -"kQ" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Long Term Storage"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/longtermstorage) -"kR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore2) -"kS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/longtermstorage) -"kT" = (/obj/effect/spawner/window/reinforced,/obj/structure/transit_tube{icon_state = "N-SW"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/entry) -"kU" = (/obj/machinery/alarm{dir = 1; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel,/area/research_outpost/harvesting) -"kV" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/research_outpost/harvesting) -"kW" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/research_outpost/harvesting) -"kX" = (/obj/structure/table,/obj/item/weapon/anobattery{pixel_x = -6; pixel_y = 2},/obj/item/weapon/anobattery{pixel_x = -2; pixel_y = -2},/obj/item/weapon/anobattery{pixel_x = 2; pixel_y = 2},/obj/item/weapon/anobattery{pixel_x = 6; pixel_y = 6},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/harvesting) -"kY" = (/obj/item/weapon/shard,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) -"kZ" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) -"la" = (/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/mine/abandoned) -"lb" = (/turf/simulated/wall,/area/mine/dangerous/unexplored) -"lc" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'INTERNALS REQUIRED'."; name = "INTERNALS REQUIRED"; pixel_x = -32; pixel_y = 0},/turf/space,/area/space) -"ld" = (/turf/simulated/wall/r_wall,/area/research_outpost/gearstore) -"le" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_research{name = "Expedition Prep"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/entry) -"lf" = (/turf/simulated/wall,/area/research_outpost/entry) -"lg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/wall,/area/research_outpost/entry) -"lh" = (/obj/structure/closet/bombcloset,/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"li" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall,/area/research_outpost/entry) -"lj" = (/turf/simulated/wall,/area/research_outpost/tempstorage) -"lk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Temporary Storage Loading"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) -"ll" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 23},/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/storage/toolbox/emergency{pixel_x = 4; pixel_y = 4},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"lm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_research{name = "Loading Area"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/tempstorage) -"ln" = (/obj/machinery/conveyor{dir = 4; id = "anosample"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_y = 32},/turf/simulated/floor/plating,/area/research_outpost/maint) -"lo" = (/obj/machinery/disposal/deliveryChute{dir = 8},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 23},/turf/simulated/floor/plating,/area/research_outpost/maint) -"lp" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 4; name = "Maintenance APC"; pixel_x = 24; pixel_y = 0},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/research_outpost/maint) -"lq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/light/small{dir = 1},/obj/structure/table,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel,/area/research_outpost/iso1) -"lr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/iso1) -"ls" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/alarm/isolation{locked = 0; pixel_y = 24},/turf/simulated/floor/plasteel,/area/research_outpost/iso1) -"lt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/light/small{dir = 1},/obj/structure/table,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel,/area/research_outpost/iso2) -"lu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/iso2) -"lv" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/alarm/isolation{locked = 0; pixel_y = 24},/turf/simulated/floor/plasteel,/area/research_outpost/iso2) -"lw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/light/small{dir = 1},/obj/structure/table,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel,/area/research_outpost/iso3) -"lx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/iso3) -"ly" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/alarm/isolation{locked = 0; pixel_y = 24},/turf/simulated/floor/plasteel,/area/research_outpost/iso3) -"lz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"lA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/stool/bed,/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"lB" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/longtermstorage) -"lC" = (/turf/simulated/wall/r_wall,/area/research_outpost/longtermstorage) -"lD" = (/obj/structure/sign/nosmoking_2{pixel_y = -32},/obj/machinery/camera{c_tag = "Research Outpost Exotic Particles Lab"; dir = 4; network = list("Research Outpost")},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/research_outpost/harvesting) -"lE" = (/obj/machinery/alarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/research_outpost/harvesting) -"lF" = (/obj/machinery/artifact_scanpad,/obj/machinery/light/small,/obj/machinery/firealarm{pixel_y = -24},/turf/simulated/floor/bluegrid,/area/research_outpost/harvesting) -"lG" = (/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel/airless{icon_state = "dark"},/area/mine/abandoned) -"lH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"lI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"lJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"lK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"lL" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) -"lM" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) -"lN" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"lO" = (/obj/structure/transit_tube{tag = "icon-E-SW"; icon_state = "E-SW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"lP" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;65"},/turf/simulated/floor/plating,/area/research_outpost/maint) -"lQ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_y = 32},/turf/simulated/floor/plating,/area/research_outpost/maint) -"lR" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"lS" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/research_outpost/maint) -"lT" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/plating,/area/research_outpost/gearstore) -"lU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"lV" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"lW" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"lX" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/closet/radiation,/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"lY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/camera{c_tag = "Research Outpost Loading Area"; dir = 2; network = list("Research Outpost")},/turf/simulated/floor/plasteel,/area/research_outpost/tempstorage) -"lZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/power/apc{dir = 1; name = "Temporary Storage APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel,/area/research_outpost/tempstorage) -"ma" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; level = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/research_outpost/tempstorage) -"mb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/table,/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 4; pixel_y = 4},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"mc" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "Expedition Area APC"; pixel_x = 26; pixel_y = 0},/obj/machinery/camera{c_tag = "Research Outpost Expedition Preparation"; dir = 8; network = list("Research Outpost")},/obj/structure/table,/obj/machinery/kitchen_machine/microwave,/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"md" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel,/area/research_outpost/tempstorage) -"me" = (/obj/machinery/status_display{layer = 4; pixel_x = -32; pixel_y = 0},/obj/structure/closet/secure_closet/scientist,/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"mf" = (/obj/machinery/conveyor_switch{id = "anosample"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/research_outpost/maint) -"mg" = (/turf/simulated/floor/plating,/area/research_outpost/maint) -"mh" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/maint) -"mi" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel,/area/research_outpost/iso1) -"mj" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 100; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel,/area/research_outpost/iso1) -"mk" = (/obj/machinery/power/apc{dir = 4; name = "Isolation Room One APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel,/area/research_outpost/iso1) -"ml" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel,/area/research_outpost/iso2) -"mm" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 100; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel,/area/research_outpost/iso2) -"mn" = (/obj/machinery/power/apc{dir = 4; name = "Isolation Room Two APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel,/area/research_outpost/iso2) -"mo" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel,/area/research_outpost/iso3) -"mp" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 100; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel,/area/research_outpost/iso3) -"mq" = (/obj/machinery/power/apc{dir = 4; name = "Isolation Room Three APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel,/area/research_outpost/iso3) -"mr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"ms" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"mt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/longtermstorage) -"mu" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/longtermstorage) -"mv" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/power/apc{dir = 1; name = "Long Term Storage APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/longtermstorage) -"mw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/longtermstorage) -"mx" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet,/turf/simulated/floor/plasteel,/area/research_outpost/longtermstorage) -"my" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting) -"mz" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) -"mA" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/mine/abandoned) -"mB" = (/obj/structure/transit_tube{tag = "icon-NE-SW"; icon_state = "NE-SW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"mC" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"mD" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/turf/simulated/mineral,/area/mine/dangerous/unexplored) -"mE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_research{name = "Equipment Storage"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"mF" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"mG" = (/obj/structure/table,/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"mH" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/floor/plating,/area/research_outpost/gearstore) -"mI" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"mJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"mK" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"mL" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"mM" = (/obj/machinery/conveyor_switch/oneway{id = "anominerals"; pixel_y = 16},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plasteel{dir = 2; icon_state = "loadingarea"},/area/research_outpost/tempstorage) -"mN" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/structure/closet/l3closet,/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"mO" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"mP" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the isolation room cameras."; layer = 4; name = "Isolation Room Telescreen"; network = list("Anomaly Isolation"); pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plating,/area/research_outpost/maint) -"mQ" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 4},/turf/simulated/floor/plasteel,/area/research_outpost/iso1) -"mR" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/turf/simulated/floor/plasteel,/area/research_outpost/iso1) -"mS" = (/obj/machinery/conveyor_switch{id = "iso1"},/obj/machinery/camera{c_tag = "Research Outpost Isolation 1"; dir = 8; network = list("Anomaly Isolation","Research Outpost")},/turf/simulated/floor/plasteel,/area/research_outpost/iso1) -"mT" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 4},/turf/simulated/floor/plasteel,/area/research_outpost/iso2) -"mU" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/turf/simulated/floor/plasteel,/area/research_outpost/iso2) -"mV" = (/obj/machinery/conveyor_switch{id = "iso2"},/obj/machinery/camera{c_tag = "Research Outpost Isolation 2"; dir = 8; network = list("Anomaly Isolation","Research Outpost")},/turf/simulated/floor/plasteel,/area/research_outpost/iso2) -"mW" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 4},/turf/simulated/floor/plasteel,/area/research_outpost/iso3) -"mX" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/turf/simulated/floor/plasteel,/area/research_outpost/iso3) -"mY" = (/obj/machinery/conveyor_switch{id = "iso3"},/obj/machinery/camera{c_tag = "Research Outpost Isolation 3"; dir = 8; network = list("Anomaly Isolation","Research Outpost")},/turf/simulated/floor/plasteel,/area/research_outpost/iso3) -"mZ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"na" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/space_heater,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"nb" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/longtermstorage) -"nc" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/longtermstorage) -"nd" = (/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/longtermstorage) -"ne" = (/obj/machinery/camera{c_tag = "Research Outpost Long Term Storage"; dir = 8; network = list("Research Outpost")},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/research_outpost/longtermstorage) -"nf" = (/turf/simulated/wall,/area/mine/dangerous/explored) -"ng" = (/obj/structure/transit_tube{icon_state = "W-NE"},/obj/structure/lattice,/turf/space,/area/space) -"nh" = (/obj/structure/transit_tube{icon_state = "D-NW"},/turf/space,/area/space) -"ni" = (/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "green"},/area/mine/abandoned) -"nj" = (/obj/effect/gibspawner/human,/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/mine/abandoned) -"nk" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"nl" = (/obj/structure/ore_box,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"nm" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/turf/simulated/mineral,/area/mine/dangerous/explored) -"nn" = (/obj/structure/transit_tube{tag = "icon-S-NE"; icon_state = "S-NE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"no" = (/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1},/area/mine/dangerous/explored) -"np" = (/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/obj/structure/stool/bed/chair/sofa/right{dir = 8},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"nq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"nr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"ns" = (/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor/plating,/area/research_outpost/maint) -"nt" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"nu" = (/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"nv" = (/obj/machinery/mineral/unloading_machine{input_dir = 1; output_dir = 2},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/research_outpost/tempstorage) -"nw" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"nx" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"ny" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/weapon/twohanded/required/kirbyplants,/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"nz" = (/obj/machinery/light_switch{pixel_x = 27},/obj/structure/stool/bed/chair/sofa/left{dir = 8},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"nA" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor/plating,/area/research_outpost/maint) -"nB" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plating,/area/research_outpost/maint) -"nC" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/research_outpost/iso1) -"nD" = (/obj/machinery/conveyor{dir = 1; id = "iso1"},/obj/machinery/atmospherics/pipe/manifold4w/visible,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/research_outpost/iso1) -"nE" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/research_outpost/iso1) -"nF" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/research_outpost/iso2) -"nG" = (/obj/machinery/conveyor{dir = 1; id = "iso2"},/obj/machinery/atmospherics/pipe/manifold4w/visible,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/research_outpost/iso2) -"nH" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/research_outpost/iso2) -"nI" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/research_outpost/iso3) -"nJ" = (/obj/machinery/conveyor{dir = 1; id = "iso3"},/obj/machinery/atmospherics/pipe/manifold4w/visible,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/research_outpost/iso3) -"nK" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/research_outpost/iso3) -"nL" = (/obj/structure/closet/walllocker/emerglocker/west,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"nM" = (/obj/structure/dispenser,/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"nN" = (/obj/machinery/firealarm{pixel_y = -24},/turf/simulated/floor/plasteel{dir = 4; icon_state = "vault"},/area/research_outpost/longtermstorage) -"nO" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "vault"},/area/research_outpost/longtermstorage) -"nP" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "vault"},/area/research_outpost/longtermstorage) -"nQ" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1},/area/mine/dangerous/explored) -"nR" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/xenos,/obj/item/clothing/head/xenos,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "green"},/area/mine/abandoned) -"nS" = (/obj/structure/alien/resin/wall,/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned) -"nT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"nU" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"nV" = (/obj/structure/ore_box,/obj/machinery/light_construct/small{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"nW" = (/obj/structure/sign/xeno_warning_mining,/turf/simulated/wall,/area/mine/dangerous/explored) -"nX" = (/obj/machinery/light_construct/small{dir = 4},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"nY" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/research_outpost/tempstorage) -"nZ" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/research_outpost/gearstore) -"oa" = (/turf/simulated/wall/r_wall,/area/mine/podbay) -"ob" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/research_outpost/gearstore) -"oc" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/mine/podbay) -"od" = (/obj/machinery/conveyor{dir = 2; id = "anominerals"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/research_outpost/tempstorage) -"oe" = (/obj/structure/transit_tube{tag = "icon-N-S"; icon_state = "N-S"},/turf/simulated/wall,/area/mine/dangerous/explored) -"of" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"og" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/visible{dir = 6; level = 1},/turf/simulated/floor/plating,/area/research_outpost/iso1) -"oh" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor{dir = 1; id = "iso1"},/obj/machinery/atmospherics/pipe/manifold/visible,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/research_outpost/iso1) -"oi" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/turf/simulated/floor/plating,/area/research_outpost/iso1) -"oj" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/visible{dir = 6; level = 1},/turf/simulated/floor/plating,/area/research_outpost/iso2) -"ok" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor{dir = 1; id = "iso2"},/obj/machinery/atmospherics/pipe/manifold/visible,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/research_outpost/iso2) -"ol" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/turf/simulated/floor/plating,/area/research_outpost/iso2) -"om" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/visible{dir = 6; level = 1},/turf/simulated/floor/plating,/area/research_outpost/iso3) -"on" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor{dir = 1; id = "iso3"},/obj/machinery/atmospherics/pipe/manifold/visible,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/research_outpost/iso3) -"oo" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/turf/simulated/floor/plating,/area/research_outpost/iso3) -"op" = (/obj/structure/closet/hydrant{pixel_x = -32},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"oq" = (/obj/structure/rack,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/samplebags{pixel_x = 3; pixel_y = -3},/obj/machinery/power/apc{dir = 4; name = "Maintenance Storage APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"or" = (/turf/simulated/wall/r_wall,/area/research_outpost/maintstore2) -"os" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/longtermstorage) -"ot" = (/obj/structure/transit_tube{tag = "icon-N-SW"; icon_state = "N-SW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"ou" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/mine/abandoned) -"ov" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/abandoned) -"ow" = (/obj/machinery/door/airlock/glass{name = "Glass Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/abandoned) -"ox" = (/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/airless,/area/mine/abandoned) -"oy" = (/obj/machinery/door/window/westleft,/obj/structure/sign/securearea{desc = "A warning sign which reads 'VACUUM'"; icon_state = "space"; layer = 4; name = "VACUUM"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"oz" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area/mine/dangerous/explored) -"oA" = (/obj/structure/transit_tube{tag = "icon-N-S"; icon_state = "N-S"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel/airless,/area/mine/dangerous/explored) -"oB" = (/turf/simulated/mineral/random/low_chance,/area/mine/dangerous/explored) -"oC" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/engine,/area/mine/podbay) -"oD" = (/obj/machinery/door_control{desc = "A remote control-switch for the pod doors."; id = "minepodbay"; name = "Pod Door Control"; pixel_x = 0; pixel_y = 24; req_access_txt = "0"; req_one_access_txt = "48;70"},/turf/simulated/floor/engine,/area/mine/podbay) -"oE" = (/obj/machinery/camera{c_tag = "Mining Outpost Starboard Connector"; network = list("Mining Outpost")},/turf/simulated/floor/engine,/area/mine/podbay) -"oF" = (/obj/structure/spacepoddoor,/turf/simulated/floor/engine,/area/mine/podbay) -"oG" = (/obj/machinery/firealarm{pixel_y = 24},/obj/structure/disposalpipe/segment,/turf/simulated/floor/engine,/area/mine/podbay) -"oH" = (/obj/machinery/disposal/deliveryChute{dir = 1},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/research_outpost/tempstorage) -"oI" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor/plating,/area/research_outpost/maint) -"oJ" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor/plating,/area/research_outpost/maint) -"oK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/research_outpost/iso1) -"oL" = (/obj/machinery/conveyor{dir = 1; id = "iso1"},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/research_outpost/iso1) -"oM" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1; pump_direction = 0},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/research_outpost/iso1) -"oN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/research_outpost/iso2) -"oO" = (/obj/machinery/conveyor{dir = 1; id = "iso2"},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/research_outpost/iso2) -"oP" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1; pump_direction = 0},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/research_outpost/iso2) -"oQ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/research_outpost/iso3) -"oR" = (/obj/machinery/conveyor{dir = 1; id = "iso3"},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/research_outpost/iso3) -"oS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1; pump_direction = 0},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/research_outpost/iso3) -"oT" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/rack,/obj/item/weapon/pickaxe,/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"oU" = (/obj/structure/rack,/obj/item/weapon/storage/box/lights/bulbs{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/box/lights/tubes{pixel_x = -5; pixel_y = 5},/obj/item/weapon/storage/box/lights/mixed,/obj/machinery/light/small,/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"oV" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/turf/simulated/mineral/random/low_chance,/area/mine/dangerous/explored) -"oW" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"oX" = (/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/unexplored) -"oY" = (/obj/effect/decal/remains/human,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) -"oZ" = (/obj/item/weapon/table_parts,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) -"pa" = (/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/abandoned) -"pb" = (/obj/structure/rack,/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/abandoned) -"pc" = (/obj/machinery/door/window/westleft,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"pd" = (/obj/structure/transit_tube/station{dir = 8; icon_state = "closed"; tag = "icon-closed (EAST)"},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel/airless,/area/mine/dangerous/explored) -"pe" = (/obj/structure/transit_tube{tag = "icon-W-NE"; icon_state = "W-NE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"pf" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area/space) -"pg" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/research_outpost/gearstore) -"ph" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/engine/vacuum,/area/mine/podbay) -"pi" = (/turf/simulated/floor/engine,/area/mine/podbay) -"pj" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore2) -"pk" = (/obj/machinery/door/window/westleft,/obj/machinery/light/small,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"pl" = (/obj/item/weapon/rack_parts,/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/abandoned) -"pm" = (/obj/structure/girder/displaced,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/abandoned) -"pn" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/transit_tube{tag = "icon-D-SW"; icon_state = "D-SW"},/obj/structure/lattice,/turf/space,/area/mine/dangerous/explored) -"po" = (/obj/structure/transit_tube{tag = "icon-N-SE"; icon_state = "N-SE"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel/airless,/area/mine/dangerous/explored) -"pp" = (/obj/structure/lattice,/obj/structure/transit_tube{tag = "icon-E-SW"; icon_state = "E-SW"},/turf/space,/area/mine/dangerous/explored) -"pq" = (/obj/structure/lattice,/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/turf/space,/area/mine/dangerous/explored) -"pr" = (/obj/structure/transit_tube,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel/airless,/area/mine/dangerous/explored) -"ps" = (/obj/structure/lattice,/obj/structure/transit_tube,/turf/space,/area/mine/dangerous/explored) -"pt" = (/obj/structure/transit_tube/station{dir = 2; icon_state = "closed"; tag = "icon-closed (EAST)"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'VACUUM'"; icon_state = "space"; layer = 4; name = "VACUUM"; pixel_x = 0; pixel_y = 32},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel/airless,/area/mine/dangerous/explored) -"pu" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"pv" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/research_outpost/gearstore) -"pw" = (/turf/simulated/floor/mech_bay_recharge_floor/airless,/area/research_outpost/gearstore) -"px" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/research_outpost/gearstore) -"py" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; initialize_directions = 10},/turf/simulated/floor/engine,/area/mine/podbay) -"pz" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/engine,/area/mine/podbay) -"pA" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/engine,/area/mine/podbay) -"pB" = (/obj/machinery/door/window/westleft,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"pC" = (/turf/simulated/wall/r_wall,/area/mine/dangerous/explored) -"pD" = (/obj/structure/transit_tube/station{dir = 8; icon_state = "closed"; tag = "icon-opening (EAST)"},/obj/structure/transit_tube_pod,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel/airless,/area/mine/dangerous/explored) -"pE" = (/obj/structure/transit_tube{tag = "icon-NE-SW"; icon_state = "NE-SW"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"pF" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/turf/simulated/mineral,/area/mine/dangerous/explored) -"pG" = (/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"pH" = (/obj/structure/girder,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/abandoned) -"pI" = (/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/dangerous/explored) -"pJ" = (/obj/structure/window/reinforced,/obj/structure/lattice,/obj/structure/transit_tube{tag = "icon-E-NW"; icon_state = "E-NW"},/turf/space,/area/mine/dangerous/explored) -"pK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/transit_tube{tag = "icon-D-NE"; icon_state = "D-NE"},/turf/simulated/floor/plating,/area/mine/dangerous/explored) -"pL" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/structure/transit_tube,/turf/space,/area/mine/dangerous/explored) -"pM" = (/obj/effect/spawner/window/reinforced,/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/turf/simulated/floor/plating,/area/mine/dangerous/explored) -"pN" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/transit_tube{tag = "icon-W-NE"; icon_state = "W-NE"},/turf/space,/area/mine/dangerous/explored) -"pO" = (/obj/machinery/door/window/westleft{dir = 2},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"pP" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/dangerous/explored) -"pQ" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/research_outpost/gearstore) -"pR" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/research_outpost/gearstore) -"pS" = (/obj/machinery/power/apc{dir = 8; name = "Mining Station Podbay APC"; pixel_x = -27; pixel_y = 2},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/engine,/area/mine/podbay) -"pT" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/engine,/area/mine/podbay) -"pU" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/engine,/area/mine/podbay) -"pV" = (/obj/structure/spacepoddoor,/obj/machinery/door/poddoor/multi_tile/three_tile_ver{id_tag = "minepodbay"; req_one_access_txt = "48;70"},/turf/simulated/floor/engine,/area/mine/podbay) -"pW" = (/obj/structure/transit_tube{tag = "icon-D-SW"; icon_state = "D-SW"},/turf/simulated/wall/r_wall,/area/mine/dangerous/explored) -"pX" = (/obj/structure/glowshroom,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"pY" = (/obj/item/weapon/storage/toolbox/syndicate,/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned) -"pZ" = (/obj/item/clothing/suit/space/syndicate/black/red,/obj/item/clothing/head/helmet/space/syndicate/black/red,/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned) -"qa" = (/obj/machinery/door/airlock/external{name = "Mining Bridge"; req_access_txt = "65"},/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/research_outpost/gearstore) -"qb" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel/airless,/area/mine/dangerous/explored) -"qc" = (/obj/effect/decal/warning_stripes/north,/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel,/area/mine/podbay) -"qd" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/podbay) -"qe" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'VACUUM'"; icon_state = "space"; layer = 4; name = "VACUUM"; pixel_x = 0; pixel_y = -32},/obj/machinery/door/window/westleft,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"qf" = (/obj/structure/transit_tube{tag = "icon-E-NW"; icon_state = "E-NW"},/turf/simulated/wall/r_wall,/area/mine/dangerous/explored) -"qg" = (/obj/structure/transit_tube{tag = "icon-D-NE"; icon_state = "D-NE"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel/airless,/area/mine/dangerous/explored) -"qh" = (/obj/structure/transit_tube,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"qi" = (/obj/structure/transit_tube,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"qj" = (/obj/structure/transit_tube{tag = "icon-W-NE"; icon_state = "W-NE"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel/airless,/area/mine/dangerous/explored) -"qk" = (/obj/structure/transit_tube/station,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel/airless,/area/mine/dangerous/explored) -"ql" = (/obj/machinery/door/airlock/external{name = "External Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/abandoned) -"qm" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille/broken,/obj/item/weapon/shard{icon_state = "small"},/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"qn" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/turf/space,/area/mine/dangerous/explored) -"qo" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/dangerous/explored) -"qp" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"qq" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 22; pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-stage_stairs"; icon_state = "stage_stairs"},/area/mine/podbay) -"qr" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'VACUUM'"; icon_state = "space"; layer = 4; name = "VACUUM"; pixel_x = -32; pixel_y = -32},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"qs" = (/obj/effect/decal/warning_stripes/north,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/podbay) -"qt" = (/obj/machinery/door/window/westleft{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"qu" = (/obj/structure/glowshroom,/obj/machinery/light/small,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"qv" = (/obj/machinery/light_construct/small,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"qw" = (/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (SOUTHWEST)"; icon_state = "asteroidwarning"; dir = 10},/area/mine/dangerous/unexplored) -"qx" = (/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (SOUTHEAST)"; icon_state = "asteroidwarning"; dir = 6},/area/mine/dangerous/unexplored) -"qy" = (/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/dangerous/unexplored) -"qz" = (/turf/simulated/mineral/random/labormineral,/area/mine/dangerous/unexplored) -"qA" = (/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/abandoned) -"qB" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/abandoned) -"qC" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/unexplored) -"qD" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille/broken,/obj/item/stack/rods,/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/abandoned) -"qE" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"qF" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"qG" = (/turf/simulated/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/dangerous/explored) -"qH" = (/turf/simulated/mineral/random/labormineral,/area/mine/dangerous/explored) -"qI" = (/obj/effect/decal/remains/human,/turf/simulated/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/dangerous/explored) -"qJ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"qK" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"qL" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/dangerous/explored) -"qM" = (/turf/simulated/wall/r_wall,/area/mine/laborcamp) -"qN" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/obj/item/device/radio/intercom/locked/prison{pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"qO" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"qP" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"qQ" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/obj/machinery/camera{c_tag = "Labor Camp Storage"; dir = 8; network = list("Labor")},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"qR" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/laborcamp) -"qS" = (/obj/structure/table,/obj/item/device/healthanalyzer,/obj/item/stack/medical/bruise_pack/advanced,/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/laborcamp) -"qT" = (/obj/structure/sign/redcross{pixel_y = 32},/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/laborcamp) -"qU" = (/obj/machinery/camera{c_tag = "Labor Camp Medical"; dir = 8; network = list("Labor")},/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/item/device/radio/intercom/locked/prison{pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/laborcamp) -"qV" = (/turf/simulated/wall,/area/mine/laborcamp) -"qW" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"qX" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"qY" = (/obj/structure/sign/poster/legit{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"qZ" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/sign/poster/legit{pixel_x = -32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp) -"ra" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp) -"rb" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=1-Storage"; location = "7-Sleeper"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp) -"rc" = (/obj/machinery/light/small{dir = 4},/obj/structure/stool/bed/roller,/obj/machinery/light_switch{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp) -"rd" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/closet/crate/internals,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"re" = (/obj/machinery/light/small,/obj/machinery/light_switch{pixel_y = -28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"rf" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=2-NMine"; location = "1-Storage"},/mob/living/simple_animal/bot/secbot/ofitser,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) -"rg" = (/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) -"rh" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=3-SMine"; location = "2-NMine"},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) -"ri" = (/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/laborcamp) -"rj" = (/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (NORTHWEST)"; icon_state = "asteroidwarning"; dir = 9},/area/mine/dangerous/explored) -"rk" = (/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (NORTHEAST)"; icon_state = "asteroidwarning"; dir = 5},/area/mine/dangerous/explored) -"rl" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1},/area/mine/dangerous/explored) -"rm" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/laborcamp) -"rn" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/mine/laborcamp) -"ro" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/mine/laborcamp) -"rp" = (/obj/machinery/door/airlock{name = "Labor Camp Storage"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"rq" = (/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/laborcamp) -"rr" = (/obj/structure/girder/reinforced,/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/laborcamp) -"rs" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/dangerous/explored) -"rt" = (/obj/structure/table,/obj/item/trash/plate,/obj/item/weapon/kitchen/utensil/fork,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"ru" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/light_switch{pixel_x = 27; pixel_y = 0},/obj/item/device/radio/intercom/locked/prison{pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"rv" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"rw" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"rx" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/item/device/radio/intercom/locked/prison{pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"ry" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"rz" = (/obj/structure/sign/poster/legit{pixel_x = -32},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) -"rA" = (/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) -"rB" = (/obj/item/device/radio/intercom/locked/prison{pixel_y = 25},/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/laborcamp) -"rC" = (/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (SOUTHWEST)"; icon_state = "asteroidwarning"; dir = 10},/area/mine/dangerous/explored) -"rD" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"rE" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=7-Sleeper"; location = "6-Vending"},/mob/living/simple_animal/mouse,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"rF" = (/obj/machinery/door/airlock{name = "Vending"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"rG" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"rH" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"rI" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"rJ" = (/obj/machinery/door/poddoor/preopen{id_tag = "Labor"; name = "labor camp blast door"},/obj/machinery/door/airlock{name = "Labor Camp External Access"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"rK" = (/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (SOUTHEAST)"; icon_state = "asteroidwarning"; dir = 6},/area/mine/dangerous/explored) -"rL" = (/obj/machinery/vending/sustenance,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"rM" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/obj/structure/sign/poster/legit{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"rN" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/wall,/area/mine/laborcamp) -"rO" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"rP" = (/obj/machinery/flasher{id = "Labor"; pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/wall,/area/mine/laborcamp) -"rQ" = (/obj/machinery/conveyor_switch/oneway{id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"rR" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "asteroidwarning"; tag = "icon-asteroidwarning"},/area/mine/laborcamp) -"rS" = (/turf/simulated/floor/plasteel{icon_state = "asteroidwarning"; tag = "icon-asteroidwarning"},/area/mine/laborcamp) -"rT" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/dangerous/explored) -"rU" = (/obj/machinery/light_switch{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"rV" = (/obj/machinery/camera{c_tag = "Labor Camp Central"; network = list("Labor")},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"rW" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"rX" = (/obj/machinery/conveyor{dir = 2; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"rY" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"rZ" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/laborcamp) -"sa" = (/obj/machinery/mineral/unloading_machine{dir = 1; input_dir = 4; output_dir = 8},/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/laborcamp) -"sb" = (/obj/structure/ore_box,/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/laborcamp) -"sc" = (/turf/simulated/mineral/random/high_chance,/area/mine/dangerous/explored) -"sd" = (/obj/machinery/door/airlock/external{id_tag = "laborcamp_away"; name = "Labor Camp Airlock"; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"se" = (/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{id = "Labor"; name = "Labor Camp Lockdown"; pixel_x = 0; pixel_y = -28; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"sf" = (/obj/machinery/door/poddoor/preopen{id_tag = "Labor"; name = "labor camp blast door"},/obj/machinery/door/airlock/glass_security{name = "Labor Camp Shuttle Cockpit"; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"sg" = (/turf/simulated/floor/plasteel,/area/mine/laborcamp) -"sh" = (/obj/machinery/mineral/processing_unit_console{machinedir = 6},/turf/simulated/wall,/area/mine/laborcamp) -"si" = (/obj/structure/plasticflaps,/obj/machinery/conveyor{dir = 2; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"sj" = (/obj/machinery/camera{c_tag = "Labor Camp External"; dir = 4; network = list("Labor")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "asteroidwarning"; tag = "icon-asteroidwarning (NORTH)"},/area/mine/laborcamp) -"sk" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "asteroidwarning"; tag = "icon-asteroidwarning (NORTH)"},/area/mine/laborcamp) -"sl" = (/obj/machinery/conveyor_switch/oneway{id = "gulag"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "asteroidwarning"; tag = "icon-asteroidwarning (NORTH)"},/area/mine/laborcamp) -"sm" = (/turf/simulated/mineral/random,/area/mine/dangerous/explored) -"sn" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"so" = (/obj/machinery/mineral/stacking_unit_console{machinedir = 2},/turf/simulated/wall,/area/mine/laborcamp) -"sp" = (/obj/machinery/mineral/processing_unit{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"sq" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) -"sr" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/laborcamp) -"ss" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/mine/laborcamp) -"st" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/laborcamp) -"su" = (/obj/machinery/computer/shuttle/labor/one_way,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"sv" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=6-Vending"; location = "5-Central"},/obj/structure/sign/poster/legit{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"sw" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"sx" = (/obj/machinery/mineral/stacking_machine{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"sy" = (/obj/machinery/conveyor{dir = 10; icon_state = "conveyor0"; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"sz" = (/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) -"sA" = (/obj/item/stack/sheet/metal{amount = 5},/obj/structure/closet/crate,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) -"sB" = (/turf/simulated/wall/r_wall,/area/mine/laborcamp/security) -"sC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) -"sD" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) -"sE" = (/obj/machinery/camera{c_tag = "Labor Camp Security Hallway"; dir = 8; network = list("Labor"); pixel_x = 0; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) -"sF" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/mine/laborcamp/security) -"sG" = (/turf/simulated/wall,/area/mine/laborcamp/security) -"sH" = (/obj/structure/girder,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) -"sI" = (/obj/docking_port/stationary{dir = 8; dwidth = 2; height = 5; id = "laborcamp_away"; name = "labor camp"; width = 9},/turf/space,/area/space) -"sJ" = (/obj/machinery/door/airlock/external{id_tag = "laborcamp_away"; name = "Labor Camp Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"sK" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) -"sL" = (/obj/machinery/door/airlock/external{id_tag = "laborcamp_away"; name = "Labor Camp Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) -"sM" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) -"sN" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) -"sO" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) -"sP" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/machinery/door/airlock/glass_security{name = "Labor Camp Backroom"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"sQ" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/laborcamp/security) -"sR" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"sS" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/mine/laborcamp/security) -"sT" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Labor Camp APC"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; initialize_directions = 10},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=5-Central"; location = "4-Maint"},/turf/simulated/floor/plating,/area/mine/laborcamp) -"sU" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/mine/laborcamp/security) -"sV" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp External Access"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"sW" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) -"sX" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Monitoring"; req_access_txt = "2"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"sY" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/laborcamp/security) -"sZ" = (/obj/machinery/door/airlock/maintenance{name = "Labor Camp Maintenance"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"ta" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/wall,/area/mine/laborcamp/security) -"tb" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) -"tc" = (/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"td" = (/obj/item/device/radio/intercom/department/security{pixel_y = 25},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"te" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"tf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"tg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 4; name = "Labor Camp Security APC"; pixel_x = 24; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/camera{c_tag = "Labor Camp Monitoring"; network = list("Labor")},/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"th" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/wall,/area/mine/laborcamp/security) -"ti" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"tj" = (/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"tk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/laborcamp/security) -"tl" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"tm" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"tn" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/wall,/area/mine/laborcamp/security) -"to" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=4-Maint"; location = "3-SMine"},/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) -"tp" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) -"tq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) -"tr" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"ts" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall/r_wall,/area/mine/laborcamp/security) -"tt" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"tu" = (/obj/structure/stool/bed/chair/office/dark,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"tv" = (/obj/machinery/door_control{id = "Labor"; name = "Labor Camp Lockdown"; pixel_x = 28; pixel_y = 7; req_access_txt = "2"},/obj/machinery/flasher_button{id = "Labor"; pixel_x = 26; pixel_y = -3},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"tw" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"tx" = (/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"ty" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"tz" = (/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"tA" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"tB" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"tC" = (/obj/machinery/computer/secure_data,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"tD" = (/obj/machinery/computer/security{name = "Labor Camp Monitoring"; network = list("Labor")},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"tE" = (/obj/machinery/computer/prisoner,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"tF" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"tG" = (/obj/machinery/space_heater,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"tH" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"tI" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"tJ" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/simple/visible{dir = 5},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"tK" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"tL" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"tM" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"tN" = (/turf/simulated/mineral/random/low_chance,/area/mine/dangerous/unexplored) -"tO" = (/turf/simulated/floor/plating/airless,/area/space) -"tP" = (/turf/simulated/mineral,/area/space) -"tQ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"tR" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"tS" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (WEST)"; icon_state = "asteroidwarning"; dir = 8},/area/mine/dangerous/explored) -"tT" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (EAST)"; icon_state = "asteroidwarning"; dir = 4},/area/mine/dangerous/explored) -"tU" = (/obj/machinery/light/small,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"tV" = (/turf/space,/area/mine/dangerous/unexplored) -"tW" = (/obj/structure/lattice,/turf/space,/area/mine/dangerous/explored) -"tX" = (/turf/space,/area/mine/dangerous/explored) -"tY" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/turf/space,/area/mine/dangerous/explored) -"tZ" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/obj/machinery/light{dir = 1},/turf/space,/area/mine/dangerous/explored) -"ua" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless,/area/mine/dangerous/explored) -"ub" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/turf/space,/area/mine/dangerous/explored) -"uc" = (/obj/structure/lattice,/obj/structure/window/reinforced,/turf/space,/area/mine/dangerous/explored) -"ud" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/space,/area/mine/dangerous/explored) -"ue" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel/airless,/area/mine/dangerous/explored) -"uf" = (/obj/machinery/door/airlock/external{name = "Mining Bridge"; req_access_txt = "54"},/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/west_outpost) -"ug" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel/airless,/area/mine/dangerous/explored) -"uh" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel/airless,/area/mine/dangerous/explored) -"ui" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/space,/area/mine/dangerous/explored) -"uj" = (/obj/structure/lattice,/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/space,/area/mine/dangerous/explored) -"uk" = (/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"ul" = (/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris,/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"um" = (/turf/simulated/wall/r_wall,/area/mine/maintenance) -"un" = (/obj/item/clothing/under/rank/miner,/obj/effect/decal/remains/human,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"uo" = (/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris,/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/dangerous/explored) -"up" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/screwdriver,/obj/item/weapon/crowbar,/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/dangerous/explored) -"uq" = (/turf/simulated/floor/bluegrid,/area/mine/maintenance) -"ur" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Mining Communications APC"; pixel_x = 1; pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/mine/maintenance) -"us" = (/obj/machinery/telecomms/relay/preset/mining,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/mine/maintenance) -"ut" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/mine/maintenance) -"uu" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/bluegrid,/area/mine/maintenance) -"uv" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/dangerous/explored) -"uw" = (/obj/machinery/camera{c_tag = "Mining Outpost Construction Area"; network = list("Mining Outpost")},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/dangerous/explored) -"ux" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/hologram/holopad,/turf/simulated/floor/bluegrid,/area/mine/maintenance) -"uy" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/bluegrid,/area/mine/maintenance) -"uz" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/mine/maintenance) -"uA" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/bluegrid,/area/mine/maintenance) -"uB" = (/obj/machinery/camera{c_tag = "Mining Outpost Communications Relay"; dir = 8; network = list("Mining Outpost")},/turf/simulated/floor/bluegrid,/area/mine/maintenance) -"uC" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 5},/area/mine/dangerous/explored) -"uD" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/obj/machinery/light,/turf/space,/area/mine/dangerous/explored) -"uE" = (/turf/simulated/wall,/area/mine/living_quarters) -"uF" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Mining Station Communications"; req_access_txt = "48"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/mine/maintenance) -"uG" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/dangerous/explored) -"uH" = (/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/dangerous/explored) -"uI" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/carpet,/area/mine/living_quarters) -"uJ" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/carpet,/area/mine/living_quarters) -"uK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"uL" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/dangerous/explored) -"uM" = (/obj/structure/table,/turf/simulated/floor/carpet,/area/mine/living_quarters) -"uN" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/carpet,/area/mine/living_quarters) -"uO" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{id_tag = "miningdorm1"; name = "Room 1"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/mine/living_quarters) -"uP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"uQ" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/dangerous/explored) -"uR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/light/small{dir = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"uS" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/dangerous/explored) -"uT" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/carpet,/area/mine/living_quarters) -"uU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/camera{c_tag = "Mining Outpost Bedrooms"; dir = 4; network = list("Mining Outpost")},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"uV" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/mine/living_quarters) -"uW" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/dangerous/explored) -"uX" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/west_outpost) -"uY" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{id_tag = "miningdorm2"; name = "Room 2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/mine/living_quarters) -"uZ" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/dangerous/explored) -"va" = (/obj/structure/disposalpipe/segment,/turf/simulated/mineral/random,/area/mine/dangerous/unexplored) -"vb" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"vc" = (/obj/structure/grille,/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/airless,/area/mine/dangerous/explored) -"vd" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/west_outpost) -"ve" = (/obj/machinery/camera{c_tag = "Mining Outpost West Outpost Mech Recharge Station"; dir = 1; network = list("Mining Outpost")},/turf/simulated/floor/mech_bay_recharge_floor/airless,/area/mine/west_outpost) -"vf" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/west_outpost) -"vg" = (/obj/structure/disposalpipe/segment,/obj/structure/sign/deathsposal,/turf/simulated/wall,/area/mine/living_quarters) -"vh" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/mine/dangerous/explored) -"vi" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "outpost_west_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null},/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (EAST)"; icon_state = "asteroidwarning"; dir = 4},/area/mine/dangerous/explored) -"vj" = (/obj/machinery/light,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"vk" = (/turf/simulated/wall,/area/mine/west_outpost) -"vl" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/mine/west_outpost) -"vm" = (/obj/structure/sign/xeno_warning_mining,/turf/simulated/wall,/area/mine/west_outpost) -"vn" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"vo" = (/obj/machinery/vending/cigarette,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"vp" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"vq" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm3"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/carpet,/area/mine/living_quarters) -"vr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"vs" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_east_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null},/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (EAST)"; icon_state = "asteroidwarning"; dir = 4},/area/mine/dangerous/explored) -"vt" = (/obj/machinery/conveyor_switch{id = "mining_west"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1},/area/mine/dangerous/explored) -"vu" = (/obj/machinery/camera{c_tag = "Mining Outpost Production Line External"; dir = 4; network = list("Mining Outpost")},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"vv" = (/obj/structure/table,/obj/item/weapon/pickaxe,/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"vw" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"vx" = (/obj/structure/table,/obj/machinery/microwave,/obj/machinery/light_switch{pixel_y = 23},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"vy" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/west_outpost) -"vz" = (/obj/machinery/recharge_station,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"vA" = (/obj/structure/dispenser/oxygen,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"vB" = (/obj/structure/rack,/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"vC" = (/obj/structure/rack,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"vD" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"vE" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plating,/area/mine/west_outpost) -"vF" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost) -"vG" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "outpost_west_pump"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/west_outpost) -"vH" = (/obj/structure/table,/obj/machinery/microwave{pixel_y = 6},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"vI" = (/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"vJ" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"vK" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"vL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{id_tag = "miningdorm3"; name = "Room 3"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/mine/living_quarters) -"vM" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"vN" = (/obj/machinery/recharge_station,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"vO" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"vP" = (/turf/simulated/wall/r_wall,/area/mine/eva) -"vQ" = (/turf/simulated/wall,/area/mine/eva) -"vR" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/mine/eva) -"vS" = (/obj/structure/table,/obj/item/weapon/shovel,/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"vT" = (/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"vU" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"vV" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"vW" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "outpost_west_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"vX" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "outpost_west_inner"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"vY" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost) -"vZ" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "outpost_west_outer"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/mine/west_outpost) -"wa" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 5},/area/mine/dangerous/explored) -"wb" = (/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"wc" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"wd" = (/obj/structure/table,/obj/item/toy/cards/deck,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"we" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"wf" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"wg" = (/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"wh" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"wi" = (/obj/structure/rack,/obj/item/clothing/suit/space/hardsuit/mining,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/mining,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/eva) -"wj" = (/obj/structure/rack,/obj/item/clothing/suit/space/hardsuit/mining,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/mining,/turf/simulated/floor/plasteel,/area/mine/eva) -"wk" = (/obj/structure/rack,/obj/machinery/light/small{dir = 1},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/item/clothing/suit/space/hardsuit/mining,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/mining,/turf/simulated/floor/plasteel,/area/mine/eva) -"wl" = (/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/dangerous/explored) -"wm" = (/obj/structure/table,/obj/item/weapon/storage/backpack/satchel,/obj/item/clothing/glasses/meson,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"wn" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Break Room"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"wo" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"wp" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "outpost_west_pump"; tag_exterior_door = "outpost_west_outer"; frequency = 1379; id_tag = "outpost_west_airlock"; tag_interior_door = "outpost_west_inner"; pixel_x = 0; pixel_y = -25; req_access_txt = null; tag_chamber_sensor = "outpost_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "outpost_west_pump"},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"wq" = (/obj/structure/ore_box,/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "outpost_west_sensor"; pixel_x = 0; pixel_y = -25},/obj/machinery/camera{c_tag = "Mining Outpost West Outpost External Airlock"; dir = 1; network = list("Mining Outpost")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/west_outpost) -"wr" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"ws" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"wt" = (/obj/machinery/camera{c_tag = "Mining Outpost Crew Area"; dir = 1; network = list("Mining Outpost")},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"wu" = (/obj/item/weapon/cigbutt,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"wv" = (/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"ww" = (/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"wx" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"wy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"wz" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"wA" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) -"wB" = (/obj/machinery/camera{c_tag = "Mining Outpost Storage Room"; dir = 1; network = list("Mining Outpost")},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"wC" = (/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"wD" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"wE" = (/turf/simulated/wall,/area/mine/lobby) -"wF" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Mining Station Pod Bay"; req_access_txt = "54"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/lobby) -"wG" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/obj/machinery/camera{c_tag = "Mining Outpost EVA"; dir = 4; network = list("Mining Outpost")},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/structure/rack,/obj/item/clothing/suit/space/hardsuit/mining,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/mining,/turf/simulated/floor/plasteel,/area/mine/eva) -"wH" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/eva) -"wI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/mine/eva) -"wJ" = (/obj/machinery/atmospherics/unary/portables_connector,/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plasteel,/area/mine/eva) -"wK" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"wL" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"wM" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"wN" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 2},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"wO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"wP" = (/obj/structure/sign/xeno_warning_mining,/turf/simulated/wall,/area/mine/living_quarters) -"wQ" = (/obj/effect/decal/cleanable/fungus,/turf/simulated/wall,/area/mine/living_quarters) -"wR" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/living_quarters) -"wS" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/mine/living_quarters) -"wT" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/mine/lobby) -"wU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Crew Area"; req_access_txt = "48"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"wV" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/camera{c_tag = "Mining Outpost Starboard Connector"; network = list("Mining Outpost")},/turf/simulated/floor/plasteel,/area/mine/lobby) -"wW" = (/turf/simulated/floor/plasteel,/area/mine/lobby) -"wX" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/mine/eva) -"wY" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plating,/area/mine/eva) -"wZ" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/obj/item/device/gps/mining{gpstag = "MINE2"},/obj/item/device/gps/mining{gpstag = "MINE1"},/obj/item/device/gps/mining,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -3},/turf/simulated/floor/plasteel,/area/mine/eva) -"xa" = (/turf/simulated/floor/plasteel,/area/mine/eva) -"xb" = (/obj/structure/rack,/obj/item/weapon/storage/backpack/satchel,/obj/item/weapon/pickaxe,/obj/item/weapon/storage/belt/utility,/turf/simulated/floor/plasteel,/area/mine/eva) -"xc" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/eva) -"xd" = (/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/plasteel{icon_state = "floorgrime"},/area/mine/eva) -"xe" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "mining_east_pump"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva) -"xf" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"xg" = (/obj/machinery/camera{c_tag = "Mining Outpost West Outpost Break Room"; dir = 1; network = list("Mining Outpost")},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"xh" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"xi" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/power/apc{dir = 2; name = "Mining West Outpost APC"; pixel_x = 1; pixel_y = -23},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"xj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/camera{c_tag = "Mining Outpost West Outpost"; dir = 1; network = list("Mining Outpost")},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"xk" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"xl" = (/obj/machinery/light_switch{pixel_x = 6; pixel_y = -23},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"xm" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"xn" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/mine/west_outpost) -"xo" = (/obj/machinery/mineral/unloading_machine{input_dir = 4; output_dir = 8},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost) -"xp" = (/obj/machinery/conveyor{dir = 4; id = "mining_west"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost) -"xq" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal/deliveryChute{dir = 8},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost) -"xr" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/mining{name = "Mining Station Storage"; req_access_txt = "48"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"xs" = (/obj/structure/toilet{dir = 4},/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/mine/living_quarters) -"xt" = (/obj/structure/sink{pixel_y = 30},/obj/machinery/light/small,/obj/structure/mirror{pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/mine/living_quarters) -"xu" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/mine/lobby) -"xv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"xw" = (/obj/machinery/computer/podtracker,/turf/simulated/floor/plasteel,/area/mine/podbay) -"xx" = (/obj/machinery/camera{c_tag = "Mining Outpost Crew Area Hallway"; network = list("Mining Outpost")},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"xy" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"xz" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"xA" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/mine/living_quarters) -"xB" = (/obj/structure/window/reinforced,/obj/structure/lattice,/obj/machinery/light{dir = 8},/turf/space,/area/mine/living_quarters) -"xC" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/living_quarters) -"xD" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/lobby) -"xE" = (/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/mine/lobby) -"xF" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{tag = "icon-stage_stairs"; icon_state = "stage_stairs"},/area/mine/podbay) -"xG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/lobby) -"xH" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/mine/west_outpost) -"xI" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/eva) -"xJ" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_east_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/turf/simulated/floor/plasteel,/area/mine/eva) -"xK" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_east_inner"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/mine/eva) -"xL" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden,/turf/simulated/floor/plasteel,/area/mine/eva) -"xM" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva) -"xN" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_east_outer"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/turf/simulated/floor/plating,/area/mine/eva) -"xO" = (/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (EAST)"; icon_state = "asteroidwarning"; dir = 4},/area/mine/dangerous/explored) -"xP" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/wall,/area/mine/west_outpost) -"xQ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/west_outpost) -"xR" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Toilet"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/mine/living_quarters) -"xS" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_west"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"xT" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"xU" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"xV" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"xW" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"xX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"xY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"xZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"ya" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/living_quarters) -"yb" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Mining Station EVA"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/eva) -"yc" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yd" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/mine/lobby) -"ye" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/turf/simulated/floor/plating,/area/mine/west_outpost) -"yf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/mine/lobby) -"yg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/lobby) -"yh" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/lobby) -"yi" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/lobby) -"yj" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/mine/eva) -"yk" = (/obj/machinery/power/apc{dir = 2; name = "Mining EVA APC"; pixel_x = 1; pixel_y = -23},/obj/structure/cable,/turf/simulated/floor/plasteel,/area/mine/eva) -"yl" = (/obj/machinery/mineral/equipment_vendor,/turf/simulated/floor/plasteel,/area/mine/eva) -"ym" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/mine/eva) -"yn" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/eva) -"yo" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "mining_east_pump"; tag_exterior_door = "mining_east_outer"; frequency = 1379; id_tag = "mining_east_airlock"; tag_interior_door = "mining_east_inner"; pixel_x = 0; pixel_y = -25; req_access_txt = null; tag_chamber_sensor = "mining_east_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_east_pump"},/turf/simulated/floor/plasteel,/area/mine/eva) -"yp" = (/obj/machinery/camera{c_tag = "Mining Outpost Starboard External Airlock"; dir = 1; network = list("Mining Outpost")},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_east_sensor"; pixel_x = 0; pixel_y = -25},/obj/structure/ore_box,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_east_pump"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva) -"yq" = (/obj/machinery/meter,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/mine/west_outpost) -"yr" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/mine/west_outpost) -"ys" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating,/area/mine/west_outpost) -"yt" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/item/weapon/storage/box/lights/bulbs,/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/machinery/light_switch{pixel_x = 6; pixel_y = 23},/turf/simulated/floor/plating,/area/mine/west_outpost) -"yu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_west_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null},/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/dangerous/explored) -"yv" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) -"yw" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yx" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yy" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yA" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yB" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/light,/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_west_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yD" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/camera{c_tag = "Mining Outpost Port Connector"; dir = 1; network = list("Mining Outpost")},/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/mine/living_quarters) -"yE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"yF" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/space,/area/mine/living_quarters) -"yG" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/space,/area/mine/lobby) -"yH" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/light{dir = 4},/turf/space,/area/mine/lobby) -"yI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/turf/simulated/floor/plasteel,/area/mine/lobby) -"yJ" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/lobby) -"yK" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/lobby) -"yL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/lobby) -"yM" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/mine/lobby) -"yN" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/mine/production{name = "Mining Station Mech Bay"}) -"yO" = (/turf/simulated/wall,/area/mine/production{name = "Mining Station Mech Bay"}) -"yP" = (/obj/structure/extinguisher_cabinet,/turf/simulated/wall,/area/mine/production{name = "Mining Station Mech Bay"}) -"yQ" = (/obj/machinery/power/apc{dir = 1; name = "Mining Station External APC"; pixel_x = 1; pixel_y = 25},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/dangerous/explored) -"yR" = (/obj/machinery/atmospherics/unary/tank/air{dir = 1; initialize_directions = 0; level = 1},/turf/simulated/floor/plating,/area/mine/west_outpost) -"yS" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plating,/area/mine/west_outpost) -"yT" = (/obj/machinery/power/terminal{dir = 4},/obj/machinery/light/small,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/west_outpost) -"yU" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable,/turf/simulated/floor/plating,/area/mine/west_outpost) -"yV" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/mine/living_quarters) -"yW" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/living_quarters) -"yX" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/mine/lobby) -"yY" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/wall,/area/mine/living_quarters) -"yZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_inner"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"za" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/mine/lobby) -"zb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/lobby) -"zc" = (/obj/structure/disposalpipe/junction,/turf/simulated/wall,/area/mine/production{name = "Mining Station Mech Bay"}) -"zd" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) -"ze" = (/obj/structure/table/reinforced,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) -"zf" = (/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/screwdriver,/obj/item/weapon/crowbar,/obj/machinery/power/apc{dir = 1; name = "Mining Station Mech Bay APC"; pixel_x = 1; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) -"zg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/podbay) -"zh" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/mine/production{name = "Mining Station Mech Bay"}) -"zi" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) -"zj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/dangerous/explored) -"zk" = (/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) -"zl" = (/obj/machinery/light_switch{pixel_x = 23; pixel_y = 0},/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin,/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) -"zm" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) -"zn" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 0; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) -"zo" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/mine/living_quarters) -"zp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/mine/living_quarters) -"zq" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating,/area/mine/living_quarters) -"zr" = (/obj/machinery/light_switch{pixel_y = 23},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters) -"zs" = (/obj/machinery/atmospherics/unary/tank/air{dir = 8},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plating,/area/mine/living_quarters) -"zt" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "mining_west_pump"},/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/living_quarters) -"zu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/manifold4w/hidden,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/living_quarters) -"zv" = (/obj/machinery/light/small{dir = 4},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_west_sensor"; pixel_x = 25; pixel_y = -5},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "mining_west_pump"; tag_exterior_door = "mining_west_outer"; frequency = 1379; id_tag = "mining_west_airlock"; tag_interior_door = "mining_west_inner"; pixel_x = 25; pixel_y = 5; req_access_txt = null; tag_chamber_sensor = "mining_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "mining_west_pump"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"zw" = (/obj/machinery/status_display{dir = 4; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/lobby) -"zx" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/mine/lobby) -"zy" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/mine/lobby) -"zz" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Mining Station Mech Bay"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) -"zA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) -"zB" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) -"zC" = (/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production{name = "Mining Station Mech Bay"}) -"zD" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/mine/production{name = "Mining Station Mech Bay"}) -"zE" = (/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/mine/production{name = "Mining Station Mech Bay"}) -"zF" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/dangerous/explored) -"zG" = (/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/mine/living_quarters) -"zH" = (/obj/machinery/sleeper{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/mine/living_quarters) -"zI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/camera{c_tag = "Mining Outpost Sleeper Room"; dir = 1; network = list("Mining Outpost")},/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) -"zJ" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Mining Station Port Wing APC"; pixel_x = 1; pixel_y = 25},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"zK" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) -"zL" = (/turf/simulated/floor/plating,/area/mine/living_quarters) -"zM" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters) -"zN" = (/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters) -"zO" = (/obj/machinery/camera{c_tag = "Mining Outpost Port Exterior Airlock"; dir = 4; network = list("Mining Outpost")},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "mining_west_pump"},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/living_quarters) -"zP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/living_quarters) -"zQ" = (/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/plasteel{icon_state = "warning"},/area/mine/living_quarters) -"zR" = (/turf/simulated/wall/r_wall,/area/mine/lobby) -"zS" = (/obj/machinery/power/apc{dir = 8; name = "Mining Station Starboard Wing APC"; pixel_x = -27; pixel_y = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel,/area/mine/lobby) -"zT" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/lobby) -"zU" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/lobby) -"zV" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Mining Station Mech Bay"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) -"zW" = (/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) -"zX" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) -"zY" = (/turf/simulated/floor/plasteel,/area/mine/production) -"zZ" = (/obj/structure/cable,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/simulated/floor/plating,/area/mine/living_quarters) -"Aa" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plating,/area/mine/living_quarters) -"Ab" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/mine/living_quarters) -"Ac" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/manifold/visible,/turf/simulated/floor/plating,/area/mine/living_quarters) -"Ad" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_outer"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/turf/simulated/floor/plating,/area/mine/living_quarters) -"Ae" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel,/area/mine/lobby) -"Af" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/lobby) -"Ag" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/lobby) -"Ah" = (/obj/machinery/mineral/equipment_vendor,/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) -"Ai" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/light,/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) -"Aj" = (/obj/structure/ore_box,/obj/machinery/camera{c_tag = "Mining Outpost Mech Bay"; dir = 1; network = list("Mining Outpost")},/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/production{name = "Mining Station Mech Bay"}) -"Ak" = (/obj/machinery/mech_bay_recharge_port,/obj/machinery/light/small,/turf/simulated/floor/plating,/area/mine/production{name = "Mining Station Mech Bay"}) -"Al" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/mine/dangerous/explored) -"Am" = (/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,/turf/simulated/floor/plating,/area/mine/dangerous/explored) -"An" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) -"Ao" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "48"},/turf/simulated/floor/plating,/area/mine/living_quarters) -"Ap" = (/obj/effect/spawner/window/reinforced,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/mine/lobby) -"Aq" = (/obj/machinery/computer/shuttle/mining,/turf/simulated/floor/plasteel,/area/mine/lobby) -"Ar" = (/obj/item/device/radio/beacon,/turf/simulated/floor/plasteel,/area/mine/lobby) -"As" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/lobby) -"At" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel,/area/mine/lobby) -"Au" = (/turf/simulated/wall,/area/mine/living_quarters{name = "Mining Station Break Room"}) -"Av" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/mine/living_quarters{name = "Mining Station Break Room"}) -"Aw" = (/obj/effect/spawner/window/reinforced,/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,/turf/simulated/floor/plating,/area/mine/lobby) -"Ax" = (/obj/machinery/light/small,/obj/structure/dispenser/oxygen,/turf/simulated/floor/plasteel,/area/mine/eva) -"AB" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/turf/simulated/floor/plasteel,/area/mine/lobby) -"AC" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/lobby) -"AD" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/camera{c_tag = "Mining Shuttle Airlock"; dir = 8; network = list("Mining Outpost")},/turf/simulated/floor/plasteel,/area/mine/lobby) -"AE" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"AF" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"AG" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"AH" = (/obj/machinery/hologram/holopad,/obj/machinery/firealarm{pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"AI" = (/obj/machinery/power/apc{dir = 1; name = "Mining Station Break Room APC"; pixel_x = 1; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"AJ" = (/obj/machinery/alarm{pixel_y = 25},/obj/structure/closet/crate/bin{name = "Garbage bin"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"AK" = (/obj/item/weapon/twohanded/required/kirbyplants,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"AL" = (/obj/machinery/door/firedoor,/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/living_quarters{name = "Mining Station Break Room"}) -"AM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/lobby) -"AN" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/mine/lobby) -"AO" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/mine/lobby) -"AP" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Mining Break Room"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/lobby) -"AQ" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"AR" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"AS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"AT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"AU" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"AV" = (/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"AX" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/lobby) -"AY" = (/obj/machinery/door/firedoor,/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating,/area/mine/lobby) -"AZ" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"Ba" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"Bb" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"Bc" = (/obj/machinery/camera{c_tag = "Mining Outpost Break Room"; dir = 8; network = list("Mining Outpost")},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"Bd" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/lobby) -"Be" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Mining Break Room"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/lobby) -"Bf" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"Bg" = (/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"Bh" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"Bk" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4},/turf/space,/area/space) -"Bl" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/mine/lobby) -"Bm" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel,/area/mine/lobby) -"Bn" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/lobby) -"Bo" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/light/small,/turf/simulated/floor/plasteel,/area/mine/lobby) -"Bp" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"Bq" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"Br" = (/obj/machinery/light/small,/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"Bs" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) -"Bt" = (/turf/simulated/wall,/area/mine/production) -"Bu" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Loading Bay"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/production) -"Bv" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/mine/production) -"Bw" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/mine/production) -"Bx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/production) -"By" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/light_switch{pixel_y = 25},/turf/simulated/floor/plasteel,/area/mine/production) -"Bz" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Mining Station Loading Bay APC"; pixel_x = 1; pixel_y = 25},/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/mine/production) -"BA" = (/obj/machinery/mineral/mint{input_dir = 8; output_dir = 4},/turf/simulated/floor/plasteel,/area/mine/production) -"BB" = (/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/mine/production) -"BC" = (/obj/machinery/camera{c_tag = "Mining Outpost Production Room"; dir = 4; network = list("Mining Outpost")},/obj/machinery/conveyor_switch/oneway{id = "mining_internal"; name = "mining conveyor"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/mine/production) -"BD" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/mine/production) -"BE" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/mine/production) -"BF" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/production) -"BG" = (/obj/machinery/light/small{dir = 4; pixel_y = 8},/turf/simulated/floor/plasteel,/area/mine/production) -"BH" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/structure/disposalpipe/segment,/obj/machinery/recharger,/turf/simulated/floor/plasteel,/area/mine/production) -"BI" = (/obj/structure/window/reinforced,/obj/structure/closet/crate,/turf/simulated/floor/plasteel,/area/mine/production) -"BJ" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/obj/structure/window/reinforced,/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor/plasteel,/area/mine/production) -"BK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/window/reinforced,/obj/structure/closet/crate,/turf/simulated/floor/plasteel,/area/mine/production) -"BL" = (/obj/structure/closet/walllocker/emerglocker/east,/turf/simulated/floor/plasteel,/area/mine/production) -"BM" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/mine/production) -"BN" = (/obj/machinery/conveyor{dir = 4; id = "mining_internal"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/production) -"BO" = (/obj/machinery/telepad_cargo,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/production) -"BP" = (/obj/docking_port/stationary{dir = 2; dwidth = 2; height = 18; id = "skipjack_z5"; name = "south of asteroid"; width = 19},/turf/space,/area/space) -"BQ" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/lobby) -"BR" = (/obj/machinery/mech_bay_recharge_port,/turf/simulated/floor/plating,/area/mine/production{name = "Mining Station Mech Bay"}) -"BS" = (/obj/machinery/door/airlock/external{id_tag = "mining_away"; name = "Mining Dock Airlock"; req_access_txt = "48"},/turf/simulated/floor/plasteel,/area/mine/lobby) - -(1,1,1) = {" -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeafafafafafafafafagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaahaiajajakakakakakalakamanafafafafafafafafaoaoaoaoagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaahapaqafafafafafafarararasatanafafafauavakakawaxayazaAaAajaBaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaDaqafafafafafafafaraEaFaGasataHaraIaJaKaLaLaLaMaNaLaLaLaLaOaPaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaQafafafafafafafafaraRaSaTaUaVaWaXaYaZbabbbcbabdaMbabebfaLagbgbhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacbjbjacacbjbjbjbjacbjbjbjbjbjbjbjacacacacacacacacaaaaaaaaaaaaaaaaahbkafafafafblblblblblbmbnbobpbqbqbqbrbsbabSbubvaMaMbwbubtaLagagbxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacbjacacacacacacbjbjacacacacbjbjbjbjacbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaabybzaAaAaAbAbBafafafafblblbCbDblbEbEbEbEbFbqbGbHbIbababJbabKbLbMbMbMbMbMbNbObNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPbQbPaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacbjacacacbjbjacbjbjbjacacbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaabRbBagagagagagafafafafblccbTbUbVbWbXbYbZcacbcdcwcebacfcgbJchcicjckclcmcncocpbNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqcrcqagaaaaaaacacacacacacacacacacacacbjbjbjbjbjbjacacacacacacacbjbjbjbjbjacacacbjbjbjbjbjcsbjbjbjbjbjbjbjbjacacacacaaaaaQaaaaaaaaaaaaafafafafblctcucvblcycxbWbWczcAcBcCcDcEcFcGcHcIcJbMcKcLcMcNcOcPbNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacQcRcScTagaaaaacacacacacacacbjacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaQaaaaaaaaaaaaafafafafblctcucUblcVbWcWcXcYcZdacZdbcZcZcZcZdcddbMdecLdfdgdhcpbNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadididjdkdlcqagaaaaacacacacbjbjbjacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaagaQaaaaaaaaaaaaafafafafblctdmdnbldodpdqdrdsdtdudvdwdxdydzcZdBdAbMdCdDdEdFbMbObNagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadGdHdIdJdKdLdMagagacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaagaQaaagagagagagafaLaLaLaLaLdNdOaLbEbEdPdQdRcZdSdTdUdVdWdXcZdYdZeaebecedeebMefafagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaegdieheiejdlekacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacaaaaaQaaaaaaaaaaaaaaaLemenenepeqereseteuevewexcZeyezeoeBeAeDeEeFeGeHeHeHeIeJeKeMeLeLeNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagageOePeQekacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjacacacacacacaaaaaQaaaaaaaaaaaaaaaoeReSeSeUeVeWeXeYeZfafbfcfdfefffgfhfhfjfkflfmeHeCfieTfqeHfrafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagfsftfufvekacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacaaaaaaaaaQaaaaaaaaaaaaaaaofwenfxfyfzfAfBfCfDaLfEfFfGfHfIfJfKfLfMcZfNfOfPfQfQfRfSfTfVfUafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagfWfXfYekfZgaekekekekbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaaaQaaaaaaaaaaaaaaaofwenfxfygbgcfBgdgeaLgggfcZghcZcZcZcZgicZgjgkeHglgmgngogpgqgraeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaggsgtgugvgwgxbPdLgyekgzgAekbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaaaQaaaaaaelaaaaaaaLfwengBfygCfAfBgEgFaLgGgHgIgJgKgLgMcZgOgNgPgQgRgSgTfQgVgpefafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaggWgXgtgYgZhahbhcgyhdgAgAgzekbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaahehfhfhfadhfhfhffnhjhibahkhlaLaLaLaLaLhmhnhogJhpgLhqcZhshrhthuhvhwhxgUhyhAhBhCaLhDbzaAaAaAaAaAaAaBhEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahFgWgXgWgugufZhGgZekfvhHekgAhIekbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaahJhKhLhNhNhNhOhPhQhRhShThUhVhWhXfohZiaibicidieifigihcZiiijikhYeHeHileHeHeHinioipiqirisisimisisisiubhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagiviwguixiygueQizhaiAiBiCekekekekekekbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacacacacacacacaaaaaaaaaaitiEhNhNhNhNiFiDiHiIiJiGiLiMhWfpiOiPiKiRiSiQiUiViWiXiYiZiWjajbjcjdjejfjciTjciWjhjijjjkjljmjnjojpisbxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagjqjrjsguiygAgYjtgZcrekjujvekjwgyjxjyekbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacacacacacacacacaaaaaaaaaajgjAhNhNjBhNjCjDjEjFjGjHjIjJhWjKjLjMjNjOjPjzjRjSjTjUjVjWjXjUjYjVjZjUjVkajQkckdkekbkgkhkfkjkkkkklisbxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagbjbjekgxkmkngzjskogZhajwbPdLkpekjwfvgyjyekbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacafafafafafafacacacacacacacaaaaaaaahfkqhNkrksktkukvkwkxkykzkAkBhWkCgDhhkFkFkFkFkikHkIkJkHkKkLkMkKkNkOkPkNkNkEkRkSkQiskUkViskWkkkkkXisbxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagekekekekekekgwgZkYkmgZizkZjwjwhcgyjuekjweQlajyekbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacafafafaeaeaeaeafafafacacacaclblcaaaaaaiNkThfhfkDlflflflglelibaljljhWlkkFkFkFkGlnlolpkHlqlrlskKltlulvkNlwlxlykNlzlAkSlBlCisisislDlElFjpisbxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaageklGdLhagwekjqlHjrekiAeklIlJlKekdLlLcrlMeQfucrekbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjacacacafafaeaeaeaeaeaeaeaeafafacaclNlOaAaAajaAbAbBagagldlhlRlllTlUlVlWlmlYlZmalPmglQlSmfmgmhkHmimjmkkKmlmmmnkNmompmqkNmrmsmtmumvmwmxisisisisismybkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceklGeQdLgYiAlLkmdLkmfudLdLmzgydLeQeQekcrmAeQdLekbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacafafaeaeaeaeaeaeaeaeaeaeafafmCmBmDacaaaaaaaaaaaaagldlXmFmbmHmImJmcljmdmMhWkFkFkFkFkFmgmPkHmQmRmSkKmTmUmVkNmWmXmYkNmZnanbncndndnelCmKaiaAaAngnhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaceklGnieQeQiAeQlafZeQnjfulakpcreQnkfvekkmcrlLdLekbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacafnfaeaeaeaeaeaeaeaeaeaeaenlafnnnmafafaaaaaaaaaaaaagldmenqnrmEnrntmGljljnvhWnononQnokFnAnBkHnCnDnEkKnFnGnHkNnInJnKkNnLnMlCnNnOnPnOlCnnnUafagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaceklGnRgYgweknSeknTfYekhaeknTfYekgZlLekmziCcrjuekbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacafnVaeaeaeaenWaeaeaeaeaeaenXnfoenfafaaaaaaaaaaaaaaagldmNmLmOnZnuobnunphWodhWofofofofkFnsmgkHogohoikKojokolkNomonookNopoqorlClClClCosotafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacekekekekekeknSekougyhajufvgZkogZiCgYeknTovowoxekbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacafnlaeaeaeaeaeaeaeaeaeaeaeaeoyoAozaaaaaaaaaaaaaaagagldnwnunxnZnynununzhWoHhWaeaeaeaekFoIoJkHoKoLoMkKoNoOoPkNoQoRoSkNhzoUorafoBafoVmBoWafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacbjbjbjbjbjeknSekgyjuoYizdlgYgyekgZfvekoZpapapbekoXbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacafafaeaeaeaeaeaeaeaeaeaeaeaepcpdpfaaaaaaaaaaaaagagagldldpgpgldldnZnZldldnYhWaeaeaeaekFkFkFkHkHkHkHkKkKkKkKkNkNkNkNkNororpjlOakakpenUafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacbjbjbjbjbjbjeknSekjudLiCgygZfviCeknSekekjwcrpaplpmoXoXbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacafafaeaeaeaeaeaeaeaeaeaeaeaepkpopnaaaaaaaaaaagpqpppsprptpvpwpxaeaeaeaeaepuaeaeaeaeaepBpDpCafafafafafafafafafafafafafafpFpEnUpGafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacbjbjbjbjbjbjbjbjeknSekekekekekekekekeknSekjwcrjxcrpbpHoXoXbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacafaeaeaeaeaeaeaeaeaeaeaeaeaepIpKpJpLpLpLpLpLpLpNpMpPpOpOpQpRpRaeaeaeaeaepuaeaeaeaeaepcpopWafafoBoBoBoBoBoBafafafafafpFpEnUpXaepXafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjeknSnSnSnSpYpZnSnSnSnSnSekjwjxjxjxjyekoXoXoXbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjacafaeaeaeaeaeaeaeaenWaeaeaeaeaeqaqbqbqbqbqbqbqbqbqaaeaeaeaeaeaeaeaeaeaeaepuaeaeaeaeaeqeqgqfakakakakqhakakakakakqiprqkqjnUaeaeaepXnfafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjekekekekekekekekekekekekekekoxqlqmekekoXoXoXoXbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacafaeaeaeaeaeaeaeaeaeaeaeaeaepIqoqnqnqnqnqnqnqnqnpPpPaeaeaeaeaeaeaeaeaeaepuaeaeaeaeaepCpCpCafafoBoBoBoBoBoBoBoBqrqppOqtaepXaeaepXafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjoXoXoXekpapajxekoXoXoXoXoXbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacafaeaeaeaeaeaeaeaeaeaeaeaeaaaaaaaaaaaaaaaaafafafafafafafafaeaeaeaeaeaeaepuaeaeaeaeafafafafafafoBoBoBoBoBoBoBnfpXaequaepXaeaeaeafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjoXoXoXekqAqBqAekoXoXoXoXoXbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacafaeaeaeaeaeaeaeaeaeaeaeaeaaaaaaaaaaaaaaaaafafafafafafafafafafaeaeaeaeaepuaeaeaeaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBnfoBaepGoBafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjoXoXekqDqloxekoXoXoXoXbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacafafaeaeqvaeaeaeaeaeafafafaaaaaaaaaaaaaaaaaaafafafafafafafafafafafaeaeaepuaeaeafafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjoXoXoXqwqyqxoXoXoXoXbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacafafafnfafaeaenlnlafacacaaaaaaaaaaaaaaaaaaafafafafafafafafafafafafaeaepuaeaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjqzbjbjbjbjbjbjbjbjbjbjoXoXoXoXoXqCoXoXoXoXbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacafafafafafafacacaaaaaaaaaaaaaaaaaaafafafafafafafafafafafafaeaepuaeaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaccsacaaaaaaaaaaaaaaaaaaaaaaaaqzbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjqzqzbjbjbjbjbjbjbjbjbjoXoXoXoXoXoXoXqCoXoXbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjacacacacacacacacacacacaaaaaaaabjbjaaaaaaaaafafafafoBoBoBoBafafafaeaeqEqFaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacaaaaaaaaaaaaaaaaacacacacqzqzqzqzqzqzqzqzqzqzqzqzbjbjbjbjbjbjbjbjqzqzqzbjbjbjbjbjbjbjbjoXoXoXoXqCoXoXoXoXoXbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacacaaaaaaaaacbjbjaaaaaaafafafafoBoBoBoBafafafaeaeaepuaeaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaacacacacacqzqzqzqzqzqzqzqzqzqzqzqzbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjoXoXoXoXoXoXoXoXoXoXbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaabjbjaaaaaaafafafafoBoBoBoBafafafaeaeaepuaeaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaacacacacacacqMqMqMqMqMqMqzqzqzqzbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjoXoXoXoXoXoXoXoXoXbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaaaaaaaaafafafoBoBoBoBafafafaeaeaepuaeaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaacqMqMqMqMqMqMqNqOqPqQqMqzqzqzqzqzqzqzqzqzqzqzqzbjbjbjbjbjbjbjbjbjbjbjoXoXoXoXoXoXbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaaaaaaafafafoBoBoBoBafafafaeaeaepuaeaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaacqMqRqSqTqUqVqWqXqXqYqMqVqVqVqVqVqVqVqVqVqVqVbjbjbjbjbjbjbjbjbjbjbjbjbjoXoXoXbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaaaaafafafoBoBoBoBafafafafaeaepuaeaeaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqMqZrarbrcqVrdqXrerfrgrhririqVqGqIqHqzqzqzqzqzqzbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaacaaaaaaaaafafafoBoBoBoBafafafafaeaepuaeaeaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqMqMqMqVrmrnrmqVrorpqVqVqMqMqMrqqMrrqHqHqzqzqzqzqzqzbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaabjbjbjaaaaafafafafoBoBoBoBoBafafaeaeqEqJqFaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqMrtruqVrvqXqWrwrxqXryqVrzrArArirBriqHqHqzqzqzqzqzqzbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaabjbjbjaaaaaaafafafoBoBoBoBoBafafaeaeaeaepuaeqKnfafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagqMrDrErFrGrHrIqXrvqXqXrJrArAririririqLqHqzqzqzqzqzqzbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaaaaaaaaafafafoBoBoBoBoBafafafaeaeaepuaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqMrLrMrNrOrHrPqXrvrQqXqVrRrSrSririqGqGqHqHqzqzqzbjqzbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacaaaaaaaaaaaaaaaaaaaaafafoBoBoBoBoBafafafaeaerjrlrkaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqMqVqVqVrUqXrVrHrWrmrXrYrZrZsasbriqGqGrsqHqzqzqzqzqzbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaaaaaaaaafafoBoBoBoBoBafafafaeaerCrTrKaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafaaafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasdsesdsfsgqXrvqXqXshsiqVsjskslririqGqGqGqHscqzqzqzqzbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaaaaafafafoBoBoBoBoBafafaeaeaepuaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbjacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqMqMqMqMsnqXrvrmsoqVspqVrAsqrAqGqGqGqGsrqVqzqzqzqzqzbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaacsaaaaafafafoBoBoBoBoBafafaeaeaepuaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaccsacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaassststsuqXqXsvswsxswsyqVszsAqGqGqGqGqLqHqHqzqzqzqzqzbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaabjcscsaaaaafafoBoBoBoBoBafafaeaeaepuaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasBsBsBsCsDsEsFsGsGsGqVsGsGsHqGqGqGqGqLqHqzqzqzqzqzqzbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaabjbjcsaaaaaaafafafafafoBafafafaeaepuaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasIsJsKsLsMsNsOsPsQsRsSsTsUsVsWrAqGqGqGqHqHqzqzqzqzqzqzbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaaaaaaaaaaafafafoBafafafaeaepuaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaasBsGsGsGsXsFsGsGsYsZtasGsGtbrAqGqGqHqHqzqzqzqzqzqzqzbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaaaaaaaaaaafafoBafafafaeaepuaeaeafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaasBtctdtetftgthtitjtktltmtntotptqqHqHqzqzqzqzqzqzqzqzbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaasmsmaaaaaaaaaaaaafafoBafafafaeaepuaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaccsacaaaaaaaaaaaaaaaaagtstttctutctvsGtwtxtxtytzsGqHqHqHqHqzqzqzqzqzqzqzqzqzbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaasmsmscaaaaaaaaaaaaafafoBafafafaeaeqEqFaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaaaaatAtBtCtDtEtFsGtGtHtItJtzsGqHqzqzqzqzqzqzqzqzqzqzbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaascaaaaaaaaaaaaaaaaafafoBafafafaeaeaepuaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaatKtLtMsBsBsBsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacafafafagagagagagagagagafafoBoBafafafnftraepuaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaccsacacaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacqzqzqzqzqzqzqzqzqzqzqzqzqzqzbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacafafaftOtOtOtOtOtOtOtOafafoBoBafafafafaeaepuaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaatPacacacacacacacacqzqzqzqzqzqzqzqzqzqzqzqzqzqzqzqzqzqzbjbjbjbjbjbjbjbjbjtNbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacafafagagagagagagagagafafoBoBafafafaeaeaepuaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacbjbjbjbjbjbjbjbjtNbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacaaaaaaaaaaaaaaaaafafoBoBafafafaeaeaepuaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacaaaaaaaaaaaaaaaaaaafafoBoBafafafaeaeaepuaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacaaaaaaaaaaaaaaaaaaafafoBoBafafafafaeaerjrlrkaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjtNbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacaaaaaaaaaaaaaaaaaaaaaaaaafafoBoBafafafafaeaerCrTrKaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaacbjacacaaaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaafafoBoBafafafafafaeaepuaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacaaaaaaaaaaaaaaaaaaaaaaacbjbjacacaaaaaaaaaaaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafoBoBafafafafafaetRtQaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacaaaaaaaaaaaaaaaaaaaaaaacbjbjacacaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafaepuaeaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacacaaaaaaaaaaaaaaaaaaaaaaacbjcsacacaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafaeaepuaeafafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbjacaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaacbjacaaaaaaaaaaaaaaaaaaaaaaacacbjbjacacaaaaaaaaaaaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafaeaepunXnfafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbjacacaaaaaaaaaaaaaaacacacaaaaaaaaaaaaacacbjacaaaaaaaaaaaaaaaaaaaaaaacbjacacacaaaaaaaaaaaaaaaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafaeaetRtQaeafafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjbjacaaaaaaaaaaaaaaacacbjacacacaaaaaaaaacbjbjacaaaaaaaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaeaepuaeaeafafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccsbjacaaaaaaaaaaaaaaacacbjbjacacaaaaaaaaaccsbjacaaaaaaaaaaaaaaaaaaaaacbjacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaeaeaeaepuaeaeaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjbjacaaaaaaaaaaaaaaaaaccsbjacacaaaaaaaaacbjbjacaaaaaaaaaaaaaaaaaaaaacbjacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaepuaeaeaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaaaacbjbjacacacaaaaaaacacacacacacaaaaaaaaaaaaaaaaacbjacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaepuaeaeaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjbjacacaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaacbjacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaepuaeaeaeafafafafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaepuaeaeaeafafafafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaepuaeaeaeafafafafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeaepuaeaeaeaeafafafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaacacbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeaepuaeaeaeaeaeaeaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaaaaaaaaaacacacacacaaacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeaepuaerjrkaeaeaeaeaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccsacacaaaaaaaaaaaaaaacbjbjacacaaaaaaaaaaaaaaaaaaaaaaacacbjbjacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeqEqJtStTqJqJqJqFaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaacacacacacaaaaaaaaaaaaacacbjcsbjacaaaaaaaaaaaaaaaaaaaaaaacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeaeaerCrKaeaeaepuaeaeaeaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbjacacaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaacacacbjacaaaaaaaaaaaaaaaaaaaaaaacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacaaaaaaaaaaaaaaaaaaaaaaaaafafaeaeaeaeaeaeaeaeaeaeqEqJqFaeaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacacacaaaaaaaaaaaaaaaaaaacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacaaaaaaaaaaaaaaaaaaaaaaafafafafafafaeaeaeaeaeaeaeaepuaeaeaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbjacacaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjacacacacacacaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafafaeaeaeaepuaeaeaeaeaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacacaaaaaaaaaaaaacbjacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacagagagagagagagagagagagafafafafafafafafafafafaeaeqEqJqJqFaeaeaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacacaaaaaaaaaaacaccsacaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacactOtOtOtOtOtOtOtOtOtOtOtOtOtOafafafafafafafafafaeaeaeaeaepuaeaeaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacaaaaaaaaaaacacbjacacaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacagagagagagagagagagagagagagagagagafafafafafafafafaeaeaeaeaeqEqJqJqFaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacaaaaaaaaaaacbjbjacaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjbjacacaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafafafaeaeaeaeaepuaeaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacaaaaaaaaaaacacacacaaaaaaaaaaaaaaaaaaaaacacacacacacacacaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaabjaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafafafafafaeaeaepuaeaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbjbjacacaaaaacaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaoXbjbjbjbjoXoXaaaaaaaaaaaaaaafafafafafafafafafafafafafafaeqEqJqFaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaaaaaaaacbjacaaaaaaaaaaaaaaaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaaoXoXbjbjbjoXoXoXaaaaaaaaaaaaaaafafafoBoBoBoBoBoBafafafafafaeaeaepuaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbjacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacaaaaaaaaaaaaaaaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaaoXoXbjbjbjoXoXaaaaaaaaaaaaaaaaafafafoBoBoBoBoBoBafafafafafafaeaepuaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacaaaaaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaaoXoXbjbjbjoXoXaaaaaaaaaaaaaaafafafoBoBoBoBoBoBoBafafafafafafaerjrlrkaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaabjbjbjoXoXaaaaaaaaaaaaafafafafoBoBoBoBoBoBoBoBafafafafafafaerCrTrKaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaacacacacacacacacaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafoBoBoBoBoBoBoBoBafafafafafafafaeaepuaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactNacaaaaaaaaaaaaaaaaaaaaaaaaacaaacacacacaaaaacacacaaaaaaaaaaacacacacacacacacaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafoBoBoBoBoBoBoBoBoBafafafafafaeaeaeaepuaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacaaaaaaaaaaaaaaaaaaaaaaaaacacacbjbjacacacacbjacaaaaaaaaaaaaaaaaaaaaacacacacaaaaaaaaaaaaaaacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacaaaaaaaaaaaaaaaaaaaaaaaaafafafafoBoBoBoBoBoBoBoBoBafafafaeaeaeaeaeaepuaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbjacacacacacaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacaaaaaaaaaaaaaaaaaaaaaaafafafafoBoBoBoBoBoBoBoBoBafafafaetRqJqJqJqJtQaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacaaaaaaaaaaaaaaaaaaaaafafafafoBoBoBoBoBoBoBoBoBafafafaepuaeaeaeaetUaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaccsacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaaaaaaafafafafoBoBoBoBoBoBoBoBoBafafafaepuaeaeaeaenfafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjbjacacacacacaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaaaaaaaaafafafafoBoBoBoBoBoBoBoBafafafaepuaeaeaeafafafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacacacacacacaaaaaaaaaaaaaaaaaaacbjacaaaaaaaaaaacacacacacaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaaaaaaaaaaafafafafoBoBoBoBoBoBoBafafafaepuaeaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacacaaaaaaaaacbjbjacacacaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaatVacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacaaaaaaaaaaaaaaaaaaaaaaaaafafafoBoBoBoBoBoBafafafaepuaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacaaaaaaaaacacbjacaaacaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaaaaaaaaaaaaaaafafafoBoBoBoBafafafaeaepuaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaccsacaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaaaaaaaaaaaaafafafoBoBoBafafafaeaepuaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaacbjacacaaaaaaaaacbjbjbjacacaaaaaaaaaaaaaaacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacaaaaaaaaaaaaaaaaaaaaaaafafafafoBoBafafafaetRtQaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacaaaaaaaaaaaaacacbjacaaaaaaacacacacacacaaaaaaaaaaaaacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaaaaaaaaaaafafafafoBoBafafaeaepuaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbjacacaaaaaaaaaaaaacacacaaaaaaacacacaaaaaaaaaaaaaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaaaaaaaaaaaaafafafafoBafafnftrrjrlrkaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaaaaaaaaaaaaafafafoBoBafafafaerCrTrKaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaaaaaaafafafoBoBoBoBafafafaeaepuaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaeaeafaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacafafagagagagagagagagagagafafafoBoBoBoBafafafaeaepuaeaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaacacacaaaaaaaaaaaaaeaeaeaeaaaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacafafaftOtOtOtOtOtOtOtOtOafafafafoBoBoBoBafafafafaepuaeaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacaaaaaaaaaaaaacbjacaaaaaaaaaaaaaeaeaeaeaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacafagagagagagtWtWagagagafafafafoBoBoBoBafafafafaepuaeaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbjacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaacaccsacacaaaaaaaaaeaeaeaeafafafafaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaatXtXtXtXaaaaaaafafafafoBoBoBoBafafafafaepuaeaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaacacacacacacaaaaaaaaaeaeaeaeaeafafafaaaaaaacacacbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaatXtXtXtXaaaaaaaaafafafafoBoBoBoBafafafaeaepuaeaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbjacaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaacacaaaaaaaaacacacaaaaaaaaaaaaaaaeaeaeaeaeafafaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaatXtXaaaaaaaaaaafafafafoBoBoBoBafafafaeaepuaeaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbjbjbjacacaaaaaaaaaaacacaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaapPaepPaeafafafaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafoBoBoBafafaeaeaepuaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjbjbjbjbjacaaaaaaaaaaacacaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaapPufpPaeafaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafoBoBoBafafafaeaeaepuaeaeafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaccsbjbjbjacacaaaaaaaaaaacacacaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaatYuatZaaaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafoBoBoBafafaeaeaeaepuaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacacacacaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaatYuaubaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafoBoBoBafafaeaeaeaepuaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaeaepPpPucucucucucucucuduaubaaaaaaaaaaaaacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjumumumumumumumbjacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafoBoBoBafafaeaeaeaepunXnfafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacacaaaaaaaaaaaaaaaaaaaaaeaeaeaeufueueueueueueueuguhubaaaaaaaaaaaaacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjumuqurusutuuumbjacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaafafafoBoBoBoBafafafaeaeaepuaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbjacacacacaaaaaaaaaaaaaaaaafaeaeaepPpPqnqnqnqnqnqnuiuaujtWaaaaaaaaaaafacacbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjumuxuyuzuAuBumbjbjacacacaaaaaaaaaaaaaaaaaaaaaaaaaaafafafoBoBoBoBafafafaeaeaepuaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaacacacaaaaaaaaaaaaafafafaeaeaeaeaaaaaaaaaaaatYuaubaaaaaaaeaeaeafacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjofulukbjuEumumumuFumumumbjbjacacacaaaaaaaaaaaaaaaaaaaaaaaaafafafafoBoBnfnfnfnfnfnfaeaepuaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaacacafafaeaeaeaaaaaaaaaaaaaatYuaubaaaeaeaeaeaeafafacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjunukuobjuEuIuJuEuKuEafafacacacacacaaaaaaaaaaaaaaaaaaaaaaafafafafoBoBoBnfupuwuvuvuCaeaepuaeaeafafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacafafafaeaeaaaaaaaaaaaaaauDuaubaeaeaeaeaeaeaeafacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjofnfacuEuMuNuOuPuEaeafafacacacacaaaaaaaaaaaaaaaaaaaaafafafafoBoBoBoBnfuGuHuHuHuLaeaepuaeaeaeaeaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaaaaaaaaapPufpPaeaeaeaeaeaeaeafafacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjuQbjacuEuEuEuEuRuEaeaeafafnfafafaaaaaaaaaaaaaaaaaaaaaaafafafoBoBoBafnfuSuWuWuWuZaeaepuaeaeaeaeaeaeafafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaacacbjacacaaaaaaaaaaaaaaaaaaaeaepPofpPaeaeaeaeaeaeaeaeafacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjvabjbjuEuIuTuEuUuVaeaeaeaevbaeafafaaaaaaaaaaaaaaaaaaaaafafafafafafafaeaeaeaeoaoaoaoaocoavhvcaeaeaeaeafafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacaaaaaaaaaaaaaaaaaaaaacacbjbjacaaaaaaaaaaaaaaaaaaaeaeaeaeofofofofuXuXuXaeaeaeafacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacacacacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjvabjbjuEuMuNuYuKuVaeaeaeaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaafafafafafafaeaeaeaeoaoCoEoDoGoFphaeaeaeaeaeaeaeafafafafoBoBoBoBoBoBoBoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaccsacacacacaaaaaaaaaaaaaaacacacbjbjacaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeaeaevdvevfaeaeaeafacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjacacacafafafafafafafacacacacacacacacbjbjbjbjbjbjbjbjbjbjuEvguEuEuEuEuEuEuKuVaeaeaeaeaeaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaafafafafafaeaeaeaeoapipzpypAoFphaeaeaeaeaeaeaeaeafafafafafoBoBoBoBoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacaaaaaaaaaaaaaaacacacbjbjacaaaaaaaaaeaevkvkvkvkvkvkvlvlvlvkvmvkvkvkaeaeaeafacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacafafaeaeaeaeaeafafafafafacacacacacacacbjbjbjbjuEuEuEuEvnvovpuEuIvquEvruEuEuEuVuVuVuEaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaafafafafaeaeaeaeoapSpUpTpApVphaeaeaeaeaeaeaeaeafafafafafoBoBoBoBoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacaaaaaaaaaaaaaaacacacacacaaaaafaeaeaevkvvvwvxvyvzvAvBvCvDvEvFvGvyrkaeaeafafafafacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacafafaeaeaeaeaeaeaeaeaeaeafafafafafacacacacbjbjbjuEvHvIvJvKvIvIuEuMuNvLuKuEvMvNvOvOvOuVaeaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaafafafaeaeaeaeqdqcqsqqwXvPvRvRvQvQaeaeaeaeaeaeafafafafoBoBoBoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaacacacaaaaacafaeaeaevkvSvTvUvyvTvVvTvTvWvXvYvGvZviaeaeaeaeaeafafafacacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjacacafafnfaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafacacacacacacuEwbvIwcwdwewfuEuEuEuEuKuEvMwgwgwgwhuVaeaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeaeqdxwzgxFwXwiwjwjwkvQaevjaeaeaenXnfafafafoBoBoBoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaacafaeaeaevkwmvTvTwnvTvVwovTvTvywpwqvyrKaeaeaeaeaeaeaeafafafafacacacacacacbjbjbjbjbjbjbjbjbjacacafafaevbaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafacacacuEwrwswtvIwuwvwwwhwxwywzuEoTwgwBwCwDuVaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaezRzRwTwFwXwGwHwIxbvQvQvQvQaeaeaeaeafafafafoBoBoBoBoBoBoBoBoBafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacafafaeaevkwKvTwLvEwMwNwOvTvkvkvkvkvkvmrjrkaeaeaeaeaeaeaeaeafafafacacacacacbjbjbjbjbjbjbjacacacafaeaeaeaeaeaeaeaeaeaeaerjrkaeaeaeaeaeaeaeaeaeafafacacwPuEuEuEwQuEuEwRwSwUwRwSuEuEuEuEuExruEuEuVuVaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaexuxuwVAMABwYwZymxawJxcxdxexcrkaeaeaenlafafafoBoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacafaeaevkxfxgxhvyxixjxkxlxmxnxoxpxqxHtStTqJqJqJqJqJqFaeaeaeaeafafafacacacacacbjbjbjacacacacafafaeaetRqJqJqJqJqJqJqJqJtStTqJqJqJqJqFaeaeaeaeaeafacacacacacwQxsxtxRwgwDxvwhwDwwzJxxxywhwDwgxzxAuVuVuVxBxCxCxCxCxCxCxCxDxDxDxDxDxDxDxuxuxuxEwWBQxGybxIxaxaxJxKxLxMxNvsaeaeaenlafafafoBoBoBoBoBoBafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacafaeaevkvkvkvkvkxPxQyevkvkxSvkvkvkvkrCrKaeaeaeaeaepuaeaeaeaeafaeafafacacacacacacacacacacafafaeaeaepuaeaeaeaeaeaeaeaerCrKaeaeaeaepuaeaeaeaeaeafafnfafafacuEuEuEuEwgwDxTxUxVwyxWxXxXxYxYxZxXyayExXyEycycycycycycycycydydydydydydydyIyfyIygyfyhyiyjykylAxynxcyoypxcrKaeaeaeaeafafafafoBoBoBoBoBafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacafafaeaeaeaeaevkyqyrysytvknovtofaeaeaeaeaeqvaeaeaeqEqJqJqFaeaeaeaeafacacacacacacacacacacafaeaetRqJtQaeaeaeaeafaeaeqvaeaeaeaeaeaepuaeaeaeaeaeaeaevbaeafafafafafuEwgywyxyyyyyxyzyAyByyyyyCyxyDyVyVyVyFyFyFyFyFyFyFyFyGyGyGyGyGyGyHyXyXyXyJyKyLyMyNyOyPyOyOyOyOyOyOvuaeaeaeaenlafafafoBoBoBoBafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacafafaeaeaeaevkyRySyTyUvkaeaeaeaeaeaeafafnfafaeaeaeaeaepuaeaeaeaeaeafacacacacacafafafafafaetRtQaeaeaeafafafafafafnfaeaeaeaeaeaepuaeaeaeaeaeaeaeaeaeaeaeafafuEuEwRAnwRuEuEyWAoyYuEuEuEyZwRuEuVaeaeaeaaaaaaaaagaaaaaaagaaaaaaaaaaagaaxuxuwWzazbzczdzezfBRzhziyOuvwaaeaeaeaeaeafafafoBoBoBoBafafafoBafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacafafaeaeaevkvkvkvkvkvkaeaeafafafafafacacafafaeaeaeaepuaeaeaeaeaeaeafafafafafafaeaeaeaeaepuaeaeafafafacacacacacafaeaeaeaeaeaepuaeaeaerjrkaeaeaeaeaeaeaeafuEzkwAzmzluEzozpzqzrzsuEztzuzvuEaeaeaeaeaeaeaaaaagaaaaaaagagagagagagagagagwEzwzxzyzzzAzAzBzCzCzDzEwluLaeaeaeaeaeafafafoBoBoBafafoBoBoBafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacafaeaeaeaeaeaeaeaeaeaeaeafacacacacacacacafafaeaeaeqEqJqJqJqFaeaeaeaeaeaeaeaeaeaeaeaeaepuaeafafacacacacacacacafafaeaeaeaeaeqEqJqJqJtStTqJqJqJqFaeaeaeaeuEzHzGzIznuEzKzLzLzMzNuEzOzPzQuEaeaeaeaeaeaeagagagagagagagaaaaaaaaaaagaaaawEzSzTzUzVzWzXzWzCzCzDzEwluLaeaeaeaeafafafafoBoBafafafoBoBoBafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacafaeaeaeaeaeaeaeaeaeafafafacacacacacacacacafafafaeaeaeaeaeqEqFaeaerjrkaeaetRqJqJqJqJqJtQaeafacacacacbjbjbjacacafafafaeaeaeaeaeaeaerCrKaeaeaepuaeaeaeaewPuEuEuEuEuEzZAaAbAczNuEuEAdwRwPaeaeaeaeaeaeaaaaagaaaaaaagaaaaaaaaaaagaaxuxuAeAfAgyOAhAiAjAkzhziyOuWuZaeaeaeaeafafafoBoBoBafafafafoBoBafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacafafafafaeaeaeaeafafafacacacacacacacacacacacacafafafaeqvaeaeqEqJqJtStTqJqJtQaeaeaeaeaeaeaeafacacacbjbjbjbjbjacacacafafafafaeaeaeaeaeaeaeaeaeqEqJqJqFaeaeaeaeaeaewPuEuEuEuEuEwPwlyuxOyvaeaeaeaeaeaaaaaaagaaaaaaagaaaaaaaaaaApxuAwAqArAsAtwEAuAvAuAuAuAuAuAutraeaeaeafafafafoBoBafafafafoBoBoBafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacafafafafafafacacacacacacacacacacacacacacacacafafnfafaeaeaeaerCrKaeaeaeaeqvaeafafafafafacacbjbjbjbjbjbjbjacacacacacafafafafafafafafaeaeaeaeaepuaeaeaeaeaeaeaeaerCyQzjzjzjzjzFrKaeaeaeaeaeaeagagagagagagagagaaaaaaaahMhgwWBSwWwWAsADwEAEAFAGAHAIAJAKALaeaeaeaeafafafafoBoBafafafoBoBoBafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacbjbjbjbjbjbjacacacacacacafafaeaeaeaeaeaeaeaeaenfafafacacacacacbjbjbjbjbjbjbjbjacacacacacacacacacacacacafafaeaeaeaepuaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaaaaaaaaaaaaagaaaaaaaaaaxuxuxuACwWANAOAPAQARASATAUAVAVALaeaeaeqKnfafafafoBafafafafoBoBoBafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacbjbjbjbjbjbjbjbjbjbjbjacacacacacacafafafaeaeaeafafafafafacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacafaeaeaeaeqEqJqJqJqJqJqJqJqJqJqJqJqJqJqJqJqJqJqFaeaeaeaeaeaeaaaaaaaaaaagaaaaaaaaaaagaaxuxuwWAsAXAYAZBaAVAVBbBbBcAuaeaeaeaeafafafafafafafafoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbjacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacafafafafafacacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaepuaerjrkaeaeaenfnfaaaaaaagaaaaaaaaaaagaaaawEBdAszUBeAVAVAVBfBgBgBhALaeaeaeaeafafafafafoBafafoBoBoBafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacacacacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeqEqJtStTqJqJqJAmAlBkBkBkBkBkBkBkBkBkBkBkBkBlBmBnBowEBpBqBrAVBsBsAVALaeaeaeafafafafoBoBoBafoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacafafafaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaerCrKaeaeaenfnfagaaaaaaaaaaaaaaaaaaaaaaBtBtBuBvBtAuAuAuALALALALAuaeaeafafafafoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacafafafafafafafafafafnftraeaeaeaeaeaeaeaeaeaeaeaeaeaeagaaaaaaaaaaaaaaaaaaaaaaBtBwBxByBzBABBBtaeaeaeaeaeaeaeafafafafoBoBoBoBoBoBoBafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacacacacacacacafaeaeaeaeaeaeaeaeaeaeaeaeaeqvaeaeaaaaaaaaaaaaaaaaaaaaaaBtBCBDBEBFzYBGBtaeaeaeaeaeaeaeafafafoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacacacacacacafaeaeaeaeaeaeaeaeaeaeaeaeafnfafafaaaaaaaaaaaaaaaaaaaaaaBtBHBIBJBKzYBLBtaeaeaeaenXnfafafafoBoBoBoBoBoBoBafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacafafaeaeaeaeaeaeaeaeaeafacacafafafaaaaaaaaaaaaaaaaaaaaaaBtBMBNBNBNBNBOBtaeaeaeaeaeafafafoBoBoBoBoBoBoBafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacafafafafafafafafafafafacacacafafafaaaaaaaaaaaaaaaaaaaaBtBtBtBtBtBtBtBtaeaeaeaeafafafoBoBoBoBoBoBoBafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeaeaeaeaeaeafafafafoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacacacacacacbjbjbjbjbjacacaaaaaaaaaaaaaaaaaaaaaeaeaeaetUaeaeaeaeafafafafoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaaaaaaaaaeaeafafnfafafafafafafafoBoBoBoBoBoBafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaaaaaaaaaaaeaeafafafafafafoBoBoBoBoBoBoBafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaaaaaaaaaaaaaeaeafafafafoBoBoBoBoBoBoBafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaaaaaaaaaaaaaaaeaeafafafoBoBoBoBoBafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeafafafafoBoBoBafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaacacacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcsbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacacacacacacacacacacacbjbjbjbjbjbjacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacbjbjbjbjbjbjbjbjbjbjbjbjbjacacacacacacacacacacacacaaaaaaaaacacacacacacacacacacacacacacaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaacacacaaaaaaaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -"} - diff --git a/_maps/map_files/cyberiad/z7.dmm b/_maps/map_files/cyberiad/z7.dmm deleted file mode 100644 index 293c2639880..00000000000 --- a/_maps/map_files/cyberiad/z7.dmm +++ /dev/null @@ -1,259 +0,0 @@ -"a" = (/turf/space,/area/space) - -(1,1,1) = {" -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -"} diff --git a/_maps/map_files/generic/z5.dmm b/_maps/map_files/generic/z5.dmm new file mode 100644 index 00000000000..6bc07059180 --- /dev/null +++ b/_maps/map_files/generic/z5.dmm @@ -0,0 +1,1042 @@ +"aa" = (/turf/space,/area/space) +"ab" = (/turf/simulated/mineral,/area/mine/dangerous/unexplored) +"ac" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_z5"; name = "northeast of the Mining Asteroid"; width = 18},/turf/space,/area/space) +"ad" = (/turf/simulated/floor/plating/airless/asteroid/cave,/area/mine/dangerous/unexplored) +"ae" = (/turf/simulated/mineral/random,/area/mine/dangerous/unexplored) +"af" = (/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/airless,/area/mine/abandoned) +"ag" = (/obj/spacepod/random,/turf/space,/area/space) +"ah" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"ai" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) +"aj" = (/obj/structure/lattice,/turf/space,/area/space) +"ak" = (/turf/simulated/mineral/random/high_chance,/area/mine/dangerous/unexplored) +"al" = (/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"am" = (/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) +"an" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"ao" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"ap" = (/obj/item/stack/rods,/obj/structure/door_assembly/door_assembly_ext{name = "Broken External Airlock"},/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) +"aq" = (/turf/simulated/shuttle/wall{tag = "icon-pwall (NORTH)"; icon_state = "pwall"; dir = 1},/area/space) +"ar" = (/turf/simulated/floor/plating/airless,/turf/simulated/shuttle/wall{tag = "icon-pwall (SOUTHWEST)"; icon_state = "pwall"; dir = 10},/area/mine/abandoned) +"as" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"at" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless{icon_state = "damaged2"},/area/mine/abandoned) +"au" = (/obj/item/stack/rods,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"av" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/space) +"aw" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion"; tag = "icon-propulsion (EAST)"},/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"; tag = ""},/turf/simulated/floor/plating/airless,/area/space) +"ax" = (/obj/machinery/door/airlock/hatch,/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/mine/abandoned) +"ay" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/space) +"az" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"aA" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/mine/abandoned) +"aB" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"aC" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"aD" = (/obj/structure/alien/weeds/node,/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"aE" = (/turf/simulated/wall,/area/mine/abandoned) +"aF" = (/obj/item/stack/rods,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"aG" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-pwall (NORTHEAST)"; icon_state = "pwall"; dir = 5},/area/space) +"aH" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless{icon_state = "floorscorched2"},/area/mine/abandoned) +"aI" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "medium"},/turf/space,/area/space) +"aJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"aK" = (/turf/simulated/floor/plating/airless,/turf/simulated/shuttle/wall{tag = "icon-pwall (SOUTHEAST)"; icon_state = "pwall"; dir = 6},/area/space) +"aL" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-pwall (NORTHWEST)"; icon_state = "pwall"; dir = 9},/area/space) +"aM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"aN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"aO" = (/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/mine/abandoned) +"aP" = (/obj/item/weapon/shard,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"aQ" = (/turf/simulated/wall,/area/mine/north_outpost) +"aR" = (/obj/item/stack/rods,/obj/structure/lattice,/turf/space,/area/space) +"aS" = (/obj/item/weapon/shard,/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"aT" = (/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"aU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"aV" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/north_outpost) +"aW" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) +"aX" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"aY" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"aZ" = (/obj/item/stack/rods,/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"ba" = (/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"bb" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"bc" = (/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/mine/abandoned) +"bd" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) +"be" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) +"bf" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/simulated/floor/plating,/area/mine/north_outpost) +"bg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"bh" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/smes{charge = 5e+006},/turf/simulated/floor/plating,/area/mine/north_outpost) +"bi" = (/obj/item/weapon/shard,/obj/structure/lattice,/turf/space,/area/space) +"bj" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/mine/north_outpost) +"bk" = (/obj/machinery/atmospherics/unary/tank/air,/turf/simulated/floor/plating,/area/mine/north_outpost) +"bl" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) +"bm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"bn" = (/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"bo" = (/obj/structure/table,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) +"bp" = (/obj/structure/lattice,/turf/space,/area/mine/abandoned) +"bq" = (/obj/structure/table,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"br" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) +"bs" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/mine/north_outpost) +"bt" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/item/weapon/storage/box/lights/bulbs,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plating,/area/mine/north_outpost) +"bu" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/mine/north_outpost) +"bv" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9},/obj/machinery/meter,/turf/simulated/floor/plating,/area/mine/north_outpost) +"bw" = (/turf/simulated/mineral,/area/mine/dangerous/explored) +"bx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"by" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"bz" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"bA" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/mine/abandoned) +"bB" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/mine/north_outpost) +"bC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/turf/simulated/floor/plating,/area/mine/north_outpost) +"bD" = (/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) +"bE" = (/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"bF" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) +"bG" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/mine/abandoned) +"bH" = (/obj/structure/alien/resin/membrane,/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"bI" = (/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"bJ" = (/obj/structure/table,/obj/item/weapon/pickaxe,/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"bK" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/north_outpost) +"bL" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"bM" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"bN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"bO" = (/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"bP" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"bQ" = (/obj/machinery/mineral/unloading_machine,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/north_outpost) +"bR" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"},/area/mine/north_outpost) +"bS" = (/obj/machinery/disposal/deliveryChute{dir = 8},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/north_outpost) +"bT" = (/obj/machinery/conveyor{dir = 4; id = "mining_north"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/north_outpost) +"bU" = (/obj/effect/gibspawner/robot,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"bV" = (/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) +"bW" = (/obj/effect/gibspawner/human,/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) +"bX" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/remains/xeno,/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"bY" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "small"},/turf/space,/area/mine/abandoned) +"bZ" = (/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) +"ca" = (/obj/structure/table,/obj/item/weapon/shovel,/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"cb" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"cc" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"cd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"ce" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"cf" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "Mining North Outpost APC"; pixel_x = 26; pixel_y = 0},/obj/machinery/conveyor_switch{id = "mining_north"},/obj/machinery/camera{c_tag = "North Outpost"; dir = 8; network = list("MINE")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/north_outpost) +"cg" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/north_outpost) +"ch" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/mine/north_outpost) +"ci" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_north"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"cj" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/north_outpost) +"ck" = (/obj/machinery/door/airlock,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) +"cl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"cm" = (/obj/structure/table,/obj/item/weapon/storage/backpack/satchel,/obj/item/clothing/glasses/meson,/obj/machinery/light/small{dir = 8},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"cn" = (/obj/machinery/door/airlock/glass_mining{name = "Break Room"; req_access_txt = "54"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"co" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"cp" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"cq" = (/obj/machinery/door/window/northleft{dir = 8; name = "Pneumatic Tube Access"},/obj/machinery/disposal/deliveryChute{dir = 8; pixel_x = 8; pixel_y = 0},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/north_outpost) +"cr" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"cs" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/mine/dangerous/explored) +"ct" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/north_outpost) +"cu" = (/obj/machinery/conveyor_switch{id = "mining_north"},/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/north_outpost) +"cv" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/north_outpost) +"cw" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/north_outpost) +"cx" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/mine/abandoned) +"cy" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/mine/abandoned) +"cz" = (/obj/structure/alien/resin/wall,/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"cA" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless{icon_state = "floorgrime"},/area/mine/abandoned) +"cB" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged4"},/area/mine/abandoned) +"cC" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"cD" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"cE" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"cF" = (/obj/structure/rack,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/north_outpost) +"cG" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/mine/north_outpost) +"cH" = (/obj/structure/alien/weeds/node,/turf/simulated/floor/plating/airless{icon_state = "floorgrime"},/area/mine/abandoned) +"cI" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless{icon_state = "damaged4"},/area/mine/abandoned) +"cJ" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) +"cK" = (/turf/simulated/wall,/area/mine/dangerous/explored) +"cL" = (/obj/structure/ore_box,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) +"cM" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/mine/abandoned) +"cN" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"cO" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"cP" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"cQ" = (/obj/structure/alien/weeds/node,/turf/simulated/floor/plating/airless{icon_state = "damaged2"},/area/mine/abandoned) +"cR" = (/obj/effect/decal/remains/human,/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"cS" = (/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) +"cT" = (/obj/structure/table,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) +"cU" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; initialize_directions = 10},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/north_outpost) +"cV" = (/obj/structure/glowshroom,/turf/simulated/mineral/random,/area/mine/dangerous/explored) +"cW" = (/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned) +"cX" = (/obj/structure/rack,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) +"cY" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/dangerous/explored) +"cZ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"da" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/dangerous/explored) +"db" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/space,/area/mine/north_outpost) +"dc" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost) +"dd" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost) +"de" = (/turf/simulated/floor/mech_bay_recharge_floor/airless,/area/mine/north_outpost) +"df" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/north_outpost) +"dg" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_n1_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/north_outpost) +"dh" = (/obj/structure/glowshroom,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) +"di" = (/obj/structure/alien/resin/wall,/turf/simulated/floor/plating/airless{icon_state = "floorgrime"},/area/mine/abandoned) +"dj" = (/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/airless,/area/mine/abandoned) +"dk" = (/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) +"dl" = (/obj/effect/decal/remains/human,/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/mine/abandoned) +"dm" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/dangerous/explored) +"dn" = (/obj/machinery/door/airlock/external{name = "Mining Bridge"; req_access_txt = "54"},/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost) +"do" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/north_outpost) +"dp" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_n1_inner"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"dq" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "mining_n1_pump"},/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/north_outpost) +"dr" = (/obj/machinery/light/small{dir = 4},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_n1_sensor"; pixel_x = 25; pixel_y = -5},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "mining_n1_airlock"; pixel_x = 25; pixel_y = 5; req_access_txt = null; tag_airpump = "mining_n1_pump"; tag_chamber_sensor = "mining_n1_sensor"; tag_exterior_door = "mining_n1_outer"; tag_interior_door = "mining_n1_inner"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "mining_n1_pump"},/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"ds" = (/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap,/obj/structure/glowshroom,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) +"dt" = (/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"du" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/mine/abandoned) +"dv" = (/obj/effect/decal/remains/xeno,/obj/item/clothing/suit/space/syndicate/black/red,/obj/item/clothing/head/helmet/space/syndicate/black/red,/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless{icon_state = "damaged4"},/area/mine/abandoned) +"dw" = (/obj/item/weapon/storage/toolbox/syndicate,/obj/structure/alien/weeds/node,/turf/simulated/floor/plating/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"dx" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/space,/area/mine/north_outpost) +"dy" = (/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/unexplored) +"dz" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/north_outpost) +"dA" = (/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/dangerous/explored) +"dB" = (/obj/item/weapon/shard,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) +"dC" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) +"dD" = (/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/mine/abandoned) +"dE" = (/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel/airless{icon_state = "dark"},/area/mine/abandoned) +"dF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"dG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"dH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"dI" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) +"dJ" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/dangerous/explored) +"dK" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/dangerous/explored) +"dL" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/dangerous/explored) +"dM" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/dangerous/explored) +"dN" = (/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/north_outpost) +"dO" = (/obj/structure/lattice,/obj/structure/window/reinforced,/turf/space,/area/mine/dangerous/explored) +"dP" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 5},/area/mine/dangerous/explored) +"dQ" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) +"dR" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) +"dS" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/mine/abandoned) +"dT" = (/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "green"},/area/mine/abandoned) +"dU" = (/obj/effect/gibspawner/human,/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/mine/abandoned) +"dV" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"dW" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/xenos,/obj/item/clothing/head/xenos,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "green"},/area/mine/abandoned) +"dX" = (/obj/machinery/door/airlock/glass{name = "Glass Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/abandoned) +"dY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/abandoned) +"dZ" = (/obj/item/weapon/table_parts,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) +"ea" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/dangerous/explored) +"eb" = (/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/abandoned) +"ec" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille/broken,/obj/item/weapon/shard{icon_state = "small"},/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"ed" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/laborcamp) +"ee" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/turf/space,/area/mine/dangerous/explored) +"ef" = (/obj/structure/rack,/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/abandoned) +"eg" = (/turf/simulated/mineral/random/labormineral,/area/space) +"eh" = (/turf/simulated/wall/r_wall,/area/mine/dangerous/explored) +"ei" = (/turf/simulated/mineral/random,/area/space) +"ej" = (/obj/structure/girder/displaced,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/abandoned) +"ek" = (/obj/item/weapon/rack_parts,/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/abandoned) +"el" = (/obj/structure/girder,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/abandoned) +"em" = (/turf/simulated/mineral/random/labormineral,/area/mine/dangerous/unexplored) +"en" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) +"eo" = (/turf/simulated/wall/r_wall,/area/mine/laborcamp) +"ep" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/obj/item/device/radio/intercom/locked/prison{pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"eq" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"er" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"es" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/obj/machinery/camera{c_tag = "Labor Camp Storage"; dir = 8; network = list("Labor")},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"et" = (/obj/structure/table,/obj/item/device/healthanalyzer,/obj/item/stack/medical/bruise_pack/advanced,/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/laborcamp) +"eu" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/laborcamp) +"ev" = (/obj/machinery/camera{c_tag = "Labor Camp Medical"; dir = 8; network = list("Labor")},/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/item/device/radio/intercom/locked/prison{pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/laborcamp) +"ew" = (/obj/structure/sign/redcross{pixel_y = 32},/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/laborcamp) +"ex" = (/turf/simulated/wall,/area/mine/laborcamp) +"ey" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"ez" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"eA" = (/obj/structure/sign/poster/random{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"eB" = (/turf/simulated/wall,/area/mine/dangerous/unexplored) +"eC" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp) +"eD" = (/obj/machinery/door/airlock/external{name = "External Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/abandoned) +"eE" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/sign/poster/random{pixel_x = -32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp) +"eF" = (/obj/machinery/light/small{dir = 4},/obj/structure/stool/bed/roller,/obj/machinery/light_switch{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp) +"eG" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=1-Storage"; location = "7-Sleeper"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp) +"eH" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/closet/crate/internals,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"eI" = (/obj/machinery/light/small,/obj/machinery/light_switch{pixel_y = -28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"eJ" = (/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) +"eK" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=2-NMine"; location = "1-Storage"},/mob/living/simple_animal/bot/secbot/ofitser,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) +"eL" = (/turf/simulated/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/dangerous/explored) +"eM" = (/obj/effect/decal/remains/human,/turf/simulated/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/dangerous/explored) +"eN" = (/turf/simulated/mineral/random/labormineral,/area/mine/dangerous/explored) +"eO" = (/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/dangerous/explored) +"eP" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/mine/laborcamp) +"eQ" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=3-SMine"; location = "2-NMine"},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) +"eR" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/mine/laborcamp) +"eS" = (/obj/machinery/door/airlock{name = "Labor Camp Storage"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"eT" = (/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/dangerous/explored) +"eU" = (/obj/structure/girder/reinforced,/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/dangerous/explored) +"eV" = (/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/abandoned) +"eW" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/unexplored) +"eX" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/abandoned) +"eY" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/light_switch{pixel_x = 27; pixel_y = 0},/obj/item/device/radio/intercom/locked/prison{pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"eZ" = (/obj/structure/table,/obj/item/trash/plate,/obj/item/weapon/kitchen/utensil/fork,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fa" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fb" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/item/device/radio/intercom/locked/prison{pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fc" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fd" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fe" = (/obj/structure/sign/poster/random{pixel_x = -32},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/dangerous/explored) +"ff" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) +"fg" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) +"fh" = (/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/dangerous/explored) +"fi" = (/obj/item/device/radio/intercom/locked/prison{pixel_y = 25},/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/dangerous/explored) +"fj" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille/broken,/obj/item/stack/rods,/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/abandoned) +"fk" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=7-Sleeper"; location = "6-Vending"},/mob/living/simple_animal/mouse,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fl" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fm" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fn" = (/obj/machinery/door/poddoor/preopen{id_tag = "Labor"; name = "labor camp blast door"},/obj/machinery/door/airlock{name = "Labor Camp External Access"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fo" = (/obj/machinery/door/airlock{name = "Vending"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fp" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fq" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fr" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/dangerous/explored) +"fs" = (/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (SOUTHWEST)"; icon_state = "asteroidwarning"; dir = 10},/area/mine/dangerous/unexplored) +"ft" = (/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (SOUTHEAST)"; icon_state = "asteroidwarning"; dir = 6},/area/mine/dangerous/unexplored) +"fu" = (/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/dangerous/unexplored) +"fv" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/obj/structure/sign/poster/random{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fw" = (/obj/machinery/vending/sustenance,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fx" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fy" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/wall,/area/mine/laborcamp) +"fz" = (/obj/machinery/flasher{id = "Labor"; pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/wall,/area/mine/laborcamp) +"fA" = (/obj/machinery/conveyor_switch/oneway{id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fB" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "asteroidwarning"; tag = "icon-asteroidwarning"},/area/mine/laborcamp) +"fC" = (/turf/simulated/floor/plasteel{icon_state = "asteroidwarning"; tag = "icon-asteroidwarning"},/area/mine/dangerous/explored) +"fD" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fE" = (/obj/machinery/light_switch{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fF" = (/obj/machinery/camera{c_tag = "Labor Camp Central"; network = list("Labor")},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fG" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fH" = (/obj/machinery/conveyor{dir = 2; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fI" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/laborcamp) +"fJ" = (/obj/machinery/mineral/unloading_machine{dir = 1; input_dir = 4; output_dir = 8},/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/laborcamp) +"fK" = (/obj/structure/ore_box,/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/dangerous/explored) +"fL" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/dangerous/explored) +"fM" = (/turf/simulated/floor/plasteel,/area/mine/laborcamp) +"fN" = (/obj/machinery/mineral/processing_unit_console{machinedir = 6},/turf/simulated/wall,/area/mine/laborcamp) +"fO" = (/obj/machinery/door/airlock/external{id_tag = "laborcamp_away"; name = "Labor Camp Airlock"; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fP" = (/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{id = "Labor"; name = "Labor Camp Lockdown"; pixel_x = 0; pixel_y = -28; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fQ" = (/obj/machinery/door/poddoor/preopen{id_tag = "Labor"; name = "labor camp blast door"},/obj/machinery/door/airlock/glass_security{name = "Labor Camp Shuttle Cockpit"; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fR" = (/obj/structure/plasticflaps,/obj/machinery/conveyor{dir = 2; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fS" = (/obj/machinery/camera{c_tag = "Labor Camp External"; dir = 4; network = list("Labor")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "asteroidwarning"; tag = "icon-asteroidwarning (NORTH)"},/area/mine/dangerous/explored) +"fT" = (/obj/machinery/conveyor_switch/oneway{id = "gulag"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "asteroidwarning"; tag = "icon-asteroidwarning (NORTH)"},/area/mine/dangerous/explored) +"fU" = (/obj/machinery/mineral/stacking_unit_console{machinedir = 2},/turf/simulated/wall,/area/mine/laborcamp) +"fV" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "asteroidwarning"; tag = "icon-asteroidwarning (NORTH)"},/area/mine/dangerous/explored) +"fW" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fX" = (/obj/machinery/mineral/processing_unit{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"fY" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/dangerous/explored) +"fZ" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/laborcamp) +"ga" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/space) +"gb" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/laborcamp) +"gc" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) +"gd" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/space) +"ge" = (/obj/machinery/computer/shuttle/labor/one_way,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"gf" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=6-Vending"; location = "5-Central"},/obj/structure/sign/poster/random{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"gg" = (/obj/machinery/mineral/stacking_machine{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"gh" = (/turf/simulated/wall/r_wall,/area/mine/laborcamp/security) +"gi" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"gj" = (/obj/machinery/conveyor{dir = 10; icon_state = "conveyor0"; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"gk" = (/obj/machinery/camera{c_tag = "Labor Camp Security Hallway"; dir = 8; network = list("Labor"); pixel_x = 0; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) +"gl" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/dangerous/explored) +"gm" = (/turf/simulated/wall,/area/mine/laborcamp/security) +"gn" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) +"go" = (/obj/docking_port/stationary{dir = 8; dwidth = 2; height = 5; id = "laborcamp_away"; name = "labor camp"; width = 9},/turf/space,/area/space) +"gp" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) +"gq" = (/obj/item/clothing/under/soviet,/obj/item/clothing/head/ushanka,/turf/simulated/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/dangerous/explored) +"gr" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/dangerous/explored) +"gs" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/dangerous/explored) +"gt" = (/obj/machinery/door/airlock/external{name = "Mining Bridge"; req_access_txt = "54"},/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost) +"gu" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/obj/machinery/light{dir = 1},/turf/space,/area/mine/west_outpost) +"gv" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/dangerous/explored) +"gw" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/space,/area/mine/west_outpost) +"gx" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/dangerous/explored) +"gy" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/dangerous/explored) +"gz" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/dangerous/explored) +"gA" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/mine/laborcamp/security) +"gB" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp External Access"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"gC" = (/obj/machinery/telecomms/relay/preset/mining,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/mine/maintenance) +"gD" = (/obj/machinery/camera{c_tag = "Mining Outpost Port Exterior Airlock"; dir = 4; network = list("Mining Outpost")},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "mining_n1_pump"},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/north_outpost) +"gE" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/laborcamp/security) +"gF" = (/obj/machinery/door/airlock/maintenance{name = "Labor Camp Maintenance"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"gG" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/bluegrid,/area/mine/maintenance) +"gH" = (/obj/machinery/camera{c_tag = "Communications Relay"; dir = 8; network = list("MINE")},/turf/simulated/floor/bluegrid,/area/mine/maintenance) +"gI" = (/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) +"gJ" = (/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_n1_pump"},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/north_outpost) +"gK" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) +"gL" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) +"gM" = (/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) +"gN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/wall,/area/mine/laborcamp/security) +"gO" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"gP" = (/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"gQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/laborcamp/security) +"gR" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/north_outpost) +"gS" = (/obj/item/clothing/under/rank/miner,/obj/effect/decal/remains/human,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) +"gT" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/dangerous/explored) +"gU" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_n1_outer"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/turf/simulated/floor/plating,/area/mine/north_outpost) +"gV" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/obj/machinery/light,/turf/space,/area/mine/west_outpost) +"gW" = (/turf/simulated/floor/carpet,/area/mine/living_quarters) +"gX" = (/turf/simulated/mineral/random,/area/mine/dangerous/explored) +"gY" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall/r_wall,/area/mine/laborcamp/security) +"gZ" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) +"ha" = (/obj/structure/stool/bed/chair/office/dark,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) +"hb" = (/obj/machinery/door_control{id = "Labor"; name = "Labor Camp Lockdown"; pixel_x = 28; pixel_y = 7; req_access_txt = "2"},/obj/machinery/flasher_button{id = "Labor"; pixel_x = 26; pixel_y = -3},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) +"hc" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"hd" = (/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"he" = (/obj/machinery/door/airlock{id_tag = "miningdorm1"; name = "Room 1"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/mine/living_quarters) +"hf" = (/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"hg" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) +"hh" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) +"hi" = (/obj/machinery/computer/secure_data,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) +"hj" = (/obj/machinery/computer/security{name = "Labor Camp Monitoring"; network = list("Labor")},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) +"hk" = (/obj/machinery/computer/prisoner,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) +"hl" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) +"hm" = (/obj/machinery/space_heater,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"hn" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"ho" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"hp" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/dangerous/explored) +"hq" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/living_quarters) +"hr" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/west_outpost) +"hs" = (/obj/machinery/door/airlock{id_tag = "miningdorm2"; name = "Room 2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/mine/living_quarters) +"ht" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost) +"hu" = (/turf/simulated/floor/plating/airless,/area/space) +"hv" = (/turf/simulated/mineral,/area/space) +"hw" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost) +"hx" = (/turf/simulated/floor/mech_bay_recharge_floor/airless,/area/mine/west_outpost) +"hy" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/west_outpost) +"hz" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/mine/west_outpost) +"hA" = (/obj/machinery/computer/arcade,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"hB" = (/turf/space,/area/mine/dangerous/unexplored) +"hC" = (/obj/structure/lattice,/turf/space,/area/mine/dangerous/explored) +"hD" = (/turf/space,/area/mine/dangerous/explored) +"hE" = (/obj/machinery/vending/cigarette,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"hF" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/turf/space,/area/mine/dangerous/explored) +"hG" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"hH" = (/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"hI" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/turf/space,/area/mine/dangerous/explored) +"hJ" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/space,/area/mine/dangerous/explored) +"hK" = (/turf/simulated/wall/r_wall,/area/mine/maintenance) +"hL" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost) +"hM" = (/obj/structure/rack,/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost) +"hN" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost) +"hO" = (/turf/simulated/floor/bluegrid,/area/mine/maintenance) +"hP" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Mining Communications APC"; pixel_x = 1; pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/mine/maintenance) +"hQ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/trunk,/obj/machinery/door/window/northleft{dir = 2; name = "Pneumatic Tube Access"},/obj/machinery/disposal/deliveryChute{pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost) +"hR" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/mine/maintenance) +"hS" = (/obj/structure/rack,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost) +"hT" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/space,/area/mine/dangerous/explored) +"hU" = (/obj/structure/lattice,/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/space,/area/mine/dangerous/explored) +"hV" = (/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/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/west_outpost) +"hW" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/west_outpost) +"hX" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"hY" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 31},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"hZ" = (/obj/machinery/door/airlock{id_tag = "miningdorm3"; name = "Room 3"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/mine/living_quarters) +"ia" = (/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/dangerous/explored) +"ib" = (/obj/item/stack/sheet/metal{amount = 5},/obj/structure/closet/crate,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/dangerous/explored) +"ic" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/eva) +"id" = (/turf/simulated/wall,/area/mine/living_quarters) +"ie" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/west_outpost) +"if" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/west_outpost) +"ig" = (/obj/machinery/door/airlock/external{name = "Mining West Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"ih" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/carpet,/area/mine/living_quarters) +"ii" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/carpet,/area/mine/living_quarters) +"ij" = (/obj/machinery/door/airlock/external{name = "Mining West Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost) +"ik" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/dangerous/explored) +"il" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"im" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"in" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) +"io" = (/obj/structure/table,/turf/simulated/floor/carpet,/area/mine/living_quarters) +"ip" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) +"iq" = (/obj/structure/table,/obj/item/weapon/storage/backpack/satchel,/obj/item/clothing/glasses/meson,/obj/machinery/light/small{dir = 8},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"ir" = (/obj/machinery/door/airlock/glass_mining{name = "Break Room"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"is" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"it" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"iu" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/west_outpost) +"iv" = (/obj/machinery/camera{c_tag = "Crew Area"; dir = 1; network = list("MINE")},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"iw" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"ix" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_n1_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null},/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/dangerous/explored) +"iy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"iz" = (/obj/structure/disposalpipe/segment,/turf/simulated/mineral/random,/area/mine/dangerous/unexplored) +"iA" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/carpet,/area/mine/living_quarters) +"iB" = (/obj/machinery/camera{c_tag = "Storage Room"; dir = 1; network = list("MINE")},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"iC" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/mine/maintenance) +"iD" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/mine/laborcamp/security) +"iE" = (/obj/structure/girder,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp/security) +"iF" = (/obj/machinery/door/airlock/external{id_tag = "laborcamp_away"; name = "Labor Camp Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) +"iG" = (/obj/machinery/door/airlock/external{id_tag = "laborcamp_away"; name = "Labor Camp Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) +"iH" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) +"iI" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) +"iJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"iK" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/mine/west_outpost) +"iL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"iM" = (/obj/machinery/conveyor_switch{id = "mining_west"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"iN" = (/obj/machinery/door/airlock/glass{name = "Crew Area"; req_access_txt = "48"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"iO" = (/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9},/turf/simulated/floor/bluegrid,/area/mine/maintenance) +"iP" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Communications"; req_access_txt = "48"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "vault"},/area/mine/maintenance) +"iQ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) +"iR" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/machinery/door/airlock/glass_security{name = "Labor Camp Backroom"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"iS" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) +"iT" = (/obj/structure/disposalpipe/segment,/obj/structure/sign/deathsposal,/turf/simulated/wall,/area/mine/living_quarters) +"iU" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"iV" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/laborcamp/security) +"iW" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Labor Camp APC"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; initialize_directions = 10},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=5-Central"; location = "4-Maint"},/turf/simulated/floor/plating,/area/mine/laborcamp) +"iX" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/mine/laborcamp/security) +"iY" = (/turf/simulated/wall,/area/mine/west_outpost) +"iZ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/dangerous/explored) +"ja" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Monitoring"; req_access_txt = "2"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) +"jb" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"jc" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"jd" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"je" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm3"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/carpet,/area/mine/living_quarters) +"jf" = (/obj/machinery/power/apc{dir = 2; name = "Mining West Outpost APC"; pixel_x = 1; pixel_y = -23},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"jg" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"jh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/camera{c_tag = "West Outpost"; dir = 1; network = list("MINE")},/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"ji" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"jj" = (/obj/machinery/mineral/unloading_machine{dir = 2},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost) +"jk" = (/obj/structure/table,/obj/item/weapon/pickaxe,/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"jl" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"},/area/mine/west_outpost) +"jm" = (/obj/machinery/conveyor{dir = 4; id = "mining_west"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost) +"jn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/west_outpost) +"jo" = (/obj/structure/toilet{dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/mine/living_quarters) +"jp" = (/obj/machinery/door/airlock{name = "Toilet"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/mine/living_quarters) +"jq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"jr" = (/obj/machinery/power/apc{dir = 1; name = "Mining Station Port Wing APC"; pixel_x = 1; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"js" = (/obj/machinery/camera{c_tag = "Crew Area Hallway"; network = list("MINE")},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"jt" = (/obj/structure/window/reinforced,/obj/structure/lattice,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/space,/area/mine/living_quarters) +"ju" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/wall,/area/mine/laborcamp/security) +"jv" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/dangerous/explored) +"jw" = (/obj/structure/table,/obj/machinery/microwave{pixel_y = 6},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"jx" = (/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"jy" = (/obj/item/device/radio/intercom/department/security{pixel_y = 25},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) +"jz" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"jA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) +"jB" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"jC" = (/obj/machinery/recharge_station,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"jD" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"jE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 4; name = "Labor Camp Security APC"; pixel_x = 24; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/camera{c_tag = "Labor Camp Monitoring"; network = list("Labor")},/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) +"jF" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"jG" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/wall,/area/mine/laborcamp/security) +"jH" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"jI" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/dangerous/explored) +"jJ" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=4-Maint"; location = "3-SMine"},/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) +"jK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/dangerous/explored) +"jL" = (/turf/simulated/wall,/area/mine/eva) +"jM" = (/obj/structure/table,/obj/item/weapon/shovel,/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"jN" = (/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"jO" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"jP" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/wall,/area/mine/west_outpost) +"jQ" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/mine/west_outpost) +"jR" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/mine/west_outpost) +"jS" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_west"},/obj/structure/plasticflaps/mining,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"jT" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"jU" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"jV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"jW" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"jX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"jY" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"jZ" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"ka" = (/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"kb" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"kc" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"kd" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"ke" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/eva) +"kf" = (/obj/structure/rack,/obj/item/clothing/suit/space/hardsuit/mining,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/mining,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/mine/eva) +"kg" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/eva) +"kh" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 5},/area/space) +"ki" = (/obj/machinery/light,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) +"kj" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/mine/eva) +"kk" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_east_inner"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/mine/eva) +"kl" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"km" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"kn" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/simple/visible{dir = 5},/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"ko" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"kp" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"kq" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"kr" = (/obj/item/weapon/cigbutt,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"ks" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"kt" = (/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"ku" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) +"kv" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) +"kw" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) +"kx" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_east_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/turf/simulated/floor/plasteel,/area/mine/eva) +"ky" = (/turf/simulated/wall/r_wall,/area/mine/eva) +"kz" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva) +"kA" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/mine/west_outpost) +"kB" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/mine/west_outpost) +"kC" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/item/weapon/storage/box/lights/bulbs,/turf/simulated/floor/plating,/area/mine/west_outpost) +"kD" = (/obj/machinery/conveyor_switch{id = "mining_west"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/west_outpost) +"kE" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/west_outpost) +"kF" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"kG" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"kH" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/mine/living_quarters) +"kI" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"kJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"kK" = (/obj/machinery/door/airlock/mining{name = "Mining Station Storage"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"kL" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/camera{c_tag = "Mining Outpost Starboard Connector"; network = list("Mining Outpost")},/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel,/area/mine/lobby) +"kM" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"kN" = (/obj/structure/sign/xeno_warning_mining,/turf/simulated/wall,/area/mine/living_quarters) +"kO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"kP" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden,/turf/simulated/floor/plasteel,/area/mine/eva) +"kQ" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_east_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null},/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (EAST)"; icon_state = "asteroidwarning"; dir = 4},/area/space) +"kR" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_east_outer"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/turf/simulated/floor/plating,/area/mine/eva) +"kS" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/mine/eva) +"kT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"kU" = (/obj/structure/rack,/obj/item/clothing/suit/space/hardsuit/mining,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/mining,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/eva) +"kV" = (/obj/structure/rack,/obj/machinery/light/small{dir = 1},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/item/clothing/suit/space/hardsuit/mining,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/mining,/turf/simulated/floor/plasteel,/area/mine/eva) +"kW" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/rack,/obj/item/weapon/pickaxe,/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"kX" = (/turf/simulated/wall/r_wall,/area/mine/lobby) +"kY" = (/obj/machinery/camera{c_tag = "Mining Outpost EVA"; dir = 4; network = list("Mining Outpost")},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/structure/rack,/obj/item/clothing/suit/space/hardsuit/mining,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/mining,/turf/simulated/floor/plasteel,/area/mine/eva) +"kZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"la" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/living_quarters) +"lb" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plasteel,/area/mine/eva) +"lc" = (/obj/structure/rack,/obj/item/weapon/storage/backpack/satchel,/obj/item/weapon/pickaxe,/obj/item/weapon/storage/belt/utility,/turf/simulated/floor/plasteel,/area/mine/eva) +"ld" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/living_quarters) +"le" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/mine/west_outpost) +"lf" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"lg" = (/obj/structure/cable,/obj/machinery/power/smes{charge = 5e+006},/turf/simulated/floor/plating,/area/mine/west_outpost) +"lh" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"li" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "48"},/turf/simulated/floor/plating,/area/mine/living_quarters) +"lj" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"lk" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"ll" = (/turf/simulated/floor/plating/airless/asteroid,/area/space) +"lm" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/mine/lobby) +"ln" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"lo" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/mine/lobby) +"lp" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal/deliveryChute,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/northleft{dir = 2; name = "Pneumatic Tube Access"},/turf/simulated/floor/plasteel,/area/mine/lobby) +"lq" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal/deliveryChute{dir = 8},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost) +"lr" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/mine/production) +"ls" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/obj/item/device/gps/mining{gpstag = "MINE2"},/obj/item/device/gps/mining{gpstag = "MINE1"},/obj/item/device/gps/mining,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -3},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/mine/eva) +"lt" = (/obj/structure/sink{pixel_y = 30},/obj/machinery/light/small,/obj/structure/mirror{pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/mine/living_quarters) +"lu" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/mine/eva) +"lv" = (/obj/machinery/hologram/holopad,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/eva) +"lw" = (/obj/machinery/atmospherics/unary/portables_connector,/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plasteel,/area/mine/eva) +"lx" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "mining_east_pump"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva) +"ly" = (/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/plasteel{icon_state = "floorgrime"},/area/mine/eva) +"lz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"lA" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/mine/living_quarters) +"lB" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/lobby) +"lC" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/living_quarters) +"lD" = (/turf/simulated/floor/plasteel,/area/mine/lobby) +"lE" = (/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/mine/lobby) +"lF" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/mine/living_quarters) +"lG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/mine/living_quarters) +"lH" = (/obj/structure/rack,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/regular{pixel_x = -3; pixel_y = -3},/turf/simulated/floor/plating,/area/mine/living_quarters) +"lI" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"lJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"lK" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_west_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"lL" = (/obj/machinery/camera{c_tag = "Mining Outpost Port Connector"; dir = 1; network = list("Mining Outpost")},/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/mine/living_quarters) +"lM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plasteel,/area/mine/lobby) +"lN" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/lobby) +"lO" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/eva) +"lP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Mining Station EVA"; req_access_txt = "54"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/eva) +"lQ" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/mine/living_quarters) +"lR" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/west_outpost) +"lS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9},/turf/simulated/floor/plasteel,/area/mine/eva) +"lT" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/mine/living_quarters) +"lU" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/lobby) +"lV" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters) +"lW" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_inner"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"lX" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/mine/living_quarters) +"lY" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "mining_west_pump"},/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/living_quarters) +"lZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/lobby) +"ma" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/lobby) +"mb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/lobby) +"mc" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/mine/lobby) +"md" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/mine/lobby) +"me" = (/obj/machinery/light/small{dir = 4},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_west_sensor"; pixel_x = 25; pixel_y = -5},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "mining_west_pump"; tag_exterior_door = "mining_west_outer"; frequency = 1379; id_tag = "mining_west_airlock"; tag_interior_door = "mining_west_inner"; pixel_x = 25; pixel_y = 5; req_access_txt = null; tag_chamber_sensor = "mining_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "mining_west_pump"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) +"mf" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/living_quarters) +"mg" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/turf/space,/area/mine/living_quarters) +"mh" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/lobby) +"mi" = (/obj/structure/cable,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/simulated/floor/plating,/area/mine/living_quarters) +"mj" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/mine/living_quarters) +"mk" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/living_quarters) +"ml" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/mine/living_quarters) +"mm" = (/obj/machinery/camera{c_tag = "Mining Outpost Port Exterior Airlock"; dir = 4; network = list("Mining Outpost")},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "mining_west_pump"},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/living_quarters) +"mn" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/turf/space,/area/mine/lobby) +"mo" = (/turf/simulated/floor/plasteel{icon_state = "loadingarea"},/area/mine/production) +"mp" = (/obj/machinery/power/apc{dir = 2; name = "Mining EVA APC"; pixel_x = 1; pixel_y = -23},/obj/structure/cable,/turf/simulated/floor/plasteel,/area/mine/eva) +"mq" = (/obj/machinery/light/small,/obj/structure/dispenser/oxygen,/turf/simulated/floor/plasteel,/area/mine/eva) +"mr" = (/obj/machinery/mineral/equipment_vendor,/turf/simulated/floor/plasteel,/area/mine/eva) +"ms" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/mine/west_outpost) +"mt" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/living_quarters) +"mu" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/eva) +"mv" = (/obj/machinery/camera{c_tag = "Mining Outpost Starboard External Airlock"; dir = 1; network = list("Mining Outpost")},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_east_sensor"; pixel_x = 0; pixel_y = -25},/obj/structure/ore_box,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_east_pump"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva) +"mw" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "mining_east_pump"; tag_exterior_door = "mining_east_outer"; frequency = 1379; id_tag = "mining_east_airlock"; tag_interior_door = "mining_east_inner"; pixel_x = 0; pixel_y = -25; req_access_txt = null; tag_chamber_sensor = "mining_east_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_east_pump"},/turf/simulated/floor/plasteel,/area/mine/eva) +"mx" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 6},/area/space) +"my" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/lobby) +"mz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/mine/lobby) +"mA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/mine/lobby) +"mB" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/lobby) +"mC" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/lobby) +"mD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/lobby) +"mE" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/lobby) +"mF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/mine/lobby) +"mG" = (/turf/simulated/wall,/area/mine/production{name = "Mining Station Mech Bay"}) +"mH" = (/obj/structure/extinguisher_cabinet,/turf/simulated/wall,/area/mine/production{name = "Mining Station Mech Bay"}) +"mI" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/lobby) +"mJ" = (/obj/effect/decal/remains/human{desc = "Seems to be all that remains of a poor miner that didn't heed the warning signs."},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) +"mK" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) +"mL" = (/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/screwdriver,/obj/item/weapon/crowbar,/obj/machinery/power/apc{dir = 1; name = "Mining Station Mech Bay APC"; pixel_x = 1; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) +"mM" = (/obj/structure/table/reinforced,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) +"mN" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/mine/production{name = "Mining Station Mech Bay"}) +"mO" = (/obj/machinery/mech_bay_recharge_port,/turf/simulated/floor/plating,/area/mine/production{name = "Mining Station Mech Bay"}) +"mP" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) +"mQ" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 5},/area/mine/dangerous/explored) +"mR" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/dangerous/explored) +"mS" = (/obj/machinery/atmospherics/unary/tank/air{dir = 1; initialize_directions = 0; level = 1},/turf/simulated/floor/plating,/area/mine/west_outpost) +"mT" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) +"mU" = (/obj/machinery/power/terminal{dir = 4},/obj/machinery/light/small,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/west_outpost) +"mV" = (/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) +"mW" = (/obj/machinery/light_switch{pixel_x = 23; pixel_y = 0},/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin,/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) +"mX" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/living_quarters) +"mY" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) +"mZ" = (/obj/machinery/status_display{dir = 4; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/lobby) +"na" = (/turf/simulated/wall,/area/mine/lobby) +"nb" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/lobby) +"nc" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Loading Bay"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/production) +"nd" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) +"ne" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Mining Station Mech Bay"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) +"nf" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) +"ng" = (/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production{name = "Mining Station Mech Bay"}) +"nh" = (/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/mine/production{name = "Mining Station Mech Bay"}) +"ni" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/mine/production{name = "Mining Station Mech Bay"}) +"nj" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/dangerous/explored) +"nk" = (/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/dangerous/explored) +"nl" = (/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/mine/living_quarters) +"nm" = (/obj/machinery/sleeper{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/mine/living_quarters) +"nn" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 0; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) +"no" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/camera{c_tag = "Mining Outpost Sleeper Room"; dir = 1; network = list("Mining Outpost")},/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) +"np" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/mine/living_quarters) +"nq" = (/obj/machinery/power/apc{dir = 8; name = "Mining Station Starboard Wing APC"; pixel_x = -27; pixel_y = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel,/area/mine/lobby) +"nr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/mine/production) +"ns" = (/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) +"nt" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Mining Station Mech Bay"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) +"nu" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) +"nv" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel,/area/mine/lobby) +"nw" = (/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/plasteel{icon_state = "warning"},/area/mine/living_quarters) +"nx" = (/obj/machinery/mineral/equipment_vendor,/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) +"ny" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/living_quarters) +"nz" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_outer"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/turf/simulated/floor/plating,/area/mine/living_quarters) +"nA" = (/obj/structure/ore_box,/obj/machinery/camera{c_tag = "Mining Outpost Mech Bay"; dir = 1; network = list("Mining Outpost")},/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/production{name = "Mining Station Mech Bay"}) +"nB" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/dangerous/explored) +"nC" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/dangerous/explored) +"nD" = (/obj/effect/spawner/window/reinforced,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/mine/lobby) +"nE" = (/obj/effect/spawner/window/reinforced,/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,/turf/simulated/floor/plating,/area/mine/lobby) +"nF" = (/obj/item/device/radio/beacon,/turf/simulated/floor/plasteel,/area/mine/lobby) +"nG" = (/obj/machinery/computer/shuttle/mining,/turf/simulated/floor/plasteel,/area/mine/lobby) +"nH" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel,/area/mine/lobby) +"nI" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) +"nJ" = (/turf/simulated/wall,/area/mine/living_quarters{name = "Mining Station Break Room"}) +"nK" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/mine/living_quarters{name = "Mining Station Break Room"}) +"nL" = (/obj/machinery/door/airlock/external{id_tag = "mining_away"; name = "Mining Dock Airlock"; req_access_txt = "48"},/turf/simulated/floor/plating,/area/mine/lobby) +"nM" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) +"nN" = (/turf/simulated/floor/plating,/area/mine/living_quarters) +"nO" = (/obj/machinery/door/airlock/external{id_tag = "mining_away"; name = "Mining Dock Airlock"; req_access_txt = "48"},/turf/simulated/floor/plasteel,/area/mine/lobby) +"nP" = (/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters) +"nQ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/camera{c_tag = "Mining Shuttle Airlock"; dir = 8; network = list("Mining Outpost")},/turf/simulated/floor/plasteel,/area/mine/lobby) +"nR" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"nS" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"nT" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"nU" = (/obj/machinery/power/apc{dir = 1; name = "Mining Station Break Room APC"; pixel_x = 1; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"nV" = (/obj/machinery/hologram/holopad,/obj/machinery/firealarm{pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"nW" = (/obj/item/weapon/twohanded/required/kirbyplants,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"nX" = (/obj/machinery/alarm{pixel_y = 25},/obj/structure/closet/crate/can,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"nY" = (/obj/machinery/door/firedoor,/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/living_quarters{name = "Mining Station Break Room"}) +"nZ" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/lobby) +"oa" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/mine/lobby) +"ob" = (/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (EAST)"; icon_state = "asteroidwarning"; dir = 4},/area/mine/dangerous/explored) +"oc" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"od" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Mining Break Room"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/lobby) +"oe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"of" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"og" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"oh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"oi" = (/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"oj" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/lobby) +"ok" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"ol" = (/obj/machinery/door/firedoor,/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating,/area/mine/lobby) +"om" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"on" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"oo" = (/obj/machinery/camera{c_tag = "Mining Outpost Break Room"; dir = 8; network = list("Mining Outpost")},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"op" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/lobby) +"oq" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Mining Break Room"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/lobby) +"or" = (/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"os" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"ot" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"ou" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_west_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null},/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/dangerous/explored) +"ov" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/dangerous/explored) +"ow" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel,/area/mine/lobby) +"ox" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/mine/lobby) +"oy" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/light/small,/obj/structure/disposalpipe/junction,/turf/simulated/floor/plasteel,/area/mine/lobby) +"oz" = (/obj/docking_port/stationary{dir = 8; dwidth = 3; height = 5; id = "mining_away"; name = "asteroid mine"; width = 7},/turf/space,/area/space) +"oB" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"oC" = (/obj/machinery/light/small,/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"oD" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"oE" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"oF" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/dangerous/explored) +"oG" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/mine/production) +"oI" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4},/turf/space,/area/mine/dangerous/explored) +"oJ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/mine/production) +"oK" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/light_switch{pixel_y = 25},/obj/machinery/light/small{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/mine/production) +"oM" = (/obj/machinery/disposal/deliveryChute,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/door/window/northleft{dir = 2; name = "Pneumatic Tube Access"},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel,/area/mine/production) +"oN" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Mining Station Loading Bay APC"; pixel_x = 1; pixel_y = 25},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/mine/production) +"oO" = (/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor/plasteel,/area/mine/production) +"oP" = (/obj/machinery/camera{c_tag = "Mining Outpost Production Room"; dir = 4; network = list("Mining Outpost")},/obj/machinery/conveyor_switch/oneway{id = "mining_internal"; name = "mining conveyor"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel,/area/mine/production) +"oQ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/mine/production) +"oR" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/mine/production) +"oS" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/production) +"oT" = (/obj/machinery/light/small{dir = 4; pixel_y = 8},/obj/machinery/mineral/mint{input_dir = 1; output_dir = 2},/turf/simulated/floor/plasteel,/area/mine/production) +"oU" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/structure/disposalpipe/segment,/obj/machinery/recharger,/turf/simulated/floor/plasteel,/area/mine/production) +"oV" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/obj/structure/window/reinforced,/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor/plasteel,/area/mine/production) +"oW" = (/obj/structure/window/reinforced,/obj/structure/closet/crate,/turf/simulated/floor/plasteel,/area/mine/production) +"oX" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/window/reinforced,/obj/structure/closet/crate,/turf/simulated/floor/plasteel,/area/mine/production) +"oY" = (/obj/structure/closet/walllocker/emerglocker/east,/turf/simulated/floor/plasteel{icon_state = "loadingarea"},/area/mine/production) +"oZ" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/mine/production) +"pa" = (/obj/machinery/conveyor{dir = 4; id = "mining_internal"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/production) +"pb" = (/obj/machinery/telepad_cargo,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/production) +"pi" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4},/turf/space,/area/space) +"pr" = (/turf/simulated/wall,/area/mine/production) +"pE" = (/turf/simulated/floor/plasteel,/area/mine/production) +"pO" = (/obj/docking_port/stationary{dir = 2; dwidth = 2; height = 18; id = "skipjack_z5"; name = "south of asteroid"; width = 19},/turf/space,/area/space) + +(1,1,1) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaeaeaeabaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaaaaaaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababaaaaaaaaaaaaaaaaaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaeaeaeaeaeababababababaaaaaaaaaaaaaaaeaeaeaaaaabababababababababababhBhBhBhBhBhBhBhBaaaaaaaaaaaaabababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaeaeaeaaaaababababababababababababababababababababababababababababababababababababababababababhBhBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaeaeaeaaaaabababababababababababababababababababababababababababababababababababababababababababhBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababhvaaaeaeaeaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababababaeaeaeaeaeaeababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaahvabaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababababaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaabababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabaeaeaeaeaeaeabaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabaeaeaeababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeabaeaeaeaeabababaeaeaeaeaeaeaeaeaeaeaeadaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeadaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaeaeababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaiafaaaaaaaahBabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaeababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahamahajaaaahBababababaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeadaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaeabaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalapanaoajaahBabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabaeabaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqaqarauasahajaahBabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawavayaxaBaAazajajababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydydydydydyaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaqaLaKaPasaEabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaedydydydydydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajaFaZaWaEababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydydydydydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajaIaJbdbcaEabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydydydydydydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaebwabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajaMaNaOaEblbeaEaEaEaEaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydydydydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaebwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaRaSaTaUbobqafaAbraEaYbzaEaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababababbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajbabbaSbAbEbDbFbgbrbGbzbzaYaEaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydydydydydyaeaeaeaeaeaeaeaeaeaeaeaeabababababababababababbwbwbwbwbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibabbbaaTaTblbUbEaEbcbWaEbzbXaEaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaedydydydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababababababbwbwbwbwbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajbmbnaTbYbpaTaWbZbDckcycxaEaEaEaEaEaEaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydydydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeabbwbwbwbwbwbwbwbwbwbwbwaQaQaVaQaQaQbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajbxbycBaTbpbzbAcJbEamaEcScMaEcTbrcWcXaEaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydydydydydyababaeaeaeaeaeaeaeaeaeaeabababbwbwbwbwaaaaaaaaajajaQbfbjbhbkaQbwbwbwbwbwbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajajaeaeaEbqdkdlaYcBdtbEbDcTafaAduaEcTbcbrcXaEaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydydydydydybwbwbwbwbwbwaeaeaeaeababbwbwbwaaaaaaaaaaaaajajajaQbsbubtbvaQbwbwbwbwbwbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaEaEaEaEaEaEbobEdBdkbEbZdCcTcTbgbrcSaEcTaWdDcXaEaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydydybVbVbVbVbVbVbVbwbwbwaeaeababbwaaaaaaaaaaaaaaajaQaQaQaQaQbCbBaQaQaQaQaQaQaQaQaQbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaEdEaAbDboaEbxcdbyaEckaEdGdFdHaEaAdIamdQaWbdamaEaeaeaeaeaeaeaeaeaeaeaeaeadaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydybVbVbVbVbVbVbVbVbVbVbwbwabababbwaaaaaaaaaaaaaaajaQbJbIbLbKbNbMbPbObObObRbQbTbSaQbVgXbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaEdEaWaAbAckdIdkaAdkbdaAaAdRbraAaWaWaEamdSaWaAaEaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabbVbVbVbVbVbVbVbVbVbVbVbVbwbwababbwbwaaaaaaaaaaaaajaQcabOcbbKcecccfaQaQcgcichchcjaQbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaEdEdTaWaWckaWdDblaWdUbddDduamaWdVbcaEdkamdIaAaEaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabbwbwbVbVbVbVbVbVbVbVbVbVbVcLbwababbwbwaaaaaaaaaaaaajaQcmclcocncrcpcUcqctcscvcucwbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaEdEdWbAboaEcAczbHbHczaHczbHbHbHaYdIaEdRcxamcSaEaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabbwcLbVbVbVbVbVbVbVbVbVbVbVbVbwbwbwbwaaaaaaaaaaaaaaajaQcCbOcDbKbOcEdfcFcGcsbVbVbVbVbVbwbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaEaEaEaEaEaEcHczaYaYaYaYaCaYcIbHaDbAaEcZdYdXdjaEaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabbwcLbVbVbVbVbVbVbVbVbVbVbVbVbwbwbwaaaaaaaaaaaaaaajajaQcNbOcObKcPbOdgcFcGcsbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaeaeaeaeaeaEcAczaYaHcRcQataXaYbHaYbcaEdZebebefaEdyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbwbwbVbVbVbVbVbVbVbVbVbVbVbVbwbwbwaaaaaaaaaaaaajajajaQaQbKbKaQaQaQdpbKcGcsbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXcVgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahvhvhvhvegegegegegegegegememegegeieieieieieieiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaEcAczaYaXaYaYcIaYaHczcAaEaEcTamebekejdydyaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeababbwbwbVbVbVbVbVbVbVbVbVbVbVbVcYcYdadOdOdOdOdOdOdbcYcYbVbVdcdeddaQdqdzdrcGcsbVbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXcVdhdhcVgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahvhvhvhvhvhvhveoeoeoeoeoeoememememaeaeeieieieieieiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaEdiczczczczczczczczczcAaEcTamcWamefeldydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababbwbVbVbVbVbVbVbVbVbVbVbVbVbVbVdndmdmdmdmdmdmdmdmdnbVbVbVdododoaQgDgRgJcGcsbVbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXdhdscVgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahveoeoeoeoeoeoepereqeseoemememeNeNememememegegegaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaEdicAcAcAdwdvcAcAcAdidiaEcTcWcWcWcXaEdydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababbwbVbVbVbVbVbVbVbVbVbVbVbVbVcYcYdxeeeeeeeeeeeeeecYcYbVbVbVbVbVaQaQgUbKcGdAbVbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXcVcVcVgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahveoeuetewevexeyezezeAeocKcKcKcKcKcKeBeBeBeBeBeiaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaeaeaeaeaeaeaeaeaeaEaEaEaEaEaEaEaEaEaEaEaEaEaEdjeDecaEaEdydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababbwbVbVbVbVbVbVbVbVbVbVbVbVbVbwaaaaaaaaaaaaaaaabwbwbwbVbVbVbVbVbVglixhpdNdMdPbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahveoeEeCeGeFexeHezeIeKeJeQeOeOcKeLeMeNememememememaaaaaaaaaaaaaaaaaaaaaaababababababaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaedydydyaEebebcWaEdydydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababbwbVbVbVbVbVbVbVbVbVbVbVbVbwaaaaaaaaaaaaaabwbwbwbwbwbwbwbwbVbVbVdJdLdLeaeadKbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeoeoeoexedePedexeReSexexeoeoeoeTeheUeNeNemememememememaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydyaEeVeXeVaEdydydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbwbVbVbVbVbVbVbVbVbVbVbVbVbwaaaaaaaaaaaaaabwbwbwbwbwbwbwbwbwbwbVbVbVbVenenbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeoeZeYexfaezeyfcfbezfdexfefhfheOfieOeNeNemememememememaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydyaEfjeDdjaEdydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbwbwbVbVbVbVbVbVbVbVbwbwbwbwaaaaaaaaaaaaaaaabwbwbwbwbwbwbwbwbwbwbwbVbVenenbVbVbwbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajeoflfkfofmfqfpezfaezezfnfhfheOeOeOeOfreNememememememememaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydyfsfuftdydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeabababbwbwbwbwbwbVbVcLcLbwababaaaaaaaaaaaaaaaaaabwbwbwbwbwbwbwbwbwbwbwbwbVenenbVbVbwbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeofwfvfyfxfqfzezfafAezexfBfCfCeOeOeLeLeNeNemememaeememememaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydydydyeWdydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababbwbwbwbwbwbwababaaaaaaaaaaaaaaaaaabwbwbwgXgXgXbwbwbwbwbwbwbVenenbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeoexexexfEezfFfqfGedfHfDfIfIfJfKeOeLeLfLeNememememememememaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydydydydydyeWdydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababababababaaaaaaaaaaaaaaaaaaaabwbwbwgXgXgXbwbwbwbwbwbVenfffgbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafOfPfOfQfMezfaezezfNfRexfSfVfTeOeOeLeLeLeNakememememememememaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydydyeWdydydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababaaaaaaaaaaaaaaaaaaaabwbwbwgXgXgXgXgXbwbwbwbVfffgenbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeoeoeoeofWezfaedfUexfXexfhfYfheLeLeLeLfZexememememememememememaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydydydydydydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaabwbwbwbwgXgXgXgXbwbwbwbVbVenenbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagdgbgeezezgfgigggigjexiaibeLeLeLeLfreNeNememememememememememajajabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydydydydydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaabwbwbwgXgXgXgXbwbwbwbVbVenenbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaghghghipingkiDgmgmgmexgmgmiEeLeLeLeLfreNemememememememememememaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaabwbwbwbwgXgXgXbwbwbwbVbVenenbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaagoiFiHiGiQiIiSiRiViUiXiWgAgBiZfheLeLeLeNeNememememememememememememaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaabwbwbwbwgXgXgXgXbwbwbwbVenenbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaghgmgmgmjaiDgmgmgEgFjugmgmjvfheLeLeNeNemememememememememememememaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaabwbwbwbwgXgXgXgXbwbwbwbVenenbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaghgIjygKjAjEgNgOgPgQjFjHjGjJjIjKeNeNemememememememememememememememaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaabwbwbwbwgXgXgXgXbwbwbwbVenffgcfgbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajgYgZgIhagIhbgmhchdhdklhfgmeNeNeNeNememememememememememememememememaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaabwbwbwgXgXgXgXbwbwbwbVffgcfgenbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakmhhhihjhkhlgmhmhnhoknhfgmeNememememememememememaeemememememememememaaaaaaaaabababaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeadaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaabwbwbwgXgXgXgXbwbwbwbVbVbVenenbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakpkskqghghghgmgmgmgmgmgmgmcKeBeBeBemememememememaeemememememememememaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaabwbwbwgXgXgXgXbwbwbwbVgldMdMdPbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeNeNeNeNeNeNeNeNeNeNeNemememememememememememememememememememememajajababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaabwbwbwbwgXgXgXbwbwbwbVdJeaeadKbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaabwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememememememememememememememememememememememememememememememememaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaaaabwbwbwbwgXgXgXbwbwbwbVbVenenbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememememememememememememememememememememememememememememememememaaaaaaaaaaabababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaabwbwbwbwgXgXgXbwbwbwbVbVenenbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemememememememememememememememememememememememememememememememememaaaaaaaaaaaaaaababababababaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaaaabwbwbwbwbwgXbwbwbwbVbVenenbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemememememememememememememememememememememememememememememememememaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaabwbwbwbwgXgXbwbwbwbVenenbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememememememememememememememememememememememememememememememememaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaabwbwgXgXbwbwbwbVenenbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemememememememememememememememememememememememememememememememememaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaabwgXgXbwbwbwbVenenbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememememememememememememememememememememememememememememememememememaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaabwgXgXbwbwbwbVenenbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemememememememememememememememememememememememememememememememememememaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaabwgXgXbwbwbwbVenfffgbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememememememememememememememememememememememememememememememememememaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaabwgXgXbwbwbwbVfffgenbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememememememememememememememememememememememememememememememememememaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababajajajajajajajajbwbwgXgXbwbwbwbVbVenenbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemememememememememememememememememememememememememememememememememaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababhuhuhuhuhuhuhuhubwbwgXgXbwbwbwbVbVenenbVbwbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememememememememememememememememememememememememememememememememaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababajajajajajajajajbwbwgXgXbwbwbwbVbVenenbVbwbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemememememememememememememememememememememememememememememaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaabwbwgXgXbwbwbwbVgldMdMdPbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemememememememememememememememememememememememememememaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaabwbwgXgXbwbwbwbVdJeaeadKbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemememememememememememememememememememememememememememaaaaaaaaemememaaaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababababaaaaaaaaaaaaaaaaaabwbwbwgXgXbwbwbwbVbVenenbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemememememememememememememememememememememememememememaaaaaaaaememememaaaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababaaaaaaaaaaaaaaaaaaaaaaaabwbwbwgXgXbwbwbwbVbVenenbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemememememememememememememememememememememememememememememaaaaaaemememememaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeadaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwgXgXbwbwbwbVgngpenbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememememememememememememememememememememememememememememaaaaaaaaaaememememememajajajajajajajajajababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwgXgXbwbwbwbVengngpbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemememememememememememememememememememememememememaaaaaaaaaaaaaaaaaaemememememhuhuhuhuhuhuhuhuhuababababaeaeaeakaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwgXbwbwbwbVenenbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememememememememememememememememememememememememaaaaaaaaaaaaaaaaaaaaaaemememememajajajajajajajajajababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwbwbVbVenenbVbwbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememememememememememememememememememememememememaaaaaaaaaaaaaaaaaaaaaaememememememaaaaaaaaaaaaaaaaaaababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwbVgngpenbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemememememememememememememememememememememememememaaaaaaaaaaaaaaaaaaemememememememaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwbVengngpbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememememememeLemememememememememememememememememememaaaaaaaaaaaaememememememememaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbVenenbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemememememgqeMememememememememememememememememememememememememememememememaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbVbVbVenenbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemememememememememememememememememememememememememememememememememememememaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVbVbVbVenenbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemememememememememememememememememememememememememememememememememememememaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVbVbVbVenenbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemememememememememememememememememememememememememememememememememememaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVbVbVbVenenbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememememememememememememememememememememememememememememememememememaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVbVbVbVenenbVbVbVbwbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemememememememememememememememememememememememememememememememememaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVbVbVbVbVenenbVbVbVbwbwbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemememememememememememememememememememememememememememememememememaaaaaaemaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVbVbVbVbVbVenenbVbVbVbVbwbwbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemememememememememememememememememememememememememememememememememaaaaaaememaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVbVbVbVbVbVenenbVbVbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememememememememememememememememememememememememememememememememaaemememememajajajajajajajajajajajabababababaaabababaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVbVbVbVbVbVenenbVgldPbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememememememememememememememememememememememememememememememememaaemememememhuhuhuhuhuhuhuhuhuhuhuabababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVbVbVbVbVenffgcgrgsgcgcgcfgbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemememememememememememabababababababababababababababababababababababababababajajajajajajajajajajajababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVbVbVbVbVffgcgcgrgsgcgcfgenbVbVbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememememememememememababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababababababababababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbVbVbVbVbVdJdKbVbVenffgcfgbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememababababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwbwbwbVbVbVbVbVffgcfgenbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeakaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwbwbwbwbwbwbVbVbVenenbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwbwbwbwbwbwbwbVenffgcgcfgbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwbwbwbwbwbwbVffgcgcfgenbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwbwbwbwbwbVbVbVbVenffgcgcfgbVbVbwbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaabwbwbwbwbwbwbwbwbwbwbwbVffgcgcfgenbVbVbwbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadydyaeaeaeaedydyaaaabwbwbwbwbwbwbwbwbwbwbwbVbVbVbVenenbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadydydyaeaeaedydydyaaaaaabwbwbwgXgXgXbwbwbwbwbwbwbwbVenffgcfgbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadydydyaeaeaedydyaaaaaaaabwbwbwgXgXgXgXbwbwbwbwbwbwbVffgcfgenbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemememabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadydyaeaeaedydyaaaaaaaabwbwbwgXgXgXgXbwbwbwbwbwbwbVbVbVenenbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemememabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaedydyaaaaaaaabwbwbwbwbwgXgXgXgXbwbwbwbwbwbVbVgldMdMdPbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaememaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeadaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwbwbwbwgXgXgXgXbwbwbwbwbwbVbVdJeaeadKbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwbwbwgXgXgXgXgXgXbwbwbwbwbVbVbVbVenenbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababajajajajajajajajajajajajajajbwbwbwbwbwbwbwgXgXgXgXgXbwbwbwbVbVbVbVbVbVenenbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababhuhuhuhuhuhuhuhuhuhuhuhuhuhubwbwbwbwbwbwbwgXgXgXgXgXbwbwbwbVgngcgcgcgcgpenbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababajajajajajajajajajajajajajbwbwbwbwbwbwbwgXgXgXgXgXbwbwbwbVengngcgcgcgcgpbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwbwbwbwgXgXgXgXgXbwbwbwbVenenbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeababababababaaaaaaaaaadydydyaaaaaabwbwbwbwbwbwbwgXgXgXgXgXbwbwbwbVenenbVbVbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaeaedyaaaaaaaabwbwbwbwbwbwbwgXgXgXgXbwbwbwbVenenbVbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaeaeaaaaaaaaaabwbwbwbwbwbwgXgXgXgXbwbwbwbVenenbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwbwgXgXbwbwbwbwbVenenbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaabababaeaeaeaeakaeaeaeaeaeaeaeaeadaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaadydyaaaaaaaabwbwbwbwgXgXbwbwbwbVbVenenbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaadydyaedydyaaaaaaaabwbwbwgXgXbwbwbwbVgngpenbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaadyaeaeaedyaaaaaaaabwbwbwgXgXbwbwbwbVengngpbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaadydyaeaedyaaaaaaaabwbwbwgXgXbwbwbVbVenenbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaadydydydyaaaaaaaabwbwbwgXgXbwbwbVgldMdMdPbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaabwbwbwgXgXbwbwbVdJeaeadKbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabbwbwbwabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaabwbwbwbwbwgXgXbwbwbVbVenenbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabababaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbwbVbVbwababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababajajajajajajajajajajbwbwbwbwbwgXgXbwbwbwbVenenbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabbwbVbVbVbVbwabaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababhuhuhuhuhuhuhuhuhubwbwbwbwbwbwgXgXbwbwbwbVenenbVbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabbwbwbVbVbVbVbwabaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababajajajajajajajajajajbwbwbwbwbwbwgXgXbwbwbwbVenenbVbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabbwbVbVbVbVbwbwabaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwgXgXgXgXbwbwbwbVenenbVbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabbwbVbVbVbVbVbwabaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeadaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwgXgXbwbwbwbwbwbVenenbVbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabbwbVbVbVbVbVbwabaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwgXgXbwbwbwbwbwbVenenbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabbwcYbVcYbVbwababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwgXgXbwbwbwbwbVbVenenbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaebwcYgtcYbVbwababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwgXgXbwbwbwbwbVbVenenbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaeaeaeaeaeaeaebwhFgvgubwababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwgXgXbwbwbwbVbVbVenenbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababbwbwbwbwbwbwbwbwbwbwbwhFgvhIbwababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwgXgXbwbwbwbVbVbVenenbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbwbVbVcYcYgwdOdOdOdOdOdOhJgvhIbwabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeadaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaehKhKhKhKhKhKhKaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwgXgXbwbwbwbVbVbVenenbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabbwbVbVbVbVgtgxgxgxgxgxgxgxgygzhIbwababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaehKhOhPgChRhOhKaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwgXgXbwbwbwbwbVbVenenbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabbwbVbVbVcYcYeeeeeeeeeeeehTgvhUhChBbwbwbwbwabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaehKhOgGiCiOgHhKaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwgXgXbwbwbwbwbVbVenenbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbwbVbVbVbwhBhBhBhBhBhBhFgvhIhBhBhBbVbVbVbwababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgMaeidhKhKhKiPhKhKhKaeaeabababaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwbwgXgXbwbwbwbwbVbVenenbVbwbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabbwbVbVbwhBhBhBhBhBhBhBhFgvhIhBbVbVbVbVbVbwbwabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegSgMgTaeidihiiidjVidbwbwabaeabababaaaaaaaaaaaaaaaaaaaaaabwbwbwbwbwbwgXgXbwbwbwbwbwbVenenbVbVbwbwbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeababbwbVbwhBhBhBhBhBhBhBgVgvhIbVbVbVbVbVbVbVbwabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLcKaeidiogWhejVidbVbwbwababababaaaaaaaaaaaaaaaaaaaabwbwbwbwbwbwbwgXgXbwbwbwbwbwbVenenbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbwbwbwbwbwhBhBhBhBcYgtcYbVbVbVbVbVbVbVbwbwababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaehgaeaeididididjXidbVbVbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaabwbwbwbwbwbwgXgXbwbwbwbwbwbVenenbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababbwhBbVbVcYbVcYbVbVbVbVbVbVbVbVbwababaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeizaeaeidihiAidjVhqbVbVbVbVbVbVbwbwaaaaaaaaaaaaaaaaaaaabwbwbwbwbwbwbwbwbwbwbwbwbVbVkukubVbVbVbVbVbwbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababbwbVbVbVbVbVbVbVbVhrhrhrbVbVbVbwababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeizaeaeidiogWhsjVhqbVbVbVbVbVbVbVbVbVaaaaaaaaaaaaaaaaaabwbwbwbwbwbwbwbwbwbwbwbVbVbVkukubVbVbVbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeababbwbwbwbwbwbwbVbVbVbVbVbVbVbVhthxhwbVbVbVbwababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababbwbwbwbwbwbwbwabababababababaeaeaeaeaeaeaeaeaeaeididiTididididididjVhqbVbVbVbVbVbVbVbVbVbVbVaaaaaaaaaaaaaabwbwbwbwbwbwbwbwbwbVbVbVbVbVkukwkvbVbVbVbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaeaeaeaeaeaeaeaeaeaeaeaeabbwbwbVbViYiYiYiYiYiYhyhyhyhyiYiYiYiYhzbVbVbwababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababbwbwbVbVbVbVbVbwbwbwbwbwabababababababaeaeaeaeidididhAjbhEjdidihjeidjXidididhqhqhqidbVbVbVbVbVbVaaaaaaaaaaaaaabwbwbwbwbwbVbVbVbVbVbVbVbVkwkvkubVbVbVbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababaeaeaeaeaeaeaeababbwbVbVbViYjkhHhGhyhLhNhMhShQhyjNhWhVdPbVbVbwbwbwbwababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababbwbwbVbVbVbVbVbVbVbVbVbVbwbwbwbwbwabababababaeaeidjwhXjxjzjxhYidiogWhZjVidjBjCjDjDjDhqbVbVbVbVbVbVbVaaaaaaaaaaaaaabwbwbwbVbVbVbVbVbVbVbVkykykSkSjLjLbVbVbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababaeaeaeaeaeaeababbwbVbVbViYjMjNjOhyieieieieifigjNhWijikbVbVbVbVbVbwbwbwabababababababaeaeaeaeaeaeaeaeaeaeaeabababbwbwbwbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbwbwabababababaeidiljxjWimjYjZididididjVidjBkakakakbhqbVbVbVbVbVbVbVaaaaaaaaaaaaaabVbVbVbVbVbVbVbVbVbVbVkykfkUkUkVjLbVkibVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaababababababababaeaeaeababbwbVbVbViYiqjNjNirjNjNjNjNishyitiuhydKbVbVbVbVbVbVbVbwbwbwbwabababababaeaeaeaeaeaeaeaeababababbwbwbVbVbVbVbVbVbVbVbVbVgldPbVbVbVbVbVbVbwbwbwbwababaeidkojxivjxkrjxktkbiwiykFidkWkaiBkakGhqbVbVbVbVbVbVaaaaaaaaaaaaaaaaaaaabVbVbVbVbVkXkXkXkXkykYlbkelcjLjLjLjLllllbVbVbVbVbwbwbwbwgXgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababbwbwbVbViYkIjNkJiKiJiLkMjNiMiYiYiYiYiYgldPbVbVbVbVbVbVbVbVbwbwbwabababaeaeaeaeaeaeaeaeabababbwbwbVbVgngcgcgcgcgcgcgcgcgrgsgcgcgcgcfgbVbVbVbVbwbwababidididididididhqkHiNhqkHidididididkKididhqhqbVbVaaaaaaaaaaaaaaaaaaaaaaaaaabVbVlmlmkLlplolulslvkglwiclylxickhllbVbVbVbVcLbwbwbwbwbwgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababbwbVbViYlfjNjchyjfjhjgjNjijljjjmlqjngrgsgcgcgcgcgcfgbVbVbVbVbwbwbwababaeaeaeaeaeaeabababbwbwbVbVgngpgngcgcgcgcgcgcgcgrgsgcgcgcfgffgcfgbVbVbVbwabababababidjoltjpkakGjqkbkGktjrjskakbkGkakalAhqhqhqjtlClClClClClClBlBlBlBlBlBlmlmlmlElDlNlMlPlOlSkjkxkkkPkzkRkQllbVbVbVbVcLbwbwbwbwbwgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababbwbVbViYiYiYiYiYjPlRjQiYiYjSjRjRjRjRgrgsgcgcgcgcfgffgcgcfgbVbVbVbwbwabababaeaeababababbwbwbVbVgngpgngpbVbVbVbVbVbVbVdJdKbVbVbVffgcfgenbVbVbVbVbwbwbwbwabididididjTkGjUkOkOiykckdkdkTkTkdkdlakZldkZlhlhlhlhlhlhlhlUlUlUlUlUlUlZmalZmbmamdmcicmpmrmqmuicmwmvicmxllbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababbwbwbVbVbVbVbViYkAmskBkCiYkEkDhrbVbVdJdKbVbVbVbVffgcgcfgenbVbVbVbVbwbwbwababababababbwbwbVbVgngpgngpbVbVbVbVbwbVbVbVbVbVbVbVbVbVbVenenbVbVbVbVbVbVbVbwbwbwbwbwidkalkljlnlnljlzlJlIlnlnlKljlLhqhqhqmgmgmgmgmgmgmgmnmnmnmnmnmnlmlmlmnZlDmzmymGmGmHmGmGmGmGmGmGllllbVbVbVbVbVcLbwbwbwbwbwgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababbwbwbVbVbVbViYmSlemUlgiYbVbVbVbVbVbVbVbVbVbVbVbVbVbVenfffgbVbVbVbVbVbwbwbwbwbwbwbwbwbVbVgngpgngpbVbVbwbwbwbwbwbwbwbVbVbVbVbVbVbVenenbVgldPbVbVbVbVbVbVbwbwididhqlQhqididmXlilTidididlWhqidhqbVbVbVaaaaaaaaajaaajaaaaaaaaaaajaalmlmlDmzmhmGmKmMmLmOmNmPmGmRmQbVbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababbwbwbVbVbViYiYiYiYiYiYbVbVbwbwbwbwbwbwbwbwbwbVbVbVfffgffgcgcgcfgbVbVbVbVbVbVbVbVbVbVbVengngpbVbVbwbwabababababbwbVbVbVbVbVbVbVenffgcgrgsgcgcgcgcfgbVbVbwidmVmTmYmWidnplGlFlXlHidlYmfmeidbVbVbVbVbVbVaaaaajaaajajajajajajajajajnamZmAnbnendndnfngngninhnknjbVbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababbwbVbVbVbVbVbVbVbVbVbVbVbwabababababababbwbwbVbVbVffgcgcgcfgfffgbVgldPbVbVgngcgcgcgcgpenbVbVbwbwababababababbwbwbVbVbVbVbVbVffgcgcgrgsgcgcgcfgenbVbVbVidnmnlnonnidnMnNnNlVnPidmmnynwidbVbVbVbVbVbVajajajajajaaaaaaaaaaajaaaananqmBmhntnsnunsngngninhnknjbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababbwbVbVbVbVbVbVbVbVbVbwbwbwabababaeaeabababbwbwbwbVbVbVbVbVfffgffgcgrgsgcgcgpgngcgcgcgcgpbVbwbwababababababababbwbwbwbVbVbVbVbVbVbVdJdKbVbVbVenenbVbVbVkNidididididmimkmjmlnPididnzhqkNbVbVbVbVbVbVaaaaajaaajaaaaaaaaaaajaalmlmnvmCmEmGnxnInAmOmNmPmGnCnBbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababbwbwbwbwbVbVbVbVbwbwbwababaeaeaeaeaeaeaeabababbwbwbwbVbVbVbVffgcgcgrgsgcgcgcgpbVbVbVbVbVbVbwababababababaeaeabababbwbwbwbwbVbVbVbVbVbVbVbVbVenffgcfgbVbVbVbVbVbVkNidididididkNnkouobmtbVbVbVbVbVaaaaaaajaaajaaaaaaaaaanDlmnEnGnFmDnHnanJnKnJnJnJnJnJnJbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababbwbwbwbwbwbwababababaeaeaeaeaeaeaeaeababababbwbwbwbwbVbVbVbVdJdKbVbVbVbVbVbVbwbwbwbwbwababababababaeaeaeabababababbwbwbwbwbwbwbwbwbVbVffgcfgfffgbVbVbVbVbVbVbVdJdLdLdLdLdLdLdKbVbVbVbVbVbVajajajajajajaaaaaaaaoznLlDnOlDlDmDnQnanRnTnSnVnUnXnWnYbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXgXbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababaeaeaeaeaeaeaeaeaeaeaeaeabababababbwbwbVbVbVbVbVbVbVbVbVbwbwbwabababababababaeaeaeaeaeaeaeabababababababababababbwbwbVbVbVfffgfffgmJbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVaaaaaaaaajaaaaaaaaaalmlmlmnZlDmFoaodocofoeohogoioinYbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXgXbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababbwbwbwbVbVbVbwbwbwbwbwabababababaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababababbwbVbVbVbVfffgffgcgcgcgcgcgcgcgcgcgcgcgcgcgcgcfgbVbVbVbVbVbVllaaaaajaaaaaaaaaaajaalmlmlDmDojolokomoioiononoonJbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababbwbwbwbwbwababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababababbwbwbwbVbVbVffgcgcgcgcgcgcgcgcgcgcgcgcgcgcgcfgenbVgldPbVbVbVehhDajajaaaaaaaaaaajaaaanaopmDmhoqoioioiosororotnYbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababbwbwbwbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVenffgcgrgsgcgcgcovoIpipipipipipipipipipioxowmIoynaoBoDoCoioEoEoinYbVbVbVbVbwbwbwbwgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababbwbwbwbVbVbVbVbVbVbVbwbwbVbVbVbVbVbVenbVbVoFikbVbVbVcYhDajaaaaaaaaaaaaaaaaaaprprncoGprnJnJnJnJnYnYnYnJbVbVbVbVbwbwbwbwgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababbwbwbwbwbwbwbwbwbwbwbwbVbVbVbVbVffgcgcgrgsgcgcgcovoIpipipipipipipipipipilroJnroKoNoMoOmocKbVbVbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeadaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababababababababbwbVbVbVbVbVbVbVbVdJdKbVbVbVehbVhDaaaaaaaaaaaaaaaaaaproPoRoQoSpEpEoTcKbVbVbVbVbVbVbVbwbwbwgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababababbwbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVaaaaaaaaaaaaaaaaaaproUoWoVoXpEpEoYcKbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababbwbwbVbVbVbVbVbVbVbVbVbwababababbwaaaaaaaaaaaaaaaaaaproZpapapapapbprcKbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababababbwbwbwbwbwbwbwbwbwbwbwabababababaaaaaaaaaaaaaaaaaaprprprprprprprprbVbVbVbVbwbVbwbwbwgXgXgXgXgXgXgXbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaabVbVbVbVbVbVbVbwbwbwbwbwbwgXgXgXgXgXgXbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababababababababaeaeababababaaaaaaaaaaaaaaaaaaaaaabVbVbwbwbwbwbwbwbwbwbwbwgXgXgXgXgXgXgXbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaaaaaaaaaabwbwbwbwbwbwbwbwgXgXgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwbwbwgXgXgXgXgXgXgXgXgXbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeadaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwbwgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwbwgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwbwbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeadaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeadaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababaeaeaeaeaeaeaeaeaeaeaeabababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababaeaeaeaeaeaeaeaeaeaeababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababaaaaaaaaababababababababababababababaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaabababaaaaaaaaabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} + diff --git a/_maps/map_files/shuttles/emergency_dept.dmm b/_maps/map_files/shuttles/emergency_dept.dmm index 64b903a78f5..0a17d3d7095 100644 --- a/_maps/map_files/shuttles/emergency_dept.dmm +++ b/_maps/map_files/shuttles/emergency_dept.dmm @@ -45,30 +45,30 @@ "aS" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"; dir = 2},/area/shuttle/escape) "aT" = (/obj/docking_port/mobile/emergency{dir = 4; dwidth = 11; height = 13; timid = 1; width = 24},/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = "s_docking_airlock"; name = "Shuttle Hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape) "aU" = (/turf/simulated/floor/plasteel,/area/shuttle/escape) -"aV" = (/obj/structure/stool/bed/chair{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "station intercom (General)"; pixel_x = -28},/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) -"aW" = (/obj/machinery/door/window/northleft{req_access_txt = "32"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) +"aV" = (/obj/machinery/door/window/southright{autoclose = 1; name = "engineering door"; req_access_txt = "32"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) +"aW" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor4,/area/shuttle/escape) "aX" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) "aY" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel,/area/shuttle/escape) "aZ" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel,/area/shuttle/escape) "ba" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape) -"bb" = (/obj/machinery/door/window/northleft{req_access_txt = "47"},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape) -"bc" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape) -"bd" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) -"be" = (/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) -"bf" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) +"bb" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor4,/area/shuttle/escape) +"bc" = (/obj/machinery/door/window/southright{autoclose = 1; name = "science door"; req_access_txt = "47"},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape) +"bd" = (/obj/machinery/door/window/northleft{autoclose = 1; name = "security door"; req_access_txt = "2"},/turf/simulated/shuttle/floor4,/area/shuttle/escape) +"be" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) +"bf" = (/obj/structure/stool/bed/chair{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "station intercom (General)"; pixel_x = -28},/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor4,/area/shuttle/escape) "bg" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "8"},/turf/simulated/floor/plating,/area/shuttle/escape) "bh" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel,/area/shuttle/escape) "bi" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel,/area/shuttle/escape) -"bj" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape) -"bk" = (/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape) -"bl" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape) +"bj" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) +"bk" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor4,/area/shuttle/escape) +"bl" = (/obj/machinery/door/window/northleft{autoclose = 1; name = "medical door"; req_access_txt = "5"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) "bm" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) -"bn" = (/obj/machinery/door/window/southright{req_access_txt = "32"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) +"bn" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape) "bo" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) "bp" = (/obj/structure/window/reinforced,/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel,/area/shuttle/escape) "bq" = (/obj/structure/window/reinforced,/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel,/area/shuttle/escape) "br" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape) -"bs" = (/obj/machinery/door/window/southright{req_access_txt = "47"},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape) +"bs" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) "bt" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape) "bu" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/shuttle/escape) "bv" = (/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel,/area/shuttle/escape) @@ -76,8 +76,7 @@ "bx" = (/obj/structure/noticeboard,/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/escape) "by" = (/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = null; name = "Shuttle Cargo Hatch"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) "bz" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) -"bA" = (/obj/machinery/door/window/northleft{req_access_txt = "5"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) -"bB" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) +"bA" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape) "bC" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0"},/turf/simulated/floor/plasteel,/area/shuttle/escape) "bD" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/shuttle/escape) "bE" = (/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = "s_docking_airlock"; name = "Shuttle Hatch"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) @@ -111,16 +110,16 @@ apaIaIaIaIaMaCaDaEaCaNaOap aPaIaIaQaQaBaCaDaEaCaRaRac aSaeaeaeaeaJaCaDaEaCaCaCap aTaUaUaUaUaUaUaUaUaUaUaUap -apaVaWaXaBaYaUaZaBbabbbcap -aBbdbebfbgbhaUbibgbjbkblaB -bgbdbebfbgbhaUbibgbjbkblbg -aJbmbnboaJbpaUbqaJbrbsbtaJ +apbfbdbkaBaYaUaZaBbzblbsap +aBaWaIbbbgbhaUbibgbFbGbHaB +bgbjbeaXbgbhaUbibgbabnbAbg +aJbmaVboaJbpaUbqaJbrbcbtaJ apbuaUaUaUaUaUaUaUaUaUbvap bwaUaUaUaUaUaUaUaUaUaUaUac -aSaebxbyaBbzbAbBaBbCacaebD -bEaUaUaUbgbFbGbHbgaUaUbIap -acaUaUaUbgbFbGbHbgaUaUbJap -apbKbLbLaJbFbGbHaJbNbMbOap +aSaebxbyaBaYaUaZaBbCacaebD +bEaUaUaUbgbhaUbibgaUaUbIap +acaUaUaUbgbhaUbibgaUaUbJap +apbKbLbLaJbhaUbiaJbNbMbOap bPaxbQbQawaeaeaeawbRbRaxbS aabPbTbTbSbUbUbUbPbTbTbSaa "} diff --git a/_maps/map_files/templates/spacehotel/n_01.dmm b/_maps/map_files/templates/spacehotel/n_01.dmm index 4480512c668..ebf6ffb1a79 100644 --- a/_maps/map_files/templates/spacehotel/n_01.dmm +++ b/_maps/map_files/templates/spacehotel/n_01.dmm @@ -1,5 +1,5 @@ "a" = (/turf/template_noop,/area/template_noop) -"b" = (/obj/structure/sign/poster/legit{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) +"b" = (/obj/structure/sign/poster/random{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) "c" = (/turf/unsimulated/floor/carpet,/area/template_noop) "d" = (/obj/structure/dresser,/obj/item/weapon/lipstick/jade,/turf/unsimulated/floor/carpet,/area/template_noop) "e" = (/obj/machinery/light{dir = 8},/turf/unsimulated/floor/carpet,/area/template_noop) diff --git a/_maps/map_files/templates/spacehotel/n_02.dmm b/_maps/map_files/templates/spacehotel/n_02.dmm index cda6eb42b4e..b802e285219 100644 --- a/_maps/map_files/templates/spacehotel/n_02.dmm +++ b/_maps/map_files/templates/spacehotel/n_02.dmm @@ -1,7 +1,7 @@ "a" = (/turf/template_noop,/area/template_noop) "b" = (/obj/effect/decal/cleanable/flour{desc = "Probably."},/obj/effect/decal/cleanable/pie_smudge,/turf/template_noop,/area/template_noop) "c" = (/obj/effect/decal/cleanable/pie_smudge,/obj/effect/decal/cleanable/flour,/obj/item/weapon/grown/bananapeel{layer = 2.6},/turf/template_noop,/area/template_noop) -"d" = (/obj/structure/sign/poster{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) +"d" = (/obj/structure/sign/poster/random{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) "e" = (/turf/unsimulated/floor/carpet,/area/template_noop) "f" = (/obj/effect/decal/cleanable/pie_smudge,/obj/effect/decal/cleanable/flour,/turf/unsimulated/floor/carpet,/area/template_noop) "g" = (/obj/structure/dresser,/turf/unsimulated/floor/carpet,/area/template_noop) diff --git a/_maps/map_files/templates/spacehotel/n_03.dmm b/_maps/map_files/templates/spacehotel/n_03.dmm index e4aa24d6899..15915ff9c0a 100644 --- a/_maps/map_files/templates/spacehotel/n_03.dmm +++ b/_maps/map_files/templates/spacehotel/n_03.dmm @@ -1,5 +1,5 @@ "a" = (/turf/template_noop,/area/template_noop) -"b" = (/obj/structure/sign/poster/legit{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) +"b" = (/obj/structure/sign/poster/official/random{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) "c" = (/turf/unsimulated/floor/carpet,/area/template_noop) "d" = (/obj/structure/dresser,/obj/item/weapon/lipstick/purple,/turf/unsimulated/floor/carpet,/area/template_noop) "e" = (/obj/machinery/light{dir = 8},/turf/unsimulated/floor/carpet,/area/template_noop) diff --git a/_maps/map_files/templates/spacehotel/n_04.dmm b/_maps/map_files/templates/spacehotel/n_04.dmm index 91a433502b9..2788bb3307c 100644 --- a/_maps/map_files/templates/spacehotel/n_04.dmm +++ b/_maps/map_files/templates/spacehotel/n_04.dmm @@ -1,5 +1,5 @@ "a" = (/turf/template_noop,/area/template_noop) -"b" = (/obj/structure/sign/poster{desc = "You can't make out anything from the poster's original print. It's ruined."; dir = 8; icon_state = "poster_ripped"; name = "ripped poster"; pixel_x = -32; ruined = 1},/turf/unsimulated/floor/carpet,/area/template_noop) +"b" = (/obj/structure/sign/poster/ripped{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) "c" = (/turf/unsimulated/floor/carpet,/area/template_noop) "d" = (/obj/structure/dresser,/obj/item/clothing/head/xenos,/turf/unsimulated/floor/carpet,/area/template_noop) "e" = (/obj/machinery/light{dir = 8},/turf/unsimulated/floor/carpet,/area/template_noop) diff --git a/_maps/map_files/templates/spacehotel/n_05.dmm b/_maps/map_files/templates/spacehotel/n_05.dmm index cf60cf65327..bf746e2fc45 100644 --- a/_maps/map_files/templates/spacehotel/n_05.dmm +++ b/_maps/map_files/templates/spacehotel/n_05.dmm @@ -1,5 +1,5 @@ "a" = (/turf/template_noop,/area/template_noop) -"b" = (/obj/structure/sign/poster/legit{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) +"b" = (/obj/structure/sign/poster/official/random{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) "c" = (/turf/unsimulated/floor/carpet,/area/template_noop) "d" = (/obj/structure/dresser,/turf/unsimulated/floor/carpet,/area/template_noop) "e" = (/obj/machinery/light{dir = 8},/turf/unsimulated/floor/carpet,/area/template_noop) diff --git a/_maps/map_files/templates/spacehotel/n_06.dmm b/_maps/map_files/templates/spacehotel/n_06.dmm index 046119cf016..a2fc80149cb 100644 --- a/_maps/map_files/templates/spacehotel/n_06.dmm +++ b/_maps/map_files/templates/spacehotel/n_06.dmm @@ -1,5 +1,5 @@ "a" = (/turf/template_noop,/area/template_noop) -"b" = (/obj/effect/decal/cleanable/blood/gibs/old,/obj/structure/sign/poster{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) +"b" = (/obj/effect/decal/cleanable/blood/gibs/old,/obj/structure/sign/poster/random{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) "c" = (/turf/unsimulated/floor/carpet,/area/template_noop) "d" = (/obj/structure/dresser,/turf/unsimulated/floor/carpet,/area/template_noop) "e" = (/obj/machinery/light{dir = 8},/obj/effect/decal/cleanable/blood/old,/turf/unsimulated/floor/carpet,/area/template_noop) diff --git a/_maps/map_files/templates/spacehotel/n_07.dmm b/_maps/map_files/templates/spacehotel/n_07.dmm index fc00baa9a45..70ab9fba765 100644 --- a/_maps/map_files/templates/spacehotel/n_07.dmm +++ b/_maps/map_files/templates/spacehotel/n_07.dmm @@ -1,5 +1,5 @@ "a" = (/turf/template_noop,/area/template_noop) -"b" = (/obj/structure/sign/poster{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) +"b" = (/obj/structure/sign/poster/random{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) "c" = (/turf/unsimulated/floor/carpet,/area/template_noop) "d" = (/obj/structure/dresser,/turf/unsimulated/floor/carpet,/area/template_noop) "e" = (/obj/machinery/light{dir = 8},/turf/unsimulated/floor/carpet,/area/template_noop) diff --git a/_maps/map_files/templates/spacehotel/n_08.dmm b/_maps/map_files/templates/spacehotel/n_08.dmm index 81c8881c5e7..fcab7886628 100644 --- a/_maps/map_files/templates/spacehotel/n_08.dmm +++ b/_maps/map_files/templates/spacehotel/n_08.dmm @@ -1,11 +1,11 @@ "a" = (/turf/template_noop,/area/template_noop) -"b" = (/obj/structure/sign/poster/legit{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) -"c" = (/obj/structure/sign/poster{dir = 1; pixel_x = 0; pixel_y = 32},/turf/unsimulated/floor/carpet,/area/template_noop) +"b" = (/obj/structure/sign/poster/official/random{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) +"c" = (/obj/structure/sign/poster/random{dir = 1; pixel_y = 32},/turf/unsimulated/floor/carpet,/area/template_noop) "d" = (/turf/unsimulated/floor/carpet,/area/template_noop) -"e" = (/obj/structure/dresser,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/turf/unsimulated/floor/carpet,/area/template_noop) +"e" = (/obj/structure/dresser,/obj/item/weapon/poster/random_contraband,/obj/item/weapon/poster/random_contraband,/obj/item/weapon/poster/random_contraband,/turf/unsimulated/floor/carpet,/area/template_noop) "f" = (/obj/machinery/light{dir = 8},/turf/unsimulated/floor/carpet,/area/template_noop) "g" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/blue,/turf/unsimulated/floor/carpet,/area/template_noop) -"h" = (/obj/structure/window/reinforced/polarized{id = "room_n"},/obj/structure/sign/poster{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) +"h" = (/obj/structure/window/reinforced/polarized{id = "room_n"},/obj/structure/sign/poster/random{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) "i" = (/obj/structure/window/reinforced/polarized{id = "room_n"},/turf/unsimulated/floor/carpet,/area/template_noop) "j" = (/obj/machinery/door/window/southright,/turf/unsimulated/floor/carpet,/area/template_noop) "k" = (/obj/item/device/flashlight/lamp/green,/obj/structure/table/woodentable,/turf/unsimulated/floor/carpet,/area/template_noop) diff --git a/_maps/map_files/templates/spacehotel/n_09.dmm b/_maps/map_files/templates/spacehotel/n_09.dmm index ecf873f1913..77dac3089be 100644 --- a/_maps/map_files/templates/spacehotel/n_09.dmm +++ b/_maps/map_files/templates/spacehotel/n_09.dmm @@ -1,5 +1,5 @@ "a" = (/turf/template_noop,/area/template_noop) -"b" = (/obj/structure/sign/poster/legit{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) +"b" = (/obj/structure/sign/poster/official/random{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) "c" = (/turf/unsimulated/floor/carpet,/area/template_noop) "d" = (/obj/structure/dresser,/turf/unsimulated/floor/carpet,/area/template_noop) "e" = (/obj/machinery/light{dir = 8},/turf/unsimulated/floor/carpet,/area/template_noop) diff --git a/_maps/map_files/templates/spacehotel/n_10.dmm b/_maps/map_files/templates/spacehotel/n_10.dmm index 9038bbbce3d..1c0cf0d88b5 100644 --- a/_maps/map_files/templates/spacehotel/n_10.dmm +++ b/_maps/map_files/templates/spacehotel/n_10.dmm @@ -1,5 +1,5 @@ "a" = (/turf/template_noop,/area/template_noop) -"b" = (/obj/structure/sign/poster/legit{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) +"b" = (/obj/structure/sign/poster/official/random{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) "c" = (/turf/unsimulated/floor/carpet,/area/template_noop) "d" = (/obj/structure/dresser,/turf/unsimulated/floor/carpet,/area/template_noop) "e" = (/obj/machinery/light{dir = 8},/turf/unsimulated/floor/carpet,/area/template_noop) diff --git a/_maps/map_files/templates/spacehotel/n_11.dmm b/_maps/map_files/templates/spacehotel/n_11.dmm index 415d3f1f7c5..bed2ba84b3f 100644 --- a/_maps/map_files/templates/spacehotel/n_11.dmm +++ b/_maps/map_files/templates/spacehotel/n_11.dmm @@ -1,11 +1,11 @@ "a" = (/turf/template_noop,/area/template_noop) -"b" = (/obj/structure/sign/poster{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) +"b" = (/obj/structure/sign/poster/random{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) "c" = (/turf/unsimulated/floor/carpet,/area/template_noop) "d" = (/obj/structure/dresser,/turf/unsimulated/floor/carpet,/area/template_noop) "e" = (/obj/machinery/light{dir = 8},/turf/unsimulated/floor/carpet,/area/template_noop) "f" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/syndie,/obj/item/weapon/twohanded/toy/chainsaw,/turf/unsimulated/floor/carpet,/area/template_noop) "g" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/syndie,/obj/item/toy/figure/syndie{pixel_x = 8},/turf/unsimulated/floor/carpet,/area/template_noop) -"h" = (/obj/structure/window/reinforced/polarized{id = "room_n"},/obj/structure/sign/poster{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) +"h" = (/obj/structure/window/reinforced/polarized{id = "room_n"},/obj/structure/sign/poster/random{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) "i" = (/obj/structure/window/reinforced/polarized{id = "room_n"},/turf/unsimulated/floor/carpet,/area/template_noop) "j" = (/obj/machinery/door/window/southright,/turf/unsimulated/floor/carpet,/area/template_noop) "k" = (/obj/item/device/flashlight/lamp/green,/obj/structure/table/woodentable,/turf/unsimulated/floor/carpet,/area/template_noop) diff --git a/_maps/map_files/templates/spacehotel/n_12.dmm b/_maps/map_files/templates/spacehotel/n_12.dmm index 24d3321f4f7..05319b91d2e 100644 --- a/_maps/map_files/templates/spacehotel/n_12.dmm +++ b/_maps/map_files/templates/spacehotel/n_12.dmm @@ -1,5 +1,5 @@ "a" = (/turf/template_noop,/area/template_noop) -"b" = (/obj/structure/sign/poster/legit{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) +"b" = (/obj/structure/sign/poster/official/random{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) "c" = (/turf/unsimulated/floor/carpet,/area/template_noop) "d" = (/obj/structure/dresser,/turf/unsimulated/floor/carpet,/area/template_noop) "e" = (/obj/machinery/light{dir = 8},/turf/unsimulated/floor/carpet,/area/template_noop) diff --git a/_maps/map_files/templates/spacehotel/n_13.dmm b/_maps/map_files/templates/spacehotel/n_13.dmm index 0d10f62eba5..8ecdca3b868 100644 --- a/_maps/map_files/templates/spacehotel/n_13.dmm +++ b/_maps/map_files/templates/spacehotel/n_13.dmm @@ -1,17 +1,17 @@ "a" = (/turf/template_noop,/area/template_noop) -"b" = (/obj/structure/sign/poster/legit{dir = 8; pixel_x = -32},/obj/structure/sign/poster/legit{dir = 1; pixel_y = 32},/obj/random/plushie,/turf/unsimulated/floor/carpet,/area/template_noop) -"c" = (/obj/structure/sign/poster/legit{dir = 1; pixel_y = 32},/turf/unsimulated/floor/carpet,/area/template_noop) +"b" = (/obj/structure/sign/poster/official/random{dir = 8; pixel_x = -32},/obj/structure/sign/poster/official/random{dir = 1; pixel_y = 32},/obj/random/plushie,/turf/unsimulated/floor/carpet,/area/template_noop) +"c" = (/obj/structure/sign/poster/official/random{dir = 1; pixel_y = 32},/turf/unsimulated/floor/carpet,/area/template_noop) "d" = (/turf/unsimulated/floor/carpet,/area/template_noop) -"e" = (/obj/structure/sign/poster/legit{dir = 1; pixel_y = 32},/obj/random/plushie,/turf/unsimulated/floor/carpet,/area/template_noop) -"f" = (/obj/structure/dresser,/obj/structure/sign/poster/legit{dir = 1; pixel_y = 32},/obj/structure/sign/poster/legit{dir = 4; pixel_x = 32},/turf/unsimulated/floor/carpet,/area/template_noop) +"e" = (/obj/structure/sign/poster/official/random{dir = 1; pixel_y = 32},/obj/random/plushie,/turf/unsimulated/floor/carpet,/area/template_noop) +"f" = (/obj/structure/dresser,/obj/structure/sign/poster/official/random{dir = 1; pixel_y = 32},/obj/structure/sign/poster/official/random{dir = 4; pixel_x = 32},/turf/unsimulated/floor/carpet,/area/template_noop) "g" = (/obj/machinery/light{dir = 8},/obj/random/plushie,/turf/unsimulated/floor/carpet,/area/template_noop) -"h" = (/obj/structure/stool/bed,/obj/structure/sign/poster/legit{dir = 4; pixel_x = 32},/obj/item/weapon/bedsheet/rainbow,/obj/random/plushie,/turf/unsimulated/floor/carpet,/area/template_noop) +"h" = (/obj/structure/stool/bed,/obj/structure/sign/poster/official/random{dir = 4; pixel_x = 32},/obj/item/weapon/bedsheet/rainbow,/obj/random/plushie,/turf/unsimulated/floor/carpet,/area/template_noop) "i" = (/obj/random/plushie,/turf/unsimulated/floor/carpet,/area/template_noop) -"j" = (/obj/structure/window/reinforced/polarized{id = "room_n"},/obj/structure/sign/poster/legit{dir = 8; pixel_x = -32},/obj/random/plushie,/turf/unsimulated/floor/carpet,/area/template_noop) +"j" = (/obj/structure/window/reinforced/polarized{id = "room_n"},/obj/structure/sign/poster/official/random{dir = 8; pixel_x = -32},/obj/random/plushie,/turf/unsimulated/floor/carpet,/area/template_noop) "k" = (/obj/structure/window/reinforced/polarized{id = "room_n"},/turf/unsimulated/floor/carpet,/area/template_noop) "l" = (/obj/machinery/door/window/southright,/turf/unsimulated/floor/carpet,/area/template_noop) "m" = (/obj/structure/window/reinforced/polarized{id = "room_n"},/obj/random/plushie,/turf/unsimulated/floor/carpet,/area/template_noop) -"n" = (/obj/item/device/flashlight/lamp/green,/obj/structure/table/woodentable,/obj/structure/sign/poster/legit{dir = 4; pixel_x = 32},/obj/structure/sign/poster/legit{pixel_y = -32},/turf/unsimulated/floor/carpet,/area/template_noop) +"n" = (/obj/item/device/flashlight/lamp/green,/obj/structure/table/woodentable,/obj/structure/sign/poster/official/random{dir = 4; pixel_x = 32},/obj/structure/sign/poster/official/random{pixel_y = -32},/turf/unsimulated/floor/carpet,/area/template_noop) "o" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{dir = 8; pixel_x = -28},/turf/unsimulated/floor{icon_state = "freezerfloor"},/area/template_noop) "p" = (/obj/structure/toilet{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"},/area/template_noop) "q" = (/obj/machinery/door/window/eastleft,/obj/machinery/button/windowtint{id = "room_n"; pixel_y = -24; range = 2},/turf/unsimulated/floor{icon_state = "freezerfloor"},/area/template_noop) diff --git a/_maps/map_files/templates/spacehotel/n_14.dmm b/_maps/map_files/templates/spacehotel/n_14.dmm index 7fe5a48cafd..95cf97442fd 100644 --- a/_maps/map_files/templates/spacehotel/n_14.dmm +++ b/_maps/map_files/templates/spacehotel/n_14.dmm @@ -1,5 +1,5 @@ "a" = (/turf/template_noop,/area/template_noop) -"b" = (/obj/structure/sign/poster/legit{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) +"b" = (/obj/structure/sign/poster/official/random{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) "c" = (/turf/unsimulated/floor/carpet,/area/template_noop) "d" = (/obj/structure/dresser,/turf/unsimulated/floor/carpet,/area/template_noop) "e" = (/obj/machinery/light{dir = 8},/turf/unsimulated/floor/carpet,/area/template_noop) diff --git a/_maps/map_files/templates/spacehotel/n_17.dmm b/_maps/map_files/templates/spacehotel/n_17.dmm index 964a75ba8ba..88b1486e2fe 100644 --- a/_maps/map_files/templates/spacehotel/n_17.dmm +++ b/_maps/map_files/templates/spacehotel/n_17.dmm @@ -1,5 +1,5 @@ "a" = (/turf/template_noop,/area/template_noop) -"b" = (/obj/structure/sign/poster/legit{dir = 8; pixel_x = -32},/obj/item/pizzabox/margherita,/obj/item/pizzabox/margherita{pixel_y = 4},/turf/unsimulated/floor/carpet,/area/template_noop) +"b" = (/obj/structure/sign/poster/official/random{dir = 8; pixel_x = -32},/obj/item/pizzabox/margherita,/obj/item/pizzabox/margherita{pixel_y = 4},/turf/unsimulated/floor/carpet,/area/template_noop) "c" = (/turf/unsimulated/floor/carpet,/area/template_noop) "d" = (/obj/structure/dresser,/turf/unsimulated/floor/carpet,/area/template_noop) "e" = (/obj/machinery/light{dir = 8},/obj/item/pizzabox/vegetable,/obj/item/pizzabox/vegetable{pixel_y = 4},/turf/unsimulated/floor/carpet,/area/template_noop) diff --git a/_maps/map_files/templates/spacehotel/n_18.dmm b/_maps/map_files/templates/spacehotel/n_18.dmm index 28145e1b4fb..ca75b4f384f 100644 --- a/_maps/map_files/templates/spacehotel/n_18.dmm +++ b/_maps/map_files/templates/spacehotel/n_18.dmm @@ -1,5 +1,5 @@ "a" = (/turf/template_noop,/area/template_noop) -"b" = (/obj/structure/sign/poster/legit{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) +"b" = (/obj/structure/sign/poster/official/random{dir = 8; pixel_x = -32},/turf/unsimulated/floor/carpet,/area/template_noop) "c" = (/turf/unsimulated/floor/carpet,/area/template_noop) "d" = (/obj/structure/dresser,/obj/item/weapon/lipstick/purple,/turf/unsimulated/floor/carpet,/area/template_noop) "e" = (/obj/machinery/light{dir = 8},/turf/unsimulated/floor/carpet,/area/template_noop) diff --git a/_maps/map_files/templates/spacehotel/s_04.dmm b/_maps/map_files/templates/spacehotel/s_04.dmm index 2764d377626..fbd9385c3f5 100644 --- a/_maps/map_files/templates/spacehotel/s_04.dmm +++ b/_maps/map_files/templates/spacehotel/s_04.dmm @@ -4,19 +4,19 @@ "d" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/template_noop) "e" = (/obj/structure/rack,/obj/item/clothing/suit/syndicatefake,/obj/item/clothing/under/syndicate,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/template_noop) "f" = (/obj/structure/rack,/obj/item/clothing/mask/gas/syndicate,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/template_noop) -"g" = (/obj/structure/rack,/obj/structure/sign/poster{dir = 1; pixel_y = 32},/obj/item/clothing/suit/space/hardsuit/syndi,/obj/item/clothing/head/helmet/space/syndicate{pixel_x = -4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/template_noop) -"h" = (/obj/structure/dresser,/obj/structure/sign/poster{dir = 1; pixel_y = 32},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/template_noop) -"i" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green,/obj/item/weapon/storage/fancy/cigarettes/syndicate{pixel_x = 8},/obj/structure/sign/poster{dir = 1; pixel_y = 32},/obj/structure/sign/poster{dir = 4; pixel_x = 32},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/template_noop) +"g" = (/obj/structure/rack,/obj/structure/sign/poster/random{dir = 1; pixel_y = 32},/obj/item/clothing/suit/space/hardsuit/syndi,/obj/item/clothing/head/helmet/space/syndicate{pixel_x = -4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/template_noop) +"h" = (/obj/structure/dresser,/obj/structure/sign/poster/random{dir = 1; pixel_y = 32},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/template_noop) +"i" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green,/obj/item/weapon/storage/fancy/cigarettes/syndicate{pixel_x = 8},/obj/structure/sign/poster/random{dir = 1; pixel_y = 32},/obj/structure/sign/poster/random{dir = 4; pixel_x = 32},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/template_noop) "j" = (/obj/structure/window/reinforced/polarized{dir = 4; id = "room_s"},/turf/unsimulated/floor{dir = 8; icon_state = "whiteblue"},/area/template_noop) -"k" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/syndie,/obj/structure/sign/poster{dir = 4; pixel_x = 32},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/template_noop) +"k" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/syndie,/obj/structure/sign/poster/random{dir = 4; pixel_x = 32},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/template_noop) "l" = (/obj/machinery/light{dir = 8},/obj/machinery/button/windowtint{id = "room_s"; pixel_x = -24; pixel_y = 0; range = 5},/obj/item/weapon/soap/syndie,/turf/unsimulated/floor{dir = 1; icon_state = "whiteblue"},/area/template_noop) "m" = (/turf/unsimulated/floor{dir = 1; icon_state = "whiteblue"},/area/template_noop) "n" = (/obj/structure/window/reinforced/polarized{dir = 4; id = "room_s"},/turf/unsimulated/floor{dir = 1; icon_state = "whitebluecorner"},/area/template_noop) "o" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/unsimulated/floor{icon_state = "freezerfloor"},/area/template_noop) "p" = (/obj/structure/toilet{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"},/area/template_noop) "q" = (/obj/machinery/door/window/eastleft,/turf/unsimulated/floor{icon_state = "freezerfloor"},/area/template_noop) -"r" = (/obj/structure/sign/poster{pixel_y = -32},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/template_noop) -"s" = (/obj/structure/sign/poster{dir = 4; pixel_x = 32},/obj/structure/sign/poster{pixel_y = -32},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/template_noop) +"r" = (/obj/structure/sign/poster/random{pixel_y = -32},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/template_noop) +"s" = (/obj/structure/sign/poster/random{dir = 4; pixel_x = 32},/obj/structure/sign/poster/random{pixel_y = -32},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/template_noop) (1,1,1) = {" aaaaaaaaaaa diff --git a/_maps/map_files/vr/lobby.dmm b/_maps/map_files/vr/lobby.dmm index 798228e212e..a4441c9e000 100644 --- a/_maps/map_files/vr/lobby.dmm +++ b/_maps/map_files/vr/lobby.dmm @@ -3,18 +3,18 @@ "c" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/vr/lobby) "d" = (/turf/unsimulated/wall/fakeglass{dir = 8; icon_state = "fakewindows3"; tag = "icon-fakewindows (WEST)"},/area/vr/lobby) "e" = (/turf/unsimulated/floor{icon_state = "gcircuit"},/area/vr/lobby) -"f" = (/obj/machinery/telecomms/processor/preset_cent,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/vr/lobby) +"f" = (/obj/structure/decor/machinery/telecomms/processor,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/vr/lobby) "g" = (/turf/unsimulated/floor{icon_state = "light_on"},/area/vr/lobby) "h" = (/turf/unsimulated/wall/fakeglass{dir = 1; icon_state = "fakewindows"; tag = "icon-fakewindows (WEST)"},/area/vr/lobby) "i" = (/turf/unsimulated/wall/fakeglass{dir = 0; icon_state = "fakewindows"; tag = "icon-fakewindows (EAST)"},/area/vr/lobby) -"j" = (/obj/machinery/telecomms/server/presets/centcomm,/turf/unsimulated/floor{icon_state = "gcircuit"},/area/vr/lobby) -"k" = (/obj/machinery/telecomms/relay/preset/centcom,/turf/unsimulated/floor{icon_state = "gcircuit"},/area/vr/lobby) -"l" = (/obj/machinery/telecomms/hub/preset_cent,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/vr/lobby) +"j" = (/obj/structure/decor/machinery/telecomms/server,/turf/unsimulated/floor{icon_state = "gcircuit"},/area/vr/lobby) +"k" = (/obj/structure/decor/machinery/telecomms/relay,/turf/unsimulated/floor{icon_state = "gcircuit"},/area/vr/lobby) +"l" = (/obj/structure/decor/machinery/telecomms/hub,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/vr/lobby) "m" = (/obj/machinery/computer/vr_control,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/vr/lobby) "n" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/vr/lobby) "o" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)"; icon_state = "fakewindows"; dir = 4},/area/vr/lobby) "p" = (/obj/effect/landmark{name = "avatarspawn"},/turf/unsimulated/floor{icon_state = "gcircuit"},/area/vr/lobby) -"q" = (/obj/machinery/telecomms/processor/preset_cent,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/vr/lobby) +"q" = (/obj/structure/decor/machinery/telecomms/processor,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/vr/lobby) "r" = (/turf/unsimulated/wall/fakeglass,/area/vr/lobby) (1,1,1) = {" diff --git a/_maps/metastation.dm b/_maps/metastation.dm index 9240a5e928f..57a249d27dd 100644 --- a/_maps/metastation.dm +++ b/_maps/metastation.dm @@ -19,7 +19,7 @@ z7 = empty space #include "map_files\MetaStation\z2.dmm" #include "map_files\MetaStation\z3.dmm" #include "map_files\MetaStation\z4.dmm" - #include "map_files\MetaStation\z5.dmm" + #include "map_files\generic\z5.dmm" #include "map_files\generic\z6.dmm" #include "map_files\generic\z7.dmm" diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm index 1d7f436770d..6f1be49b3b7 100644 --- a/code/ATMOSPHERICS/atmospherics.dm +++ b/code/ATMOSPHERICS/atmospherics.dm @@ -259,8 +259,7 @@ Pipelines + Other Objects -> Pipe network user.last_played_vent = world.time playsound(src, 'sound/machines/ventcrawl.ogg', 50, 1, -3) else - var/can_connect = check_connect_types(target_move, src) - if((direction & initialize_directions) || (is_type_in_list(src, ventcrawl_machinery) && target_move.can_crawl_through() && can_connect)) //if we move in a way the pipe can connect, but doesn't - or we're in a vent + if((direction & initialize_directions) || is_type_in_list(src, ventcrawl_machinery)) //if we move in a way the pipe can connect, but doesn't - or we're in a vent user.remove_ventcrawl() user.forceMove(src.loc) user.visible_message("You hear something squeezing through the pipes.", "You climb out the ventilation system.") diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 499be494056..3a8f30f254a 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -8,6 +8,7 @@ #define OXY "oxy" #define CLONE "clone" #define STAMINA "stamina" +#define BRAIN "brain" #define STUN "stun" #define WEAKEN "weaken" @@ -63,13 +64,21 @@ #define THROWN_PROJECTILE_ATTACK 4 #define LEAP_ATTACK 5 +//Embedded objects +#define EMBEDDED_PAIN_CHANCE 15 //Chance for embedded objects to cause pain (damage user) +#define EMBEDDED_ITEM_FALLOUT 5 //Chance for embedded object to fall out (causing pain but removing the object) +#define EMBED_CHANCE 45 //Chance for an object to embed into somebody when thrown (if it's sharp) +#define EMBEDDED_PAIN_MULTIPLIER 2 //Coefficient of multiplication for the damage the item does while embedded (this*item.w_class) +#define EMBEDDED_FALL_PAIN_MULTIPLIER 5 //Coefficient of multiplication for the damage the item does when it falls out (this*item.w_class) +#define EMBEDDED_IMPACT_PAIN_MULTIPLIER 4 //Coefficient of multiplication for the damage the item does when it first embeds (this*item.w_class) +#define EMBED_THROWSPEED_THRESHOLD 4 //The minimum value of an item's throw_speed for it to embed (Unless it has embedded_ignore_throwspeed_threshold set to 1) +#define EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER 8 //Coefficient of multiplication for the damage the item does when removed without a surgery (this*item.w_class) +#define EMBEDDED_UNSAFE_REMOVAL_TIME 30 //A Time in ticks, total removal time = (this*item.w_class) + //Gun Stuff #define SAWN_INTACT 0 #define SAWN_OFF 1 #define WEAPON_LIGHT 0 #define WEAPON_MEDIUM 1 - #define WEAPON_HEAVY 2 - -// Embedded objects -#define EMBED_THROWSPEED_THRESHOLD 15 \ No newline at end of file + #define WEAPON_HEAVY 2 \ No newline at end of file diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 05133d226f1..a03ba7c9d4c 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -22,46 +22,26 @@ //Reagent flags #define REAGENT_NOREACT 1 -//Species flags. - -#define NO_BLOOD 1 -#define NO_BREATHE 2 -#define NO_DNA 4 -#define NO_SCAN 8 -#define NO_PAIN 16 -#define IS_WHITELISTED 32 -#define HAS_LIPS 64 -#define IS_PLANT 128 -#define CAN_BE_FAT 256 -#define NO_INTORGANS 512 -#define RADIMMUNE 1024 -#define ALL_RPARTS 2048 -#define NOGUNS 4096 -#define NOTRANSSTING 8192 - //Species clothing flags #define HAS_UNDERWEAR 1 #define HAS_UNDERSHIRT 2 #define HAS_SOCKS 4 //Species Body Flags -#define FEET_CLAWS 1 -#define FEET_PADDED 2 -#define FEET_NOSLIP 4 -#define HAS_HEAD_ACCESSORY 8 -#define HAS_TAIL 16 -#define TAIL_OVERLAPPED 32 -#define HAS_SKIN_TONE 64 -#define HAS_ICON_SKIN_TONE 128 -#define HAS_SKIN_COLOR 256 -#define HAS_HEAD_MARKINGS 512 -#define HAS_BODY_MARKINGS 1024 -#define HAS_TAIL_MARKINGS 2048 +#define HAS_HEAD_ACCESSORY 1 +#define HAS_TAIL 2 +#define TAIL_OVERLAPPED 4 +#define HAS_SKIN_TONE 8 +#define HAS_ICON_SKIN_TONE 16 +#define HAS_SKIN_COLOR 32 +#define HAS_HEAD_MARKINGS 64 +#define HAS_BODY_MARKINGS 128 +#define HAS_TAIL_MARKINGS 256 #define HAS_MARKINGS HAS_HEAD_MARKINGS|HAS_BODY_MARKINGS|HAS_TAIL_MARKINGS -#define TAIL_WAGGING 4096 -#define NO_EYES 8192 -#define HAS_FUR 16384 -#define HAS_ALT_HEADS 32768 +#define TAIL_WAGGING 512 +#define NO_EYES 1024 +#define HAS_ALT_HEADS 2048 +#define ALL_RPARTS 4096 //Species Diet Flags #define DIET_CARN 1 diff --git a/code/__DEFINES/genetics.dm b/code/__DEFINES/genetics.dm index 4f07d54ee01..6f8bd0feabf 100644 --- a/code/__DEFINES/genetics.dm +++ b/code/__DEFINES/genetics.dm @@ -99,6 +99,7 @@ #define NUTRITION_LEVEL_CURSED 0 //Blood levels +#define BLOOD_VOLUME_MAXIMUM 2000 #define BLOOD_VOLUME_NORMAL 560 #define BLOOD_VOLUME_SAFE 501 #define BLOOD_VOLUME_OKAY 336 @@ -117,3 +118,20 @@ #define CLONER_FRESH_CLONE "fresh" #define CLONER_MATURE_CLONE "mature" + +//Species traits. + +#define IS_WHITELISTED 1 +#define LIPS 2 +#define NO_BLOOD 3 +#define NO_BREATHE 4 +#define NO_DNA 5 +#define NO_SCAN 6 +#define NO_PAIN 7 +#define IS_PLANT 8 +#define CAN_BE_FAT 9 +#define NO_INTORGANS 10 +#define RADIMMUNE 11 +#define NOGUNS 12 +#define NOTRANSSTING 13 +#define VIRUSIMMUNE 14 \ No newline at end of file diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index 83db83c329c..cec707b8196 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -4,4 +4,7 @@ #define WEIGHT_CLASS_NORMAL 3 //Standard backpacks can carry tiny, small & normal items, ex: Fire extinguisher, Stunbaton, Gas Mask, Metal Sheets #define WEIGHT_CLASS_BULKY 4 //Items that can be weilded or equipped but not stored in an inventory, ex: Defibrillator, Backpack, Space Suits #define WEIGHT_CLASS_HUGE 5 //Usually represents objects that require two hands to operate, ex: Shotgun, Two Handed Melee Weapons -#define WEIGHT_CLASS_GIGANTIC 6 //Essentially means it cannot be picked up or placed in an inventory, ex: Mech Parts, Safe \ No newline at end of file +#define WEIGHT_CLASS_GIGANTIC 6 //Essentially means it cannot be picked up or placed in an inventory, ex: Mech Parts, Safe + +#define TV_TRIP "trip" +#define TV_SLIP "slip" diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index a27e3f8e96a..393247c5a1f 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -2,9 +2,21 @@ #define isatom(A) istype(A, /atom) #define ismovableatom(A) istype(A, /atom/movable) -// Mobs +// Mobs #define ismegafauna(A) istype(A, /mob/living/simple_animal/hostile/megafauna) +//Objects + +#define is_cleanable(A) (istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/rune)) //if something is cleanable + +var/list/static/global/pointed_types = typecacheof(list( + /obj/item/weapon/pen, + /obj/item/weapon/screwdriver, + /obj/item/weapon/reagent_containers/syringe, + /obj/item/weapon/kitchen/utensil/fork)) + +#define is_pointed(W) (is_type_in_typecache(W, pointed_types)) + //Turfs #define issimulatedturf(A) istype(A, /turf/simulated) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index a2f487086ae..5dfcf2dc888 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -297,10 +297,6 @@ #define FLAMMABLE 0 #define ON_FIRE 1 -// Sound -#define SOUND_MINIMUM_PRESSURE 10 -#define FALLOFF_SOUNDS 0.5 - // Bluespace shelter deploy checks #define SHELTER_DEPLOY_ALLOWED "allowed" #define SHELTER_DEPLOY_BAD_TURFS "bad turfs" @@ -334,4 +330,19 @@ #define FIRST_DIAG_STEP 1 #define SECOND_DIAG_STEP 2 -#define ARBITRARY_VIEWRANGE_NOHUD 2 \ No newline at end of file +#define ARBITRARY_VIEWRANGE_NOHUD 2 +#define SECOND_DIAG_STEP 2 + +//Bloody shoes/footprints +#define MAX_SHOE_BLOODINESS 100 +#define BLOODY_FOOTPRINT_BASE_ALPHA 150 +#define BLOOD_GAIN_PER_STEP 100 +#define BLOOD_LOSS_PER_STEP 5 + +//Bloody shoe blood states +#define BLOOD_STATE_HUMAN "blood" +#define BLOOD_STATE_XENO "xeno" +#define BLOOD_STATE_NOT_BLOODY "no blood whatsoever" + +// The SQL version required by this version of the code +#define SQL_VERSION 0 diff --git a/code/__DEFINES/mob.dm b/code/__DEFINES/mob.dm index f62db7a3fdc..5312cba6e14 100644 --- a/code/__DEFINES/mob.dm +++ b/code/__DEFINES/mob.dm @@ -1,20 +1,14 @@ ///////////////////ORGAN DEFINES/////////////////// // Organ defines. -#define ORGAN_CUT_AWAY 1 -#define ORGAN_GAUZED 2 -#define ORGAN_ATTACHABLE 4 -#define ORGAN_BLEEDING 8 -#define ORGAN_BROKEN 32 -#define ORGAN_DESTROYED 64 -#define ORGAN_ROBOT 128 -#define ORGAN_SPLINTED 256 -#define SALVED 512 -#define ORGAN_DEAD 1024 -#define ORGAN_MUTATED 2048 -#define ORGAN_ASSISTED 4096 +#define ORGAN_BROKEN 1 +#define ORGAN_ROBOT 2 +#define ORGAN_SPLINTED 4 +#define ORGAN_DEAD 8 +#define ORGAN_MUTATED 16 +#define ORGAN_ASSISTED 32 -#define DROPLIMB_EDGE 0 +#define DROPLIMB_SHARP 0 #define DROPLIMB_BLUNT 1 #define DROPLIMB_BURN 2 @@ -69,6 +63,12 @@ // Factor of how fast mob nutrition decreases #define HUNGER_FACTOR 0.1 +// Taste sensitivity - the more the more reagents you'll taste +#define TASTE_SENSITIVITY_NORMAL 1 +#define TASTE_SENSITIVITY_SHARP 1.5 +#define TASTE_SENSITIVITY_DULL 0.75 +#define TASTE_SENSITIVITY_NO_TASTE 0 + // Reagent type flags, defines the types of mobs this reagent will affect #define ORGANIC 1 #define SYNTHETIC 2 diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index 1b848686bc3..257e12f4093 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -39,7 +39,7 @@ #define ROLE_ERT "emergency response team" #define ROLE_NYMPH "Dionaea" #define ROLE_GSPIDER "giant spider" - +#define ROLE_DRONE "drone" //Missing assignment means it's not a gamemode specific role, IT'S NOT A BUG OR ERROR. //The gamemode specific ones are just so the gamemodes can query whether a player is old enough diff --git a/code/__DEFINES/sight.dm b/code/__DEFINES/sight.dm index 093f6a7f6f0..54162cd0f96 100644 --- a/code/__DEFINES/sight.dm +++ b/code/__DEFINES/sight.dm @@ -7,7 +7,6 @@ #define SEE_INVISIBLE_LIVING 25 #define SEE_INVISIBLE_LEVEL_ONE 35 //Used by some stuff in code. It's really poorly organized. -#define INVISIBILITY_LEVEL_ONE 35 //Used by some stuff in code. It's really poorly organized. #define SEE_INVISIBLE_LEVEL_TWO 45 //Used by some other stuff in code. It's really poorly organized. #define INVISIBILITY_LEVEL_TWO 45 //Used by some other stuff in code. It's really poorly organized. diff --git a/code/__DEFINES/sound.dm b/code/__DEFINES/sound.dm new file mode 100644 index 00000000000..712c57b3b3e --- /dev/null +++ b/code/__DEFINES/sound.dm @@ -0,0 +1,16 @@ +//max channel is 1024. Only go lower from here, because byond tends to pick the first availiable channel to play sounds on +#define CHANNEL_LOBBYMUSIC 1024 +#define CHANNEL_ADMIN 1023 +#define CHANNEL_VOX 1022 +#define CHANNEL_HEARTBEAT 1021 //sound channel for heartbeats +#define CHANNEL_BUZZ 1020 +#define CHANNEL_AMBIENCE 1019 + +//THIS SHOULD ALWAYS BE THE LOWEST ONE! +//KEEP IT UPDATED + +#define CHANNEL_HIGHEST_AVAILABLE 1018 + + +#define SOUND_MINIMUM_PRESSURE 10 +#define FALLOFF_SOUNDS 0.5 \ No newline at end of file diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index c8d4fd2c659..32dc9630bb0 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -45,7 +45,7 @@ S.race_key = ++rkey //Used in mob icon caching. all_species[S.name] = S - if(S.flags & IS_WHITELISTED) + if(IS_WHITELISTED in S.species_traits) whitelisted_species += S.name init_subtypes(/datum/crafting_recipe, crafting_recipes) diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm index 0196f326792..3556ef2d6f4 100644 --- a/code/__HELPERS/lists.dm +++ b/code/__HELPERS/lists.dm @@ -75,11 +75,25 @@ //returns a new list with only atoms that are in typecache L /proc/typecache_filter_list(list/atoms, list/typecache) . = list() - for (var/thing in atoms) + for(var/thing in atoms) var/atom/A = thing if(typecache[A.type]) . += A +/proc/typecache_filter_list_reverse(list/atoms, list/typecache) + . = list() + for(var/thing in atoms) + var/atom/A = thing + if(!typecache[A.type]) + . += A + +/proc/typecache_filter_multi_list_exclusion(list/atoms, list/typecache_include, list/typecache_exclude) + . = list() + for(var/thing in atoms) + var/atom/A = thing + if(typecache_include[A.type] && !typecache_exclude[A.type]) + . += A + //Like typesof() or subtypesof(), but returns a typecache instead of a list /proc/typecacheof(path, ignore_root_path) if(ispath(path)) diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 89755d7acf0..4f9c08a9dc5 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -59,6 +59,10 @@ /proc/sanitize(var/t,var/list/repl_chars = null) return html_encode(sanitize_simple(t,repl_chars)) +/proc/paranoid_sanitize(t) + var/regex/alphanum_only = regex("\[^a-zA-Z0-9# ,.?!:;()]", "g") + return alphanum_only.Replace(t, "#") + //Runs sanitize and strip_html_simple //I believe strip_html_simple() is required to run first to prevent '<' from displaying as '<' after sanitize() calls byond's html_encode() /proc/strip_html(var/t,var/limit=MAX_MESSAGE_LEN) @@ -448,32 +452,32 @@ proc/checkhtml(var/t) // Pencode -/proc/pencode_to_html(text, mob/user, obj/item/weapon/pen/P = null, sign = 1, fields = 1, deffont = PEN_FONT, signfont = SIGNFONT, crayonfont = CRAYON_FONT) - text = replacetext(text, "\n", "
") - text = replacetext(text, "\[center\]", "
") - text = replacetext(text, "\[/center\]", "
") - text = replacetext(text, "\[br\]", "
") +/proc/pencode_to_html(text, mob/user, obj/item/weapon/pen/P = null, format = 1, sign = 1, fields = 1, deffont = PEN_FONT, signfont = SIGNFONT, crayonfont = CRAYON_FONT) text = replacetext(text, "\[b\]", "") text = replacetext(text, "\[/b\]", "") text = replacetext(text, "\[i\]", "") text = replacetext(text, "\[/i\]", "") text = replacetext(text, "\[u\]", "") text = replacetext(text, "\[/u\]", "") - text = replacetext(text, "\[large\]", "") - text = replacetext(text, "\[/large\]", "") if(sign) text = replacetext(text, "\[sign\]", "[user ? user.real_name : "Anonymous"]") if(fields) text = replacetext(text, "\[field\]", "") + if(format) + text = replacetext(text, "\[h1\]", "

") + text = replacetext(text, "\[/h1\]", "

") + text = replacetext(text, "\[h2\]", "

") + text = replacetext(text, "\[/h2\]", "

") + text = replacetext(text, "\[h3\]", "

") + text = replacetext(text, "\[/h3\]", "

") + text = replacetext(text, "\n", "
") + text = replacetext(text, "\[center\]", "
") + text = replacetext(text, "\[/center\]", "
") + text = replacetext(text, "\[br\]", "
") + text = replacetext(text, "\[large\]", "") + text = replacetext(text, "\[/large\]", "") - text = replacetext(text, "\[h1\]", "

") - text = replacetext(text, "\[/h1\]", "

") - text = replacetext(text, "\[h2\]", "

") - text = replacetext(text, "\[/h2\]", "

") - text = replacetext(text, "\[h3\]", "

") - text = replacetext(text, "\[/h3\]", "

") - - if(istype(P, /obj/item/toy/crayon)) // If it is a crayon, and he still tries to use these, make them empty! + if(istype(P, /obj/item/toy/crayon) || !format) // If it is a crayon, and he still tries to use these, make them empty! text = replacetext(text, "\[*\]", "") text = replacetext(text, "\[hr\]", "") text = replacetext(text, "\[small\]", "") @@ -485,7 +489,7 @@ proc/checkhtml(var/t) text = replacetext(text, "\[row\]", "") text = replacetext(text, "\[cell\]", "") text = replacetext(text, "\[logo\]", "") - + if(istype(P, /obj/item/toy/crayon)) text = "[text]" else // They are using "not a crayon" - formatting is OK and such text = replacetext(text, "\[*\]", "
  • ") @@ -501,9 +505,10 @@ proc/checkhtml(var/t) text = replacetext(text, "\[row\]", "") text = replacetext(text, "\[cell\]", "") text = replacetext(text, "\[logo\]", "") - + if(P) text = "[text]" - + else + text = "[text]" text = copytext(text, 1, MAX_PAPER_MESSAGE_LEN) return text @@ -541,4 +546,3 @@ proc/checkhtml(var/t) text = replacetext(text, "", "\[cell\]") text = replacetext(text, "", "\[logo\]") return text - diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 82b2ea8b419..3900ba2ba33 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - /* * A large number of misc global procs. */ @@ -1081,6 +1079,21 @@ proc/get_mob_with_client_list() return get_turf(location) +//For objects that should embed, but make no sense being is_sharp or is_pointed() +//e.g: rods +var/list/can_embed_types = typecacheof(list( + /obj/item/stack/rods, + /obj/item/pipe)) + +/proc/can_embed(obj/item/W) + if(is_sharp(W)) + return 1 + if(is_pointed(W)) + return 1 + + if(is_type_in_typecache(W, can_embed_types)) + return 1 + //Quick type checks for some tools var/global/list/common_tools = list( /obj/item/stack/cable_coil, @@ -1187,34 +1200,13 @@ var/global/list/common_tools = list( return 0 //Whether or not the given item counts as sharp in terms of dealing damage -/proc/is_sharp(obj/O as obj) - if(!O) return 0 - if(O.sharp) return 1 - if(O.edge) return 1 +/proc/is_sharp(obj/O) + if(!O) + return 0 + if(O.sharp) + return 1 return 0 -//Whether or not the given item counts as cutting with an edge in terms of removing limbs -/proc/has_edge(obj/O as obj) - if(!O) return 0 - if(O.edge) return 1 - return 0 - -//Returns 1 if the given item is capable of popping things like balloons, inflatable barriers, or cutting police tape. -/proc/can_puncture(obj/item/W as obj) // For the record, WHAT THE HELL IS THIS METHOD OF DOING IT? - if(!istype(W)) return 0 - if(!W) return 0 - if(W.sharp) return 1 - return ( \ - W.sharp || \ - istype(W, /obj/item/weapon/screwdriver) || \ - istype(W, /obj/item/weapon/pen) || \ - istype(W, /obj/item/weapon/weldingtool) || \ - istype(W, /obj/item/weapon/lighter/zippo) || \ - istype(W, /obj/item/weapon/match) || \ - istype(W, /obj/item/clothing/mask/cigarette) || \ - istype(W, /obj/item/weapon/shovel) \ - ) - /proc/is_surgery_tool(obj/item/W as obj) return ( \ istype(W, /obj/item/weapon/scalpel) || \ @@ -1255,46 +1247,42 @@ var/global/list/common_tools = list( /* Checks if that loc and dir has a item on the wall */ -var/list/WALLITEMS = list( - "/obj/machinery/power/apc", "/obj/machinery/alarm", "/obj/item/device/radio/intercom", - "/obj/structure/extinguisher_cabinet", "/obj/structure/reagent_dispensers/peppertank", - "/obj/machinery/status_display", "/obj/machinery/requests_console", "/obj/machinery/light_switch", "/obj/effect/sign", - "/obj/machinery/newscaster", "/obj/machinery/firealarm", "/obj/structure/noticeboard", "/obj/machinery/door_control", - "/obj/machinery/computer/security/telescreen", "/obj/machinery/embedded_controller/radio/simple_vent_controller", - "/obj/item/weapon/storage/secure/safe", "/obj/machinery/door_timer", "/obj/machinery/flasher", "/obj/machinery/keycard_auth", - "/obj/structure/mirror", "/obj/structure/closet/fireaxecabinet", "/obj/machinery/computer/security/telescreen/entertainment", - "/obj/structure/sign" - ) +var/list/static/global/wall_items = typecacheof(list(/obj/machinery/power/apc, /obj/machinery/alarm, + /obj/item/device/radio/intercom, /obj/structure/extinguisher_cabinet, /obj/structure/reagent_dispensers/peppertank, + /obj/machinery/status_display, /obj/machinery/requests_console, /obj/machinery/light_switch, /obj/structure/sign, + /obj/machinery/newscaster, /obj/machinery/firealarm, /obj/structure/noticeboard, /obj/machinery/door_control, + /obj/machinery/computer/security/telescreen, /obj/machinery/embedded_controller/radio/airlock, + /obj/item/weapon/storage/secure/safe, /obj/machinery/door_timer, /obj/machinery/flasher, /obj/machinery/keycard_auth, + /obj/structure/mirror, /obj/structure/closet/fireaxecabinet, /obj/machinery/computer/security/telescreen/entertainment, + /obj/structure/sign)) + /proc/gotwallitem(loc, dir) for(var/obj/O in loc) - for(var/item in WALLITEMS) - if(istype(O, text2path(item))) - //Direction works sometimes - if(O.dir == dir) - return 1 - - //Some stuff doesn't use dir properly, so we need to check pixel instead - switch(dir) - if(SOUTH) - if(O.pixel_y > 10) - return 1 - if(NORTH) - if(O.pixel_y < -10) - return 1 - if(WEST) - if(O.pixel_x > 10) - return 1 - if(EAST) - if(O.pixel_x < -10) - return 1 + if(is_type_in_typecache(O, wall_items)) + //Direction works sometimes + if(O.dir == dir) + return 1 + //Some stuff doesn't use dir properly, so we need to check pixel instead + switch(dir) + if(SOUTH) + if(O.pixel_y > 10) + return 1 + if(NORTH) + if(O.pixel_y < -10) + return 1 + if(WEST) + if(O.pixel_x > 10) + return 1 + if(EAST) + if(O.pixel_x < -10) + return 1 //Some stuff is placed directly on the wallturf (signs) for(var/obj/O in get_step(loc, dir)) - for(var/item in WALLITEMS) - if(istype(O, text2path(item))) - if(abs(O.pixel_x) <= 10 && abs(O.pixel_y) <= 10) - return 1 + if(is_type_in_typecache(O, wall_items)) + if(abs(O.pixel_x) <= 10 && abs(O.pixel_y) <= 10) + return 1 return 0 @@ -1460,15 +1448,6 @@ atom/proc/GetTypeInAllContents(typepath) colour += temp_col return colour -/proc/get_random_chemical(var/is_plant = 0) - var/list/blocked = blocked_chems.Copy() //blocked_chems list is found in code/_globalvars/lists/reagents.dm - if(is_plant) - blocked.Add(plant_blocked_chems.Copy()) //plant_blocked_chems list is found in code/_globalvars/lists/reagents.dm - var/picked_chem = pick(chemical_reagents_list) - if(blocked.Find(picked_chem)) - return get_random_chemical(is_plant) - return picked_chem - /proc/get_distant_turf(var/turf/T,var/direction,var/distance) if(!T || !direction || !distance) return @@ -1891,4 +1870,4 @@ var/global/list/g_fancy_list_of_types = null var/num = pick(num_sample) num_sample -= num result += (1 << num) - return result + return result diff --git a/code/_globalvars/configuration.dm b/code/_globalvars/configuration.dm index 2d9b9761523..88d4594e740 100644 --- a/code/_globalvars/configuration.dm +++ b/code/_globalvars/configuration.dm @@ -23,6 +23,9 @@ var/mouse_respawn_time = 5 //Amount of time that must pass between a player dyin // It's defined here as a global because this is a hilariously bad thing to have on the easily-edited config datum var/global/shutdown_shell_command +// Also global to prevent easy edits +var/global/python_path = "" //Path to the python executable. Defaults to "python" on windows and "/usr/bin/env python2" on unix + // Debug is used exactly once (in living.dm) but is commented out in a lot of places. It is not set anywhere and only checked. // Debug2 is used in conjunction with a lot of admin verbs and therefore is actually legit. var/Debug = 0 // global debug switch @@ -44,4 +47,4 @@ var/blobevent = 0 //Medals hub related variables var/global/medal_hub = null var/global/medal_pass = " " -var/global/medals_enabled = TRUE //will be auto set to false if the game fails contacting the medal hub to prevent unneeded calls. \ No newline at end of file +var/global/medals_enabled = TRUE //will be auto set to false if the game fails contacting the medal hub to prevent unneeded calls. diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index e453d748428..0cc712799c7 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -42,4 +42,6 @@ var/global/list/global_radios = list() //list of all radios, across all z-lev var/global/list/meteor_list = list() //list of all meteors var/global/list/poi_list = list() //list of points of interest for observe/follow +var/global/list/active_jammers = list() // List of active radio jammers +var/global/list/active_diseases = list() //List of Active disease in all mobs; purely for quick referencing. \ No newline at end of file diff --git a/code/_globalvars/lists/reagents.dm b/code/_globalvars/lists/reagents.dm index 4b9786a86df..fcd4dacdc2b 100644 --- a/code/_globalvars/lists/reagents.dm +++ b/code/_globalvars/lists/reagents.dm @@ -57,9 +57,6 @@ var/global/list/blocked_chems = list("polonium", "initropidril", "concentrated_i "cryogenic_liquid", "dark_matter", "b_sorium", "reagent", "life","dragonsbreath") -//List of chems/mixtures that can't grow in plants (in addition to the global random chem blacklist) -var/global/list/plant_blocked_chems = list() //filled in /datum/reagents/New() with chems that have can_grow_in_plants = 0 - var/global/list/safe_chem_list = list("antihol", "charcoal", "epinephrine", "insulin", "teporone","silver_sulfadiazine", "salbutamol", "omnizine", "stimulants", "synaptizine", "potass_iodide", "oculine", "mannitol", "styptic_powder", "spaceacillin", "salglu_solution", "sal_acid", "cryoxadone", "blood", "synthflesh", "hydrocodone", diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index e969751e1dd..16ee49696bc 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -27,9 +27,9 @@ client.click_intercept.InterceptClickOn(src, params, A) return - if(world.time <= next_click) + if(next_click > world.time) return - next_click = world.time + 1 + changeNext_click(1) if(control_disabled || stat) return @@ -199,6 +199,11 @@ Topic(src, list("src" = UID(), "command"="lights", "activate" = "0"), 1) return +/obj/machinery/ai_slipper/AICtrlClick() //Turns liquid dispenser on or off + ToggleOn() + +/obj/machinery/ai_slipper/AIAltClick() //Dispenses liquid if on + Activate() // // Override AdjacentQuick for AltClicking diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index b4bb8292ca2..f30809d32ef 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -3,9 +3,36 @@ ~Sayu */ + +// THESE DO NOT AFFECT THE BASE 1 DECISECOND DELAY OF NEXT_CLICK +/mob/var/next_move_adjust = 0 //Amount to adjust action delays by, + or - +/mob/var/next_move_modifier = 1 //Value to multiply action delays by + +//Delays the mob's next action by num deciseconds +// eg: 10-3 = 7 deciseconds of delay +// eg: 10*0.5 = 5 deciseconds of delay +// DOES NOT EFFECT THE BASE 1 DECISECOND DELAY OF NEXT_CLICK + +/mob/proc/changeNext_move(num) + next_move = world.time + ((num+next_move_adjust)*next_move_modifier) + // 1 decisecond click delay (above and beyond mob/next_move) +//This is mainly modified by click code, to modify click delays elsewhere, use next_move and changeNext_move() /mob/var/next_click = 0 +// THESE DO AFFECT THE BASE 1 DECISECOND DELAY OF NEXT_CLICK +/mob/var/next_click_adjust = 0 +/mob/var/next_click_modifier = 1 //Value to multiply click delays by + +//Delays the mob's next click by num deciseconds +// eg: 10-3 = 7 deciseconds of delay +// eg: 10*0.5 = 5 deciseconds of delay +// DOES NOT EFFECT THE BASE 1 DECISECOND DELAY OF NEXT_CLICK + +/mob/proc/changeNext_click(num) + next_click = world.time + ((num+next_click_adjust)*next_click_modifier) + + /* Before anything else, defer these calls to a per-mobtype handler. This allows us to remove istype() spaghetti code, but requires the addition of other handler procs to simplify it. @@ -38,9 +65,9 @@ client.click_intercept.InterceptClickOn(src, params, A) return - if(world.time <= next_click) + if(next_click > world.time) return - next_click = world.time + 1 + changeNext_click(1) var/list/modifiers = params2list(params) if(modifiers["shift"] && modifiers["ctrl"]) @@ -136,9 +163,6 @@ return -/mob/proc/changeNext_move(num) - next_move = world.time + num - // Default behavior: ignore double clicks, consider them normal clicks instead /mob/proc/DblClickOn(var/atom/A, var/params) return @@ -201,7 +225,7 @@ /mob/living/carbon/MiddleClickOn(var/atom/A) if(!src.stat && src.mind && src.mind.changeling && src.mind.changeling.chosen_sting && (istype(A, /mob/living/carbon)) && (A != src)) - next_click = world.time + 5 + changeNext_click(5) mind.changeling.chosen_sting.try_to_sting(src, A) else ..() @@ -256,7 +280,7 @@ /mob/living/carbon/AltClickOn(var/atom/A) if(!src.stat && src.mind && src.mind.changeling && src.mind.changeling.chosen_sting && (istype(A, /mob/living/carbon)) && (A != src)) - next_click = world.time + 5 + changeNext_click(5) mind.changeling.chosen_sting.try_to_sting(src, A) else ..() diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index a15176af87c..631044f5c97 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -11,9 +11,9 @@ client.click_intercept.InterceptClickOn(src, params, A) return - if(world.time <= next_click) + if(next_click > world.time) return - next_click = world.time + 1 + changeNext_click(1) var/list/modifiers = params2list(params) @@ -169,6 +169,12 @@ /obj/machinery/turretid/BorgAltClick() //turret lethal on/off. Forwards to AI code. AIAltClick() +/obj/machinery/ai_slipper/BorgCtrlClick() //Turns liquid dispenser on or off + ToggleOn() + +/obj/machinery/ai_slipper/BorgAltClick() //Dispenses liquid if on + Activate() + /* As with AI, these are not used in click code, because the code for robots is specific, not generic. diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 68a24f87a3e..1d5d419ba82 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -235,6 +235,12 @@ or something covering your eyes." desc = "All that alcohol you've been drinking is impairing your speech, motor skills, and mental cognition. Make sure to act like it." icon_state = "drunk" +/obj/screen/alert/embeddedobject + name = "Embedded Object" + desc = "Something got lodged into your flesh and is causing major bleeding. It might fall out with time, but surgery is the safest way. \ + If you're feeling frisky, click yourself in help intent to pull the object out." + icon_state = "embeddedobject" + /obj/screen/alert/embeddedobject/Click() if(isliving(usr)) var/mob/living/carbon/human/M = usr @@ -405,6 +411,27 @@ so as to remain in compliance with the most up-to-date laws." if(NOTIFY_FOLLOW) G.ManualFollow(target) +/obj/screen/alert/notify_soulstone + name = "Soul Stone" + desc = "Someone is trying to capture your soul in a soul stone. Click to allow it." + icon_state = "template" + timeout = 10 SECONDS + var/obj/item/device/soulstone/stone = null + var/stoner = null + +/obj/screen/alert/notify_soulstone/Click() + if(!usr || !usr.client) + return + if(stone) + if(alert(usr, "Do you want to be captured by [stoner]'s soul stone? This will destroy your corpse and make it \ + impossible for you to get back into the game as your regular character.",, "No", "Yes") == "Yes") + stone.opt_in = TRUE + +/obj/screen/alert/notify_soulstone/Destroy() + stone = null + return ..() + + //OBJECT-BASED /obj/screen/alert/restrained/buckled diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index d309cc37e0f..fbba17c7b6b 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -43,9 +43,7 @@ /mob/living/carbon/human/proc/remake_hud() //used for preference changes mid-round; can't change hud icons without remaking the hud. - if(hud_used) - qdel(hud_used) - hud_used = null + QDEL_NULL(hud_used) create_mob_hud() if(hud_used) hud_used.show_hud(hud_used.hud_version) diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 260df783bf9..d184f765eac 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -108,11 +108,12 @@ icon_state = "internal0" else var/no_mask = FALSE - if(!C.wear_mask || !(C.wear_mask.flags & AIRTIGHT)) - if(ishuman(C)) - var/mob/living/carbon/human/H = C - if(!H.head || !(H.head.flags & AIRTIGHT)) - no_mask = TRUE + if(!C.get_organ_slot("breathing_tube")) + if(!C.wear_mask || !(C.wear_mask.flags & AIRTIGHT)) + if(ishuman(C)) + var/mob/living/carbon/human/H = C + if(!H.head || !(H.head.flags & AIRTIGHT)) + no_mask = TRUE if(no_mask) to_chat(C, "You are not wearing a suitable mask or helmet.") diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 59cbf9c6219..8d132ed2586 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -183,9 +183,7 @@ M.take_organ_damage(power) if(prob(33)) // Added blood for whacking non-humans too - var/turf/simulated/location = M.loc - if(istype(location, /turf/simulated)) - location.add_blood_floor(M) + M.add_splatter_floor() if("fire") M.take_organ_damage(0, power) to_chat(M, "Aargh it burns!") diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index f32161b92a2..eba4da0fe65 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -11,7 +11,8 @@ var/const/tk_maxrange = 15 By default, emulate the user's unarmed attack */ /atom/proc/attack_tk(mob/user) - if(user.stat) return + if(user.stat) + return user.UnarmedAttack(src,0) // attack_hand, attack_paw, etc return @@ -26,27 +27,23 @@ var/const/tk_maxrange = 15 return /obj/attack_tk(mob/user) - if(user.stat) return + if(user.stat) + return if(anchored) ..() return var/obj/item/tk_grab/O = new(src) - user.put_in_active_hand(O) - O.host = user - O.focus_object(src) - return + O.form_grab(user, src) /obj/item/attack_tk(mob/user) - if(user.stat || !isturf(loc)) return + if(user.stat || !isturf(loc)) + return if((TK in user.mutations) && !user.get_active_hand()) // both should already be true to get here var/obj/item/tk_grab/O = new(src) - user.put_in_active_hand(O) - O.host = user - O.focus_object(src) + O.form_grab(user, src) else warning("Strange attack_tk(): TK([TK in user.mutations]) empty hand([!user.get_active_hand()])") - return /mob/attack_tk(mob/user) @@ -75,104 +72,137 @@ var/const/tk_maxrange = 15 var/atom/movable/focus = null var/mob/living/host = null +/obj/item/tk_grab/Destroy() + if(focus) + release_object() + // Focus is null now + host = null + return ..() - dropped(mob/user as mob) - if(focus && user && loc != user && loc != user.loc) // drop_item() gets called when you tk-attack a table/closet with an item - if(focus.Adjacent(loc)) - focus.loc = loc +/obj/item/tk_grab/dropped(mob/user) + if(focus && user && loc != user && loc != user.loc) // drop_item() gets called when you tk-attack a table/closet with an item + if(focus.Adjacent(loc)) + focus.loc = loc - qdel(src) - return + qdel(src) //stops TK grabs being equipped anywhere but into hands - equipped(var/mob/user, var/slot) - if( (slot == slot_l_hand) || (slot== slot_r_hand) ) return +/obj/item/tk_grab/equipped(mob/user, var/slot) + if( (slot == slot_l_hand) || (slot== slot_r_hand) ) + return + qdel(src) + + +/obj/item/tk_grab/attack_self(mob/user) + if(focus) + focus.attack_self_tk(user) + +/obj/item/tk_grab/override_throw(mob/user, atom/target) + afterattack(target, user) + return TRUE + +/obj/item/tk_grab/afterattack(atom/target , mob/living/user, proximity, params)//TODO: go over this + if(!target || !user) + return + if(last_throw+3 > world.time) + return + if(!host || host != user) qdel(src) return - - - attack_self(mob/user as mob) - if(focus) - focus.attack_self_tk(user) - - afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, proximity, params)//TODO: go over this - if(!target || !user) return - if(last_throw+3 > world.time) return - if(!host || host != user) - qdel(src) - return - if(!(TK in host.mutations)) - qdel(src) - return - if(isobj(target) && !isturf(target.loc)) - return - - var/d = get_dist(user, target) - if(focus) - d = max(d,get_dist(user,focus)) // whichever is further - if(d > tk_maxrange) - to_chat(user, "Your mind won't reach that far.") - return - - if(!focus) - focus_object(target, user) - return - - if(target == focus) - target.attack_self_tk(user) - return // todo: something like attack_self not laden with assumptions inherent to attack_self - - - if(!istype(target, /turf) && istype(focus,/obj/item) && target.Adjacent(focus)) - var/obj/item/I = focus - var/resolved = target.attackby(I, user, params) - if(!resolved && target && I) - I.afterattack(target,user,1) // for splashing with beakers - - - else - apply_focus_overlay() - focus.throw_at(target, 10, 1, user) - last_throw = world.time + if(!(TK in host.mutations)) + qdel(src) + return + if(isobj(target) && !isturf(target.loc)) return - attack(mob/living/M as mob, mob/living/user as mob, def_zone) + var/d = get_dist(user, target) + if(focus) + d = max(d,get_dist(user,focus)) // whichever is further + if(d > tk_maxrange) + to_chat(user, "Your mind won't reach that far.") return + if(!focus) + focus_object(target, user) + return - proc/focus_object(var/obj/target, var/mob/living/user) - if(!istype(target,/obj)) return//Cant throw non objects atm might let it do mobs later - if(target.anchored || !isturf(target.loc)) - qdel(src) - return - focus = target - update_icon() + if(target == focus) + target.attack_self_tk(user) + return // todo: something like attack_self not laden with assumptions inherent to attack_self + + + if(istype(focus,/obj/item) && target.Adjacent(focus) && !user.in_throw_mode) + var/obj/item/I = focus + var/resolved = target.attackby(I, user, params) + if(!resolved && target && I) + I.afterattack(target,user,1) // for splashing with beakers + + + else apply_focus_overlay() + focus.throw_at(target, 10, 1, user) + last_throw = world.time + +/obj/item/tk_grab/attack(mob/living/M, mob/living/user, def_zone) + return + +/obj/item/tk_grab/is_equivalent(obj/item/I) + . = ..() + if(!.) + return I == focus + +/obj/item/tk_grab/proc/focus_object(var/obj/target, var/mob/user) + if(!istype(target,/obj)) + return//Cant throw non objects atm might let it do mobs later + if(target.anchored || !isturf(target.loc)) + qdel(src) return - - - proc/apply_focus_overlay() - if(!focus) return - var/obj/effect/overlay/O = new /obj/effect/overlay(locate(focus.x,focus.y,focus.z)) - O.name = "sparkles" - O.anchored = 1 - O.density = 0 - O.layer = FLY_LAYER - O.dir = pick(cardinal) - O.icon = 'icons/effects/effects.dmi' - O.icon_state = "nothing" - flick("empdisable",O) - spawn(5) - qdel(O) - return - - + focus = target update_icon() - overlays.Cut() - if(focus && focus.icon && focus.icon_state) - overlays += icon(focus.icon,focus.icon_state) + apply_focus_overlay() + // Make it behave like other equipment + if(istype(target, /obj/item)) + if(target in user.tkgrabbed_objects) + // Release the old grab first + user.unEquip(user.tkgrabbed_objects[target]) + user.tkgrabbed_objects[target] = src + +/obj/item/tk_grab/proc/release_object() + if(!focus) return + if(istype(focus, /obj/item)) + // Delete the key/value pair of item to TK grab + host.tkgrabbed_objects -= focus + focus = null + update_icon() + +/obj/item/tk_grab/proc/apply_focus_overlay() + if(!focus) + return + // Oh jeez ow + var/obj/effect/overlay/O = new /obj/effect/overlay(locate(focus.x,focus.y,focus.z)) + O.name = "sparkles" + O.anchored = 1 + O.density = 0 + O.layer = FLY_LAYER + O.dir = pick(cardinal) + O.icon = 'icons/effects/effects.dmi' + O.icon_state = "nothing" + flick("empdisable",O) + spawn(5) + qdel(O) + +/obj/item/tk_grab/proc/form_grab(mob/user, obj/target) + user.put_in_active_hand(src) + host = user + focus_object(target, user) + + +/obj/item/tk_grab/update_icon() + overlays.Cut() + if(focus && focus.icon && focus.icon_state) + overlays += icon(focus.icon,focus.icon_state) /*Not quite done likely needs to use something thats not get_step_to proc/check_path() @@ -197,4 +227,3 @@ var/const/tk_maxrange = 15 var/Z = source:z */ - diff --git a/code/controllers/Processes/diseases.dm b/code/controllers/Processes/diseases.dm deleted file mode 100644 index d0bec749ac8..00000000000 --- a/code/controllers/Processes/diseases.dm +++ /dev/null @@ -1,43 +0,0 @@ -var/datum/controller/process/diseases/disease_master - -/datum/controller/process/diseases - var/list/currentrun = list() - var/list/processing_diseases = list() - -/datum/controller/process/diseases/setup() - name = "disease" - schedule_interval = 20 // every 2 seconds - start_delay = 7 - log_startup_progress("Disease controller starting.") - - register_diseases() //register all pre-round diseases created - -/datum/controller/process/diseases/statProcess() - ..() - stat(null, "[processing_diseases.len] diseases") - - -/datum/controller/process/diseases/doWork() - src.currentrun = processing_diseases.Copy() - //cache for sanic speed (lists are references anyways) - var/list/currentrun = src.currentrun - - while(currentrun.len) - var/datum/disease/thing = currentrun[1] - currentrun.Cut(1, 2) - if(thing) - try - thing.process() - catch(var/exception/e) - catchException(e, thing) - SCHECK - else - catchBadType(thing) - processing_diseases.Remove(thing) - -DECLARE_GLOBAL_CONTROLLER(diseases, disease_master) - -/datum/controller/process/diseases/proc/register_diseases() - for(var/datum/disease/D in world) - if(!processing_diseases.Find(D)) - D.register() diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 2ab267ce5a8..713f6cb0a7f 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -96,11 +96,7 @@ var/health_threshold_crit = 0 var/health_threshold_dead = -100 - var/organ_health_multiplier = 1 - var/organ_regeneration_multiplier = 1 - var/bones_can_break = 1 - var/limbs_can_break = 1 var/revival_pod_plants = 1 var/revival_cloning = 1 @@ -146,7 +142,6 @@ var/admin_irc = "" var/admin_notify_irc = "" var/cidrandomizer_irc = "" - var/python_path = "" //Path to the python executable. Defaults to "python" on windows and "/usr/bin/env python2" on unix var/default_laws = 0 //Controls what laws the AI spawns with. @@ -498,12 +493,12 @@ if("python_path") if(value) - config.python_path = value + python_path = value else if(world.system_type == UNIX) - config.python_path = "/usr/bin/env python2" + python_path = "/usr/bin/env python2" else //probably windows, if not this should work anyway - config.python_path = "pythonw" + python_path = "pythonw" if("assistant_limit") config.assistantlimit = 1 @@ -632,14 +627,8 @@ config.slime_delay = value if("animal_delay") config.animal_delay = value - if("organ_health_multiplier") - config.organ_health_multiplier = value / 100 - if("organ_regeneration_multiplier") - config.organ_regeneration_multiplier = value / 100 if("bones_can_break") config.bones_can_break = value - if("limbs_can_break") - config.limbs_can_break = value if("shuttle_refuel_delay") config.shuttle_refuel_delay = text2num(value) if("traitor_objectives_amount") @@ -667,6 +656,7 @@ /datum/configuration/proc/loadsql(filename) // -- TLE var/list/Lines = file2list(filename) + var/db_version = 0 for(var/t in Lines) if(!t) continue @@ -704,8 +694,18 @@ sqlfdbkpass = value if("feedback_tableprefix") sqlfdbktableprefix = value + if("db_version") + db_version = text2num(value) else diary << "Unknown setting in configuration: '[name]'" + if(config.sql_enabled && db_version != SQL_VERSION) + config.sql_enabled = 0 + diary << "WARNING: DB_CONFIG DEFINITION MISMATCH!" + spawn(60) + if(ticker.current_state == GAME_STATE_PREGAME) + going = 0 + spawn(600) + to_chat(world, "DB_CONFIG MISMATCH, ROUND START DELAYED.
    Please check database version for recent upstream changes!
    ") /datum/configuration/proc/loadoverflowwhitelist(filename) var/list/Lines = file2list(filename) diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm index fe8d1cbb133..1cc9787420d 100644 --- a/code/controllers/verbs.dm +++ b/code/controllers/verbs.dm @@ -72,9 +72,6 @@ if("Vote") debug_variables(vote) feedback_add_details("admin_verb","DVote") - if("Diseases") - debug_variables(disease_master) - feedback_add_details("admin_verb","DDiseases") if("Fires") debug_variables(fire_master) feedback_add_details("admin_verb","DFires") diff --git a/code/datums/beam.dm b/code/datums/beam.dm index 7a8c802b42d..bb1cef167d6 100644 --- a/code/datums/beam.dm +++ b/code/datums/beam.dm @@ -15,12 +15,13 @@ var/static_beam = 0 var/beam_type = /obj/effect/ebeam //must be subtype -/datum/beam/New(beam_origin,beam_target,beam_icon='icons/effects/beam.dmi',beam_icon_state="b_beam",time=50,maxdistance=10,btype = /obj/effect/ebeam) +/datum/beam/New(beam_origin,beam_target,beam_icon='icons/effects/beam.dmi',beam_icon_state="b_beam",time=50,maxdistance=10,btype = /obj/effect/ebeam,beam_sleep_time=3) endtime = world.time+time origin = beam_origin origin_oldloc = get_turf(origin) target = beam_target target_oldloc = get_turf(target) + sleep_time = beam_sleep_time if(origin_oldloc == origin && target_oldloc == target) static_beam = 1 max_distance = maxdistance @@ -117,13 +118,13 @@ /obj/effect/ebeam/Destroy() owner = null return ..() - + /obj/effect/ebeam/deadly/Crossed(atom/A) ..() A.ex_act(1) -/atom/proc/Beam(atom/BeamTarget,icon_state="b_beam",icon='icons/effects/beam.dmi',time=50, maxdistance=10,beam_type=/obj/effect/ebeam) - var/datum/beam/newbeam = new(src,BeamTarget,icon,icon_state,time,maxdistance,beam_type) +/atom/proc/Beam(atom/BeamTarget,icon_state="b_beam",icon='icons/effects/beam.dmi',time=50, maxdistance=10,beam_type=/obj/effect/ebeam,beam_sleep_time=3) + var/datum/beam/newbeam = new(src,BeamTarget,icon,icon_state,time,maxdistance,beam_type,beam_sleep_time) spawn(0) newbeam.Start() return newbeam \ No newline at end of file diff --git a/code/datums/cache/air_alarm.dm b/code/datums/cache/air_alarm.dm index b507c096081..5f34997c95f 100644 --- a/code/datums/cache/air_alarm.dm +++ b/code/datums/cache/air_alarm.dm @@ -11,14 +11,17 @@ var/global/datum/repository/air_alarm/air_alarm_repository = new() if(!refresh) return cache_entry.data - if(ticker && ticker.current_state < GAME_STATE_PLAYING && istype(passed_alarm)) // Generating the list for the first time as the game hasn't started - no need to run through the machines list everything every time - alarms[++alarms.len] = passed_alarm.get_nano_data_console() + if(ticker && ticker.current_state < GAME_STATE_PLAYING && istype(passed_alarm)) // Generating the list for the first time as the game hasn't started - no need to run through the machines list everything every time + alarms = cache_entry.data // Don't deleate the list + if(is_station_contact(passed_alarm.z)) // Still need sanity checks + alarms[++alarms.len] = passed_alarm.get_nano_data_console() else - for(var/obj/machinery/alarm/alarm in (monitored_alarms ? monitored_alarms : air_alarms)) - if(!monitored_alarms && !is_station_contact(alarm.z)) + for(var/obj/machinery/alarm/alarm in (monitored_alarms ? monitored_alarms : air_alarms)) // Generating the whole list again is a bad habit but I can't be bothered to fix it right now + if(!monitored_alarms && !is_station_contact(alarm.z)) continue alarms[++alarms.len] = alarm.get_nano_data_console() + cache_entry.timestamp = world.time //+ 10 SECONDS cache_entry.data = alarms return alarms diff --git a/code/datums/cargoprofile.dm b/code/datums/cargoprofile.dm index 233490f73b0..a6e53c61eac 100644 --- a/code/datums/cargoprofile.dm +++ b/code/datums/cargoprofile.dm @@ -246,9 +246,9 @@ //Note that this filters out blueprints because they are a paper item. Do NOT throw out the station blueprints unless you be trollin'. blacklist = null whitelist = list(/obj/item/trash,/obj/item/toy,/obj/item/weapon/reagent_containers/food/snacks/ectoplasm,/obj/item/weapon/grown/bananapeel,/obj/item/weapon/broken_bottle,/obj/item/weapon/bikehorn, - /obj/item/weapon/cigbutt,/obj/item/weapon/contraband,/obj/item/weapon/grown/corncob,/obj/item/weapon/paper,/obj/item/weapon/shard, + /obj/item/weapon/cigbutt,/obj/item/weapon/poster/random_contraband,/obj/item/weapon/grown/corncob,/obj/item/weapon/paper,/obj/item/weapon/shard, /obj/item/weapon/sord,/obj/item/weapon/photo,/obj/item/weapon/folder, - /obj/item/areaeditor/blueprints,/obj/item/weapon/contraband,/obj/item/weapon/kitchen,/obj/item/weapon/book,/obj/item/clothing/mask/facehugger) + /obj/item/areaeditor/blueprints,/obj/item/weapon/poster/random_contraband,/obj/item/weapon/kitchen,/obj/item/weapon/book,/obj/item/clothing/mask/facehugger) /datum/cargoprofile/weapons name = "Weapons & Illegals" diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 58c3038918a..35e5c04d112 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -381,12 +381,7 @@ var/record_id_num = 1001 preview_icon.Blend(rgb(H.s_tone, H.s_tone, H.s_tone), ICON_ADD) else preview_icon.Blend(rgb(-H.s_tone, -H.s_tone, -H.s_tone), ICON_SUBTRACT) -/* Commented out due to broken-ness, see below comment - // Skin color - if(H.species.flags & HAS_SKIN_TONE) - if(!H.species || H.species.flags & HAS_SKIN_COLOR) - preview_icon.Blend(rgb(H.r_skin, H.g_skin, H.b_skin), ICON_ADD) -*/ + // Proper Skin color - Fix, you can't have HAS_SKIN_TONE *and* HAS_SKIN_COLOR if(H.species.bodyflags & HAS_SKIN_COLOR) preview_icon.Blend(rgb(H.r_skin, H.g_skin, H.b_skin), ICON_ADD) diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm index 0252977dcf4..86c2337c827 100644 --- a/code/datums/diseases/_MobProcs.dm +++ b/code/datums/diseases/_MobProcs.dm @@ -1,6 +1,7 @@ /mob/proc/HasDisease(datum/disease/D) - for(var/datum/disease/DD in viruses) + for(var/thing in viruses) + var/datum/disease/DD = thing if(D.IsSame(DD)) return 1 return 0 @@ -35,7 +36,7 @@ var/datum/disease/DD = new D.type(1, D, 0) viruses += DD DD.affected_mob = src - DD.holder = src + active_diseases += DD //Add it to the active diseases list, now that it's actually in a mob and being processed. //Copy properties over. This is so edited diseases persist. var/list/skipped = list("affected_mob","holder","carrier","stage","type","parent_type","vars","transformed") @@ -133,8 +134,11 @@ /mob/living/carbon/human/CanContractDisease(datum/disease/D) - if(species.virus_immune) + if((VIRUSIMMUNE in species.species_traits) && !D.bypasses_immunity) return 0 + for(var/thing in D.required_organs) + if(!((locate(thing) in bodyparts) || (locate(thing) in internal_organs))) + return 0 return ..() /mob/living/carbon/human/monkey/CanContractDisease(datum/disease/D) diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index 908cded34e2..571a0d7aa7b 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -50,21 +50,23 @@ var/list/diseases = subtypesof(/datum/disease) var/stage_prob = 4 //Other - var/longevity = 150 //Time in ticks disease stays in objects, Syringes and such are infinite. var/list/viable_mobtypes = list() //typepaths of viable mobs var/mob/living/carbon/affected_mob = null - var/atom/movable/holder = null var/list/cures = list() //list of cures if the disease has the CURABLE flag, these are reagent ids var/infectivity = 65 var/cure_chance = 8 - var/carrier = 0 //If our host is only a carrier + var/carrier = FALSE //If our host is only a carrier + var/bypasses_immunity = FALSE //Does it skip species virus immunity check? Some things may diseases and not viruses var/permeability_mod = 1 var/severity = NONTHREAT var/list/required_organs = list() var/needs_all_cures = TRUE var/list/strain_data = list() //dna_spread special bullshit - +/datum/disease/Destroy() + affected_mob = null + active_diseases.Remove(src) + return ..() /datum/disease/proc/stage_act() var/cure = has_cure() @@ -97,13 +99,15 @@ var/list/diseases = subtypesof(/datum/disease) if(!. || (needs_all_cures && . < cures.len)) return 0 -/datum/disease/proc/spread(atom/source, force_spread = 0) +/datum/disease/proc/spread(force_spread = 0) + if(!affected_mob) + return + if((spread_flags & SPECIAL || spread_flags & NON_CONTAGIOUS || spread_flags & BLOOD) && !force_spread) return - if(affected_mob) - if(affected_mob.reagents.has_reagent("spaceacillin") || (affected_mob.satiety > 0 && prob(affected_mob.satiety/10))) - return + if(affected_mob.reagents.has_reagent("spaceacillin") || (affected_mob.satiety > 0 && prob(affected_mob.satiety/10))) + return var/spread_range = 1 @@ -113,41 +117,19 @@ var/list/diseases = subtypesof(/datum/disease) if(spread_flags & AIRBORNE) spread_range++ - if(!source) - if(affected_mob) - source = affected_mob - else - return - - if(isturf(source.loc)) - for(var/mob/living/carbon/C in oview(spread_range, source)) - if(isturf(C.loc)) - if(AStar(source, C.loc, /turf/proc/Distance, spread_range, adjacent = (spread_flags & AIRBORNE) ? /turf/proc/reachableAdjacentAtmosTurfs : /turf/proc/reachableAdjacentTurfs)) - C.ContractDisease(src) - - -/datum/disease/proc/process() - if(!holder) - disease_master.processing_diseases -= src - return - - if(prob(infectivity)) - spread(holder) - - if(affected_mob) - for(var/datum/disease/D in affected_mob.viruses) - if(D != src) - if(IsSame(D)) - qdel(D) - - if(holder == affected_mob) - if(affected_mob.stat != DEAD) - stage_act() - - if(!affected_mob) - if(prob(70)) - if(--longevity<=0) - cure() + var/turf/T = affected_mob.loc + if(istype(T)) + for(var/mob/living/carbon/C in oview(spread_range, affected_mob)) + var/turf/V = get_turf(C) + if(V) + while(TRUE) + if(V == T) + C.ContractDisease(src) + break + var/turf/Temp = get_step_towards(V, T) + if(!V.CanAtmosPass(Temp)) + break + V = Temp /datum/disease/proc/cure() @@ -158,24 +140,6 @@ var/list/diseases = subtypesof(/datum/disease) remove_virus() qdel(src) - -/datum/disease/New() - if(required_organs && required_organs.len) - if(ishuman(affected_mob)) - var/mob/living/carbon/human/H = affected_mob - for(var/obj/item/organ/O in required_organs) - if(!locate(O) in H.bodyparts) - if(!locate(O) in H.internal_organs) - cure() - return - - if(disease_master) - register() - -/datum/disease/proc/register() - disease_master.processing_diseases += src - - /datum/disease/proc/IsSame(datum/disease/D) if(istype(src, D.type)) return 1 @@ -191,13 +155,6 @@ var/list/diseases = subtypesof(/datum/disease) /datum/disease/proc/GetDiseaseID() return type - -/datum/disease/Destroy() - if(disease_master && disease_master.processing_diseases.Find(src)) - disease_master.processing_diseases.Remove(src) - return ..() - - /datum/disease/proc/IsSpreadByTouch() if(spread_flags & CONTACT_FEET || spread_flags & CONTACT_HANDS || spread_flags & CONTACT_GENERAL) return 1 diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index ba180af970e..71c1bd74a28 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -46,13 +46,6 @@ var/list/advance_cures = list( */ /datum/disease/advance/New(var/process = 1, var/datum/disease/advance/D) - - // Setup our dictionary if it hasn't already. - if(!dictionary_symptoms.len) - for(var/symp in list_symptoms) - var/datum/symptom/S = new symp - dictionary_symptoms[S.id] = symp - if(!istype(D)) D = null // Generate symptoms if we weren't given any. @@ -96,7 +89,7 @@ var/list/advance_cures = list( if(!(istype(D, /datum/disease/advance))) return 0 - if(src.GetDiseaseID() != D.GetDiseaseID()) + if(GetDiseaseID() != D.GetDiseaseID()) return 0 return 1 @@ -121,7 +114,7 @@ var/list/advance_cures = list( // Mix the symptoms of two diseases (the src and the argument) /datum/disease/advance/proc/Mix(datum/disease/advance/D) - if(!(src.IsSame(D))) + if(!(IsSame(D))) var/list/possible_symptoms = shuffle(D.symptoms) for(var/datum/symptom/S in possible_symptoms) AddSymptom(new S.type) @@ -161,7 +154,6 @@ var/list/advance_cures = list( return generated /datum/disease/advance/proc/Refresh(new_name = 0) -// to_chat(world, "[src.name] \ref[src] - REFRESH!") var/list/properties = GenerateProperties() AssignProperties(properties) id = null @@ -402,7 +394,7 @@ var/list/advance_cures = list( D.AssignName(new_name) D.Refresh() - for(var/datum/disease/advance/AD in disease_master.processing) + for(var/datum/disease/advance/AD in active_diseases) AD.Refresh() for(var/mob/living/carbon/human/H in shuffle(living_mob_list)) @@ -417,12 +409,6 @@ var/list/advance_cures = list( name_symptoms += S.name message_admins("[key_name_admin(user)] has triggered a custom virus outbreak of [D.name]! It has these symptoms: [english_list(name_symptoms)]") -/* -/mob/verb/test() - - for(var/datum/disease/D in disease_master.processing) - to_chat(src, "[D.name] - [D.holder]") -*/ /datum/disease/advance/proc/totalStageSpeed() diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 007bbc92f0b..56be430f85d 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -67,7 +67,8 @@ Bonus /datum/symptom/heal/metabolism/Heal(mob/living/M, datum/disease/advance/A) var/cured = 0 - for(var/datum/disease/D in M.viruses) + for(var/thing in M.viruses) + var/datum/disease/D = thing if(D != A) cured = 1 cured_diseases += D.GetDiseaseID() diff --git a/code/datums/diseases/advance/symptoms/sneeze.dm b/code/datums/diseases/advance/symptoms/sneeze.dm index 9413eea5db5..0a31a4acae6 100644 --- a/code/datums/diseases/advance/symptoms/sneeze.dm +++ b/code/datums/diseases/advance/symptoms/sneeze.dm @@ -35,5 +35,5 @@ Bonus M.emote("sniff") else M.emote("sneeze") - A.spread(A.holder, 5) + A.spread(5) return \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/symptoms.dm b/code/datums/diseases/advance/symptoms/symptoms.dm index 1246b68fd0f..74da571836b 100644 --- a/code/datums/diseases/advance/symptoms/symptoms.dm +++ b/code/datums/diseases/advance/symptoms/symptoms.dm @@ -1,7 +1,6 @@ // Symptoms are the effects that engineered advanced diseases do. var/list/list_symptoms = subtypesof(/datum/symptom) -var/list/dictionary_symptoms = list() var/global/const/SYMPTOM_ACTIVATION_PROB = 3 @@ -22,7 +21,7 @@ var/global/const/SYMPTOM_ACTIVATION_PROB = 3 /datum/symptom/New() var/list/S = list_symptoms for(var/i = 1; i <= S.len; i++) - if(src.type == S[i]) + if(type == S[i]) id = "[i]" return CRASH("We couldn't assign an ID!") diff --git a/code/datums/diseases/appendicitis.dm b/code/datums/diseases/appendicitis.dm index 3c94ad8f801..d06c49de9c8 100644 --- a/code/datums/diseases/appendicitis.dm +++ b/code/datums/diseases/appendicitis.dm @@ -8,11 +8,11 @@ permeability_mod = 1 desc = "If left untreated the subject will become very weak, and may vomit often." severity = "Dangerous!" - longevity = 1000 disease_flags = CAN_CARRY|CAN_RESIST spread_flags = NON_CONTAGIOUS visibility_flags = HIDDEN_PANDEMIC required_organs = list(/obj/item/organ/internal/appendix) + bypasses_immunity = TRUE /datum/disease/appendicitis/stage_act() ..() diff --git a/code/datums/diseases/brainrot.dm b/code/datums/diseases/brainrot.dm index 38907524200..bb95e4aa733 100644 --- a/code/datums/diseases/brainrot.dm +++ b/code/datums/diseases/brainrot.dm @@ -9,7 +9,7 @@ viable_mobtypes = list(/mob/living/carbon/human) cure_chance = 15//higher chance to cure, since two reagents are required desc = "This disease destroys the braincells, causing brain fever, brain necrosis and general intoxication." - required_organs = list(/obj/item/organ/external/head) + required_organs = list(/obj/item/organ/internal/brain) severity = DANGEROUS /datum/disease/brainrot/stage_act() //Removed toxloss because damaging diseases are pretty horrible. Last round it killed the entire station because the cure didn't work -- Urist -ACTUALLY Removed rather than commented out, I don't see it returning - RR diff --git a/code/datums/diseases/dna_spread.dm b/code/datums/diseases/dna_spread.dm index f73154a0e20..7c5cde5b330 100644 --- a/code/datums/diseases/dna_spread.dm +++ b/code/datums/diseases/dna_spread.dm @@ -23,8 +23,8 @@ //Absorbs the target DNA. strain_data["dna"] = new affected_mob.dna.type affected_mob.dna.copy_dna(strain_data["dna"]) - src.carrier = 1 - src.stage = 4 + carrier = TRUE + stage = 4 return switch(stage) diff --git a/code/datums/diseases/kuru.dm b/code/datums/diseases/kuru.dm index bfd5af91a29..55fd4490d8e 100644 --- a/code/datums/diseases/kuru.dm +++ b/code/datums/diseases/kuru.dm @@ -1,4 +1,5 @@ /datum/disease/kuru + form = "Disease" name = "Space Kuru" max_stages = 4 stage_prob = 5 @@ -10,6 +11,7 @@ desc = "Uncontrollable laughing." severity = BIOHAZARD spread_flags = NON_CONTAGIOUS + bypasses_immunity = TRUE //Kuru is a prion disorder, not a virus /datum/disease/kuru/stage_act() ..() diff --git a/code/datums/diseases/pierrot_throat.dm b/code/datums/diseases/pierrot_throat.dm index 677bbbb2967..2bf0ca308a8 100644 --- a/code/datums/diseases/pierrot_throat.dm +++ b/code/datums/diseases/pierrot_throat.dm @@ -10,7 +10,6 @@ permeability_mod = 0.75 desc = "If left untreated the subject will probably drive others to insanity." severity = MEDIUM - longevity = 400 /datum/disease/pierrot_throat/stage_act() ..() diff --git a/code/datums/diseases/rhumba_beat.dm b/code/datums/diseases/rhumba_beat.dm index ec58f4f6034..fc26f005340 100644 --- a/code/datums/diseases/rhumba_beat.dm +++ b/code/datums/diseases/rhumba_beat.dm @@ -12,21 +12,17 @@ /datum/disease/rhumba_beat/stage_act() ..() + if(affected_mob.ckey == "rosham") + cure() + return switch(stage) - if(1) - if(affected_mob.ckey == "rosham") - src.cure() if(2) - if(affected_mob.ckey == "rosham") - src.cure() if(prob(45)) affected_mob.adjustToxLoss(5) affected_mob.updatehealth() if(prob(1)) to_chat(affected_mob, "You feel strange...") if(3) - if(affected_mob.ckey == "rosham") - src.cure() if(prob(5)) to_chat(affected_mob, "You feel the urge to dance...") else if(prob(5)) @@ -34,8 +30,6 @@ else if(prob(10)) to_chat(affected_mob, "You feel the need to chick chicky boom...") if(4) - if(affected_mob.ckey == "rosham") - src.cure() if(prob(10)) affected_mob.emote("gasp") to_chat(affected_mob, "You feel a burning beat inside...") @@ -43,10 +37,6 @@ affected_mob.adjustToxLoss(5) affected_mob.updatehealth() if(5) - if(affected_mob.ckey == "rosham") - src.cure() to_chat(affected_mob, "Your body is unable to contain the Rhumba Beat...") if(prob(50)) - affected_mob.gib() - else - return \ No newline at end of file + affected_mob.gib() \ No newline at end of file diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index e3482955865..7b4b0a27393 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -78,7 +78,6 @@ permeability_mod = 1 cure_chance = 1 disease_flags = CAN_CARRY|CAN_RESIST - longevity = 30 desc = "Monkeys with this disease will bite humans, causing humans to mutate into a monkey." severity = BIOHAZARD stage_prob = 4 diff --git a/code/datums/diseases/tuberculosis.dm b/code/datums/diseases/tuberculosis.dm index 4cd027a7d7d..9aad7ff6d17 100644 --- a/code/datums/diseases/tuberculosis.dm +++ b/code/datums/diseases/tuberculosis.dm @@ -1,4 +1,5 @@ /datum/disease/tuberculosis + form = "Disease" name = "Fungal tuberculosis" max_stages = 5 spread_text = "Airborne" @@ -8,8 +9,9 @@ viable_mobtypes = list(/mob/living/carbon/human) cure_chance = 5//like hell are you getting out of hell desc = "A rare highly transmittable virulent virus. Few samples exist, rumoured to be carefully grown and cultured by clandestine bio-weapon specialists. Causes fever, blood vomiting, lung damage, weight loss, and fatigue." - required_organs = list(/obj/item/organ/external/head) + required_organs = list(/obj/item/organ/internal/lungs) severity = DANGEROUS + bypasses_immunity = TRUE //Fungal and bacterial in nature; also infects the lungs /datum/disease/tuberculosis/stage_act() //it begins ..() diff --git a/code/datums/mixed.dm b/code/datums/mixed.dm index 31f7d67af36..391b7090ad4 100644 --- a/code/datums/mixed.dm +++ b/code/datums/mixed.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - /datum/data var/name = "data" var/size = 1.0 diff --git a/code/datums/outfits/outfit_admin.dm b/code/datums/outfits/outfit_admin.dm index 40c38ac0627..717599f112c 100644 --- a/code/datums/outfits/outfit_admin.dm +++ b/code/datums/outfits/outfit_admin.dm @@ -17,8 +17,6 @@ if(special_icon) I.icon_state = special_icon -/datum/outfit/admin - /datum/outfit/admin/syndicate name = "Syndicate Agent" @@ -451,7 +449,8 @@ r_hand = /obj/item/weapon/twohanded/fireaxe backpack_contents = list( /obj/item/weapon/storage/box/survival = 1, - /obj/item/device/flashlight = 1 + /obj/item/device/flashlight = 1, + /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofbanana = 1 ) /datum/outfit/admin/tunnel_clown/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) @@ -587,6 +586,8 @@ apply_to_card(I, H, list(access_maint_tunnels), "Legit Xenomorph") /datum/outfit/admin/soviet + + gloves = /obj/item/clothing/gloves/combat uniform = /obj/item/clothing/under/soviet back = /obj/item/weapon/storage/backpack/satchel head = /obj/item/clothing/head/ushanka @@ -721,6 +722,38 @@ /obj/item/weapon/melee/classic_baton/telescopic = 1, /obj/item/ammo_box/magazine/m50 = 2) +/datum/outfit/admin/paranormal_ert + name = "Paranormal ERT member" + + uniform = /obj/item/clothing/under/syndicate + suit = /obj/item/clothing/suit/space/hardsuit/ert/paranormal + back = /obj/item/weapon/storage/backpack/ert/security + belt = /obj/item/weapon/gun/energy/gun/nuclear + gloves = /obj/item/clothing/gloves/color/black + shoes = /obj/item/clothing/shoes/combat + head = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal + l_ear = /obj/item/device/radio/headset/ert/alt + glasses = /obj/item/clothing/glasses/hud/security/sunglasses + id = /obj/item/weapon/card/id/centcom + pda = /obj/item/device/pda/centcom + backpack_contents = list( + /obj/item/weapon/storage/box/survival = 1, + /obj/item/clothing/mask/gas/sechailer/swat = 1, + /obj/item/weapon/storage/box/zipties = 1, + /obj/item/device/flashlight = 1) + +/datum/outfit/admin/paranormal_ert/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + . = ..() + if(visualsOnly) + return + + var/obj/item/weapon/card/id/I = H.wear_id + if(istype(I)) + apply_to_card(I, H, get_centcom_access("Emergency Response Team Member"), "Emergency Response Team Member") + + var/obj/item/weapon/implant/L = new /obj/item/weapon/implant/mindshield(H) + L.implant(H) + /datum/outfit/admin/janitorial_ert name = "Janitorial ERT member" @@ -731,16 +764,18 @@ gloves = /obj/item/clothing/gloves/color/yellow shoes = /obj/item/clothing/shoes/galoshes head = /obj/item/clothing/head/helmet/space/hardsuit/ert/janitor - l_ear = /obj/item/device/radio/headset/centcom + l_ear = /obj/item/device/radio/headset/ert/alt glasses = /obj/item/clothing/glasses/sunglasses id = /obj/item/weapon/card/id/centcom pda = /obj/item/device/pda/centcom backpack_contents = list( /obj/item/weapon/caution = 2, + /obj/item/weapon/storage/box/survival = 1, /obj/item/weapon/reagent_containers/spray/cleaner = 1, /obj/item/weapon/storage/bag/trash = 1, /obj/item/weapon/storage/box/lights/mixed = 1, - /obj/item/weapon/holosign_creator = 1) + /obj/item/weapon/holosign_creator = 1, + /obj/item/device/flashlight = 1) /datum/outfit/admin/janitorial_ert/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) . = ..() @@ -936,7 +971,7 @@ for(var/obj/item/I in H.contents) if(!istype(I, /obj/item/weapon/implant)) - I.add_blood(H) + I.add_mob_blood(H) if(visualsOnly) return @@ -971,7 +1006,7 @@ for(var/obj/item/I in H.contents) if(!istype(I, /obj/item/weapon/implant)) - I.add_blood(H) + I.add_mob_blood(H) if(visualsOnly) return @@ -1006,7 +1041,7 @@ apply_to_card(I, H, get_all_accesses(), "Singuloth Knight") /datum/outfit/admin/assassin - name = "Assassin" + name = "Syndicate Assassin" uniform = /obj/item/clothing/under/suit_jacket suit = /obj/item/clothing/suit/wcoat @@ -1017,35 +1052,18 @@ glasses = /obj/item/clothing/glasses/sunglasses id = /obj/item/weapon/card/id/syndicate l_pocket = /obj/item/weapon/melee/energy/sword/saber - l_hand = /obj/item/weapon/storage/secure/briefcase + l_hand = /obj/item/weapon/storage/secure/briefcase/reaper pda = /obj/item/device/pda/heads backpack_contents = list( /obj/item/weapon/storage/box/survival = 1, /obj/item/device/flashlight = 1 ) - var/briefcase_contents = list( - /obj/item/stack/spacecash/c1000 = 3, - /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow = 1, - /obj/item/weapon/gun/projectile/revolver/mateba = 1, - /obj/item/ammo_box/a357 = 1, - /obj/item/weapon/grenade/plastic/c4 = 1 - ) - /datum/outfit/admin/assassin/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) . = ..() if(visualsOnly) return - var/obj/item/weapon/storage/secure/briefcase/B = H.l_hand - if(istype(B)) - for(var/obj/item/I in B) - qdel(I) - for(var/path in briefcase_contents) - var/number = backpack_contents[path] - for(var/i = 0, i < number, i++) - B.handle_item_insertion(new path(B), 1) - var/obj/item/weapon/implant/dust/D = new /obj/item/weapon/implant/dust(H) D.implant(H) diff --git a/code/datums/soullink.dm b/code/datums/soullink.dm new file mode 100644 index 00000000000..1f17c635e84 --- /dev/null +++ b/code/datums/soullink.dm @@ -0,0 +1,214 @@ +/mob/living + var/list/ownedSoullinks //soullinks we are the owner of + var/list/sharedSoullinks //soullinks we are a/the sharer of + +/mob/living/Destroy() + for(var/s in ownedSoullinks) + var/datum/soullink/S = s + S.ownerDies(FALSE) + qdel(s) //If the owner is destroy()'d, the soullink is destroy()'d + ownedSoullinks = null + for(var/s in sharedSoullinks) + var/datum/soullink/S = s + S.sharerDies(FALSE) + S.removeSoulsharer(src) //If a sharer is destroy()'d, they are simply removed + sharedSoullinks = null + return ..() + +//Keeps track of a Mob->Mob (potentially Player->Player) connection +//Can be used to trigger actions on one party when events happen to another +//Eg: shared deaths +//Can be used to form a linked list of mob-hopping +//Does NOT transfer with minds +/datum/soullink + var/mob/living/soulowner + var/mob/living/soulsharer + var/id //Optional ID, for tagging and finding specific instances + +/datum/soullink/Destroy() + if(soulowner) + LAZYREMOVE(soulowner.ownedSoullinks, src) + soulowner = null + if(soulsharer) + LAZYREMOVE(soulsharer.sharedSoullinks, src) + soulsharer = null + return ..() + +/datum/soullink/proc/removeSoulsharer(mob/living/sharer) + if(soulsharer == sharer) + soulsharer = null + LAZYREMOVE(sharer.sharedSoullinks, src) + +//Used to assign variables, called primarily by soullink() +//Override this to create more unique soullinks (Eg: 1->Many relationships) +//Return TRUE/FALSE to return the soullink/null in soullink() +/datum/soullink/proc/parseArgs(mob/living/owner, mob/living/sharer) + if(!owner || !sharer) + return FALSE + soulowner = owner + soulsharer = sharer + LAZYADD(owner.ownedSoullinks, src) + LAZYADD(sharer.sharedSoullinks, src) + return TRUE + +//Runs after /living death() +//Override this for content +/datum/soullink/proc/ownerDies(gibbed, mob/living/owner) + +//Runs after /living death() +//Override this for content +/datum/soullink/proc/sharerDies(gibbed, mob/living/owner) + +//Runs after /living update_revive() +//Override this for content +/datum/soullink/proc/ownerRevives(mob/living/owner) + +//Runs after /living update_revive() +//Override this for content +/datum/soullink/proc/sharerRevives(mob/living/owner) + +//Quick-use helper +/proc/soullink(typepath, ...) + var/datum/soullink/S = new typepath() + if(S.parseArgs(arglist(args.Copy(2, 0)))) + return S + + + +///////////////// +// MULTISHARER // +///////////////// +//Abstract soullink for use with 1 Owner -> Many Sharer setups +/datum/soullink/multisharer + var/list/soulsharers + +/datum/soullink/multisharer/parseArgs(mob/living/owner, list/sharers) + if(!owner || !LAZYLEN(sharers)) + return FALSE + soulowner = owner + soulsharers = sharers + LAZYADD(owner.ownedSoullinks, src) + for(var/l in sharers) + var/mob/living/L = l + LAZYADD(L.sharedSoullinks, src) + return TRUE + +/datum/soullink/multisharer/removeSoulsharer(mob/living/sharer) + LAZYREMOVE(soulsharers, sharer) + + + +///////////////// +// SHARED FATE // +///////////////// +//When the soulowner dies, the soulsharer dies, and vice versa +//This is intended for two players(or AI) and two mobs + +/datum/soullink/sharedfate/ownerDies(gibbed, mob/living/owner) + if(soulsharer) + soulsharer.death(gibbed) + +/datum/soullink/sharedfate/sharerDies(gibbed, mob/living/sharer) + if(soulowner) + soulowner.death(gibbed) + +///////////////// +// Demon Bind // +///////////////// +//When the soulowner dies, the soulsharer dies, but NOT vice versa +//This is intended for two players(or AI) and two mobs + +/datum/soullink/oneway/ownerDies(gibbed, mob/living/owner) + if(soulsharer) + soulsharer.dust(FALSE) + + +///////////////// +// SHARED BODY // +///////////////// +//When the soulsharer dies, they're placed in the soulowner, who remains alive +//If the soulowner dies, the soulsharer is killed and placed into the soulowner (who is still dying) +//This one is intended for one player moving between many mobs + +/datum/soullink/sharedbody/ownerDies(gibbed, mob/living/owner) + if(soulowner && soulsharer) + if(soulsharer.mind) + soulsharer.mind.transfer_to(soulowner) + soulsharer.death(gibbed) + +/datum/soullink/sharedbody/sharerDies(gibbed, mob/living/sharer) + if(soulowner && soulsharer && soulsharer.mind) + soulsharer.mind.transfer_to(soulowner) + + + +////////////////////// +// REPLACEMENT POOL // +////////////////////// +//When the owner dies, one of the sharers is placed in the owner's body, fully healed +//Sort of a "winner-stays-on" soullink +//Gibbing ends it immediately + +/datum/soullink/multisharer/replacementpool/ownerDies(gibbed, mob/living/owner) + if(LAZYLEN(soulsharers) && !gibbed) //let's not put them in some gibs + var/list/souls = shuffle(soulsharers.Copy()) + for(var/l in souls) + var/mob/living/L = l + if(L.stat != DEAD && L.mind) + L.mind.transfer_to(soulowner) + soulowner.revive(TRUE, TRUE) + L.death(FALSE) + +//Lose your claim to the throne! +/datum/soullink/multisharer/replacementpool/sharerDies(gibbed, mob/living/sharer) + removeSoulsharer(sharer) + + +//////////////// +// SOUL HOOK // +//////////////// +// When the owner transitions from dead to alive or vice versa, +// the linked atom is notified + +// Atoms that actually utilize this system are responsible for handling the GC cleanup themselves +// Splashing the GC handling onto every atom would be a big old waste + +/datum/soullink/soulhook + var/atom/movable/otherend + +/datum/soullink/soulhook/Destroy() + if(otherend) + LAZYREMOVE(otherend.sharedSoulhooks, src) + otherend = null + return ..() + +/datum/soullink/soulhook/parseArgs(mob/living/owner, atom/movable/other) + if(!owner || !other) + return FALSE + soulowner = owner + otherend = other + LAZYADD(owner.ownedSoullinks, src) + LAZYADD(other.sharedSoulhooks, src) + return TRUE + +/datum/soullink/soulhook/ownerDies(gibbed, mob/living/owner) + if(otherend) + otherend.onSoullinkDeath(gibbed, owner) + +/datum/soullink/soulhook/ownerRevives(mob/living/owner) + if(otherend) + otherend.onSoullinkRevive(owner) + +// oops I'm butchering the application of this +/datum/soullink/soulhook/removeSoulsharer(atom/movable/other) + if(otherend == other) + otherend = null + LAZYREMOVE(other.sharedSoulhooks, src) + qdel(src) // not much point in a soul link with one end out of the picture for good + +/atom/movable + var/list/sharedSoulhooks = null + +/atom/movable/proc/onSoullinkDeath(gibbed, mob/living/owner) + +/atom/movable/proc/onSoullinkRevive(mob/living/owner) diff --git a/code/datums/spell.dm b/code/datums/spell.dm index d32d5bac058..6dba2d9990b 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -13,7 +13,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin to_chat(user, "[user.ranged_ability.name] has been disabled.") user.ranged_ability.remove_ranged_ability(user) return TRUE //TRUE for failed, FALSE for passed. - user.next_click = world.time + CLICK_CD_CLICK_ABILITY + user.changeNext_click(CLICK_CD_CLICK_ABILITY) user.face_atom(A) return FALSE diff --git a/code/datums/spells/rathens.dm b/code/datums/spells/rathens.dm index 75ff2525c4d..b5cc7b63f51 100644 --- a/code/datums/spells/rathens.dm +++ b/code/datums/spells/rathens.dm @@ -42,4 +42,4 @@ continue if(prob(7)) to_chat(H, "Your [E] was severed by the explosion!") - E.droplimb(1, DROPLIMB_EDGE, 0, 1) + E.droplimb(1, DROPLIMB_SHARP, 0, 1) diff --git a/code/datums/spells/summonitem.dm b/code/datums/spells/summonitem.dm index 32472fe1ec0..7524e7f31d6 100644 --- a/code/datums/spells/summonitem.dm +++ b/code/datums/spells/summonitem.dm @@ -79,6 +79,14 @@ add_logs(target, C, "magically debrained", addition="INTENT: [uppertext(target.a_intent)]")*/ if(C.stomach_contents && item_to_retrive in C.stomach_contents) C.stomach_contents -= item_to_retrive + for(var/X in C.bodyparts) + var/obj/item/organ/external/part = X + if(item_to_retrive in part.embedded_objects) + part.embedded_objects -= item_to_retrive + to_chat(C, "The [item_to_retrive] that was embedded in your [part] has mysteriously vanished. How fortunate!") + if(!C.has_embedded_objects()) + C.clear_alert("embeddedobject") + break else if(istype(item_to_retrive.loc,/obj/machinery/portable_atmospherics/)) //Edge cases for moved machinery diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index dbe111b6dbe..739844051f6 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -932,6 +932,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/weapon/reagent_containers/food/condiment/soymilk, /obj/item/weapon/reagent_containers/food/condiment/saltshaker, /obj/item/weapon/reagent_containers/food/condiment/peppermill, + /obj/item/weapon/kitchen/rollingpin, /obj/item/weapon/storage/fancy/egg_box, /obj/item/weapon/reagent_containers/food/condiment/enzyme, /obj/item/weapon/reagent_containers/food/condiment/sugar, @@ -1338,7 +1339,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/weapon/reagent_containers/glass/paint/black, /obj/item/weapon/reagent_containers/glass/paint/white, /obj/item/weapon/reagent_containers/glass/paint/remover, - /obj/item/weapon/contraband/poster/legit, + /obj/item/weapon/poster/random_official, /obj/item/stack/wrapping_paper, /obj/item/stack/wrapping_paper, /obj/item/stack/wrapping_paper) @@ -1347,11 +1348,11 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /datum/supply_packs/misc/posters name = "Corporate Posters Crate" - contains = list(/obj/item/weapon/contraband/poster/legit, - /obj/item/weapon/contraband/poster/legit, - /obj/item/weapon/contraband/poster/legit, - /obj/item/weapon/contraband/poster/legit, - /obj/item/weapon/contraband/poster/legit) + contains = list(/obj/item/weapon/poster/random_official, + /obj/item/weapon/poster/random_official, + /obj/item/weapon/poster/random_official, + /obj/item/weapon/poster/random_official, + /obj/item/weapon/poster/random_official) cost = 8 containername = "corporate posters crate" @@ -1422,7 +1423,9 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/clothing/mask/gas/mime, /obj/item/clothing/head/beret, /obj/item/clothing/suit/suspenders, - /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing) + /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing, + /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofbanana + ) cost = 10 containertype = /obj/structure/closet/crate/secure containername = "standard costumes" @@ -1513,7 +1516,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /datum/supply_packs/misc/randomised/contraband num_contained = 5 contains = list(/obj/item/weapon/storage/pill_bottle/random_drug_bottle, - /obj/item/weapon/contraband/poster, + /obj/item/weapon/poster/random_contraband, /obj/item/weapon/storage/fancy/cigarettes/dromedaryco, /obj/item/weapon/storage/fancy/cigarettes/cigpack_shadyjims) name = "Contraband Crate" @@ -1722,4 +1725,4 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/weapon/vending_refill/cigarette, /obj/item/weapon/vending_refill/cigarette) cost = 15 - containername = "cigarette supply crate" \ No newline at end of file + containername = "cigarette supply crate" diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 1aa65685d5e..14732318aab 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -54,7 +54,7 @@ var/list/uplink_items = list() var/list/excludefrom = list() //Empty list does nothing. Place the name of gamemode you don't want this item to be available in here. This is so you dont have to list EVERY mode to exclude something. var/list/job = null var/surplus = 100 //Chance of being included in the surplus crate (when pick() selects it) - var/hijack_only = 0 //can this item be purchased only during hijackings? + var/hijack_only = FALSE //can this item be purchased only during hijackings? /datum/uplink_item/proc/spawn_item(var/turf/loc, var/obj/item/device/uplink/U) if(hijack_only) @@ -129,7 +129,7 @@ var/list/uplink_items = list() job = list("Clown") //mime -/datum/uplink_item/job_specific/caneshotgun +/datum/uplink_item/jobspecific/caneshotgun name = "Cane Shotgun + Assassination Darts" desc = "A specialized, one shell shotgun with a built-in cloaking device to mimic a cane. The shotgun is capable of hiding it's contents and the pin alongside being supressed. Comes with 6 special darts and a preloaded shrapnel round." reference = "MCS" @@ -137,14 +137,6 @@ var/list/uplink_items = list() cost = 15 job = list("Mime") -/datum/uplink_item/dangerous/cat_grenade - name = "Feral Cat Delivery Grenade" - desc = "The feral cat delivery grenade contains 8 dehydrated feral cats in a similar manner to dehydrated monkeys, which, upon detonation, will be rehydrated by a small reservoir of water contained within the grenade. These cats will then attack anything in sight." - item = /obj/item/weapon/grenade/spawnergrenade/feral_cats - reference = "CCLG" - cost = 5 - job = list("Psychiatrist")//why? Becuase its funny that a person in charge of your mental wellbeing has a cat granade.. - //Chef /datum/uplink_item/jobspecific/specialsauce name = "Chef Excellence's Special Sauce" @@ -195,8 +187,8 @@ var/list/uplink_items = list() item = /obj/item/weapon/storage/toolbox/green/memetic cost = 20 job = list("Chaplain") - surplus = 0 //No lucky chances from the crate; if you get this, this is ALL you're getting - hijack_only = 1 //This is a murderbone weapon, as such, it should only be available in those scenarios. + surplus = 0 //No lucky chances from the crate; if you get this, this is ALL you're getting + hijack_only = TRUE //This is a murderbone weapon, as such, it should only be available in those scenarios. //Janitor @@ -211,23 +203,21 @@ var/list/uplink_items = list() //Medical - /datum/uplink_item/jobspecific/rad_laser name = "Radiation Laser" - desc = "A radiation laser concealed inside of a Health Analyser. After a moderate delay, causes temporary collapse and radiation. Has adjustable controls, but will not function as a regular health analyser, only appears like one. May not function correctly on radiation resistant humanoids!" + desc = "A radiation laser concealed inside of a Health Analyser. After a moderate delay, causes temporary collapse and radiation. Has adjustable controls, but will not function as a regular health analyser, only appears like one. May not function correctly on radiation resistant humanoids!" reference = "RL" item = /obj/item/device/rad_laser cost = 5 - job = list( - "Chief Medical Officer", - "Medical Doctor", - "Geneticist", - "Psychiatrist", - "Chemist", - "Paramedic", - "Virologist", - "Brig Physician" - ) + job = list("Chief Medical Officer", "Medical Doctor", "Geneticist", "Psychiatrist", "Chemist", "Paramedic", "Coroner", "Virologist") + +/datum/uplink_item/dangerous/cat_grenade + name = "Feral Cat Delivery Grenade" + desc = "The feral cat delivery grenade contains 8 dehydrated feral cats in a similar manner to dehydrated monkeys, which, upon detonation, will be rehydrated by a small reservoir of water contained within the grenade. These cats will then attack anything in sight." + item = /obj/item/weapon/grenade/spawnergrenade/feral_cats + reference = "CCLG" + cost = 5 + job = list("Psychiatrist")//why? Becuase its funny that a person in charge of your mental wellbeing has a cat granade.. //Assistant @@ -249,10 +239,9 @@ var/list/uplink_items = list() cost = 6 job = list("Bartender") - //Barber -/datum/uplink_item/jobspecific/safety_scissors //Hue +/datum/uplink_item/jobspecific/safety_scissors //Hue name = "Safety Scissors" desc = "A pair of scissors that are anything but what their name implies; can easily cut right into someone's throat." reference = "CTS" @@ -278,7 +267,7 @@ var/list/uplink_items = list() reference = "PG" item = /obj/item/clothing/gloves/color/yellow/power cost = 10 - job = list("Station Engineer","Chief Engineer") + job = list("Station Engineer", "Chief Engineer") //RD @@ -299,7 +288,6 @@ var/list/uplink_items = list() cost = 3 job = list("Librarian") - //Botanist /datum/uplink_item/jobspecific/ambrosiacruciatus name = "Ambrosia Cruciatus Seeds" @@ -309,7 +297,6 @@ var/list/uplink_items = list() cost = 2 job = list("Botanist") - //Atmos Tech /datum/uplink_item/jobspecific/contortionist name = "Contortionist's Jumpsuit" @@ -335,7 +322,7 @@ var/list/uplink_items = list() reference = "ST" item = /obj/item/weapon/reagent_containers/hypospray/autoinjector/stimulants cost = 7 - job = list("Scientist","Research Director","Geneticist","Chief Medical Officer","Medical Doctor","Psychiatrist","Chemist","Paramedic","Virologist","Brig Physician") + job = list("Scientist", "Research Director", "Geneticist", "Chief Medical Officer", "Medical Doctor", "Psychiatrist", "Chemist", "Paramedic", "Coroner", "Virologist") //Tator Poison Bottles @@ -345,7 +332,7 @@ var/list/uplink_items = list() reference = "TPB" item = /obj/item/weapon/reagent_containers/glass/bottle/traitor cost = 2 - job = list("Research Director","Chief Medical Officer","Medical Doctor","Psychiatrist","Paramedic","Virologist","Bartender") + job = list("Research Director", "Chief Medical Officer", "Medical Doctor", "Psychiatrist", "Chemist", "Paramedic", "Virologist", "Bartender", "Chef") // Paper contact poison pen @@ -400,7 +387,7 @@ var/list/uplink_items = list() /datum/uplink_item/dangerous/machinegun name = "L6 Squad Automatic Weapon" - desc = "A fully-loaded Aussec Armoury belt-fed machine gun. This deadly weapon has a massive 50-round magazine of devastating 7.62x51mm ammunition." + desc = "A fully-loaded Aussec Armory belt-fed machine gun. This deadly weapon has a massive 50-round magazine of devastating 7.62x51mm ammunition." reference = "LMG" item = /obj/item/weapon/gun/projectile/automatic/l6_saw cost = 40 @@ -750,6 +737,14 @@ var/list/uplink_items = list() cost = 17 excludefrom = list(/datum/game_mode/nuclear) +/datum/uplink_item/stealthy_weapons/throwingweapons + name = "Box of Throwing Weapons" + desc = "A box of shurikens and reinforced bolas from ancient Earth martial arts. They are highly effective \ + throwing weapons. The bolas can knock a target down and the shurikens will embed into limbs." + reference = "STK" + item = /obj/item/weapon/storage/box/syndie_kit/throwing_weapons + cost = 3 + /datum/uplink_item/stealthy_weapons/edagger name = "Energy Dagger" desc = "A dagger made of energy that looks and functions as a pen when off." @@ -1088,6 +1083,7 @@ var/list/uplink_items = list() reference = "SNGB" item = /obj/item/device/radio/beacon/syndicate cost = 14 + surplus = 0 /datum/uplink_item/device_tools/syndicate_bomb name = "Syndicate Bomb" @@ -1128,6 +1124,13 @@ var/list/uplink_items = list() cost = 1 surplus = 0 +/datum/uplink_item/device_tools/jammer + name = "Radio Jammer" + desc = "This device will disrupt any nearby outgoing radio communication when activated." + reference = "RJ" + item = /obj/item/device/jammer + cost = 5 + /datum/uplink_item/device_tools/teleporter name = "Teleporter Circuit Board" desc = "A printed circuit board that completes the teleporter onboard the mothership. Advise you test fire the teleporter before entering it, as malfunctions can occur." diff --git a/code/datums/wires/syndicatebomb.dm b/code/datums/wires/syndicatebomb.dm index d1fe6217058..616429b8cd8 100644 --- a/code/datums/wires/syndicatebomb.dm +++ b/code/datums/wires/syndicatebomb.dm @@ -1,5 +1,5 @@ /datum/wires/syndicatebomb - random = 1 + random = TRUE holder_type = /obj/machinery/syndicatebomb wire_count = 5 @@ -13,83 +13,90 @@ var/const/WIRE_ACTIVATE = 16 // Will start a bombs timer if pulsed, will hint if switch(index) if(WIRE_BOOM) return "Explode" - + if(WIRE_UNBOLT) return "Unbolt" - + if(WIRE_DELAY) return "Delay" - + if(WIRE_PROCEED) return "Proceed" - + if(WIRE_ACTIVATE) return "Activate" /datum/wires/syndicatebomb/CanUse(mob/living/L) var/obj/machinery/syndicatebomb/P = holder if(P.open_panel) - return 1 - return 0 + return TRUE + return FALSE /datum/wires/syndicatebomb/UpdatePulsed(index) - var/obj/machinery/syndicatebomb/P = holder + var/obj/machinery/syndicatebomb/B = holder switch(index) if(WIRE_BOOM) - if(P.active) - P.loc.visible_message("[bicon(holder)] An alarm sounds! It's go-") - P.timer = 0 + if(B.active) + holder.visible_message("[bicon(B)] An alarm sounds! It's go-") + B.explode_now = TRUE if(WIRE_UNBOLT) - P.loc.visible_message("[bicon(holder)] The bolts spin in place for a moment.") + holder.visible_message("[bicon(holder)] The bolts spin in place for a moment.") if(WIRE_DELAY) - playsound(P.loc, 'sound/machines/chime.ogg', 30, 1) - P.loc.visible_message("[bicon(holder)] The bomb chirps.") - P.timer += 10 - if(WIRE_PROCEED) - playsound(P.loc, 'sound/machines/buzz-sigh.ogg', 30, 1) - P.loc.visible_message("[bicon(holder)] The bomb buzzes ominously!") - if(P.timer >= 61) //Long fuse bombs can suddenly become more dangerous if you tinker with them - P.timer = 60 - if(P.timer >= 21) - P.timer -= 10 - else if(P.timer >= 11) //both to prevent negative timers and to have a little mercy - P.timer = 10 - if(WIRE_ACTIVATE) - if(!P.active && !P.defused) - playsound(P.loc, 'sound/machines/click.ogg', 30, 1) - P.loc.visible_message("[bicon(holder)] You hear the bomb start ticking!") - P.active = 1 - P.icon_state = "[initial(P.icon_state)]-active[P.open_panel ? "-wires" : ""]" + if(B.delayedbig) + holder.visible_message("[bicon(B)] The bomb has already been delayed.") else - P.loc.visible_message("[bicon(holder)] The bomb seems to hesitate for a moment.") - P.timer += 5 + holder.visible_message("[bicon(B)] The bomb chirps.") + playsound(B, 'sound/machines/chime.ogg', 30, 1) + B.detonation_timer += 300 + B.delayedbig = TRUE + if(WIRE_PROCEED) + holder.visible_message("[bicon(B)] The bomb buzzes ominously!") + playsound(B, 'sound/machines/buzz-sigh.ogg', 30, 1) + var/seconds = B.seconds_remaining() + if(seconds >= 61) // Long fuse bombs can suddenly become more dangerous if you tinker with them. + B.detonation_timer = world.time + 600 + else if(seconds >= 21) + B.detonation_timer -= 100 + else if(seconds >= 11) // Both to prevent negative timers and to have a little mercy. + B.detonation_timer = world.time + 100 + if(WIRE_ACTIVATE) + if(!B.active && !B.defused) + holder.visible_message("[bicon(B)] You hear the bomb start ticking!") + B.activate() + B.update_icon() + else if(B.delayedlittle) + holder.visible_message("[bicon(B)] Nothing happens.") + else + holder.visible_message("[bicon(B)] The bomb seems to hesitate for a moment.") + B.detonation_timer += 100 + B.delayedlittle = TRUE ..() /datum/wires/syndicatebomb/UpdateCut(index, mended) - var/obj/machinery/syndicatebomb/P = holder + var/obj/machinery/syndicatebomb/B = holder switch(index) if(WIRE_EXPLODE) - if(!mended) - if(P.active) - P.loc.visible_message("[bicon(holder)] An alarm sounds! It's go-") - P.timer = 0 - else - P.defused = 1 + if(mended) + B.defused = FALSE // Cutting and mending all the wires of an inactive bomb will thus cure any sabotage. else - P.defused = 0 //cutting and mending all the wires of an inactive bomb will thus cure any sabotage + if(B.active) + holder.visible_message("[bicon(B)] An alarm sounds! It's go-") + B.explode_now = TRUE + else + B.defused = TRUE if(WIRE_UNBOLT) - if(!mended && P.anchored) - playsound(P.loc, 'sound/effects/stealthoff.ogg', 30, 1) - P.loc.visible_message("[bicon(holder)] The bolts lift out of the ground!") - P.anchored = 0 + if(!mended && B.anchored) + holder.visible_message("[bicon(B)] The bolts lift out of the ground!") + playsound(B, 'sound/effects/stealthoff.ogg', 30, 1) + B.anchored = FALSE if(WIRE_PROCEED) - if(!mended && P.active) - P.loc.visible_message("[bicon(holder)] An alarm sounds! It's go-") - P.timer = 0 + if(!mended && B.active) + holder.visible_message("[bicon(B)] An alarm sounds! It's go-") + B.explode_now = TRUE if(WIRE_ACTIVATE) - if(!mended && P.active) - P.loc.visible_message("[bicon(holder)] The timer stops! The bomb has been defused!") - P.icon_state = "[initial(P.icon_state)]-inactive[P.open_panel ? "-wires" : ""]" - P.active = 0 - P.defused = 1 + if(!mended && B.active) + holder.visible_message("[bicon(B)] The timer stops! The bomb has been defused!") + B.active = FALSE + B.defused = TRUE + B.update_icon() ..() \ No newline at end of file diff --git a/code/defines/procs/dbcore.dm b/code/defines/procs/dbcore.dm index 35470e8c598..b04a4c3b93a 100644 --- a/code/defines/procs/dbcore.dm +++ b/code/defines/procs/dbcore.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - //cursors #define Default_Cursor 0 #define Client_Cursor 1 diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 140b6116cd6..0ac2f242b08 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -313,14 +313,15 @@ // Ambience goes down here -- make sure to list each area seperately for ease of adding things in later, thanks! Note: areas adjacent to each other should have the same sounds to prevent cutoff when possible.- LastyScratch if(L && L.client && !L.client.ambience_playing && (L.client.prefs.sound & SOUND_BUZZ)) //split off the white noise from the rest of the ambience because of annoyance complaints - Kluys L.client.ambience_playing = 1 - L << sound('sound/ambience/shipambience.ogg', repeat = 1, wait = 0, volume = 35, channel = 2) - else if(L && L.client && !(L.client.prefs.sound & SOUND_BUZZ)) L.client.ambience_playing = 0 + L << sound('sound/ambience/shipambience.ogg', repeat = 1, wait = 0, volume = 35, channel = CHANNEL_BUZZ) + else if(L && L.client && !(L.client.prefs.sound & SOUND_BUZZ)) + L.client.ambience_playing = 0 if(prob(35) && L && L.client && (L.client.prefs.sound & SOUND_AMBIENCE)) var/sound = pick(ambientsounds) if(!L.client.played) - L << sound(sound, repeat = 0, wait = 0, volume = 25, channel = 1) + L << sound(sound, repeat = 0, wait = 0, volume = 25, channel = CHANNEL_AMBIENCE) L.client.played = 1 spawn(600) //ewww - this is very very bad if(L.&& L.client) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 292ad651235..8c12e452d1d 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -242,7 +242,7 @@ if(density && !has_gravity(AM)) //thrown stuff bounces off dense stuff in no grav, unless the thrown stuff ends up inside what it hit(embedding, bola, etc...). addtimer(src, "hitby_react", 2, TRUE, AM) -/atom/proc/hitby_react(atom/movable/AM) +/atom/proc/hitby_react(atom/movable/AM) if(AM && isturf(AM.loc)) step(AM, turn(AM.dir, 180)) @@ -365,47 +365,194 @@ A.fingerprintshidden |= fingerprintshidden.Copy() //admin A.fingerprintslast = fingerprintslast +var/list/blood_splatter_icons = list() -//returns 1 if made bloody, returns 0 otherwise -/atom/proc/add_blood(mob/living/carbon/human/M as mob) +/atom/proc/blood_splatter_index() + return "\ref[initial(icon)]-[initial(icon_state)]" - if(!blood_DNA || !istype(blood_DNA, /list)) //if our list of DNA doesn't exist yet (or isn't a list) initialise it. +//returns the mob's dna info as a list, to be inserted in an object's blood_DNA list +/mob/living/proc/get_blood_dna_list() + if(get_blood_id() != "blood") + return + return list("ANIMAL DNA" = "Y-") + +/mob/living/carbon/get_blood_dna_list() + if(get_blood_id() != "blood") + return + var/list/blood_dna = list() + if(dna) + var/mob/living/carbon/human/H = src + blood_dna[dna.unique_enzymes] = H.b_type + else + blood_dna["UNKNOWN DNA"] = "X*" + return blood_dna + +/mob/living/carbon/alien/get_blood_dna_list() + return list("UNKNOWN DNA" = "X*") + +//to add a mob's dna info into an object's blood_DNA list. +/atom/proc/transfer_mob_blood_dna(mob/living/L) + var/new_blood_dna = L.get_blood_dna_list() + if(!new_blood_dna) + return 0 + return transfer_blood_dna(new_blood_dna) + +/obj/effect/decal/cleanable/blood/splatter/transfer_mob_blood_dna(mob/living/L) + ..(L) + var/list/b_data = L.get_blood_data(L.get_blood_id()) + if(b_data) + basecolor = b_data["blood_color"] + else + basecolor = "#A10808" + update_icon() + +/obj/effect/decal/cleanable/blood/footprints/transfer_mob_blood_dna(mob/living/L) + ..(L) + var/list/b_data = L.get_blood_data(L.get_blood_id()) + if(b_data) + basecolor = b_data["blood_color"] + else + basecolor = "#A10808" + update_icon() + +//to add blood dna info to the object's blood_DNA list +/atom/proc/transfer_blood_dna(list/blood_dna) + if(!blood_DNA) blood_DNA = list() + var/old_length = blood_DNA.len + blood_DNA |= blood_dna + if(blood_DNA.len > old_length) + return 1//some new blood DNA was added - blood_color = "#A10808" - if(istype(M)) - if(M.species.flags & NO_BLOOD) - return 0 - M.check_dna() - blood_color = M.species.blood_color - . = 1 +//to add blood from a mob onto something, and transfer their dna info +/atom/proc/add_mob_blood(mob/living/M) + var/list/blood_dna = M.get_blood_dna_list() + if(!blood_dna) + return 0 + var/bloodcolor = "#A10808" + var/list/b_data = M.get_blood_data(M.get_blood_id()) + if(b_data) + bloodcolor = b_data["blood_color"] + + return add_blood(blood_dna, bloodcolor) + +//to add blood onto something, with blood dna info to include. +/atom/proc/add_blood(list/blood_dna, color) + return 0 + +/obj/add_blood(list/blood_dna, color) + return transfer_blood_dna(blood_dna) + +/obj/item/add_blood(list/blood_dna, color) + var/blood_count = !blood_DNA ? 0 : blood_DNA.len + if(!..()) + return 0 + if(!blood_count)//apply the blood-splatter overlay if it isn't already in there + add_blood_overlay(color) + return 1 //we applied blood to the item + +/obj/item/clothing/gloves/add_blood(list/blood_dna, color) + . = ..() + transfer_blood = rand(2, 4) + +/turf/add_blood(list/blood_dna, color) + var/obj/effect/decal/cleanable/blood/splatter/B = locate() in src + if(!B) + B = new /obj/effect/decal/cleanable/blood/splatter(src) + B.transfer_blood_dna(blood_dna) //give blood info to the blood decal. + B.basecolor = color + return 1 //we bloodied the floor + +/mob/living/carbon/human/add_blood(list/blood_dna, color) + if(wear_suit) + wear_suit.add_blood(blood_dna, color) + wear_suit.blood_color = color + update_inv_wear_suit(1) + else if(w_uniform) + w_uniform.add_blood(blood_dna, color) + w_uniform.blood_color = color + update_inv_w_uniform(1) + if(head) + head.add_blood(blood_dna, color) + head.blood_color = color + update_inv_head(0,0) + if(glasses) + glasses.add_blood(blood_dna, color) + glasses.blood_color = color + update_inv_glasses(0) + if(gloves) + var/obj/item/clothing/gloves/G = gloves + G.add_blood(blood_dna, color) + G.blood_color = color + verbs += /mob/living/carbon/human/proc/bloody_doodle + else + hand_blood_color = color + bloody_hands = rand(2, 4) + transfer_blood_dna(blood_dna) + verbs += /mob/living/carbon/human/proc/bloody_doodle + + update_inv_gloves(1) //handles bloody hands overlays and updating return 1 -/atom/proc/add_blood_list(mob/living/carbon/M) - // Returns 0 if we have that blood already - if(!istype(blood_DNA, /list)) //if our list of DNA doesn't exist yet (or isn't a list) initialise it. - blood_DNA = list() - //if this blood isn't already in the list, add it - if(blood_DNA[M.dna.unique_enzymes]) - return 0 //already bloodied with this blood. Cannot add more. - var/blood_type = "X*" - if(ishuman(M)) - var/mob/living/carbon/human/H = M - blood_type = H.b_type - blood_DNA[M.dna.unique_enzymes] = blood_type - return 1 +/obj/item/proc/add_blood_overlay(color) + if(initial(icon) && initial(icon_state)) + //try to find a pre-processed blood-splatter. otherwise, make a new one + var/index = blood_splatter_index() + var/icon/blood_splatter_icon = blood_splatter_icons[index] + if(!blood_splatter_icon) + blood_splatter_icon = icon(initial(icon), initial(icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object + blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) + blood_splatter_icon.Blend(icon('icons/effects/blood.dmi', "itemblood"), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant + blood_splatter_icon = fcopy_rsc(blood_splatter_icon) + blood_splatter_icons[index] = blood_splatter_icon -// Only adds blood on the floor -- Skie -/atom/proc/add_blood_floor(mob/living/carbon/M) - return //why the fuck this is at an atom level but only works on simulated turfs I don't know + blood_overlay = image(blood_splatter_icon) + blood_overlay.color = color + overlays += blood_overlay /atom/proc/clean_blood() - src.germ_level = 0 - if(istype(blood_DNA, /list)) - qdel(blood_DNA) + germ_level = 0 + if(islist(blood_DNA)) + blood_DNA = null return 1 + +/obj/item/clean_blood() + . = ..() + if(.) + if(blood_overlay) + overlays -= blood_overlay + +/obj/item/clothing/gloves/clean_blood() + . = ..() + if(.) + transfer_blood = 0 + + +/obj/item/clothing/shoes/clean_blood() + ..() + bloody_shoes = list(BLOOD_STATE_HUMAN = 0, BLOOD_STATE_XENO = 0, BLOOD_STATE_NOT_BLOODY = 0) + blood_state = BLOOD_STATE_NOT_BLOODY + if(ismob(loc)) + var/mob/M = loc + M.update_inv_shoes() + + +/mob/living/carbon/human/clean_blood() + if(gloves) + if(gloves.clean_blood()) + clean_blood() + update_inv_gloves() + gloves.germ_level = 0 + else + ..() // Clear the Blood_DNA list + if(bloody_hands) + bloody_hands = 0 + update_inv_gloves() + update_icons() //apply the now updated overlays to the mob + + /atom/proc/add_vomit_floor(mob/living/carbon/M as mob, var/toxvomit = 0) if( istype(src, /turf/simulated) ) var/obj/effect/decal/cleanable/vomit/this = new /obj/effect/decal/cleanable/vomit(src) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 906706de62e..61eec85e9cc 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -138,12 +138,12 @@ return /atom/movable/Bump(atom/A, yes) //the "yes" arg is to differentiate our Bump proc from byond's, without it every Bump() call would become a double Bump(). - if(A && yes) - if(throwing) - throwing.hit_atom(A) - . = 1 - if(!A || qdeleted(A)) - return + if(A && yes) + if(throwing) + throwing.hit_atom(A) + . = 1 + if(!A || qdeleted(A)) + return A.Bumped(src) /atom/movable/proc/forceMove(atom/destination) diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 2a6aa2b3a39..bddb7b59bc6 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -63,7 +63,8 @@ //called when a carbon changes virus /mob/living/carbon/proc/check_virus() - for(var/datum/disease/D in viruses) + for(var/thing in viruses) + var/datum/disease/D = thing if((!(D.visibility_flags & HIDDEN_SCANNER)) && (D.severity != NONTHREAT)) return 1 return 0 @@ -147,7 +148,7 @@ holder.icon_state = "hudxeno" else if(check_virus()) holder.icon_state = "hudill" - else if(has_brain_worms() && B != null && B.controlling) + else if(B && B.controlling) holder.icon_state = "hudbrainworm" else holder.icon_state = "hudhealthy" @@ -190,7 +191,7 @@ /mob/living/carbon/human/proc/sec_hud_set_security_status() var/image/holder = hud_list[WANTED_HUD] - var/perpname = get_face_name(get_id_name("")) + var/perpname = get_visible_name(TRUE) //gets the name of the perp, works if they have an id or if their face is uncovered if(!ticker) return //wait till the game starts or the monkeys runtime.... if(perpname) var/datum/data/record/R = find_record("name", perpname, data_core.security) diff --git a/code/game/dna/dna2_domutcheck.dm b/code/game/dna/dna2_domutcheck.dm index 6175d547d63..f2ad2b2fe03 100644 --- a/code/game/dna/dna2_domutcheck.dm +++ b/code/game/dna/dna2_domutcheck.dm @@ -16,7 +16,7 @@ /proc/genemutcheck(var/mob/living/M, var/block, var/connected=null, var/flags=0) if(ishuman(M)) // Would've done this via species instead of type, but the basic mob doesn't have a species, go figure. var/mob/living/carbon/human/H = M - if(H.species.flags & NO_DNA) + if(NO_DNA in H.species.species_traits) return if(!M) return diff --git a/code/game/dna/dna2_helpers.dm b/code/game/dna/dna2_helpers.dm index c5f9ce2b7fe..8a0894bfe09 100644 --- a/code/game/dna/dna2_helpers.dm +++ b/code/game/dna/dna2_helpers.dm @@ -134,8 +134,10 @@ var/obj/item/organ/external/head/head_organ = H.get_organ("head") var/obj/item/organ/internal/eyes/eye_organ = H.get_int_organ(/obj/item/organ/internal/eyes) var/datum/species/S = H.species - dna.write_head_attributes(head_organ) - dna.write_eyes_attributes(eye_organ) + if(istype(head_organ)) + dna.write_head_attributes(head_organ) + if(istype(eye_organ)) + dna.write_eyes_attributes(eye_organ) H.update_eyes() H.r_skin = dna.GetUIValueRange(DNA_UI_SKIN_R, 255) @@ -224,11 +226,8 @@ var/red = GetUIValueRange(DNA_UI_EYES_R, 255) var/green = GetUIValueRange(DNA_UI_EYES_G, 255) var/blue = GetUIValueRange(DNA_UI_EYES_B, 255) - eyes_organ.eye_colour = list( - red, - green, - blue - ) + if(eyes_organ) + eyes_organ.eye_colour = list(red, green, blue) /* TRAIT CHANGING PROCS diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm index 0533afe2911..43054c24923 100644 --- a/code/game/dna/dna_modifier.dm +++ b/code/game/dna/dna_modifier.dm @@ -327,7 +327,7 @@ if(ishuman(occupant)) var/mob/living/carbon/human/H = occupant - if((H.species.flags & NO_DNA)) + if(NO_DNA in H.species.species_traits) return 1 var/radiation_protection = occupant.run_armor_check(null, "rad", "Your clothes feel warm.", "Your clothes feel warm.") diff --git a/code/game/dna/genes/goon_disabilities.dm b/code/game/dna/genes/goon_disabilities.dm index 11da3ad6c07..e59dd3fc558 100644 --- a/code/game/dna/genes/goon_disabilities.dm +++ b/code/game/dna/genes/goon_disabilities.dm @@ -44,7 +44,7 @@ return 0 if(ishuman(M)) var/mob/living/carbon/human/H = M - if(H.species && H.species.flags & RADIMMUNE && !(flags & MUTCHK_FORCED)) + if((RADIMMUNE in H.species.species_traits) && !(flags & MUTCHK_FORCED)) return 0 return 1 diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm index 52b62f6cabf..d3625deab58 100644 --- a/code/game/dna/genes/goon_powers.dm +++ b/code/game/dna/genes/goon_powers.dm @@ -356,7 +356,7 @@ return user.visible_message("[user] [pick("chomps","bites")] off [the_item]'s [limb]!") playsound(user.loc, 'sound/items/eatfood.ogg', 50, 0) - limb.droplimb(0, DROPLIMB_EDGE) + limb.droplimb(0, DROPLIMB_SHARP) doHeal(user) else user.visible_message("[user] eats \the [the_item].") @@ -414,9 +414,6 @@ else M.stop_pulling() - if(user.pinned.len) - failure = 1 - user.visible_message("[user.name] takes a huge leap!") playsound(user.loc, 'sound/weapons/thudswoosh.ogg', 50, 1) if(failure) @@ -660,20 +657,20 @@ action_icon_state = "superfart" /obj/effect/proc_holder/spell/aoe_turf/superfart/invocation(mob/user = usr) - invocation = "[user] hunches down and grits their teeth!" - invocation_emote_self = invocation + invocation = "[user] hunches down and grits their teeth!" + invocation_emote_self = "You hunch down and grit your teeth!" ..(user) -/obj/effect/proc_holder/spell/aoe_turf/superfart/cast(list/targets) - var/UT = get_turf(usr) - - if(do_after(usr, 30, target = usr)) +/obj/effect/proc_holder/spell/aoe_turf/superfart/cast(list/targets, mob/user) + var/UT = get_turf(user) + if(do_after(user, 30, target = user)) + var/fartsize = pick("tremendous","gigantic","colossal") playsound(UT, 'sound/goonstation/effects/superfart.ogg', 50, 0) - usr.visible_message("[usr] unleashes a [pick("tremendous","gigantic","colossal")] fart!", "You hear a [pick("tremendous","gigantic","colossal")] fart.") + user.visible_message("[user] unleashes a [fartsize] fart!", "You hear a [fartsize] fart.") for(var/T in targets) for(var/mob/living/M in T) shake_camera(M, 10, 5) - if(M == usr) + if(M == user) continue to_chat(M, "You are sent flying!") M.Weaken(5) @@ -681,4 +678,4 @@ step_away(M, UT, 15) step_away(M, UT, 15) else - to_chat(usr, "You were interrupted and couldn't fart! Rude!") + to_chat(user, "You were interrupted and couldn't fart! Rude!") diff --git a/code/game/dna/genes/monkey.dm b/code/game/dna/genes/monkey.dm index 4f023d8021f..52cd4226327 100644 --- a/code/game/dna/genes/monkey.dm +++ b/code/game/dna/genes/monkey.dm @@ -42,9 +42,7 @@ H.set_species(H.species.primitive_form) - if(H.hud_used) - qdel(H.hud_used) - H.hud_used = null + QDEL_NULL(H.hud_used) if(H.client) H.hud_used = new /datum/hud/monkey(H, ui_style2icon(H.client.prefs.UI_style), H.client.prefs.UI_style_color, H.client.prefs.UI_style_alpha) @@ -89,13 +87,11 @@ H.real_name = H.dna.real_name H.name = H.real_name - if(H.hud_used) - qdel(H.hud_used) - H.hud_used = null + QDEL_NULL(H.hud_used) if(H.client) H.hud_used = new /datum/hud/human(H, ui_style2icon(H.client.prefs.UI_style), H.client.prefs.UI_style_color, H.client.prefs.UI_style_alpha) to_chat(H, "You are now a [H.species.name].") - return H \ No newline at end of file + return H diff --git a/code/game/dna/genes/vg_powers.dm b/code/game/dna/genes/vg_powers.dm index e159aa44247..32a6a58cbb3 100644 --- a/code/game/dna/genes/vg_powers.dm +++ b/code/game/dna/genes/vg_powers.dm @@ -211,11 +211,11 @@ /obj/effect/proc_holder/spell/targeted/remotetalk/choose_targets(mob/user = usr) var/list/targets = new /list() var/list/validtargets = new /list() - for(var/mob/M in view(user.client.view, user)) + var/turf/T = get_turf(user) + for(var/mob/M in range(14, T)) if(M && M.mind) if(M == user) continue - validtargets += M if(!validtargets.len) @@ -237,14 +237,15 @@ if(!say) return say = strip_html(say) + say = pencode_to_html(say, usr, format = 0, fields = 0) for(var/mob/living/target in targets) log_say("Project Mind: [key_name(user)]->[key_name(target)]: [say]") if(REMOTE_TALK in target.mutations) - target.show_message("You hear [user.real_name]'s voice: [say]") + target.show_message("You hear [user.real_name]'s voice: [say]") else - target.show_message("You hear a voice that seems to echo around the room: [say]") - user.show_message("You project your mind into [target.real_name]: [say]") + target.show_message("You hear a voice that seems to echo around the room: [say]") + user.show_message("You project your mind into [target.name]: [say]") for(var/mob/dead/observer/G in player_list) G.show_message("Telepathic message from [user] ([ghost_follow_link(user, ghost=G)]) to [target] ([ghost_follow_link(target, ghost=G)]): [say]") diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm index 336d66b8df8..f36e763a4a0 100644 --- a/code/game/gamemodes/blob/blob.dm +++ b/code/game/gamemodes/blob/blob.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - //Few global vars to track the blob var/list/blobs = list() var/list/blob_cores = list() diff --git a/code/game/gamemodes/blob/blob_report.dm b/code/game/gamemodes/blob/blob_report.dm index 4c0e3dc3921..d4a458f8f78 100644 --- a/code/game/gamemodes/blob/blob_report.dm +++ b/code/game/gamemodes/blob/blob_report.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - /datum/game_mode/blob/proc/send_intercept(var/report = 1) var/intercepttext = "" var/interceptname = "" diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index b7558d0c9cf..1f45794ac14 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -202,7 +202,7 @@ /obj/structure/blob/examine(mob/user) ..(user) - to_chat(user, "It looks like it's of a [get_chem_name()] kind.") + to_chat(user, "It looks like it's made of [get_chem_name()].") /obj/structure/blob/proc/get_chem_name() diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 5c3f94a44a3..059306cd080 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -307,7 +307,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" to_chat(user, "DNA of [target] is ruined beyond usability!") return - if(T.species.flags & NO_DNA) + if(NO_DNA in T.species.species_traits) to_chat(user, "This creature does not have DNA!") return @@ -317,4 +317,4 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" return 1 /proc/can_absorb_species(datum/species/S) - return !(S.flags & NO_DNA) + return !(NO_DNA in S.species_traits) \ No newline at end of file diff --git a/code/game/gamemodes/changeling/powers/fleshmend.dm b/code/game/gamemodes/changeling/powers/fleshmend.dm index cd09cc8d764..e6ccafcffa0 100644 --- a/code/game/gamemodes/changeling/powers/fleshmend.dm +++ b/code/game/gamemodes/changeling/powers/fleshmend.dm @@ -13,8 +13,6 @@ var/mob/living/carbon/human/H = user H.restore_blood() H.shock_stage = 0 - spawn(1) - H.fixblood() spawn(0) for(var/i = 0, i<10,i++) user.heal_overall_damage(10, 10) diff --git a/code/game/gamemodes/changeling/powers/headcrab.dm b/code/game/gamemodes/changeling/powers/headcrab.dm index 4adbc39e7fc..16ad41a36ea 100644 --- a/code/game/gamemodes/changeling/powers/headcrab.dm +++ b/code/game/gamemodes/changeling/powers/headcrab.dm @@ -20,7 +20,7 @@ H.EyeBlurry(20) var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes) if(istype(E)) - E.damage = max(E.damage+5, 0) + E.take_damage(5, 1) H.AdjustConfused(3) for(var/mob/living/silicon/S in range(2,user)) to_chat(S, "Your sensors are disabled by a shower of blood!") diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/game/gamemodes/changeling/powers/mutations.dm index c7d393b77a7..943b15a6172 100644 --- a/code/game/gamemodes/changeling/powers/mutations.dm +++ b/code/game/gamemodes/changeling/powers/mutations.dm @@ -17,18 +17,21 @@ dna_cost = -1 genetic_damage = 1000 + var/silent = FALSE var/weapon_type var/weapon_name_simple /obj/effect/proc_holder/changeling/weapon/try_to_sting(var/mob/user, var/mob/target) if(istype(user.l_hand, weapon_type)) //Not the nicest way to do it, but eh qdel(user.l_hand) - user.visible_message("With a sickening crunch, [user] reforms his [weapon_name_simple] into an arm!", "We assimilate the [weapon_name_simple] back into our body.", "With a sickening crunch, [user] reforms his [weapon_name_simple] into an arm!", "We assimilate the [weapon_name_simple] back into our body.", "With a sickening crunch, [user] reforms his [weapon_name_simple] into an arm!", "We assimilate the [weapon_name_simple] back into our body.", "With a sickening crunch, [user] reforms his [weapon_name_simple] into an arm!", "We assimilate the [weapon_name_simple] back into our body.", "[user] forces the airlock to open with \his [src]!", "We force the airlock to open.", "You hear a metal screeching sound.") A.open(2) +/***************************************\ +|***********COMBAT TENTACLES*************| +\***************************************/ + +/obj/effect/proc_holder/changeling/weapon/tentacle + name = "Tentacle" + desc = "We ready a tentacle to grab items or victims with." + helptext = "We can use it once to retrieve a distant item. If used on living creatures, the effect depends on the intent: \ + Help will simply drag them closer, Disarm will grab whatever they are holding instead of them, Grab will put the victim in our hold after catching it, \ + and Harm will stun it, and stab it if we are also holding a sharp weapon. Cannot be used while in lesser form." + chemical_cost = 10 + dna_cost = 2 + genetic_damage = 5 + req_human = 1 + max_genetic_damage = 10 + weapon_type = /obj/item/weapon/gun/magic/tentacle + weapon_name_simple = "tentacle" + silent = TRUE + +/obj/item/weapon/gun/magic/tentacle + name = "tentacle" + desc = "A fleshy tentacle that can stretch out and grab things or people." + icon = 'icons/obj/weapons.dmi' + icon_state = "tentacle" + item_state = "tentacle" + flags = ABSTRACT | NODROP | NOBLUDGEON + w_class = WEIGHT_CLASS_HUGE + ammo_type = /obj/item/ammo_casing/magic/tentacle + fire_sound = 'sound/effects/splat.ogg' + force = 0 + max_charges = 1 + throwforce = 0 //Just to be on the safe side + throw_range = 0 + throw_speed = 0 + +/obj/item/weapon/gun/magic/tentacle/New(location,silent) + ..() + if(ismob(loc)) + if(!silent) + loc.visible_message("[loc.name]\'s arm starts stretching inhumanly!", "Our arm twists and mutates, transforming it into a tentacle.", "You hear organic matter ripping and tearing!") + else + to_chat(loc, "You prepare to extend a tentacle.") + +/obj/item/weapon/gun/magic/tentacle/dropped() + . = ..() + qdel(src) + +/obj/item/weapon/gun/magic/tentacle/shoot_with_empty_chamber(mob/living/user as mob|obj) + to_chat(user, "The [name] is not ready yet.") + +/obj/item/weapon/gun/magic/tentacle/suicide_act(mob/user) + user.visible_message("[user] coils [src] tightly around \his neck! It looks like \he's trying to commit suicide.") + return (OXYLOSS) + +/obj/item/ammo_casing/magic/tentacle + name = "tentacle" + desc = "a tentacle." + projectile_type = /obj/item/projectile/tentacle + caliber = "tentacle" + icon_state = "tentacle_end" + var/obj/item/weapon/gun/magic/tentacle/gun //the item that shot it + +/obj/item/ammo_casing/magic/tentacle/New(obj/item/weapon/gun/magic/tentacle/tentacle_gun) + gun = tentacle_gun + ..() + +/obj/item/ammo_casing/magic/tentacle/Destroy() + gun = null + return ..() + +/obj/item/projectile/tentacle + name = "tentacle" + icon_state = "tentacle_end" + pass_flags = PASSTABLE + damage = 0 + damage_type = BRUTE + range = 8 + hitsound = 'sound/weapons/thudswoosh.ogg' + var/chain + var/obj/item/ammo_casing/magic/tentacle/source //the item that shot it + +/obj/item/projectile/tentacle/New(obj/item/ammo_casing/magic/tentacle/tentacle_casing) + source = tentacle_casing + ..() + +/obj/item/projectile/tentacle/fire(setAngle) + if(firer) + chain = firer.Beam(src, icon_state = "tentacle", time = INFINITY, maxdistance = INFINITY, beam_sleep_time = 1) + ..() + +/obj/item/projectile/tentacle/proc/reset_throw(mob/living/carbon/human/H) + if(H.in_throw_mode) + H.throw_mode_off() //Don't annoy the changeling if he doesn't catch the item + +/mob/proc/tentacle_grab(mob/living/carbon/C) + if(Adjacent(C)) + var/obj/item/weapon/grab/G = C.grabbedby(src,1) + if(istype(G)) + G.state = GRAB_AGGRESSIVE //Instant aggressive grab + +/mob/proc/tentacle_stab(mob/living/carbon/C) + if(Adjacent(C)) + var/obj/item/I = r_hand + if(!is_sharp(I)) + I = l_hand + if(!is_sharp(I)) + return + + C.visible_message("[src] impales [C] with [I]!", "[src] impales you with [I]!") + C.apply_damage(I.force, BRUTE, "chest") + do_attack_animation(C) + add_blood(C) + playsound(get_turf(src), I.hitsound, 75, 1) + + +/obj/item/projectile/tentacle/on_hit(atom/target, blocked = 0) + qdel(source.gun) //one tentacle only unless you miss + if(blocked >= 100) + return 0 + var/mob/living/carbon/human/H = firer + if(istype(target, /obj/item)) + var/obj/item/I = target + if(!I.anchored) + to_chat(firer, "You pull [I] towards yourself.") + H.throw_mode_on() + I.throw_at(H, 10, 2) + . = 1 + + else if(isliving(target)) + var/mob/living/L = target + if(!L.anchored && !L.throwing)//avoid double hits + if(iscarbon(L)) + var/mob/living/carbon/C = L + switch(firer.a_intent) + if(INTENT_HELP) + C.visible_message("[L] is pulled by [H]'s tentacle!","A tentacle grabs you and pulls you towards [H]!") + C.throw_at(get_step_towards(H,C), 8, 2) + return 1 + + if(INTENT_DISARM) + var/obj/item/I = C.get_active_hand() + if(I) + if(C.drop_item()) + C.visible_message("[I] is yanked out of [C]'s hand by [src]!","A tentacle pulls [I] away from you!") + on_hit(I) //grab the item as if you had hit it directly with the tentacle + return 1 + else + to_chat(firer, "You can't seem to pry [I] out of [C]'s hands!") + return 0 + else + to_chat(firer, "[C] has nothing in hand to disarm!") + return 0 + + if(INTENT_GRAB) + C.visible_message("[L] is grabbed by [H]'s tentacle!","A tentacle grabs you and pulls you towards [H]!") + C.throw_at(get_step_towards(H,C), 8, 2, callback=CALLBACK(H, /mob/proc/tentacle_grab, C)) + return 1 + + if(INTENT_HARM) + C.visible_message("[L] is thrown towards [H] by a tentacle!","A tentacle grabs you and throws you towards [H]!") + C.throw_at(get_step_towards(H,C), 8, 2, callback=CALLBACK(H, /mob/proc/tentacle_stab, C)) + return 1 + else + L.visible_message("[L] is pulled by [H]'s tentacle!","A tentacle grabs you and pulls you towards [H]!") + L.throw_at(get_step_towards(H,L), 8, 2) + . = 1 + +/obj/item/projectile/tentacle/Destroy() + qdel(chain) + source = null + return ..() + /***************************************\ |****************SHIELD*****************| diff --git a/code/game/gamemodes/changeling/powers/panacea.dm b/code/game/gamemodes/changeling/powers/panacea.dm index 8ae82a0e788..5274854c682 100644 --- a/code/game/gamemodes/changeling/powers/panacea.dm +++ b/code/game/gamemodes/changeling/powers/panacea.dm @@ -13,8 +13,6 @@ var/mob/living/simple_animal/borer/B = user.has_brain_worms() if(B) - if(B.controlling) - B.detach() B.leave_host() if(iscarbon(user)) var/mob/living/carbon/C = user @@ -33,7 +31,10 @@ user.reagents.add_reagent("potass_iodide", 10) user.reagents.add_reagent("charcoal", 20) - for(var/datum/disease/D in user.viruses) + for(var/thing in user.viruses) + var/datum/disease/D = thing + if(D.severity == NONTHREAT) + continue D.cure() feedback_add_details("changeling_powers","AP") diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/game/gamemodes/changeling/powers/revive.dm index 5fd98986332..b6f3062c66a 100644 --- a/code/game/gamemodes/changeling/powers/revive.dm +++ b/code/game/gamemodes/changeling/powers/revive.dm @@ -24,14 +24,12 @@ user.reagents.clear_reagents() user.germ_level = 0 user.next_pain_time = 0 - user.traumatic_shock = 0 user.timeofdeath = 0 if(ishuman(user)) var/mob/living/carbon/human/H = user H.restore_blood() + H.traumatic_shock = 0 H.shock_stage = 0 - spawn(1) - H.fixblood() H.species.create_organs(H) // Now that recreating all organs is necessary, the rest of this organ stuff probably // isn't, but I don't want to remove it, just in case. @@ -39,25 +37,20 @@ var/obj/item/organ/external/O = H.bodyparts_by_name[organ_name] if(!O) continue - for(var/obj/item/weapon/shard/shrapnel/s in O.implants) - O.implants -= s - H.contents -= s - qdel(s) O.brute_dam = 0 O.burn_dam = 0 O.damage_state = "00" O.germ_level = 0 QDEL_NULL(O.hidden) - O.number_wounds = 0 O.open = 0 + O.internal_bleeding = FALSE O.perma_injury = 0 O.status = 0 O.trace_chemicals.Cut() - QDEL_LIST(O.wounds) - O.wound_update_accuracy = 1 for(var/obj/item/organ/internal/IO in H.internal_organs) - IO.damage = 0 + IO.rejuvenate() IO.trace_chemicals.Cut() + H.remove_all_embedded_objects() H.updatehealth() to_chat(user, "We have regenerated.") diff --git a/code/game/gamemodes/changeling/powers/swap_form.dm b/code/game/gamemodes/changeling/powers/swap_form.dm index 82baf6d5293..cb67858bb2e 100644 --- a/code/game/gamemodes/changeling/powers/swap_form.dm +++ b/code/game/gamemodes/changeling/powers/swap_form.dm @@ -17,7 +17,7 @@ if((NOCLONE || SKELETON || HUSK) in target.mutations) to_chat(user, "DNA of [target] is ruined beyond usability!") return - if(!istype(target) || issmall(target) || target.species.flags & NO_DNA) + if(!istype(target) || issmall(target) || NO_DNA in target.species.species_traits) to_chat(user, "[target] is not compatible with this ability.") return return 1 diff --git a/code/game/gamemodes/changeling/powers/tiny_prick.dm b/code/game/gamemodes/changeling/powers/tiny_prick.dm index 648d8ac1cbb..e972af4ce23 100644 --- a/code/game/gamemodes/changeling/powers/tiny_prick.dm +++ b/code/game/gamemodes/changeling/powers/tiny_prick.dm @@ -81,7 +81,7 @@ if(!selected_dna) return var/datum/species/newspecies = all_species[selected_dna.species] - if((newspecies.flags & NOTRANSSTING) || newspecies.is_small) + if((NOTRANSSTING in newspecies.species_traits) || newspecies.is_small) to_chat(user, "The selected DNA is incompatible with our sting.") return ..() @@ -94,7 +94,7 @@ return FALSE if(ishuman(target)) var/mob/living/carbon/human/H = target - if(H.species.flags & NO_DNA) + if(NO_DNA in H.species.species_traits) to_chat(user, "This won't work on a creature without DNA.") return FALSE return TRUE diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index 4f4152e2e22..a6c2214b9d7 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -1,4 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 var/global/list/all_cults = list() /datum/game_mode diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 97511414e7a..abc8aa8952f 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -7,7 +7,6 @@ force = 30 throwforce = 10 sharp = 1 - edge = 1 hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") @@ -41,15 +40,17 @@ w_class = WEIGHT_CLASS_SMALL force = 15 throwforce = 25 + embed_chance = 75 var/cooldown = 0 -/obj/item/weapon/melee/cultblade/dagger/afterattack(mob/living/target as mob, mob/living/carbon/human/user as mob) +/obj/item/weapon/melee/cultblade/dagger/afterattack(atom/target, mob/living/carbon/human/user) ..() - var/mob/living/carbon/human/bleeder = target - if(!(cooldown > world.time) && ((bleeder.stat != DEAD) && !(bleeder.species.flags & NO_BLOOD))) - user.visible_message("The runes on the blade absorb the blood of [target]!") - bleeder.drip(5000) - cooldown = world.time + 2400 + if(ishuman(target)) + var/mob/living/carbon/human/H = target + if(!(cooldown > world.time) && ((H.stat != DEAD) && !(NO_BLOOD in H.species.species_traits))) + user.visible_message("The runes on the blade absorb the blood of [H]!") + H.bleed(5000) + cooldown = world.time + 2400 /obj/item/weapon/restraints/legcuffs/bola/cult name = "runed bola" diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 1553ec0aa94..36ebc5d3dab 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -1,4 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 #define CULT_ELDERGOD "eldergod" #define CULT_SLAUGHTER "slaughter" diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index fc2ad7d62f9..7f8a7c4a3dc 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - /* * GAMEMODES (by Rastaf0) * @@ -575,5 +573,5 @@ proc/display_roundstart_logout_report() to_chat(M, "You suddenly remember \an [adjective] note you received earlier informing you that a chance to [action_words] may present itself today. An agent of the [organization] may contact you for help.") to_chat(M, "The note had the words \"[my_word]\" and \"[my_reply]\" written at the bottom, which you memorized just in case.") - to_chat(M, "You are NOT an antagonist, so self-antagging rules still apply to you. Use your good judgement and ahelp if you are unsure of what you are allowed to do.") + to_chat(M, "Unless stated otherwise; you are NOT an antagonist, so self-antagging rules may still apply to you. Use your good judgement and ahelp if you are unsure of what you are allowed to do.") M.mind.store_memory("Important Words: \"[my_word]\", \"[my_reply]\"") diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index f3191491c88..fb4ba668bef 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -327,9 +327,7 @@ var/round_start_time = 0 //If its actually the end of the round, wait for it to end. //Otherwise if its a verb it will continue on afterwards. spawn(300) - if(cinematic) - qdel(cinematic) //end the cinematic - cinematic = null + QDEL_NULL(cinematic) //end the cinematic if(temp_buckle) qdel(temp_buckle) //release everybody diff --git a/code/game/gamemodes/heist/heist.dm b/code/game/gamemodes/heist/heist.dm index 70ebd23912f..341d674cab8 100644 --- a/code/game/gamemodes/heist/heist.dm +++ b/code/game/gamemodes/heist/heist.dm @@ -122,7 +122,7 @@ var/global/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind' vox.update_eyes() for(var/obj/item/organ/external/limb in vox.bodyparts) - limb.status &= ~(ORGAN_DESTROYED | ORGAN_ROBOT) + limb.status &= ~ORGAN_ROBOT //Now apply cortical stack. var/obj/item/weapon/implant/cortical/I = new(vox) diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 4377a0038eb..c014db18e34 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -171,14 +171,18 @@ /obj/effect/meteor/proc/meteor_effect(var/sound=1) if(sound) - for(var/mob/M in player_list) + var/sound/meteor_sound = sound(meteorsound) + var/random_frequency = get_rand_frequency() + + for(var/P in player_list) + var/mob/M = P var/turf/T = get_turf(M) if(!T || T.z != src.z) continue var/dist = get_dist(M.loc, src.loc) if(prob(50)) shake_camera(M, dist > 20 ? 3 : 5, dist > 20 ? 1 : 3) - M.playsound_local(src.loc, meteorsound, 50, 1, get_rand_frequency(), 10) + M.playsound_local(src.loc, null, 50, 1, random_frequency, 10, S = meteor_sound) /////////////////////// //Meteor types diff --git a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm b/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm index 18d073d6077..4f7ad2ade9a 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm @@ -37,7 +37,7 @@ /datum/surgery_step/internal/extract_organ/end_step(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) var/mob/living/carbon/human/AB = target - if(AB.species.flags & NO_INTORGANS) + if(NO_INTORGANS in AB.species.species_traits) user.visible_message("[user] prepares [target]'s [target_zone] for further dissection!", "You prepare [target]'s [target_zone] for further dissection.") return 1 if(IC) diff --git a/code/game/gamemodes/miniantags/abduction/gland.dm b/code/game/gamemodes/miniantags/abduction/gland.dm index e58665c514e..29ca0a9a707 100644 --- a/code/game/gamemodes/miniantags/abduction/gland.dm +++ b/code/game/gamemodes/miniantags/abduction/gland.dm @@ -12,8 +12,8 @@ var/uses // -1 For inifinite var/human_only = 0 var/active = 0 - tough = 1 //not easily broken by combat damage - sterile = 1 //not very germy + tough = TRUE //not easily broken by combat damage + sterile = TRUE //not very germy /obj/item/organ/internal/heart/gland/proc/ownerCheck() if(ishuman(owner)) @@ -134,10 +134,9 @@ to_chat(owner, "You feel sick.") var/virus_type = pick(/datum/disease/beesease, /datum/disease/brainrot, /datum/disease/magnitis) var/datum/disease/D = new virus_type() - D.carrier = 1 + D.carrier = TRUE owner.viruses += D D.affected_mob = owner - D.holder = owner owner.med_hud_set_status() @@ -181,21 +180,14 @@ uses = -1 /obj/item/organ/internal/heart/gland/bloody/activate() - if(ishuman(owner)) - var/mob/living/carbon/human/H = owner - H.drip(200) + owner.blood_volume = max(owner.blood_volume - 20, 0) owner.visible_message("[owner]'s skin erupts with blood!",\ "Blood pours from your skin!") for(var/turf/T in oview(3,owner)) //Make this respect walls and such - T.add_blood_floor(owner) + owner.add_splatter_floor(T) for(var/mob/living/carbon/human/H in oview(3,owner)) //Blood decals for simple animals would be neat. aka Carp with blood on it. - if(H.wear_suit) - H.wear_suit.add_blood(owner) - H.update_inv_wear_suit(0) - else if(H.w_uniform) - H.w_uniform.add_blood(owner) - H.update_inv_w_uniform(0) + H.add_mob_blood(owner) /obj/item/organ/internal/heart/gland/bodysnatch cooldown_low = 600 @@ -211,8 +203,7 @@ C.Copy(owner) C.Start() owner.adjustBruteLoss(40) - var/turf/T = get_turf(owner) - T.add_blood_floor(src) + owner.add_splatter_floor() /obj/effect/cocoon/abductor name = "slimy cocoon" diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/game/gamemodes/miniantags/borer/borer.dm index a9975618435..245da95e23a 100644 --- a/code/game/gamemodes/miniantags/borer/borer.dm +++ b/code/game/gamemodes/miniantags/borer/borer.dm @@ -351,7 +351,7 @@ to_chat(src, "They are no longer in range!") return -/mob/living/simple_animal/borer/proc/perform_infestation(var/mob/living/carbon/M) +/mob/living/simple_animal/borer/proc/perform_infestation(mob/living/carbon/M) if(!M) return @@ -359,13 +359,9 @@ to_chat(src, "[M] is already infested!") return host = M + M.borer = src forceMove(M) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/obj/item/organ/external/head = H.get_organ("head") - head.implants += src - host.status_flags |= PASSEMOTES RemoveBorerActions() @@ -569,7 +565,8 @@ host.reset_perspective(null) host.machine = null - var/mob/living/H = host + var/mob/living/carbon/H = host + H.borer = null H.verbs -= /mob/living/proc/borer_comm talk_to_borer_action.Remove(host) H.status_flags &= ~PASSEMOTES @@ -709,10 +706,12 @@ //Check for brain worms in head. /mob/proc/has_brain_worms() + return FALSE - for(var/I in contents) - if(istype(I,/mob/living/simple_animal/borer)) - return I +/mob/living/carbon/has_brain_worms() + + if(borer) + return borer return FALSE @@ -746,11 +745,6 @@ controlling = FALSE - if(ishuman(host)) - var/mob/living/carbon/human/H = host - var/obj/item/organ/external/head = H.get_organ("head") - head.implants -= src - reset_perspective(null) machine = null diff --git a/code/game/gamemodes/miniantags/slaughter/bloodcrawl.dm b/code/game/gamemodes/miniantags/slaughter/bloodcrawl.dm index 73165079b6e..a6b083d5b72 100644 --- a/code/game/gamemodes/miniantags/slaughter/bloodcrawl.dm +++ b/code/game/gamemodes/miniantags/slaughter/bloodcrawl.dm @@ -132,8 +132,7 @@ playsound(get_turf(src), 'sound/misc/exit_blood.ogg', 100, 1, -1) flick("jauntup",animation) - qdel(holder) - holder = null + QDEL_NULL(holder) if(iscarbon(src)) var/mob/living/carbon/C = src @@ -171,4 +170,4 @@ return /obj/effect/dummy/slaughter/singularity_act() - return \ No newline at end of file + return diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index e34174f2beb..5bfeea1e7a2 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -1,12 +1,6 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 var/global/list/all_objectives = list() -var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) \ - - /datum/theft_objective/steal \ - - /datum/theft_objective/special \ - - /datum/theft_objective/number \ - - /datum/theft_objective/number/special \ - - /datum/theft_objective/number/coins +var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datum/theft_objective/steal - /datum/theft_objective/number /datum/objective var/datum/mind/owner = null //Who owns the objective. @@ -287,7 +281,7 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) \ for(var/datum/mind/possible_target in ticker.minds) if(possible_target != owner && ishuman(possible_target.current) && (possible_target.current.stat != DEAD) && possible_target.current.client) var/mob/living/carbon/human/H = possible_target.current - if(!(H.species.flags & NO_DNA)) + if(!(NO_DNA in H.species.species_traits)) possible_targets += possible_target if(possible_targets.len > 0) target = pick(possible_targets) @@ -341,7 +335,7 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) \ var/datum/theft_objective/steal_target martyr_compatible = 0 -/datum/objective/steal/find_target(var/special_only=0) +/datum/objective/steal/find_target() var/loop=50 while(!steal_target && loop > 0) loop-- @@ -349,12 +343,6 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) \ var/datum/theft_objective/O = new thefttype if(owner.assigned_role in O.protected_jobs) continue - if(special_only) - if(!(O.flags & 1)) // THEFT_FLAG_SPECIAL - continue - else - if(O.flags & 1) // THEFT_FLAG_SPECIAL - continue if(O.flags & 2) continue steal_target=O @@ -457,7 +445,7 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) \ n_p++ else if(ticker.current_state == GAME_STATE_PLAYING) for(var/mob/living/carbon/human/P in player_list) - if(P.species.flags & NO_DNA) + if(NO_DNA in P.species.species_traits) continue if(P.client && !(P.mind in ticker.mode.changelings) && P.mind!=owner) n_p++ diff --git a/code/game/gamemodes/shadowling/shadowling.dm b/code/game/gamemodes/shadowling/shadowling.dm index 97f609ca9ff..d250200236d 100644 --- a/code/game/gamemodes/shadowling/shadowling.dm +++ b/code/game/gamemodes/shadowling/shadowling.dm @@ -305,7 +305,7 @@ Made by Xhuis blood_color = "#555555" flesh_color = "#222222" - flags = NO_BLOOD | NO_BREATHE | RADIMMUNE | NOGUNS //Can't use guns due to muzzle flash + species_traits = list(NO_BLOOD, NO_BREATHE, RADIMMUNE, NOGUNS) //Can't use guns due to muzzle flash burn_mod = 1.5 //1.5x burn damage, 2x is excessive oxy_mod = 0 hot_env_multiplier = 1.5 @@ -346,7 +346,7 @@ Made by Xhuis blood_color = "#CCCCCC" flesh_color = "#AAAAAA" - flags = NO_BLOOD | NO_BREATHE | RADIMMUNE + species_traits = list(NO_BLOOD, NO_BREATHE, RADIMMUNE) burn_mod = 1.1 oxy_mod = 0 hot_env_multiplier = 1.1 diff --git a/code/game/gamemodes/steal_items.dm b/code/game/gamemodes/steal_items.dm index 92573fcc17e..9dce4795b78 100644 --- a/code/game/gamemodes/steal_items.dm +++ b/code/game/gamemodes/steal_items.dm @@ -2,7 +2,7 @@ // // Separated into datums so we can prevent roles from getting certain objectives. -#define THEFT_FLAG_SPECIAL 1 +#define THEFT_FLAG_SPECIAL 1//unused, maybe someone will use it some day, I'll leave it here for the children #define THEFT_FLAG_UNIQUE 2 /datum/theft_objective @@ -31,6 +31,11 @@ typepath = /obj/item/weapon/gun/energy/laser/captain protected_jobs = list("Captain") +/datum/theft_objective/captains_jetpack + name = "the captain's deluxe jetpack" + typepath = /obj/item/weapon/tank/jetpack/oxygen/captain + protected_jobs = list("Captain") + /datum/theft_objective/hoslaser name = "the head of security's recreated antique laser gun" typepath = /obj/item/weapon/gun/energy/gun/hos @@ -41,11 +46,6 @@ typepath = /obj/item/weapon/hand_tele protected_jobs = list("Captain", "Research Director") -/datum/theft_objective/jetpack - name = "a jetpack" - typepath = /obj/item/weapon/tank/jetpack - protected_jobs = list("Chief Engineer") - /datum/theft_objective/ai name = "a functional AI" typepath = /obj/item/device/aicard @@ -173,32 +173,6 @@ datum/theft_objective/ai/check_special_completion(var/obj/item/device/aicard/C) /datum/theft_objective/number/plasma_gas/getAmountStolen(var/obj/item/I) return I:air_contents:toxins -/datum/theft_objective/number/coins - name = "credits of coins (in bag)" - min=1000 - max=5000 - step=500 - -/datum/theft_objective/number/coins/check_completion(var/datum/mind/owner) - if(!owner.current) - return 0 - if(!isliving(owner.current)) - return 0 - var/list/all_items = owner.current.get_contents() - var/found_amount=0.0 - for(var/obj/item/weapon/moneybag/B in all_items) - if(B) - for(var/obj/item/weapon/coin/C in B) - found_amount += C.credits - return found_amount >= required_amount - - -//////////////////////////////// -// SPECIAL OBJECTIVES -//////////////////////////////// -/datum/theft_objective/special - flags = THEFT_FLAG_SPECIAL - /datum/theft_objective/unique flags = THEFT_FLAG_UNIQUE @@ -209,47 +183,3 @@ datum/theft_objective/ai/check_special_completion(var/obj/item/device/aicard/C) /datum/theft_objective/unique/docs_blue name = "the \"Blue\" secret documents" typepath = /obj/item/documents/syndicate/blue - -/datum/theft_objective/special/pinpointer - name = "the captain's pinpointer" - typepath = /obj/item/weapon/pinpointer - -/datum/theft_objective/special/nuke_gun - name = "advanced energy gun" - typepath = /obj/item/weapon/gun/energy/gun/nuclear - -/datum/theft_objective/special/diamond_drill - name = "diamond drill" - typepath = /obj/item/weapon/pickaxe/drill/diamonddrill - -/datum/theft_objective/special/boh - name = "bag of holding" - typepath = /obj/item/weapon/storage/backpack/holding - -/datum/theft_objective/special/hyper_cell - name = "hyper-capacity cell" - typepath = /obj/item/weapon/stock_parts/cell/hyper - -/datum/theft_objective/number/special - flags = THEFT_FLAG_SPECIAL - -/datum/theft_objective/number/special/diamonds - name = "diamonds" - typepath = /obj/item/stack/sheet/mineral/diamond - min=5 - max=10 - step=5 - -/datum/theft_objective/number/special/gold - name = "gold bars" - typepath = /obj/item/stack/sheet/mineral/gold - min=10 - max=50 - step=10 - -/datum/theft_objective/number/special/uranium - name = "refined uranium bars" - typepath = /obj/item/stack/sheet/mineral/uranium - min=10 - max=30 - step=5 diff --git a/code/game/gamemodes/vampire/vampire.dm b/code/game/gamemodes/vampire/vampire.dm index 406f21bdcdb..94b75646bf5 100644 --- a/code/game/gamemodes/vampire/vampire.dm +++ b/code/game/gamemodes/vampire/vampire.dm @@ -289,20 +289,20 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha return old_bloodtotal = bloodtotal old_bloodusable = bloodusable - if(!H.vessel.get_reagent_amount("blood")) + if(!H.blood_volume) to_chat(owner, "They've got no blood left to give.") break if(H.stat < DEAD) - blood = min(20, H.vessel.get_reagent_amount("blood")) // if they have less than 20 blood, give them the remnant else they get 20 blood + blood = min(20, H.blood_volume) // if they have less than 20 blood, give them the remnant else they get 20 blood bloodtotal += blood / 2 //divide by 2 to counted the double suction since removing cloneloss -Melandor0 bloodusable += blood / 2 else - blood = min(5, H.vessel.get_reagent_amount("blood")) // The dead only give 5 bloods + blood = min(5, H.blood_volume) // The dead only give 5 blood bloodtotal += blood if(old_bloodtotal != bloodtotal) to_chat(owner, "You have accumulated [bloodtotal] [bloodtotal > 1 ? "units" : "unit"] of blood[bloodusable != old_bloodusable ? ", and have [bloodusable] left to use" : ""].") check_vampire_upgrade() - H.vessel.remove_reagent("blood", 25) + H.blood_volume = max(H.blood_volume - 25, 0) if(ishuman(owner)) var/mob/living/carbon/human/V = owner V.nutrition = min(NUTRITION_LEVEL_WELL_FED, V.nutrition + (blood / 2)) @@ -338,8 +338,7 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha vampire_mind.current.create_attack_log("De-vampired") if(vampire_mind.vampire) vampire_mind.vampire.remove_vampire_powers() - qdel(vampire_mind.vampire) - vampire_mind.vampire = null + QDEL_NULL(vampire_mind.vampire) if(issilicon(vampire_mind.current)) to_chat(vampire_mind.current, "You have been turned into a robot! You can feel your powers fading away...") else @@ -455,6 +454,5 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha return static_inventory -= vampire_blood_display - qdel(vampire_blood_display) - vampire_blood_display = null + QDEL_NULL(vampire_blood_display) show_hud(hud_version) diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm index c66a0304316..0d44481cc3f 100644 --- a/code/game/gamemodes/vampire/vampire_powers.dm +++ b/code/game/gamemodes/vampire/vampire_powers.dm @@ -236,10 +236,16 @@ /obj/effect/proc_holder/spell/vampire/self/shapeshift/cast(list/targets, mob/user = usr) user.visible_message("[user] transforms!") - user.client.prefs.real_name = user.generate_name() - user.client.prefs.random_character() - user.client.prefs.copy_to(user) - user.regenerate_icons() + if(ishuman(user)) + var/mob/living/carbon/human/H = user + scramble(1, H, 100) + H.real_name = random_name(H.gender, H.species.name) //Give them a name that makes sense for their species. + H.sync_organ_dna(assimilate = 1) + H.update_body(0) + H.reset_hair() //No more winding up with hairstyles you're not supposed to have, and blowing your cover. + H.reset_markings() //...Or markings. + H.dna.ResetUIFrom(H) + user.update_icons() /obj/effect/proc_holder/spell/vampire/self/screech name = "Chiropteran Screech (30)" diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 1dd20906704..88251dcdd36 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -231,7 +231,6 @@ var/global/list/multiverse = list() force = 20 throwforce = 10 sharp = 1 - edge = 1 w_class = WEIGHT_CLASS_SMALL attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") var/faction = list("unassigned") @@ -465,7 +464,7 @@ var/global/list/multiverse = list() if("cyborg") if(M.get_species() != "Machine") for(var/obj/item/organ/O in M.bodyparts) - O.robotize() + O.robotize(make_tough = 1) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses) M.equip_to_slot_or_del(sword, slot_r_hand) @@ -526,7 +525,7 @@ var/global/list/multiverse = list() M.equip_to_slot_or_del(sword, slot_r_hand) for(var/obj/item/carried_item in M.contents) if(!istype(carried_item, /obj/item/weapon/implant)) - carried_item.add_blood(M) + carried_item.add_mob_blood(M) if("pirate") M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform) @@ -780,7 +779,7 @@ var/global/list/multiverse = list() to_chat(target, "You suddenly feel very hot") target.bodytemperature += 50 GiveHint(target) - else if(can_puncture(I)) + else if(is_pointed(I)) to_chat(target, "You feel a stabbing pain in [parse_zone(user.zone_sel.selecting)]!") target.Weaken(2) GiveHint(target) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 3e396ae14a8..b416b297cca 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -9,10 +9,13 @@ origin_tech = "bluespace=4;materials=5" var/imprinted = "empty" + var/optional = FALSE //does this soulstone ask the victim whether they want to be turned into a shade var/usability = TRUE // Can this soul stone be used by anyone, or only cultists/wizards? var/reusable = TRUE // Can this soul stone be used more than once? var/spent = FALSE // If the soul stone can only be used once, has it been used? + var/opt_in = FALSE // for tracking during the 'optional' bit + /obj/item/device/soulstone/proc/can_use(mob/living/user) if(iscultist(user) || iswizard(user) || usability) return TRUE @@ -33,6 +36,7 @@ /obj/item/device/soulstone/anybody/chaplain name = "mysterious old shard" reusable = FALSE + optional = TRUE /obj/item/device/soulstone/pickup(mob/living/user) ..() @@ -69,6 +73,50 @@ M.create_attack_log("Has had their soul captured with [src.name] by [key_name(user)]") user.create_attack_log("Used the [src.name] to capture the soul of [key_name(M)]") + if(optional) + if(!M.ckey) + to_chat(user, "They have no soul!") + return + + to_chat(user, "You attempt to channel [M]'s soul into [src]. You must give the soul some time to react and stand still...") + + var/mob/player_mob = M + if(M.get_ghost())//in case our player ghosted and we need to throw the alert at their ghost instead + player_mob = M.get_ghost() + var/client/player_client = player_mob.client + to_chat(player_mob, "[user] is trying to capture your soul into [src]! Click the button in the top right of the game window to respond.") + player_client << 'sound/misc/notice2.ogg' + window_flash(player_client) + + var/obj/screen/alert/notify_soulstone/A = player_mob.throw_alert("\ref[src]_soulstone_thingy", /obj/screen/alert/notify_soulstone) + if(player_client.prefs && player_client.prefs.UI_style) + A.icon = ui_style2icon(player_client.prefs.UI_style) + + //pass the stuff to the alert itself + A.stone = src + A.stoner = user.real_name + + //layer shenanigans to make the alert display the soulstone + var/old_layer = layer + var/old_plane = plane + layer = FLOAT_LAYER + plane = FLOAT_PLANE + A.overlays += src + layer = old_layer + plane = old_plane + + //give the victim 10 seconds to respond + sleep(10 SECONDS) + + if(!opt_in) + to_chat(user, "The soul resists your attempts at capturing it!") + return + + opt_in = FALSE + + if(spent)//checking one more time against shenanigans + return + M.create_attack_log("Has had their soul captured with [src.name] by [key_name(user)]") user.create_attack_log("Used the [src.name] to capture the soul of [key_name(M)]") log_attack("[key_name(user)] used the [src.name] to capture the soul of [key_name(M)]") diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 4f3e7fe9001..c97b3ac9445 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -78,8 +78,7 @@ if(initial(S.name) == initial(aspell.name)) spell_levels = aspell.spell_level user.mind.spell_list.Remove(aspell) - qdel(S) - S = null + QDEL_NULL(S) return cost * (spell_levels+1) return -1 diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index 2f0e9ab849a..39e9451ac22 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - /var/const/access_security = 1 // Security equipment /var/const/access_brig = 2 // Brig timers and permabrig /var/const/access_armory = 3 diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm index 50c8a06777b..ce410dea69e 100644 --- a/code/game/jobs/job/engineering.dm +++ b/code/game/jobs/job/engineering.dm @@ -112,6 +112,9 @@ id = /obj/item/weapon/card/id/engineering pda = /obj/item/device/pda/atmos + backpack = /obj/item/weapon/storage/backpack/industrial + satchel = /obj/item/weapon/storage/backpack/satchel_eng + dufflebag = /obj/item/weapon/storage/backpack/duffel/engineering box = /obj/item/weapon/storage/box/engineer /datum/job/mechanic diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index bac7efd0b8a..c8e7d9e2433 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -206,15 +206,15 @@ var/atom/placed_in = H.equip_or_collect(G.spawn_item(null, H.client.prefs.gear[G.display_name])) if(istype(placed_in)) if(isturf(placed_in)) - to_chat(H, "Placing \the [G] on [placed_in]!") + to_chat(H, "Placing [G.display_name] on [placed_in]!") else - to_chat(H, "Placing \the [G] in [placed_in.name]") + to_chat(H, "Placing [G.display_name] in [placed_in.name]") continue if(H.equip_to_appropriate_slot(G)) - to_chat(H, "Placing \the [G] in your inventory!") + to_chat(H, "Placing [G.display_name] in your inventory!") continue if(H.put_in_hands(G)) - to_chat(H, "Placing \the [G] in your hands!") + to_chat(H, "Placing [G.display_name] in your hands!") continue to_chat(H, "Failed to locate a storage object on your mob, either you spawned with no hands free and no backpack or this is a bug.") qdel(G) diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index e92a95e70b6..218172b1884 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -83,6 +83,7 @@ spawn_positions = 1 is_medical = 1 supervisors = "the chief medical officer" + department_head = list("Chief Medical Officer") selection_color = "#ffeef0" access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_mineral_storeroom) minimal_access = list(access_medical, access_morgue, access_maint_tunnels) diff --git a/code/game/jobs/job/support.dm b/code/game/jobs/job/support.dm index 60f1bd541a8..6b8a35ce582 100644 --- a/code/game/jobs/job/support.dm +++ b/code/game/jobs/job/support.dm @@ -224,7 +224,8 @@ /obj/item/weapon/stamp/clown = 1, /obj/item/toy/crayon/rainbow = 1, /obj/item/weapon/storage/fancy/crayons = 1, - /obj/item/weapon/reagent_containers/spray/waterflower = 1 + /obj/item/weapon/reagent_containers/spray/waterflower = 1, + /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofbanana = 1 ) backpack = /obj/item/weapon/storage/backpack/clown diff --git a/code/game/jobs/job_exp.dm b/code/game/jobs/job_exp.dm index 4a1624426b7..3c17c6f0107 100644 --- a/code/game/jobs/job_exp.dm +++ b/code/game/jobs/job_exp.dm @@ -7,6 +7,7 @@ var/global/list/role_playtime_requirements = list( ROLE_SENTIENT = 5, ROLE_ERT = 10, // High, because they're team-based, and we want ERT to be robust ROLE_TRADER = 5, + ROLE_DRONE = 10, // High, because they're like mini engineering cyborgs that can ignore the AI, ventcrawl, and respawn themselves // SOLO ANTAGS ROLE_TRAITOR = 3, diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index f74380432d2..3c56199513e 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -92,15 +92,15 @@ if(filtering > 0) if(beaker) // To prevent runtimes from drawing blood from runtime, and to prevent getting IPC blood. - if(!istype(occupant) || !occupant.dna || (occupant.species && occupant.species.flags & NO_BLOOD)) + if(!istype(occupant) || !occupant.dna || (NO_BLOOD in occupant.species.species_traits)) filtering = 0 return if(beaker.reagents.total_volume < beaker.reagents.maximum_volume) - src.occupant.vessel.trans_to(beaker, 1) + src.occupant.transfer_blood_to(beaker, 1) for(var/datum/reagent/x in src.occupant.reagents.reagent_list) src.occupant.reagents.trans_to(beaker, 3) - src.occupant.vessel.trans_to(beaker, 1) + src.occupant.transfer_blood_to(beaker, 1) if(occupant) for(var/A in occupant.reagents.addiction_list) @@ -197,13 +197,12 @@ crisis = (occupant.health < min_health) // I'm not sure WHY you'd want to put a simple_animal in a sleeper, but precedent is precedent // Runtime is aptly named, isn't she? - if(ishuman(occupant) && occupant.vessel && !(occupant.species && occupant.species.flags & NO_BLOOD)) - var/blood_type = occupant.get_blood_name() + if(ishuman(occupant) && !(NO_BLOOD in occupant.species.species_traits)) occupantData["pulse"] = occupant.get_pulse(GETPULSE_TOOL) occupantData["hasBlood"] = 1 - occupantData["bloodLevel"] = round(occupant.vessel.get_reagent_amount(blood_type)) + occupantData["bloodLevel"] = round(occupant.blood_volume) occupantData["bloodMax"] = occupant.max_blood - occupantData["bloodPercent"] = round(100*(occupant.vessel.get_reagent_amount(blood_type)/occupant.max_blood), 0.01) + occupantData["bloodPercent"] = round(100*(occupant.blood_volume/occupant.max_blood), 0.01) data["occupant"] = occupantData data["maxchem"] = max_chem diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 41dc37ab43f..3b20943e46d 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -220,7 +220,7 @@ active_power_usage = 500 var/printing = null var/printing_text = null - var/known_implants = list(/obj/item/weapon/implant/chem, /obj/item/weapon/implant/death_alarm, /obj/item/weapon/implant/mindshield, /obj/item/weapon/implant/tracking) + var/known_implants = list(/obj/item/weapon/implant/chem, /obj/item/weapon/implant/death_alarm, /obj/item/weapon/implant/mindshield, /obj/item/weapon/implant/tracking, /obj/item/weapon/implant/health) /obj/machinery/body_scanconsole/power_change() if(stat & BROKEN) @@ -345,7 +345,14 @@ occupantData["health"] = H.health occupantData["maxHealth"] = H.maxHealth - occupantData["hasVirus"] = H.viruses.len + var/found_disease = FALSE + for(var/thing in H.viruses) + var/datum/disease/D = thing + if(D.visibility_flags & HIDDEN_SCANNER || D.visibility_flags & HIDDEN_PANDEMIC) + continue + found_disease = TRUE + break + occupantData["hasVirus"] = found_disease occupantData["bruteLoss"] = H.getBruteLoss() occupantData["oxyLoss"] = H.getOxyLoss() @@ -364,14 +371,12 @@ var/bloodData[0] bloodData["hasBlood"] = 0 - if(ishuman(H) && H.vessel && !(H.species && H.species.flags & NO_BLOOD)) - var/blood_type = H.get_blood_name() - var/blood_volume = round(H.vessel.get_reagent_amount(blood_type)) + if(ishuman(H) && !(NO_BLOOD in H.species.species_traits)) bloodData["hasBlood"] = 1 - bloodData["volume"] = blood_volume - bloodData["percent"] = round(((blood_volume / BLOOD_VOLUME_NORMAL)*100)) + bloodData["volume"] = H.blood_volume + bloodData["percent"] = round(((H.blood_volume / BLOOD_VOLUME_NORMAL)*100)) bloodData["pulse"] = H.get_pulse(GETPULSE_TOOL) - bloodData["bloodLevel"] = blood_volume + bloodData["bloodLevel"] = H.blood_volume bloodData["bloodMax"] = H.max_blood occupantData["blood"] = bloodData @@ -398,7 +403,7 @@ organData["broken"] = E.min_broken_damage var/shrapnelData[0] - for(var/obj/I in E.implants) + for(var/obj/I in E.embedded_objects) var/shrapnelSubData[0] shrapnelSubData["name"] = I.name @@ -408,16 +413,12 @@ organData["shrapnel_len"] = shrapnelData.len var/organStatus[0] - if(E.status & ORGAN_DESTROYED) - organStatus["destroyed"] = 1 if(E.status & ORGAN_BROKEN) organStatus["broken"] = E.broken_description if(E.status & ORGAN_ROBOT) organStatus["robotic"] = 1 if(E.status & ORGAN_SPLINTED) organStatus["splinted"] = 1 - if(E.status & ORGAN_BLEEDING) - organStatus["bleeding"] = 1 if(E.status & ORGAN_DEAD) organStatus["dead"] = 1 @@ -426,10 +427,8 @@ if(istype(E, /obj/item/organ/external/chest) && H.is_lung_ruptured()) organData["lungRuptured"] = 1 - for(var/datum/wound/W in E.wounds) - if(W.internal) - organData["internalBleeding"] = 1 - break + if(E.internal_bleeding) + organData["internalBleeding"] = 1 extOrganData.Add(list(organData)) @@ -499,8 +498,15 @@ t1 = "*dead*" dat += "[occupant.health > 50 ? "" : ""]\tHealth %: [occupant.health], ([t1])
    " - if(occupant.viruses.len) - dat += "Viral pathogen detected in blood stream.
    " + var/found_disease = FALSE + for(var/thing in occupant.viruses) + var/datum/disease/D = thing + if(D.visibility_flags & HIDDEN_SCANNER || D.visibility_flags & HIDDEN_PANDEMIC) + continue + found_disease = TRUE + break + if(found_disease) + dat += "Disease detected in occupant.
    " var/extra_font = null extra_font = (occupant.getBruteLoss() < 60 ? "" : "") @@ -532,14 +538,11 @@ if(occupant.has_brain_worms()) dat += "Large growth detected in frontal lobe, possibly cancerous. Surgical removal is recommended.
    " - if(occupant.vessel) - var/blood_type = occupant.get_blood_name() - var/blood_volume = round(occupant.vessel.get_reagent_amount(blood_type)) - var/blood_percent = blood_volume / BLOOD_VOLUME_NORMAL - blood_percent *= 100 + var/blood_percent = round((occupant.blood_volume / BLOOD_VOLUME_NORMAL)) + blood_percent *= 100 - extra_font = (blood_volume > 448 ? "" : "") - dat += "[extra_font]\tBlood Level %: [blood_percent] ([blood_volume] units)
    " + extra_font = (occupant.blood_volume > 448 ? "" : "") + dat += "[extra_font]\tBlood Level %: [blood_percent] ([occupant.blood_volume] units)
    " if(occupant.reagents) dat += "Epinephrine units: [occupant.reagents.get_reagent_amount("Epinephrine")] units
    " @@ -573,15 +576,12 @@ var/splint = "" var/internal_bleeding = "" var/lung_ruptured = "" - for(var/datum/wound/W in e.wounds) if(W.internal) + if(e.internal_bleeding) internal_bleeding = "
    Internal bleeding" - break if(istype(e, /obj/item/organ/external/chest) && occupant.is_lung_ruptured()) lung_ruptured = "Lung ruptured:" if(e.status & ORGAN_SPLINTED) splint = "Splinted:" - if(e.status & ORGAN_BLEEDING) - bled = "Bleeding:" if(e.status & ORGAN_BROKEN) AN = "[e.broken_description]:" if(e.status & ORGAN_ROBOT) @@ -605,17 +605,14 @@ infected = "Septic:" var/unknown_body = 0 - for(var/I in e.implants) + for(var/I in e.embedded_objects) unknown_body++ if(unknown_body || e.hidden) imp += "Unknown body present:" if(!AN && !open && !infected & !imp) AN = "None:" - if(!(e.status & ORGAN_DESTROYED)) - dat += "[e.name][e.burn_dam][e.brute_dam][robot][bled][AN][splint][open][infected][imp][internal_bleeding][lung_ruptured]" - else - dat += "[e.name]--Not Found" + dat += "[e.name][e.burn_dam][e.brute_dam][robot][bled][AN][splint][open][infected][imp][internal_bleeding][lung_ruptured]" dat += "" for(var/obj/item/organ/internal/i in occupant.internal_organs) var/mech = i.desc diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index 4d059043329..63aeee28b2f 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -5,12 +5,12 @@ layer = 3 anchored = 1.0 var/uses = 20 - var/disabled = 1 + var/disabled = TRUE var/lethal = 0 - var/locked = 1 + var/locked = TRUE var/cooldown_time = 0 var/cooldown_timeleft = 0 - var/cooldown_on = 0 + var/cooldown_on = FALSE req_access = list(access_ai_upload) /obj/machinery/ai_slipper/power_change() @@ -22,6 +22,7 @@ else icon_state = "motion0" stat |= NOPOWER + disabled = TRUE /obj/machinery/ai_slipper/proc/setState(var/enabled, var/uses) disabled = disabled @@ -49,6 +50,24 @@ return return +/obj/machinery/ai_slipper/proc/ToggleOn() + if(stat & (NOPOWER|BROKEN)) + return + disabled = !disabled + icon_state = disabled? "motion0":"motion3" + +/obj/machinery/ai_slipper/proc/Activate() + if(stat & (NOPOWER|BROKEN)) + return + if(cooldown_on || disabled) + return + else + new /obj/structure/foam(loc) + uses-- + cooldown_on = TRUE + cooldown_time = world.timeofday + 100 + slip_process() + /obj/machinery/ai_slipper/attack_ai(mob/user) return attack_hand(user) @@ -87,18 +106,10 @@ return 1 if(href_list["toggleOn"]) - disabled = !disabled - icon_state = disabled? "motion0":"motion3" + ToggleOn() + if(href_list["toggleUse"]) - if(cooldown_on || disabled) - return - else - new /obj/structure/foam(loc) - uses-- - cooldown_on = 1 - cooldown_time = world.timeofday + 100 - slip_process() - return + Activate() attack_hand(usr) @@ -115,5 +126,5 @@ if(uses <= 0) return if(uses >= 0) - cooldown_on = 0 + cooldown_on = FALSE power_change() \ No newline at end of file diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 721372b56f5..c7c785dd97a 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -87,6 +87,10 @@ /obj/machinery/clonepod/Destroy() if(connected) connected.pods -= src + for(var/s in sharedSoulhooks) + var/datum/soullink/S = s + S.removeSoulsharer(src) //If a sharer is destroy()'d, they are simply removed + sharedSoulhooks = null QDEL_NULL(Radio) QDEL_NULL(countdown) QDEL_LIST(missing_organs) @@ -163,24 +167,6 @@ ..(user) to_chat(user, "The write-protect tab is set to [read_only ? "protected" : "unprotected"].") - -//Health Tracker Implant - -/obj/item/weapon/implant/health - name = "health implant" - var/healthstring = "" - -/obj/item/weapon/implant/health/proc/sensehealth() - if(!implanted) - return "ERROR" - else - if(isliving(implanted)) - var/mob/living/L = implanted - healthstring = "[round(L.getOxyLoss())] - [round(L.getFireLoss())] - [round(L.getToxLoss())] - [round(L.getBruteLoss())]" - if(!healthstring) - healthstring = "ERROR" - return healthstring - //Clonepod /obj/machinery/clonepod/examine(mob/user) @@ -288,6 +274,8 @@ to_chat(clonemind.current, {"Your body is beginning to regenerate in a cloning pod. You will become conscious when it is complete."}) + // Set up a soul link with the dead body to catch a revival + soullink(/datum/soullink/soulhook, clonemind.current, src) update_icon() @@ -468,6 +456,11 @@ to_chat(occupant, "There is a bright flash!
    \ You feel like a new being.
    ") occupant.flash_eyes(visual = 1) + for(var/s in sharedSoulhooks) + var/datum/soullink/S = s + S.removeSoulsharer(src) //If a sharer is destroy()'d, they are simply removed + sharedSoulhooks = null + for(var/i in missing_organs) qdel(i) @@ -479,17 +472,22 @@ occupant = null update_icon() -/obj/machinery/clonepod/proc/malfunction() +/obj/machinery/clonepod/proc/malfunction(go_easy = FALSE) if(occupant) connected_message("Critical Error!") announce_radio_message("Critical error! Please contact a Thinktronic Systems technician, as your warranty may be affected.") - if(occupant.mind != clonemind) - clonemind.transfer_to(occupant) - occupant.grab_ghost() // We really just want to make you suffer. - to_chat(occupant, {"Agony blazes across your - consciousness as your body is torn apart.
    - Is this what dying is like? Yes it is.
    "}) - occupant << sound('sound/hallucinations/veryfar_noise.ogg',0,1,50) + for(var/s in sharedSoulhooks) + var/datum/soullink/S = s + S.removeSoulsharer(src) //If a sharer is destroy()'d, they are simply removed + sharedSoulhooks = null + if(!go_easy) + if(occupant.mind != clonemind) + clonemind.transfer_to(occupant) + occupant.grab_ghost() // We really just want to make you suffer. + to_chat(occupant, {"Agony blazes across your + consciousness as your body is torn apart.
    + Is this what dying is like? Yes it is.
    "}) + occupant << sound('sound/hallucinations/veryfar_noise.ogg',0,1,50) for(var/i in missing_organs) qdel(i) missing_organs.Cut() @@ -542,6 +540,11 @@ else return +/obj/machinery/clonepod/onSoullinkRevive(mob/living/L) + if(occupant && L == clonemind.current) + // The old body's back in shape, time to ditch the cloning one + malfunction(go_easy = TRUE) + /obj/machinery/clonepod/proc/maim_clone(mob/living/carbon/human/H) LAZYINITLIST(missing_organs) for(var/i in missing_organs) diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm index 19d61e0daf9..1a53fcfa4a5 100644 --- a/code/game/machinery/computer/Operating.dm +++ b/code/game/machinery/computer/Operating.dm @@ -1,4 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 #define OP_COMPUTER_COOLDOWN 60 /obj/machinery/computer/operating @@ -148,13 +147,12 @@ occupantData["btCelsius"] = occupant.bodytemperature - T0C occupantData["btFaren"] = ((occupant.bodytemperature - T0C) * (9.0/5.0))+ 32 - if(ishuman(occupant) && occupant.vessel && !(occupant.species && occupant.species.flags & NO_BLOOD)) - var/blood_type = occupant.get_blood_name() + if(ishuman(occupant) && !(NO_BLOOD in occupant.species.species_traits)) occupantData["pulse"] = occupant.get_pulse(GETPULSE_TOOL) occupantData["hasBlood"] = 1 - occupantData["bloodLevel"] = round(occupant.vessel.get_reagent_amount(blood_type)) + occupantData["bloodLevel"] = round(occupant.blood_volume) occupantData["bloodMax"] = occupant.max_blood - occupantData["bloodPercent"] = round(100*(occupant.vessel.get_reagent_amount(blood_type)/occupant.max_blood), 0.01) //copy pasta ends here + occupantData["bloodPercent"] = round(100*(occupant.blood_volume/occupant.max_blood), 0.01) //copy pasta ends here occupantData["bloodType"]=occupant.b_type if(occupant.surgeries.len) diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm index ea53374970a..67a6c6801b8 100644 --- a/code/game/machinery/computer/atmos_alert.dm +++ b/code/game/machinery/computer/atmos_alert.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - var/global/list/priority_air_alarms = list() var/global/list/minor_air_alarms = list() diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index d72c1792932..0631095fab2 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - /obj/structure/computerframe density = 1 anchored = 0 diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index a749096dbb3..d260df8c9b9 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -20,8 +20,14 @@ var/time_last_changed_position = 0 //if set to -1: No cooldown... probably a bad idea //if set to 0: Not able to close "original" positions. You can only close positions that you have opened before var/change_position_cooldown = 60 - //Jobs you cannot open new positions for - var/list/blacklisted = list( + // Jobs that do not appear in the list at all. + var/list/blacklisted_full = list( + /datum/job/ntnavyofficer, + /datum/job/ntspecops, + /datum/job/civilian + ) + // Jobs that appear in the list, and you can prioritize, but not open/close slots for + var/list/blacklisted_partial = list( /datum/job/ai, /datum/job/cyborg, /datum/job/captain, @@ -37,12 +43,8 @@ var/time_last_changed_position = 0 /datum/job/brigdoc, /datum/job/mechanic, /datum/job/barber, - /datum/job/chaplain, - /datum/job/ntnavyofficer, - /datum/job/ntspecops, - /datum/job/civilian + /datum/job/chaplain ) - //The scaling factor of max total positions in relation to the total amount of people on board the station in % var/max_relative_positions = 30 //30%: Seems reasonable, limit of 6 @ 20 players @@ -77,7 +79,7 @@ var/time_last_changed_position = 0 /obj/machinery/computer/card/proc/format_job_slots() var/list/formatted = list() for(var/datum/job/job in job_master.occupations) - if(job_blacklisted(job)) + if(job_blacklisted_full(job)) continue if(!job_in_department(job)) continue @@ -139,14 +141,18 @@ var/time_last_changed_position = 0 nanomanager.update_uis(src) attack_hand(user) -//Check if you can't open a new position for a certain job -/obj/machinery/computer/card/proc/job_blacklisted(datum/job/job) - return (job.type in blacklisted) +//Check if you can't touch a job in any way whatsoever +/obj/machinery/computer/card/proc/job_blacklisted_full(datum/job/job) + return (job.type in blacklisted_full) + +//Check if you can't open/close positions for a certain job +/obj/machinery/computer/card/proc/job_blacklisted_partial(datum/job/job) + return (job.type in blacklisted_partial) //Logic check for Topic() if you can open the job /obj/machinery/computer/card/proc/can_open_job(datum/job/job) if(job) - if(!job_blacklisted(job) && job_in_department(job, FALSE)) + if(!job_blacklisted_full(job) && !job_blacklisted_partial(job) && job_in_department(job, FALSE)) if((job.total_positions <= player_list.len * (max_relative_positions / 100))) var/delta = (world.time / 10) - time_last_changed_position if((change_position_cooldown < delta) || (opened_positions[job.title] < 0)) @@ -158,8 +164,8 @@ var/time_last_changed_position = 0 //Logic check for Topic() if you can close the job /obj/machinery/computer/card/proc/can_close_job(datum/job/job) if(job) - if(!job_blacklisted(job) && job_in_department(job, FALSE)) - if(job.total_positions > job.current_positions) + if(!job_blacklisted_full(job) && !job_blacklisted_partial(job) && job_in_department(job, FALSE)) + if(job.total_positions > job.current_positions && !(job in job_master.prioritized_jobs)) var/delta = (world.time / 10) - time_last_changed_position if((change_position_cooldown < delta) || (opened_positions[job.title] > 0)) return 1 @@ -169,12 +175,14 @@ var/time_last_changed_position = 0 /obj/machinery/computer/card/proc/can_prioritize_job(datum/job/job) if(job) - if(!job_blacklisted(job) && job_in_department(job, FALSE)) + if(!job_blacklisted_full(job) && job_in_department(job, FALSE)) if(job in job_master.prioritized_jobs) return 2 else if(job_master.prioritized_jobs.len >= 3) return 0 + if(job.total_positions <= job.current_positions) + return 0 return 1 return -1 @@ -531,7 +539,8 @@ var/time_last_changed_position = 0 circuit = /obj/item/weapon/circuitboard/card/centcom req_access = list(access_cent_commander) change_position_cooldown = -1 - blacklisted = list() + blacklisted_full = list() + blacklisted_partial = list() /obj/machinery/computer/card/minor name = "department management console" diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 5f72dab528c..a95fee5fe2f 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -356,7 +356,7 @@ return if(scan_brain && !can_brainscan()) return - if((isnull(subject)) || (!(ishuman(subject))) || (!subject.dna) || (subject.species.flags & NO_SCAN)) + if((isnull(subject)) || (!(ishuman(subject))) || (!subject.dna) || (NO_SCAN in subject.species.species_traits)) scantemp = "Error: Unable to locate valid genetic data." nanomanager.update_uis(src) return @@ -364,7 +364,7 @@ var/obj/item/organ/internal/brain/Brn = subject.get_int_organ(/obj/item/organ/internal/brain) if(istype(Brn)) var/datum/species/S = all_species[Brn.dna.species] // stepladder code wooooo - if(S.flags & NO_SCAN) + if(NO_SCAN in S.species_traits) scantemp = "Error: Subject's brain is incompatible." nanomanager.update_uis(src) return @@ -403,7 +403,7 @@ B.dna.check_integrity() R.dna=B.dna.Clone() var/datum/species/S = all_species[R.dna.species] - if(S.flags & NO_SCAN) + if(NO_SCAN in S.species_traits) extra_info = "Proper genetic interface not found, defaulting to genetic data of the body." R.dna.species = subject.species.name R.id= copytext(md5(B.dna.real_name), 2, 6) diff --git a/code/game/machinery/computer/hologram.dm b/code/game/machinery/computer/hologram.dm index 26b7fa17fa2..2d2e5d37ae0 100644 --- a/code/game/machinery/computer/hologram.dm +++ b/code/game/machinery/computer/hologram.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - /obj/machinery/computer/hologram_comp name = "hologram computer" desc = "Rumoured to control holograms." diff --git a/code/game/machinery/computer/law.dm b/code/game/machinery/computer/law.dm index 3e2c0dd975c..44fa9d6ebc5 100644 --- a/code/game/machinery/computer/law.dm +++ b/code/game/machinery/computer/law.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - /obj/machinery/computer/aiupload name = "\improper AI upload console" desc = "Used to upload laws to the AI." diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 7c2df327285..d016a0df7bd 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -198,9 +198,7 @@ if("op") active2.fields["b_type"] = "O+" if("del_r2") - if(active2) - qdel(active2) - active2 = null + QDEL_NULL(active2) if(href_list["scan"]) if(scan) @@ -565,4 +563,4 @@ #undef MED_DATA_MAINT #undef MED_DATA_RECORD #undef MED_DATA_V_DATA -#undef MED_DATA_MEDBOT \ No newline at end of file +#undef MED_DATA_MEDBOT diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm index 66b3cc5b8f4..4dac34d1988 100644 --- a/code/game/machinery/computer/pod.dm +++ b/code/game/machinery/computer/pod.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - /obj/machinery/computer/pod name = "mass drivers and pod doors control" desc = "A control for launching pods. Some people prefer firing Mechas." diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm index fed409d9507..9861a7f516d 100644 --- a/code/game/machinery/computer/prisoner.dm +++ b/code/game/machinery/computer/prisoner.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - /obj/machinery/computer/prisoner name = "prisoner management console" icon = 'icons/obj/computer.dmi' diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index fca20841cfa..c4aefaa555d 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -156,11 +156,8 @@ for(var/datum/data/record/R in data_core.medical) if(R.fields["name"] == active1.fields["name"] && R.fields["id"] == active1.fields["id"]) qdel(R) - qdel(active1) - active1 = null - if(active2) - qdel(active2) - active2 = null + QDEL_NULL(active1) + QDEL_NULL(active2) update_all_mob_security_hud() screen = SEC_DATA_R_LIST if("criminal") @@ -556,4 +553,4 @@ #undef SEC_DATA_R_LIST #undef SEC_DATA_MAINT -#undef SEC_DATA_RECORD \ No newline at end of file +#undef SEC_DATA_RECORD diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm index e98028e3807..66d0bfdbaee 100644 --- a/code/game/machinery/computer/skills.dm +++ b/code/game/machinery/computer/skills.dm @@ -111,8 +111,7 @@ for(var/datum/data/record/R in data_core.medical) if(R.fields["name"] == active1.fields["name"] && R.fields["id"] == active1.fields["id"]) qdel(R) - qdel(active1) - active1 = null + QDEL_NULL(active1) screen = SKILL_DATA_R_LIST if("rank") if(active1) @@ -322,4 +321,4 @@ #undef SKILL_DATA_R_LIST #undef SKILL_DATA_MAINT -#undef SKILL_DATA_RECORD \ No newline at end of file +#undef SKILL_DATA_RECORD diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 24f5c88695c..8705b065107 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - /obj/machinery/constructable_frame //Made into a seperate type to make future revisions easier. name = "machine frame" icon = 'icons/obj/stock_parts.dmi' diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 1e31207b574..0478141abe3 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -316,9 +316,7 @@ if(istype(W,/obj/item/device/pda)) var/obj/item/device/pda/P = W - if(P.id) - qdel(P.id) - P.id = null + QDEL_NULL(P.id) qdel(P) if(!preserve) @@ -421,8 +419,7 @@ occupant.ghostize(0) // Players despawned too early may not re-enter the game else occupant.ghostize(1) - qdel(occupant) - occupant = null + QDEL_NULL(occupant) name = initial(name) diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm index fd18985d9fa..7c9f6d5b299 100644 --- a/code/game/machinery/doors/airlock_electronics.dm +++ b/code/game/machinery/doors/airlock_electronics.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - /obj/item/weapon/airlock_electronics name = "airlock electronics" icon = 'icons/obj/doors/door_assembly.dmi' diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index 68987b63ebd..818f251024c 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -3,8 +3,6 @@ #define FONT_COLOR "#09f" #define FONT_STYLE "Arial Black" -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - /////////////////////////////////////////////////////////////////////////////////////////////// // Brig Door control displays. // Description: This is a controls the timer for the brig doors, displays the timer on itself and @@ -84,7 +82,7 @@ Radio.follow_target = src pixel_x = ((dir & 3)? (0) : (dir == 4 ? 32 : -32)) - pixel_y = ((dir & 3)? (dir ==1 ? 24 : -32) : (0)) + pixel_y = ((dir & 3)? (dir ==1 ? 32 : -32) : (0)) spawn(20) for(var/obj/machinery/door/window/brigdoor/M in airlocks) @@ -440,4 +438,4 @@ #undef FONT_SIZE #undef FONT_COLOR #undef FONT_STYLE -#undef CHARS_PER_LINE \ No newline at end of file +#undef CHARS_PER_LINE diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index d6b295e1811..c3e105a7fee 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -1,4 +1,3 @@ -//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 @@ -278,9 +277,9 @@ L.Weaken(5) else //for simple_animals & borgs L.adjustBruteLoss(DOOR_CRUSH_DAMAGE) - var/turf/simulated/location = loc - if(istype(location, /turf/simulated)) //add_blood doesn't work for borgs/xenos, but add_blood_floor does. - location.add_blood_floor(L) + var/turf/location = get_turf(src) + L.add_splatter_floor(location) + /obj/machinery/door/proc/requiresID() return 1 diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index aa345e29643..6cb866d27ed 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -142,8 +142,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ /obj/machinery/hologram/holopad/proc/clear_holo() // hologram.set_light(0)//Clear lighting. //handled by the lighting controller when its ower is deleted - qdel(hologram)//Get rid of hologram. - hologram = null + QDEL_NULL(hologram)//Get rid of hologram. if(master.holo == src) master.holo = null master = null//Null the master, since no-one is using it now. diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index 26785e248b1..a0403f88358 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -1,10 +1,14 @@ +#define IV_TAKING 0 +#define IV_INJECTING 1 + /obj/machinery/iv_drip name = "\improper IV drip" icon = 'icons/obj/iv_drip.dmi' icon_state = "iv_drip" - anchored = 0 + anchored = FALSE + mouse_drag_pointer = MOUSE_ACTIVE_POINTER var/mob/living/carbon/human/attached = null - var/mode = 1 // 1 is injecting, 0 is taking blood. + var/mode = IV_INJECTING var/obj/item/weapon/reagent_containers/beaker = null var/transfer_amount = 5 var/possible_transfer_amounts = list(1,5,10) @@ -61,7 +65,7 @@ overlays += filling /obj/machinery/iv_drip/MouseDrop(mob/living/target) - if(!ishuman(usr)) + if(!ishuman(usr) || !iscarbon(target)) return if(attached) @@ -83,6 +87,7 @@ else to_chat(usr, "There's nothing attached to the IV drip!") + /obj/machinery/iv_drip/attackby(obj/item/weapon/W, mob/user, params) if(istype(W, /obj/item/weapon/reagent_containers)) if(beaker) @@ -113,8 +118,8 @@ if(beaker) // Give blood if(mode) - if(beaker.volume > 0) - var/fraction = min(transfer_amount/beaker.volume, 1) //the fraction that is transfered of the total volume + if(beaker.reagents.total_volume) + var/fraction = min(transfer_amount/beaker.reagents.total_volume, 1) //the fraction that is transfered of the total volume beaker.reagents.reaction(attached, INGEST, fraction) //make reagents reacts, but don't spam messages beaker.reagents.trans_to(attached, transfer_amount) update_icon() @@ -124,43 +129,17 @@ var/amount = beaker.reagents.maximum_volume - beaker.reagents.total_volume amount = min(amount, 4) // If the beaker is full, ping - if(amount == 0) + if(!amount) if(prob(5)) visible_message("[src] pings.") return - var/mob/living/carbon/human/T = attached - - if(!ishuman(T)) - return - - if(!T.dna) - return - - if(NOCLONE in T.mutations) - return - - if(T.species.flags & NO_BLOOD) - return - - if(T.species.exotic_blood) - T.vessel.trans_to(beaker, amount) - update_icon() - else - var/datum/reagent/B = T.take_blood(beaker, amount) - - if(B) - beaker.reagents.reagent_list |= B - beaker.reagents.update_total() - beaker.on_reagent_change() - beaker.reagents.handle_reactions() - update_icon() - - // If attached is losing too much blood, beep. - var/blood_type = attached.get_blood_name() - if(T.vessel.get_reagent_amount(blood_type) < BLOOD_VOLUME_SAFE && prob(5)) + // If the human is losing too much blood, beep. + if(attached.blood_volume < BLOOD_VOLUME_SAFE && prob(5)) visible_message("[src] beeps loudly.") playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) + attached.transfer_blood_to(beaker, amount) + update_icon() /obj/machinery/iv_drip/attack_hand(mob/user) if(!ishuman(user)) @@ -219,7 +198,7 @@ /obj/machinery/iv_drip/examine(mob/user) ..(user) - if(!(user in view(2)) && user != loc) + if(get_dist(user, src) > 2) return to_chat(user, "The IV drip is [mode ? "injecting" : "taking blood"].") @@ -239,9 +218,17 @@ set category = "Object" set src in view(1) + if(!iscarbon(usr)) + to_chat(usr, "You can't do that!") + return + if(usr.incapacitated()) return + var/default = 5 var/N = input("Amount per transfer from this:", "[src]", default) as null|anything in possible_transfer_amounts if(N) - transfer_amount = N \ No newline at end of file + transfer_amount = N + +#undef IV_TAKING +#undef IV_INJECTING \ No newline at end of file diff --git a/code/game/machinery/podmen.dm b/code/game/machinery/podmen.dm deleted file mode 100644 index af24a856115..00000000000 --- a/code/game/machinery/podmen.dm +++ /dev/null @@ -1,136 +0,0 @@ -/* Moved all the plant people code here for ease of reference and coherency. -Injecting a pod person with a blood sample will grow a pod person with the memories and persona of that mob. -Growing it to term with nothing injected will grab a ghost from the observers. */ - -/obj/item/seeds/replicapod - name = "pack of dionaea-replicant seeds" - desc = "These seeds grow into 'replica pods' or 'dionaea', a form of strange sapient plantlife." - icon_state = "seed-replicapod" - mypath = "/obj/item/seeds/replicapod" - species = "replicapod" - plantname = "Dionaea" - productname = "/mob/living/carbon/human" //verrry special -- Urist - lifespan = 50 //no idea what those do - endurance = 8 - maturation = 5 - production = 10 - yield = 1 //seeds if there isn't a dna inside - oneharvest = 1 - potency = 30 - plant_type = 0 - growthstages = 6 - var/ckey = null - var/realName = null - var/mob/living/carbon/human/source //Donor of blood, if any. - gender = MALE - var/obj/machinery/hydroponics/parent = null - var/found_player = 0 - var/beingharvested = 0 - -/obj/item/seeds/replicapod/attackby(obj/item/weapon/W as obj, mob/user as mob, params) - - if(istype(W,/obj/item/weapon/reagent_containers)) - - to_chat(user, "You inject the contents of the syringe into the seeds.") - - var/datum/reagent/blood/B - - //Find a blood sample to inject. - for(var/datum/reagent/R in W:reagents.reagent_list) - if(istype(R,/datum/reagent/blood)) - B = R - break - if(B) - source = B.data["donor"] - to_chat(user, "The strange, sluglike seeds quiver gently and swell with blood.") - if(!source.client && source.mind) - for(var/mob/O in respawnable_list) - if(O.mind == source.mind && config.revival_pod_plants) - switch(alert(O,"Your corpse has been placed into a pod plant. Do you want to be resurrected/cloned? Please note if you select 'No', you will still be able to be cloned or borged again this round.","Pod Alert","Yes","No")) - if("Yes") - source.key = O.key - return - if("No") - to_chat(user, "The seeds seem to reject the blood, returning to their original size as they stop quivering.") - return - else - to_chat(user, "Nothing happens.") - return - - if(!istype(source)) - return - - if(source.ckey) - realName = source.real_name - ckey = source.ckey - - W:reagents.clear_reagents() - return - - return ..() - -/obj/item/seeds/replicapod/harvest(mob/user = usr) - - parent = loc -// var/found_player = 0 - - - if(beingharvested) - to_chat(user, ("You can only harvest the pod once!")) - else - user.visible_message("[user] carefully begins to open the pod...","You carefully begin to open the pod...") - beingharvested = 1 - - //If a sample is injected (and revival is allowed) the plant will be controlled by the original donor. - if(source && source.stat == 2 && source.client && source.ckey && config.revival_pod_plants) - transfer_personality(source.client) - else // If no sample was injected or revival is not allowed, we grab an interested observer. - transfer_personality() - -/obj/item/seeds/replicapod/proc/transfer_personality(var/client/player) - - if(player) - found_player = 1 - var/mob/living/carbon/monkey/diona/podman = new(parent.loc) - podman.ckey = player.ckey - respawnable_list -= player - if(player.mob && player.mob.mind) - player.mob.mind.transfer_to(podman) - - if(realName) - podman.real_name = realName - else - podman.real_name = "diona nymph ([rand(100,999)])" - - podman.dna.real_name = podman.real_name - - // Update mode specific HUD icons. - callHook("harvest_podman", list(podman)) - - switch(ticker.mode.name) - if("revolution") - if(podman.mind in ticker.mode:revolutionaries) - ticker.mode:add_revolutionary(podman.mind) - ticker.mode:update_all_rev_icons() //So the icon actually appears - if(podman.mind in ticker.mode:head_revolutionaries) - ticker.mode:update_all_rev_icons() - if("nuclear emergency") - if(podman.mind in ticker.mode:syndicates) - ticker.mode:update_all_synd_icons() - if("cult") - if(podman.mind in ticker.mode:cult) - ticker.mode:add_cultist(podman.mind) - ticker.mode:update_all_cult_icons() //So the icon actually appears - // -- End mode specific stuff - - to_chat(podman, "You awaken slowly, feeling your sap stir into sluggish motion as the warm air caresses your bark.") - if(source && ckey && podman.ckey == ckey) - to_chat(podman, "Memories of a life as [source] drift oddly through a mind unsuited for them, like a skin of oil over a fathomless lake.") - to_chat(podman, "You are now one of the Dionaea, a race of drifting interstellar plantlike creatures that sometimes share their seeds with human traders.") - to_chat(podman, "Too much darkness will send you into shock and starve you, but light will help you heal.") - - else - new /mob/living/carbon/monkey/diona(parent.loc) - - parent.visible_message("The pod disgorges a fully-formed plant creature!") - parent.update_tray() diff --git a/code/game/machinery/poolcontroller.dm b/code/game/machinery/poolcontroller.dm index f9f1f40264d..6e1e1c0e97a 100644 --- a/code/game/machinery/poolcontroller.dm +++ b/code/game/machinery/poolcontroller.dm @@ -93,7 +93,7 @@ if(drownee && (drownee.lying || deep_water)) //Mob lying down or water is deep (determined by controller) if(drownee.internal) return //Has internals, no drowning - if((drownee.species.flags & NO_BREATHE) || (NO_BREATHE in drownee.mutations)) + if((NO_BREATHE in drownee.species.species_traits) || (NO_BREATHE in drownee.mutations)) return //doesn't breathe, no drowning if(drownee.get_species() == "Skrell" || drownee.get_species() == "Neara") return //fish things don't drown diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 0f19d5c42ff..d9162bd5359 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -411,8 +411,7 @@ var/list/turret_icons if(I.force * 0.5 > 1) //if the force of impact dealt at least 1 damage, the turret gets pissed off if(!attacked && !emagged) attacked = 1 - spawn() - sleep(60) + spawn(60) attacked = 0 ..() @@ -473,8 +472,7 @@ var/list/turret_icons if(enabled) if(!attacked && !emagged) attacked = 1 - spawn() - sleep(60) + spawn(60) attacked = 0 ..() @@ -539,50 +537,54 @@ var/list/turret_icons var/list/targets = list() //list of primary targets var/list/secondarytargets = list() //targets that are least important + var/static/things_to_scan = typecacheof(list(/obj/mecha, /obj/spacepod, /obj/vehicle, /mob/living)) - for(var/obj/mecha/ME in view(scan_range,src)) - assess_and_assign(ME.occupant, targets, secondarytargets) + for(var/A in typecache_filter_list(view(scan_range, src), things_to_scan)) + var/atom/AA = A - for(var/obj/spacepod/SP in view(scan_range,src)) - assess_and_assign(SP.pilot, targets, secondarytargets) + if(AA.invisibility > SEE_INVISIBLE_LIVING) //Let's not do typechecks and stuff on invisible things + continue - for(var/obj/vehicle/T in view(scan_range,src)) - assess_and_assign(T.buckled_mob, targets, secondarytargets) + if(istype(A, /obj/mecha)) + var/obj/mecha/ME = A + assess_and_assign(ME.occupant, targets, secondarytargets) - for(var/mob/living/C in view(scan_range,src)) //loops through all living lifeforms in view - assess_and_assign(C, targets, secondarytargets) + if(istype(A, /obj/spacepod)) + var/obj/spacepod/SP = A + assess_and_assign(SP.pilot, targets, secondarytargets) + + if(istype(A, /obj/vehicle)) + var/obj/vehicle/T = A + assess_and_assign(T.buckled_mob, targets, secondarytargets) + + if(isliving(A)) + var/mob/living/C = A + assess_and_assign(C, targets, secondarytargets) if(!tryToShootAt(targets)) if(!tryToShootAt(secondarytargets)) // if no valid targets, go for secondary targets if(!always_up) - spawn() - popDown() // no valid targets, close the cover + popDown() // no valid targets, close the cover /obj/machinery/porta_turret/proc/in_faction(mob/living/target) if(!(faction in target.faction)) return 0 return 1 -/obj/machinery/porta_turret/proc/assess_and_assign(var/mob/living/L, var/list/targets, var/list/secondarytargets) +/obj/machinery/porta_turret/proc/assess_and_assign(mob/living/L, list/targets, list/secondarytargets) switch(assess_living(L)) if(TURRET_PRIORITY_TARGET) targets += L if(TURRET_SECONDARY_TARGET) secondarytargets += L -/obj/machinery/porta_turret/proc/assess_living(var/mob/living/L) - if(!istype(L)) +/obj/machinery/porta_turret/proc/assess_living(mob/living/L) + if(!L) return TURRET_NOT_TARGET if(get_turf(L) == get_turf(src)) return TURRET_NOT_TARGET - if(L.invisibility >= INVISIBILITY_LEVEL_ONE) // Cannot see him. see_invisible is a mob-var - return TURRET_NOT_TARGET - - if(!L) - return TURRET_NOT_TARGET - if(!emagged && !syndicate && (issilicon(L) || isbot(L))) // Don't target silica return TURRET_NOT_TARGET @@ -687,31 +689,25 @@ var/list/turret_icons raising = is_raising density = is_raised || is_raising -/obj/machinery/porta_turret/proc/target(var/mob/living/target) +/obj/machinery/porta_turret/proc/target(mob/living/target) if(disabled) return if(target) last_target = target if(has_cover) - spawn() - popUp() //pop the turret up if it's not already up. - dir = get_dir(src, target) //even if you can't shoot, follow the target - spawn() - shootAt(target) - return 1 - return + popUp() //pop the turret up if it's not already up. + setDir(get_dir(src, target)) //even if you can't shoot, follow the target + shootAt(target) + return TRUE -/obj/machinery/porta_turret/proc/shootAt(var/mob/living/target) +/obj/machinery/porta_turret/proc/shootAt(mob/living/target) if(!raised && has_cover) //the turret has to be raised in order to fire - makes sense, right? return - //any emagged turrets will shoot extremely fast! This not only is deadly, but drains a lot power! - if(!emagged) //if it hasn't been emagged, it has to obey a cooldown rate - if(last_fired || !raised) //prevents rapid-fire shooting, unless it's been emagged + + if(!emagged) //if it hasn't been emagged, cooldown before shooting again + if((last_fired + shot_delay > world.time) || !raised) return - last_fired = 1 - spawn() - sleep(shot_delay) - last_fired = 0 + last_fired = world.time var/turf/T = get_turf(src) var/turf/U = get_turf(target) @@ -733,11 +729,14 @@ var/list/turret_icons // Emagged turrets again use twice as much power due to higher firing rates use_power(reqpower * (2 * (emagged || lethal)) * (2 * emagged)) - A.original = target - A.current = T - A.yo = U.y - T.y - A.xo = U.x - T.x - A.fire() + if(istype(A)) + A.original = target + A.current = T + A.yo = U.y - T.y + A.xo = U.x - T.x + A.fire() + else + A.throw_at(target, scan_range, 1) return A /datum/turret_checks @@ -1062,4 +1061,3 @@ var/list/turret_icons health = 100 projectile = /obj/item/projectile/bullet/weakbullet3 eprojectile = /obj/item/projectile/bullet/midbullet - diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index f0a635c73a8..1e0f416bb0d 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -220,9 +220,6 @@ var/i = 1 for(1, i <= coeff, i++) LR.Charge(occupant) - if(istype(O,/obj/item/weapon/mop/advanced)) - if(O.reagents.get_reagent_amount("water") < 40) - O.reagents.add_reagent("water", 0.5 * coeff) if(R) if(R.module) R.module.respawn_consumable(R) diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 698c1c5fe91..9cf58846feb 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -168,7 +168,7 @@ var/const/SAFETY_COOLDOWN = 100 gib = 0 if(L.stat == CONSCIOUS) L.say("ARRRRRRRRRRRGH!!!") - add_blood(L) + add_mob_blood(L) if(!blood && !issilicon(L)) blood = 1 diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm index 45046b7473f..0f1ebaad7d5 100644 --- a/code/game/machinery/syndicatebeacon.dm +++ b/code/game/machinery/syndicatebeacon.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - // Beacon randomly spawns in space // When a non-traitor (no special role in /mind) uses it, he is given the choice to become a traitor // If he accepts there is a random chance he will be accepted, rejected, or rejected and killed diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 10f6fc1c8c5..153fc50bf91 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -1,3 +1,6 @@ +#define BUTTON_COOLDOWN 60 // cant delay the bomb forever +#define BUTTON_DELAY 50 //five seconds + /obj/machinery/syndicatebomb icon = 'icons/obj/assemblies.dmi' name = "syndicate bomb" @@ -6,71 +9,119 @@ anchored = 0 density = 0 - layer = MOB_LAYER - 0.1 //so people can't hide it and it's REALLY OBVIOUS + layer = BELOW_MOB_LAYER //so people can't hide it and it's REALLY OBVIOUS unacidable = 1 var/datum/wires/syndicatebomb/wires = null - var/timer = 120 - var/open_panel = 0 //are the wires exposed? - var/active = 0 //is the bomb counting down? - var/defused = 0 //is the bomb capable of exploding? - var/obj/item/weapon/bombcore/payload = /obj/item/weapon/bombcore/ + var/minimum_timer = 90 + var/timer_set = 90 + var/maximum_timer = 60000 + + var/can_unanchor = TRUE + + var/open_panel = FALSE //are the wires exposed? + var/active = FALSE //is the bomb counting down? + var/defused = FALSE //is the bomb capable of exploding? + var/obj/item/weapon/bombcore/payload = /obj/item/weapon/bombcore var/beepsound = 'sound/items/timer.ogg' + var/delayedbig = FALSE //delay wire pulsed? + var/delayedlittle = FALSE //activation wire pulsed? + var/obj/effect/countdown/syndicatebomb/countdown + + var/next_beep + var/detonation_timer + var/explode_now = FALSE + +/obj/machinery/syndicatebomb/proc/try_detonate(ignore_active = FALSE) + . = (payload in src) && (active || ignore_active) && !defused + if(.) + payload.detonate() /obj/machinery/syndicatebomb/process() - if(active && !defused && (timer > 0)) //Tick Tock - var/volume = (timer <= 20 ? 40 : 10) // Tick louder when the bomb is closer to being detonated. - playsound(loc, beepsound, volume, 0) - timer = max(timer - 2,0) // 2 seconds per process() - if(active && !defused && (timer <= 0)) //Boom - active = 0 - timer = 120 - update_icon() - if(payload in src) - payload.detonate() + if(!active) + fast_processing -= src + detonation_timer = null + next_beep = null + countdown.stop() return - if(!active || defused) //Counter terrorists win + + if(!isnull(next_beep) && (next_beep <= world.time)) + var/volume + switch(seconds_remaining()) + if(0 to 5) + volume = 50 + if(5 to 10) + volume = 40 + if(10 to 15) + volume = 30 + if(15 to 20) + volume = 20 + if(20 to 25) + volume = 10 + else + volume = 5 + playsound(loc, beepsound, volume, 0) + next_beep = world.time + 10 + + if(active && !defused && ((detonation_timer <= world.time) || explode_now)) + active = FALSE + timer_set = initial(timer_set) + update_icon() + try_detonate(TRUE) + //Counter terrorists win + else if(!active || defused) if(defused && payload in src) payload.defuse() - return + countdown.stop() + fast_processing -= src /obj/machinery/syndicatebomb/New() wires = new(src) - payload = new payload(src) + if(payload) + payload = new payload(src) update_icon() + countdown = new(src) ..() /obj/machinery/syndicatebomb/Destroy() QDEL_NULL(wires) + QDEL_NULL(countdown) + fast_processing -= src return ..() /obj/machinery/syndicatebomb/examine(mob/user) ..(user) - to_chat(user, "A digital display on it reads \"[timer]\".") + to_chat(user, "A digital display on it reads \"[seconds_remaining()]\".") /obj/machinery/syndicatebomb/update_icon() icon_state = "[initial(icon_state)][active ? "-active" : "-inactive"][open_panel ? "-wires" : ""]" -/obj/machinery/syndicatebomb/attackby(var/obj/item/I, var/mob/user, params) - if(istype(I, /obj/item/weapon/wrench)) +/obj/machinery/syndicatebomb/proc/seconds_remaining() + if(active) + . = max(0, round((detonation_timer - world.time) / 10)) + else + . = timer_set + +/obj/machinery/syndicatebomb/attackby(obj/item/I, mob/user, params) + if(iswrench(I) && can_unanchor) if(!anchored) - if(!isturf(src.loc) || istype(src.loc, /turf/space)) - to_chat(user, "The bomb must be placed on solid ground to attach it") + if(!isturf(loc) || isspaceturf(loc)) + to_chat(user, "The bomb must be placed on solid ground to attach it.") else - to_chat(user, "You firmly wrench the bomb to the floor") + to_chat(user, "You firmly wrench the bomb to the floor.") playsound(loc, I.usesound, 50, 1) anchored = 1 if(active) - to_chat(user, "The bolts lock in place") + to_chat(user, "The bolts lock in place.") else if(!active) - to_chat(user, "You wrench the bomb from the floor") + to_chat(user, "You wrench the bomb from the floor.") playsound(loc, I.usesound, 50, 1) anchored = 0 else to_chat(user, "The bolts are locked down!") - else if(istype(I, /obj/item/weapon/screwdriver)) + else if(isscrewdriver(I)) open_panel = !open_panel update_icon() to_chat(user, "You [open_panel ? "open" : "close"] the wire panel.") @@ -79,28 +130,47 @@ if(open_panel) wires.Interact(user) - else if(istype(I, /obj/item/weapon/crowbar)) - if(open_panel && isWireCut(WIRE_BOOM) && isWireCut(WIRE_UNBOLT) && isWireCut(WIRE_DELAY) && isWireCut(WIRE_PROCEED) && isWireCut(WIRE_ACTIVATE)) + else if(iscrowbar(I)) + if(open_panel && wires.IsAllCut()) if(payload) to_chat(user, "You carefully pry out [payload].") payload.loc = user.loc payload = null else - to_chat(user, "There isn't anything in here to remove!") + to_chat(user, "There isn't anything in here to remove!") else if(open_panel) - to_chat(user, "The wires connecting the shell to the explosives are holding it down!") + to_chat(user, "The wires connecting the shell to the explosives are holding it down!") else - to_chat(user, "The cover is screwed on, it won't pry off!") + to_chat(user, "The cover is screwed on, it won't pry off!") else if(istype(I, /obj/item/weapon/bombcore)) if(!payload) + if(!user.drop_item()) + return payload = I to_chat(user, "You place [payload] into [src].") - user.drop_item() - payload.loc = src + payload.forceMove(src) else to_chat(user, "[payload] is already loaded into [src], you'll have to remove it first.") + else if(iswelder(I)) + if(payload || !wires.IsAllCut() || !open_panel) + return + var/obj/item/weapon/weldingtool/WT = I + if(!WT.isOn()) + return + if(WT.get_fuel() < 5) //uses up 5 fuel. + to_chat(user, "You need more fuel to complete this task!") + return + + playsound(loc, WT.usesound, 50, 1) + to_chat(user, "You start to cut the [src] apart...") + if(do_after(user, 20*I.toolspeed, target = src)) + if(!WT.isOn() || !WT.remove_fuel(5, user)) + return + to_chat(user, "You cut the [src] apart.") + new /obj/item/stack/sheet/plasteel(loc, 5) + qdel(src) else - ..() + return ..() /obj/machinery/syndicatebomb/attack_ghost(mob/user) interact(user) @@ -133,21 +203,27 @@ return FALSE return TRUE +/obj/machinery/syndicatebomb/proc/activate() + active = TRUE + fast_processing += src + countdown.start() + next_beep = world.time + 10 + detonation_timer = world.time + (timer_set * 10) + playsound(loc, 'sound/machines/click.ogg', 30, 1) + /obj/machinery/syndicatebomb/proc/settings(mob/user) - var/newtime = input(user, "Please set the timer.", "Timer", "[timer]") as num - newtime = Clamp(newtime, 120, 60000) + var/new_timer = input(user, "Please set the timer.", "Timer", "[timer_set]") as num if(can_interact(user)) //No running off and setting bombs from across the station - timer = newtime - loc.visible_message("[bicon(src)] timer set for [timer] seconds.") + timer_set = Clamp(new_timer, minimum_timer, maximum_timer) + loc.visible_message("[bicon(src)] timer set for [timer_set] seconds.") if(alert(user,"Would you like to start the countdown now?",,"Yes","No") == "Yes" && can_interact(user)) if(defused || active) if(defused) loc.visible_message("[bicon(src)] Device error: User intervention required.") return else - loc.visible_message("[bicon(src)] [timer] seconds until detonation, please clear the area.") - playsound(loc, 'sound/machines/click.ogg', 30, 1) - active = 1 + loc.visible_message("[bicon(src)] [timer_set] seconds until detonation, please clear the area.") + activate() update_icon() add_fingerprint(user) @@ -167,12 +243,12 @@ name = "training bomb" icon_state = "training-bomb" desc = "A salvaged syndicate device gutted of its explosives to be used as a training aid for aspiring bomb defusers." - payload = /obj/item/weapon/bombcore/training/ + payload = /obj/item/weapon/bombcore/training /obj/machinery/syndicatebomb/badmin name = "generic summoning badmin bomb" desc = "Oh god what is in this thing?" - payload = /obj/item/weapon/bombcore/badmin/summon/ + payload = /obj/item/weapon/bombcore/badmin/summon /obj/machinery/syndicatebomb/badmin/clown name = "clown bomb" @@ -181,8 +257,23 @@ payload = /obj/item/weapon/bombcore/badmin/summon/clown beepsound = 'sound/items/bikehorn.ogg' -/obj/machinery/syndicatebomb/badmin/varplosion - payload = /obj/item/weapon/bombcore/badmin/explosion/ +/obj/machinery/syndicatebomb/empty + name = "bomb" + icon_state = "base-bomb" + desc = "An ominous looking device designed to detonate an explosive payload. Can be bolted down using a wrench." + payload = null + open_panel = TRUE + timer_set = 120 + +/obj/machinery/syndicatebomb/empty/New() + ..() + wires.CutAll() + +/obj/machinery/syndicatebomb/self_destruct + name = "self destruct device" + desc = "Do not taunt. Warranty invalid if exposed to high temperature. Not suitable for agents under 3 years of age." + payload = /obj/item/weapon/bombcore/large + can_unanchor = FALSE ///Bomb Cores/// @@ -196,17 +287,26 @@ origin_tech = "syndicate=5;combat=6" burn_state = FLAMMABLE //Burnable (but the casing isn't) var/adminlog = null + var/range_heavy = 3 + var/range_medium = 9 + var/range_light = 17 + var/range_flame = 17 /obj/item/weapon/bombcore/ex_act(severity) //Little boom can chain a big boom - src.detonate() + detonate() + + +/obj/item/weapon/bombcore/burn() + detonate() + ..() /obj/item/weapon/bombcore/proc/detonate() if(adminlog) message_admins(adminlog) log_game(adminlog) - explosion(get_turf(src),3,9,17, flame_range = 17) - if(src.loc && istype(src.loc,/obj/machinery/syndicatebomb/)) - qdel(src.loc) + explosion(get_turf(src), range_heavy, range_medium, range_light, flame_range = range_flame) + if(loc && istype(loc, /obj/machinery/syndicatebomb)) + qdel(loc) qdel(src) /obj/item/weapon/bombcore/proc/defuse() @@ -223,17 +323,20 @@ var/attempts = 0 /obj/item/weapon/bombcore/training/proc/reset() - var/obj/machinery/syndicatebomb/holder = src.loc + var/obj/machinery/syndicatebomb/holder = loc if(istype(holder)) if(holder.wires) holder.wires.Shuffle() holder.defused = 0 holder.open_panel = 0 + holder.delayedbig = FALSE + holder.delayedlittle = FALSE + holder.explode_now = FALSE holder.update_icon() holder.updateDialog() /obj/item/weapon/bombcore/training/detonate() - var/obj/machinery/syndicatebomb/holder = src.loc + var/obj/machinery/syndicatebomb/holder = loc if(istype(holder)) attempts++ holder.loc.visible_message("[bicon(holder)] Alert: Bomb has detonated. Your score is now [defusals] for [attempts]. Resetting wires...") @@ -242,7 +345,7 @@ qdel(src) /obj/item/weapon/bombcore/training/defuse() - var/obj/machinery/syndicatebomb/holder = src.loc + var/obj/machinery/syndicatebomb/holder = loc if(istype(holder)) attempts++ defusals++ @@ -257,11 +360,11 @@ origin_tech = null /obj/item/weapon/bombcore/badmin/defuse() //because we wouldn't want them being harvested by players - var/obj/machinery/syndicatebomb/B = src.loc + var/obj/machinery/syndicatebomb/B = loc qdel(B) qdel(src) -/obj/item/weapon/bombcore/badmin/summon/ +/obj/item/weapon/bombcore/badmin/summon var/summon_path = /obj/item/weapon/reagent_containers/food/snacks/cookie var/amt_summon = 1 @@ -285,42 +388,165 @@ playsound(src.loc, 'sound/misc/sadtrombone.ogg', 50) ..() -/obj/item/weapon/bombcore/badmin/explosion/ - var/HeavyExplosion = 2 - var/MediumExplosion = 5 - var/LightExplosion = 11 - var/Flames = 11 +/obj/item/weapon/bombcore/large + name = "large bomb payload" + range_heavy = 5 + range_medium = 10 + range_light = 20 + range_flame = 20 -/obj/item/weapon/bombcore/badmin/explosion/detonate() - explosion(get_turf(src),HeavyExplosion,MediumExplosion,LightExplosion, flame_range = Flames) +/obj/item/weapon/bombcore/large/underwall + layer = ABOVE_OPEN_TURF_LAYER /obj/item/weapon/bombcore/miniature name = "small bomb core" w_class = WEIGHT_CLASS_SMALL + range_heavy = 1 + range_medium = 2 + range_light = 4 + range_flame = 2 -/obj/item/weapon/bombcore/miniature/detonate() - explosion(src.loc,1,2,4,flame_range = 2) //Identical to a minibomb +/obj/item/weapon/bombcore/chemical + name = "chemical payload" + desc = "An explosive payload designed to spread chemicals, dangerous or otherwise, across a large area. It is able to hold up to four chemical containers, and must be loaded before use." + origin_tech = "combat=4;materials=3" + icon_state = "chemcore" + var/list/beakers = list() + var/max_beakers = 1 + var/spread_range = 5 + var/temp_boost = 50 + var/time_release = 0 + +/obj/item/weapon/bombcore/chemical/detonate() + + if(time_release > 0) + var/total_volume = 0 + for(var/obj/item/weapon/reagent_containers/RC in beakers) + total_volume += RC.reagents.total_volume + + if(total_volume < time_release) // If it's empty, the detonation is complete. + if(loc && istype(loc, /obj/machinery/syndicatebomb)) + qdel(loc) + qdel(src) + return + + var/fraction = time_release/total_volume + var/datum/reagents/reactants = new(time_release) + reactants.my_atom = src + for(var/obj/item/weapon/reagent_containers/RC in beakers) + RC.reagents.trans_to(reactants, RC.reagents.total_volume*fraction, 1, 1, 1) + chem_splash(get_turf(src), spread_range, list(reactants), temp_boost) + + // Detonate it again in one second, until it's out of juice. + addtimer(src, "detonate", 10) + + // If it's not a time release bomb, do normal explosion + + var/list/reactants = list() + + for(var/obj/item/weapon/reagent_containers/glass/G in beakers) + reactants += G.reagents + + for(var/obj/item/slime_extract/S in beakers) + if(S.Uses) + for(var/obj/item/weapon/reagent_containers/glass/G in beakers) + G.reagents.trans_to(S, G.reagents.total_volume) + + if(S && S.reagents && S.reagents.total_volume) + reactants += S.reagents + + if(!chem_splash(get_turf(src), spread_range, reactants, temp_boost)) + playsound(loc, 'sound/items/Screwdriver2.ogg', 50, 1) + return // The Explosion didn't do anything. No need to log, or disappear. + + if(adminlog) + message_admins(adminlog) + log_game(adminlog) + + playsound(loc, 'sound/effects/bamf.ogg', 75, 1, 5) + + if(loc && istype(loc, /obj/machinery/syndicatebomb)) + qdel(loc) qdel(src) +/obj/item/weapon/bombcore/chemical/attackby(obj/item/I, mob/user, params) + if(iscrowbar(I) && beakers.len > 0) + playsound(loc, I.usesound, 50, 1) + for (var/obj/item/B in beakers) + B.loc = get_turf(src) + beakers -= B + return + else if(istype(I, /obj/item/weapon/reagent_containers/glass/beaker) || istype(I, /obj/item/weapon/reagent_containers/glass/bottle)) + if(beakers.len < max_beakers) + if(!user.drop_item()) + return + beakers += I + to_chat(user, "You load [src] with [I].") + I.loc = src + else + to_chat(user, "The [I] wont fit! The [src] can only hold up to [max_beakers] containers.") + return + ..() + +/obj/item/weapon/bombcore/chemical/CheckParts(list/parts_list) + ..() + // Using different grenade casings, causes the payload to have different properties. + var/obj/item/weapon/stock_parts/matter_bin/MB = locate(/obj/item/weapon/stock_parts/matter_bin) in src + if(MB) + max_beakers += MB.rating // max beakers = 2-5. + qdel(MB) + for(var/obj/item/weapon/grenade/chem_grenade/G in src) + + if(istype(G, /obj/item/weapon/grenade/chem_grenade/large)) + var/obj/item/weapon/grenade/chem_grenade/large/LG = G + max_beakers += 1 // Adding two large grenades only allows for a maximum of 7 beakers. + spread_range += 2 // Extra range, reduced density. + temp_boost += 50 // maximum of +150K blast using only large beakers. Not enough to self ignite. + for(var/obj/item/slime_extract/S in LG.beakers) // And slime cores. + if(beakers.len < max_beakers) + beakers += S + S.loc = src + else + S.loc = get_turf(src) + + if(istype(G, /obj/item/weapon/grenade/chem_grenade/cryo)) + spread_range -= 1 // Reduced range, but increased density. + temp_boost -= 100 // minimum of -150K blast. + + if(istype(G, /obj/item/weapon/grenade/chem_grenade/pyro)) + temp_boost += 150 // maximum of +350K blast, which is enough to self ignite. Which means a self igniting bomb can't take advantage of other grenade casing properties. Sorry? + + if(istype(G, /obj/item/weapon/grenade/chem_grenade/adv_release)) + time_release += 50 // A typical bomb, using basic beakers, will explode over 2-4 seconds. Using two will make the reaction last for less time, but it will be more dangerous overall. + + for(var/obj/item/weapon/reagent_containers/glass/B in G) + if(beakers.len < max_beakers) + beakers += B + B.loc = src + else + B.loc = get_turf(src) + + qdel(G) + ///Syndicate Detonator (aka the big red button)/// /obj/item/device/syndicatedetonator name = "big red button" - desc = "Nothing good can come of pressing a button this garish..." + desc = "Your standard issue bomb synchronizing button. Five second safety delay to prevent 'accidents'." icon = 'icons/obj/assemblies.dmi' icon_state = "bigred" item_state = "electronic" w_class = WEIGHT_CLASS_TINY origin_tech = "syndicate=3" - var/cooldown = 0 + var/timer = 0 var/detonated = 0 var/existant = 0 -/obj/item/device/syndicatedetonator/attack_self(mob/user as mob) - if(!cooldown) +/obj/item/device/syndicatedetonator/attack_self(mob/user) + if(timer < world.time) for(var/obj/machinery/syndicatebomb/B in machines) if(B.active) - B.timer = 0 + B.detonation_timer = world.time + BUTTON_DELAY detonated++ existant++ playsound(user, 'sound/machines/click.ogg', 20, 1) @@ -334,5 +560,7 @@ log_game("[key_name(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name] ([T.x],[T.y],[T.z])") detonated = 0 existant = 0 - cooldown = 1 - spawn(30) cooldown = 0 + timer = world.time + BUTTON_COOLDOWN + +#undef BUTTON_COOLDOWN +#undef BUTTON_DELAY \ No newline at end of file diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index 7449f731f11..a519e8565ae 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - /* The broadcaster sends processed messages to all radio devices in the game. They do not have to be headsets; intercoms and station-bounced radios suffice. diff --git a/code/game/machinery/telecomms/logbrowser.dm b/code/game/machinery/telecomms/logbrowser.dm index 48d65eb051b..0430a69baef 100644 --- a/code/game/machinery/telecomms/logbrowser.dm +++ b/code/game/machinery/telecomms/logbrowser.dm @@ -1,4 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 /obj/machinery/computer/telecomms light_color = LIGHT_COLOR_DARKGREEN diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index d730ca57529..9ffc160f562 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -1,6 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - - /* All telecommunications interactions: diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index 953fdb68b8b..ca092ee73ee 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - /* Hello, friends, this is Doohl from sexylands. You may be wondering what this monstrous code file is. Sit down, boys and girls, while I tell you the tale. diff --git a/code/game/machinery/telecomms/telemonitor.dm b/code/game/machinery/telecomms/telemonitor.dm index 6b5201460e4..ffc431a81d2 100644 --- a/code/game/machinery/telecomms/telemonitor.dm +++ b/code/game/machinery/telecomms/telemonitor.dm @@ -1,6 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - - /* Telecomms monitor tracks the overall trafficing of a telecommunications network and displays a heirarchy of linked machines. diff --git a/code/game/machinery/telecomms/traffic_control.dm b/code/game/machinery/telecomms/traffic_control.dm index 2aa0c2a5d59..592815bbc24 100644 --- a/code/game/machinery/telecomms/traffic_control.dm +++ b/code/game/machinery/telecomms/traffic_control.dm @@ -192,7 +192,7 @@ add_fingerprint(user) user.set_machine(src) - if(!allowed(user) && !emagged) + if(!allowed(user) && !emagged && !user.can_admin_interact()) to_chat(user, "Access Denied.") return 0 diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index f9de8b8d596..caf6840ebc7 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -791,9 +791,9 @@ desc = "A self-serving Chinese food machine, for all your Chinese food needs." product_slogans = "Taste 5000 years of culture!" icon_state = "snack" - products = list(/obj/item/weapon/reagent_containers/food/snacks/chinese/chowmein = 6, /obj/item/weapon/reagent_containers/food/snacks/chinese/tao = 6, /obj/item/weapon/reagent_containers/food/snacks/chinese/newdles = 6, + products = list(/obj/item/weapon/reagent_containers/food/snacks/chinese/chowmein = 6, /obj/item/weapon/reagent_containers/food/snacks/chinese/tao = 6, /obj/item/weapon/reagent_containers/food/snacks/chinese/sweetsourchickenball = 6, /obj/item/weapon/reagent_containers/food/snacks/chinese/newdles = 6, /obj/item/weapon/reagent_containers/food/snacks/chinese/rice = 6) - prices = list(/obj/item/weapon/reagent_containers/food/snacks/chinese/chowmein = 50, /obj/item/weapon/reagent_containers/food/snacks/chinese/tao = 50, /obj/item/weapon/reagent_containers/food/snacks/chinese/newdles = 50, + prices = list(/obj/item/weapon/reagent_containers/food/snacks/chinese/chowmein = 50, /obj/item/weapon/reagent_containers/food/snacks/chinese/tao = 50, /obj/item/weapon/reagent_containers/food/snacks/chinese/sweetsourchickenball = 50, /obj/item/weapon/reagent_containers/food/snacks/chinese/newdles = 50, /obj/item/weapon/reagent_containers/food/snacks/chinese/rice = 50) refill_canister = /obj/item/weapon/vending_refill/chinese @@ -973,16 +973,16 @@ product_slogans = "THIS'S WHERE TH' SEEDS LIVE! GIT YOU SOME!;Hands down the best seed selection on the station!;Also certain mushroom varieties available, more for experts! Get certified today!" product_ads = "We like plants!;Grow some crops!;Grow, baby, growww!;Aw h'yeah son!" icon_state = "seeds" - products = list(/obj/item/seeds/aloe =3, /obj/item/seeds/ambrosia = 3,/obj/item/seeds/apple = 3,/obj/item/seeds/banana = 3,/obj/item/seeds/berry = 3, - /obj/item/seeds/cabbage = 3,/obj/item/seeds/carrot = 3,/obj/item/seeds/cherry = 3,/obj/item/seeds/chanter = 3, - /obj/item/seeds/chili = 3,/obj/item/seeds/cocoapod = 3,/obj/item/seeds/coffee = 3, /obj/item/seeds/comfrey =3, /obj/item/seeds/corn = 3, - /obj/item/seeds/nymph =3, /obj/item/seeds/eggplant = 3,/obj/item/seeds/grape = 3,/obj/item/seeds/grass = 3,/obj/item/seeds/lemon = 3, - /obj/item/seeds/lime = 3,/obj/item/seeds/orange = 3, /obj/item/seeds/peanuts = 3, /obj/item/seeds/potato = 3,/obj/item/seeds/poppy = 3, - /obj/item/seeds/pumpkin = 3,/obj/item/seeds/replicapod = 3,/obj/item/seeds/wheat/rice = 3,/obj/item/seeds/soya = 3,/obj/item/seeds/sunflower = 3, - /obj/item/seeds/tea = 3,/obj/item/seeds/tobacco = 3,/obj/item/seeds/tomato = 3, - /obj/item/seeds/tower = 3,/obj/item/seeds/watermelon = 3,/obj/item/seeds/wheat = 3,/obj/item/seeds/whitebeet = 3) - contraband = list(/obj/item/seeds/amanita = 2,/obj/item/seeds/glowshroom = 2,/obj/item/seeds/liberty = 2,/obj/item/seeds/nettle = 2, - /obj/item/seeds/plump = 2,/obj/item/seeds/reishi = 2,/obj/item/seeds/cannabis = 3, /obj/item/seeds/fungus = 3, /obj/item/seeds/random = 2) + products = list(/obj/item/seeds/aloe =3, /obj/item/seeds/ambrosia = 3, /obj/item/seeds/apple = 3, /obj/item/seeds/banana = 3, /obj/item/seeds/berry = 3, + /obj/item/seeds/cabbage = 3, /obj/item/seeds/carrot = 3, /obj/item/seeds/cherry = 3, /obj/item/seeds/chanter = 3, + /obj/item/seeds/chili = 3, /obj/item/seeds/cocoapod = 3, /obj/item/seeds/coffee = 3, /obj/item/seeds/comfrey =3, /obj/item/seeds/corn = 3, + /obj/item/seeds/nymph =3, /obj/item/seeds/eggplant = 3, /obj/item/seeds/grape = 3, /obj/item/seeds/grass = 3, /obj/item/seeds/lemon = 3, + /obj/item/seeds/lime = 3, /obj/item/seeds/onion = 3, /obj/item/seeds/orange = 3, /obj/item/seeds/peanuts = 3, /obj/item/seeds/potato = 3, /obj/item/seeds/poppy = 3, + /obj/item/seeds/pumpkin = 3, /obj/item/seeds/replicapod = 3, /obj/item/seeds/wheat/rice = 3, /obj/item/seeds/soya = 3, /obj/item/seeds/sunflower = 3, + /obj/item/seeds/tea = 3, /obj/item/seeds/tobacco = 3, /obj/item/seeds/tomato = 3, + /obj/item/seeds/tower = 3, /obj/item/seeds/watermelon = 3, /obj/item/seeds/wheat = 3, /obj/item/seeds/whitebeet = 3) + contraband = list(/obj/item/seeds/amanita = 2, /obj/item/seeds/glowshroom = 2, /obj/item/seeds/liberty = 2, /obj/item/seeds/nettle = 2, + /obj/item/seeds/plump = 2, /obj/item/seeds/reishi = 2, /obj/item/seeds/cannabis = 3, /obj/item/seeds/starthistle = 2, /obj/item/seeds/fungus = 3, /obj/item/seeds/random = 2) premium = list(/obj/item/weapon/reagent_containers/spray/waterflower = 1) /** @@ -1064,7 +1064,9 @@ /obj/item/clothing/shoes/singerb = 1,/obj/item/clothing/under/singerb = 1, /obj/item/clothing/suit/hooded/carp_costume = 1,/obj/item/clothing/suit/hooded/bee_costume = 1, /obj/item/clothing/suit/snowman = 1,/obj/item/clothing/head/snowman = 1, - /obj/item/clothing/head/cueball = 1,/obj/item/clothing/under/scratch = 1) + /obj/item/clothing/head/cueball = 1,/obj/item/clothing/under/scratch = 1, + /obj/item/clothing/under/victdress = 1, /obj/item/clothing/under/victdress/red = 1, /obj/item/clothing/suit/victcoat = 1, /obj/item/clothing/suit/victcoat/red = 1, + /obj/item/clothing/under/victsuit = 1, /obj/item/clothing/under/victsuit/redblk = 1, /obj/item/clothing/under/victsuit/red = 1, /obj/item/clothing/suit/tailcoat = 1) contraband = list(/obj/item/clothing/suit/judgerobe = 1,/obj/item/clothing/head/powdered_wig = 1,/obj/item/weapon/gun/magic/wand = 1, /obj/item/clothing/mask/balaclava=1, /obj/item/clothing/mask/horsehead = 2) premium = list(/obj/item/clothing/suit/hgpirate = 1, /obj/item/clothing/head/hgpiratecap = 1, /obj/item/clothing/head/helmet/roman = 1, /obj/item/clothing/head/helmet/roman/legionaire = 1, /obj/item/clothing/under/roman = 1, /obj/item/clothing/shoes/roman = 1, /obj/item/weapon/shield/riot/roman = 1) refill_canister = /obj/item/weapon/vending_refill/autodrobe @@ -1276,7 +1278,7 @@ /obj/item/weapon/c_tube = 10,/obj/item/weapon/pen = 5,/obj/item/weapon/pen/blue = 5, /obj/item/weapon/pen/red = 5) contraband = list(/obj/item/toy/crayon/mime = 1,/obj/item/toy/crayon/rainbow = 1) - premium = list(/obj/item/weapon/contraband/poster = 5) + premium = list(/obj/item/weapon/poster/random_contraband = 5) /obj/machinery/vending/crittercare name = "\improper CritterCare" diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index e27a97c796c..c73d72d0c2d 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -172,8 +172,7 @@ H.item_color = wash_color H.name = new_softcap_name H.desc = new_desc - qdel(crayon) - crayon = null + QDEL_NULL(crayon) if( locate(/mob,contents) ) diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 77bcc4c1966..ef4330800ed 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -348,7 +348,7 @@ if(heavy_missile) M.heavy_missile = 1 playsound(chassis, fire_sound, 50, 1) - M.throw_at(target, missile_range, missile_speed, chassis) + M.throw_at(target, missile_range, missile_speed) projectiles-- log_message("Fired from [name], targeting [target].") var/turf/T = get_turf(src) diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm index 24b6b1822d9..b3e42bb968e 100644 --- a/code/game/mecha/mech_bay.dm +++ b/code/game/mecha/mech_bay.dm @@ -33,6 +33,9 @@ component_parts += new /obj/item/weapon/stock_parts/capacitor(null) component_parts += new /obj/item/stack/cable_coil(null, 1) RefreshParts() + update_recharge_turf() + +/obj/machinery/mech_bay_recharge_port/proc/update_recharge_turf() recharging_turf = get_step(loc, dir) /obj/machinery/mech_bay_recharge_port/upgraded/New() @@ -46,7 +49,7 @@ component_parts += new /obj/item/weapon/stock_parts/capacitor/super(null) component_parts += new /obj/item/stack/cable_coil(null, 1) RefreshParts() - recharging_turf = get_step(loc, dir) + update_recharge_turf() /obj/machinery/mech_bay_recharge_port/RefreshParts() var/MC diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 8ff0d7cfcf4..3871517b366 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -5,6 +5,7 @@ var/buckle_lying = -1 //bed-like behaviour, forces mob.lying = buckle_lying if != -1 //except -1 actually means "rotate 90 degrees to the left" as it is used by 1*buckle_lying. var/buckle_requires_restraints = 0 //require people to be handcuffed before being able to buckle. eg: pipes var/mob/living/buckled_mob = null + var/buckle_offset = 0 //Interaction diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index adf46ef47e1..bb1ab0fd8dc 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -31,10 +31,13 @@ /obj/effect/anomaly/proc/anomalyNeutralize() - new /obj/effect/effect/bad_smoke(loc) + var/turf/T = get_turf(src) - for(var/atom/movable/O in src) - O.loc = src.loc + new /obj/effect/effect/bad_smoke(T) + + if(aSignal) + aSignal.forceMove(T) + aSignal = null qdel(src) diff --git a/code/game/objects/effects/decals/Cleanable/aliens.dm b/code/game/objects/effects/decals/Cleanable/aliens.dm index 57a32434af2..a3c2bc2c649 100644 --- a/code/game/objects/effects/decals/Cleanable/aliens.dm +++ b/code/game/objects/effects/decals/Cleanable/aliens.dm @@ -3,6 +3,8 @@ desc = "It's green and acidic. It looks like... blood?" icon = 'icons/effects/blood.dmi' basecolor = "#05EE05" + bloodiness = MAX_SHOE_BLOODINESS + blood_state = BLOOD_STATE_XENO /obj/effect/decal/cleanable/blood/gibs/xeno name = "xeno gibs" diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index 37063b8a90b..f17b5f6901a 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -15,9 +15,10 @@ var/global/list/image/splatter_cache=list() icon_state = "mfloor1" random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7") var/base_icon = 'icons/effects/blood.dmi' - var/list/viruses = list() blood_DNA = list() - var/basecolor="#A10808" // Color when wet. + var/blood_state = BLOOD_STATE_HUMAN + var/bloodiness = MAX_SHOE_BLOODINESS + var/basecolor = "#A10808" // Color when wet. var/amount = 5 appearance_flags = NO_CLIENT_COLOR var/dry_timer = 0 @@ -33,11 +34,11 @@ var/global/list/image/splatter_cache=list() mode_ticker.bloody_floors += T mode_ticker.bloody_floors[T] = T mode_ticker.blood_check() - if(istype(src, /obj/effect/decal/cleanable/blood/gibs)) + if(type == /obj/effect/decal/cleanable/blood/gibs) return - if(src.type == /obj/effect/decal/cleanable/blood) - if(src.loc && isturf(src.loc)) - for(var/obj/effect/decal/cleanable/blood/B in src.loc) + if(type == /obj/effect/decal/cleanable/blood) + if(loc && isturf(loc)) + for(var/obj/effect/decal/cleanable/blood/B in loc) if(B != src) if(B.blood_DNA) blood_DNA |= B.blood_DNA.Copy() @@ -59,44 +60,6 @@ var/global/list/image/splatter_cache=list() if(basecolor == "rainbow") basecolor = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" color = basecolor -/obj/effect/decal/cleanable/blood/Crossed(mob/living/carbon/human/perp) - if(!istype(perp)) - return - if(amount < 1) - return - - var/obj/item/organ/external/l_foot = perp.get_organ("l_foot") - var/obj/item/organ/external/r_foot = perp.get_organ("r_foot") - var/hasfeet = 1 - if((!l_foot || l_foot.status & ORGAN_DESTROYED) && (!r_foot || r_foot.status & ORGAN_DESTROYED)) - hasfeet = 0 - if(perp.shoes && !perp.buckled)//Adding blood to shoes - var/obj/item/clothing/shoes/S = perp.shoes - if(istype(S)) - S.blood_color = basecolor - S.track_blood = max(amount,S.track_blood) - if(!S.blood_overlay) - S.generate_blood_overlay() - if(!S.blood_DNA) - S.blood_DNA = list() - S.blood_overlay.color = basecolor - S.overlays += S.blood_overlay - if(S.blood_overlay && S.blood_overlay.color != basecolor) - S.blood_overlay.color = basecolor - S.overlays.Cut() - S.overlays += S.blood_overlay - S.blood_DNA |= blood_DNA.Copy() - - else if(hasfeet)//Or feet - perp.feet_blood_color = basecolor - perp.track_blood = max(amount,perp.track_blood) - if(!perp.feet_blood_DNA) - perp.feet_blood_DNA = list() - perp.feet_blood_DNA |= blood_DNA.Copy() - - perp.update_inv_shoes(1) - amount-- - /obj/effect/decal/cleanable/blood/proc/dry() name = dryname desc = drydesc @@ -123,6 +86,46 @@ var/global/list/image/splatter_cache=list() /obj/effect/decal/cleanable/blood/can_bloodcrawl_in() return TRUE +//Add "bloodiness" of this blood's type, to the human's shoes +/obj/effect/decal/cleanable/blood/Crossed(atom/movable/O) + if(ishuman(O)) + var/mob/living/carbon/human/H = O + var/obj/item/organ/external/l_foot = H.get_organ("l_foot") + var/obj/item/organ/external/r_foot = H.get_organ("r_foot") + var/hasfeet = 1 + if(!l_foot && !r_foot) + hasfeet = 0 + if(H.shoes && blood_state && bloodiness) + var/obj/item/clothing/shoes/S = H.shoes + var/add_blood = 0 + if(bloodiness >= BLOOD_GAIN_PER_STEP) + add_blood = BLOOD_GAIN_PER_STEP + else + add_blood = bloodiness + bloodiness -= add_blood + S.bloody_shoes[blood_state] = min(MAX_SHOE_BLOODINESS, S.bloody_shoes[blood_state] + add_blood) + if(blood_DNA && blood_DNA.len) + S.add_blood(H.blood_DNA, basecolor) + S.blood_state = blood_state + S.blood_color = basecolor + update_icon() + H.update_inv_shoes() + else if(hasfeet && blood_state && bloodiness)//Or feet + var/add_blood = 0 + if(bloodiness >= BLOOD_GAIN_PER_STEP) + add_blood = BLOOD_GAIN_PER_STEP + else + add_blood = bloodiness + bloodiness -= add_blood + H.bloody_feet[blood_state] = min(MAX_SHOE_BLOODINESS, H.bloody_feet[blood_state] + add_blood) + if(!H.feet_blood_DNA) + H.feet_blood_DNA = list() + H.blood_state = blood_state + H.feet_blood_DNA |= blood_DNA.Copy() + H.feet_blood_color = basecolor + update_icon() + H.update_inv_shoes() + /obj/effect/decal/cleanable/blood/splatter random_icon_states = list("mgibbl1", "mgibbl2", "mgibbl3", "mgibbl4", "mgibbl5") amount = 2 @@ -135,11 +138,26 @@ var/global/list/image/splatter_cache=list() icon_state = "1" random_icon_states = list("1","2","3","4","5") amount = 0 - var/list/drips = list() + var/drips = 1 + bloodiness = 0 -/obj/effect/decal/cleanable/blood/drip/New() - ..() - drips |= icon_state +/obj/effect/decal/cleanable/blood/drip/can_bloodcrawl_in() + return TRUE + +/obj/effect/decal/cleanable/trail_holder //not a child of blood on purpose + name = "blood" + icon_state = "ltrails_1" + desc = "Your instincts say you shouldn't be following these." + gender = PLURAL + density = 0 + layer = 2 + random_icon_states = null + var/list/existing_dirs = list() + blood_DNA = list() + appearance_flags = NO_CLIENT_COLOR + +/obj/effect/decal/cleanable/trail_holder/can_bloodcrawl_in() + return TRUE /obj/effect/decal/cleanable/blood/writing icon_state = "tracks" @@ -176,19 +194,16 @@ var/global/list/image/splatter_cache=list() noclear = 1 /obj/effect/decal/cleanable/blood/gibs/update_icon() - var/image/giblets = new(base_icon, "[icon_state]_flesh", dir) if(!fleshcolor || fleshcolor == "rainbow") fleshcolor = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" giblets.color = fleshcolor - var/icon/blood = new(base_icon,"[icon_state]",dir) - if(basecolor == "rainbow") basecolor = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" - blood.Blend(basecolor,ICON_MULTIPLY) icon = blood overlays.Cut() overlays += giblets + . = ..() /obj/effect/decal/cleanable/blood/gibs/up random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") @@ -223,21 +238,25 @@ var/global/list/image/splatter_cache=list() for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++) sleep(3) if(i > 0) - var/obj/effect/decal/cleanable/blood/b = new /obj/effect/decal/cleanable/blood/splatter(src.loc) + var/obj/effect/decal/cleanable/blood/b = new /obj/effect/decal/cleanable/blood/splatter(loc) b.basecolor = src.basecolor b.update_icon() - for(var/datum/disease/D in src.viruses) - var/datum/disease/ND = D.Copy(1) - b.viruses += ND - ND.holder = b if(step_to(src, get_step(src, direction), 0)) break /obj/effect/decal/cleanable/blood/old/New() ..() + bloodiness = 0 dry() +/obj/effect/decal/cleanable/blood/old/can_bloodcrawl_in() + return FALSE + /obj/effect/decal/cleanable/blood/gibs/old/New() ..() + bloodiness = 0 dry() + +/obj/effect/decal/cleanable/blood/gibs/old/can_bloodcrawl_in() + return FALSE diff --git a/code/game/objects/effects/decals/Cleanable/robots.dm b/code/game/objects/effects/decals/Cleanable/robots.dm index 5fc09b6ec34..dbebd72066d 100644 --- a/code/game/objects/effects/decals/Cleanable/robots.dm +++ b/code/game/objects/effects/decals/Cleanable/robots.dm @@ -5,13 +5,17 @@ icon_state = "gib1" basecolor="#030303" random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7") + bloodiness = MAX_SHOE_BLOODINESS + +/obj/effect/decal/cleanable/blood/gibs/robot/can_bloodcrawl_in() + return FALSE /obj/effect/decal/cleanable/blood/gibs/robot/update_icon() color = "#FFFFFF" /obj/effect/decal/cleanable/blood/gibs/robot/dry() //pieces of robots do not dry up like return - + /obj/effect/decal/cleanable/blood/gibs/robot/can_bloodcrawl_in() return FALSE @@ -44,6 +48,7 @@ name = "motor oil" desc = "It's black and greasy. Looks like Beepsky made another mess." basecolor="#030303" + bloodiness = MAX_SHOE_BLOODINESS /obj/effect/decal/cleanable/blood/oil/can_bloodcrawl_in() return FALSE diff --git a/code/game/objects/effects/decals/Cleanable/tracks.dm b/code/game/objects/effects/decals/Cleanable/tracks.dm index ad404ce28b3..0568f2db75c 100644 --- a/code/game/objects/effects/decals/Cleanable/tracks.dm +++ b/code/game/objects/effects/decals/Cleanable/tracks.dm @@ -1,165 +1,125 @@ -// Stolen en masse from N3X15 of /vg/station with much gratitude. - -// The idea is to have 4 bits for coming and 4 for going. -#define TRACKS_COMING_NORTH 1 -#define TRACKS_COMING_SOUTH 2 -#define TRACKS_COMING_EAST 4 -#define TRACKS_COMING_WEST 8 -#define TRACKS_GOING_NORTH 16 -#define TRACKS_GOING_SOUTH 32 -#define TRACKS_GOING_EAST 64 -#define TRACKS_GOING_WEST 128 - // 5 seconds #define TRACKS_CRUSTIFY_TIME 50 // color-dir-dry var/global/list/image/fluidtrack_cache=list() -/datum/fluidtrack - var/direction=0 - var/basecolor="#A10808" - var/wet=0 - var/fresh=1 - var/crusty=0 - var/image/overlay - - New(_direction,item_color,_wet) - src.direction=_direction - src.basecolor=item_color - src.wet=_wet - // Footprints, tire trails... /obj/effect/decal/cleanable/blood/tracks - amount = 0 - random_icon_states = null - var/dirs=0 icon = 'icons/effects/fluidtracks.dmi' - icon_state = "" - var/coming_state="blood1" - var/going_state="blood2" - var/updatedtracks=0 - - // dir = id in stack - var/list/setdirs=list( - "1"=0, - "2"=0, - "4"=0, - "8"=0, - "16"=0, - "32"=0, - "64"=0, - "128"=0 - ) - - // List of laid tracks and their colors. - var/list/datum/fluidtrack/stack=list() - - /** - * Add tracks to an existing trail. - * - * @param DNA bloodDNA to add to collection. - * @param comingdir Direction tracks come from, or 0. - * @param goingdir Direction tracks are going to (or 0). - * @param bloodcolor Color of the blood when wet. - */ - proc/AddTracks(var/list/DNA, var/comingdir, var/goingdir, var/bloodcolor="#A10808") - var/updated=0 - // Shift our goingdir 4 spaces to the left so it's in the GOING bitblock. - var/realgoing=goingdir<<4 - - // Current bit - var/b=0 - - // When tracks will start to dry out - var/t=world.time + TRACKS_CRUSTIFY_TIME - - var/datum/fluidtrack/track - - // Process 4 bits - for(var/bi=0;bi<4;bi++) - b = 1 << bi - // COMING BIT - // If setting - if(comingdir&b) - // If not wet or not set - if(dirs&b) - var/sid=setdirs["[b]"] - track=stack[sid] - if(track.wet==t && track.basecolor==bloodcolor) - continue - // Remove existing stack entry - stack.Remove(track) - track=new /datum/fluidtrack(b,bloodcolor,t) - stack.Add(track) - setdirs["[b]"]=stack.Find(track) - updatedtracks |= b - updated=1 - - // GOING BIT (shift up 4) - b=b<<4 - if(realgoing&b) - // If not wet or not set - if(dirs&b) - var/sid=setdirs["[b]"] - track=stack[sid] - if(track.wet==t && track.basecolor==bloodcolor) - continue - // Remove existing stack entry - stack.Remove(track) - track=new /datum/fluidtrack(b,bloodcolor,t) - stack.Add(track) - setdirs["[b]"]=stack.Find(track) - updatedtracks |= b - updated=1 - - dirs |= comingdir|realgoing - blood_DNA |= DNA.Copy() - if(updated) - update_icon() - - update_icon() - overlays.Cut() - color = "#FFFFFF" - var/truedir=0 - - // Update ONLY the overlays that have changed. - for(var/datum/fluidtrack/track in stack) - var/stack_idx=setdirs["[track.direction]"] - var/state=coming_state - truedir=track.direction - if(truedir&240) // Check if we're in the GOING block - state=going_state - truedir=truedir>>4 - - if(track.overlay) - track.overlay=null - var/image/I = image(icon, icon_state=state, dir=num2dir(truedir)) - I.color = track.basecolor - - track.fresh=0 - track.overlay=I - stack[stack_idx]=track - overlays += I - updatedtracks=0 // Clear our memory of updated tracks. - -/obj/effect/decal/cleanable/blood/tracks/footprints - name = "wet footprints" - dryname = "dried footprints" - desc = "Whoops..." - drydesc = "Whoops..." - coming_state = "human1" - going_state = "human2" - amount = 0 - -/obj/effect/decal/cleanable/blood/tracks/wheels name = "wet tracks" dryname = "dried tracks" desc = "Whoops..." drydesc = "Whoops..." - coming_state = "wheels1" - going_state = "wheels2" - desc = "They look like tracks left by wheels." + icon_state = "wheels1" gender = PLURAL random_icon_states = null - amount = 0 \ No newline at end of file + amount = 0 + +//BLOODY FOOTPRINTS +/obj/effect/decal/cleanable/blood/footprints + icon = 'icons/effects/fluidtracks.dmi' + icon_state = "nothingwhatsoever" + desc = "You REALLY shouldn't follow these.." + gender = PLURAL + random_icon_states = null + basecolor="#A10808" + var/entered_dirs = 0 + var/exited_dirs = 0 + blood_state = BLOOD_STATE_HUMAN //the icon state to load images from + + +/obj/effect/decal/cleanable/blood/footprints/Crossed(atom/movable/O) + if(ishuman(O)) + var/mob/living/carbon/human/H = O + var/obj/item/clothing/shoes/S = H.shoes + var/obj/item/organ/external/l_foot = H.get_organ("l_foot") + var/obj/item/organ/external/r_foot = H.get_organ("r_foot") + var/hasfeet = 1 + if(!l_foot && !r_foot) + hasfeet = 0 + if(S && S.bloody_shoes[blood_state] && S.blood_color == basecolor) + S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0) + entered_dirs |= H.dir + if(!S.blood_DNA) + S.blood_DNA = list() + S.blood_DNA |= blood_DNA.Copy() + else if(hasfeet && H.bloody_feet[blood_state] && H.feet_blood_color == basecolor)//Or feet //This will need to be changed. + H.bloody_feet[blood_state] = max(H.bloody_feet[blood_state] - BLOOD_LOSS_PER_STEP, 0) + entered_dirs |= H.dir + if(!H.feet_blood_DNA) + H.feet_blood_DNA = list() + H.feet_blood_DNA |= blood_DNA.Copy() + update_icon() + +/obj/effect/decal/cleanable/blood/footprints/Uncrossed(atom/movable/O) + if(ishuman(O)) + var/mob/living/carbon/human/H = O + var/obj/item/clothing/shoes/S = H.shoes + var/obj/item/organ/external/l_foot = H.get_organ("l_foot") + var/obj/item/organ/external/r_foot = H.get_organ("r_foot") + var/hasfeet = 1 + if(!l_foot && !r_foot) + hasfeet = 0 + if(S && S.bloody_shoes[blood_state] && S.blood_color == basecolor) + S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0) + exited_dirs |= H.dir + if(!S.blood_DNA) + S.blood_DNA = list() + S.blood_DNA |= blood_DNA.Copy() + else if(hasfeet && H.bloody_feet[blood_state] && H.feet_blood_color == basecolor)//Or feet + H.bloody_feet[blood_state] = max(H.bloody_feet[blood_state] - BLOOD_LOSS_PER_STEP, 0) + exited_dirs |= H.dir + if(!H.feet_blood_DNA) + H.feet_blood_DNA = list() + H.feet_blood_DNA |= blood_DNA.Copy() + update_icon() + + +/obj/effect/decal/cleanable/blood/footprints/update_icon() + overlays.Cut() + + for(var/Ddir in cardinal) + if(entered_dirs & Ddir) + var/image/I + if(fluidtrack_cache["entered-[blood_state]-[Ddir]"]) + I = fluidtrack_cache["entered-[blood_state]-[Ddir]"] + else + I = image(icon,"[blood_state]1",dir = Ddir) + fluidtrack_cache["entered-[blood_state]-[Ddir]"] = I + if(I) + I.color = basecolor + overlays += I + if(exited_dirs & Ddir) + var/image/I + if(fluidtrack_cache["exited-[blood_state]-[Ddir]"]) + I = fluidtrack_cache["exited-[blood_state]-[Ddir]"] + else + I = image(icon,"[blood_state]2",dir = Ddir) + fluidtrack_cache["exited-[blood_state]-[Ddir]"] = I + if(I) + I.color = basecolor + overlays += I + + alpha = BLOODY_FOOTPRINT_BASE_ALPHA+bloodiness + +/proc/createFootprintsFrom(atom/movable/A, dir, turf/T) + var/obj/effect/decal/cleanable/blood/footprints/FP = new /obj/effect/decal/cleanable/blood/footprints(T) + if(ishuman(A)) + var/mob/living/carbon/human/H = A + FP.blood_state = H.blood_state + FP.bloodiness = H.bloody_feet[H.blood_state] + FP.basecolor = H.feet_blood_color + if(H.blood_DNA) + FP.blood_DNA = H.blood_DNA.Copy() + else if(istype(A, /obj/item/clothing/shoes)) + var/obj/item/clothing/shoes/S = A + FP.blood_state = S.blood_state + FP.bloodiness = S.bloody_shoes[S.blood_state] + FP.basecolor = S.blood_color + if(S.blood_DNA) + FP.blood_DNA = S.blood_DNA.Copy() + FP.entered_dirs |= dir + FP.update_icon() + + return FP diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index cfde9ab55a4..7584196614f 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -1,4 +1,5 @@ /obj/effect/decal/cleanable + anchored = 1 var/list/random_icon_states = list() var/noscoop = 0 //if it has this, don't let it be scooped up var/noclear = 0 //if it has this, don't delete it when its' scooped up @@ -43,4 +44,4 @@ if(reagents) reagents.chem_temp += 30 reagents.handle_reactions() - ..() \ No newline at end of file + ..() diff --git a/code/game/objects/effects/decals/contraband.dm b/code/game/objects/effects/decals/contraband.dm index 1ab2cd985cf..d825a7a9146 100644 --- a/code/game/objects/effects/decals/contraband.dm +++ b/code/game/objects/effects/decals/contraband.dm @@ -1,335 +1,92 @@ -//########################## CONTRABAND ;3333333333333333333 -Agouri ################################################### +// This is synced up to the poster placing animation. +#define PLACE_SPEED 30 -#define NUM_OF_POSTER_DESIGNS 33 //subtype 0-contraband posters +// The poster item -#define NUM_OF_POSTER_DESIGNS_LEGIT 40 //subtype 1-corporate approved posters - -/obj/item/weapon/contraband - name = "contraband item" - desc = "You probably shouldn't be holding this." - icon = 'icons/obj/contraband.dmi' - force = 0 - - -/obj/item/weapon/contraband/poster +/obj/item/weapon/poster name = "rolled-up poster" desc = "The poster comes with its own automatic adhesive mechanism, for easy pinning to any vertical surface. Its vulgar themes have marked it as contraband aboard Nanotrasen space facilities." - icon_state = "rolled_poster" - var/serial_number = 0 - var/obj/structure/sign/poster/resulting_poster = null //The poster that will be created is initialised and stored through contraband/poster's constructor - var/subtype = 0 + icon = 'icons/obj/contraband.dmi' + force = 0 burn_state = FLAMMABLE + var/poster_type + var/obj/structure/sign/poster/poster_structure +/obj/item/weapon/poster/New(loc, obj/structure/sign/poster/new_poster_structure) + ..() + poster_structure = new_poster_structure + if(!new_poster_structure && poster_type) + poster_structure = new poster_type(src) -/obj/item/weapon/contraband/poster/New(turf/loc, given_serial = 0) - if(given_serial == 0) - if(subtype == 0) - serial_number = rand(1, NUM_OF_POSTER_DESIGNS) - resulting_poster = new(serial_number,subtype) - if(subtype == 1) - serial_number = rand(1, NUM_OF_POSTER_DESIGNS_LEGIT) - resulting_poster = new(serial_number,subtype) - else - serial_number = given_serial - //We don't give it a resulting_poster because if we called it with a given_serial it means that we're rerolling an already used poster. - name += " - No. [serial_number]" - ..(loc) + // posters store what name and description they would like their rolled up form to take. + if(poster_structure) + name = poster_structure.poster_item_name + desc = poster_structure.poster_item_desc + icon_state = poster_structure.poster_item_icon_state + name = "[name] - [poster_structure.original_name]" -/*/obj/item/weapon/contraband/poster/attack(mob/M as mob, mob/user as mob) - src.add_fingerprint(user) - if(resulting_poster) - resulting_poster.add_fingerprint(user) - ..()*/ +/obj/item/weapon/poster/Destroy() + poster_structure = null + . = ..() -/*/obj/item/weapon/contraband/poster/attack(atom/A, mob/user as mob) //This shit is handled through the wall's attackby() - if(istype(A, /turf/simulated/wall)) - if(resulting_poster == null) - return - else - var/turf/simulated/wall/W = A - var/check = 0 - var/stuff_on_wall = 0 - for(var/obj/O in W.contents) //Let's see if it already has a poster on it or too much stuff - if(istype(O,/obj/structure/sign/poster)) - check = 1 - break - stuff_on_wall++ - if(stuff_on_wall == 3) - check = 1 - break - - if(check) - to_chat(user, "The wall is far too cluttered to place a poster!") - return - - resulting_poster.loc = W //Looks like it's uncluttered enough. Place the poster - W.contents += resulting_poster - - qdel(src)*/ +// These icon_states may be overriden, but are for mapper's convinence +/obj/item/weapon/poster/random_contraband + name = "random contraband poster" + poster_type = /obj/structure/sign/poster/contraband/random + icon_state = "rolled_poster" +/obj/item/weapon/poster/random_official + name = "random official poster" + poster_type = /obj/structure/sign/poster/official/random + icon_state = "rolled_poster_legit" //############################## THE ACTUAL DECALS ########################### -obj/structure/sign/poster +/obj/structure/sign/poster name = "poster" desc = "A large piece of space-resistant printed paper." icon = 'icons/obj/contraband.dmi' - anchored = 1 - var/serial_number //Will hold the value of src.loc if nobody initialises it - var/ruined = 0 - var/subtype = 0 + anchored = TRUE + var/original_name + var/random_basetype + var/ruined = FALSE + var/never_random = FALSE // used for the 'random' subclasses. -obj/structure/sign/poster/legit // For mappers looking to pre-spawn NT approved posters. - subtype = 1 + var/poster_item_name = "hypothetical poster" + var/poster_item_desc = "This hypothetical poster item should not exist, let's be honest here." + var/poster_item_icon_state = "rolled_poster" -obj/structure/sign/poster/New(serial,var/subtypeIn = -1) - serial_number = serial - if(subtypeIn != -1) - subtype = subtypeIn - - if(serial_number == loc) - if(subtype == 0) - serial_number = rand(1, NUM_OF_POSTER_DESIGNS) //This is for the mappers that want individual posters without having to use rolled posters. - if(subtype == 1) - serial_number = rand(1, NUM_OF_POSTER_DESIGNS_LEGIT) - if(subtype == 0) - icon_state = "poster[serial_number]" - switch(serial_number) - if(1) - name += " - Free Tonto" - desc += " A framed shred of a much larger flag, colors bled together and faded from age." - if(2) - name += " - Atmosia Declaration of Independence" - desc += " A relic of a failed rebellion." - if(3) - name += " - Fun Police" - desc += " A poster condemning the station's security forces." - if(4) - name += " - Lusty Xeno" - desc += " A heretical poster depicting the titular star of an equally heretical book." - if(5) - name += " - Syndicate Recruitment Poster" - desc += " See the galaxy! Shatter corrupt megacorporations! Join today!" - if(6) - name += " - Clown" - desc += " Honk." - if(7) - name += " - Smoke" - desc += " A poster depicting a carton of cigarettes." - if(8) - name += " - Grey Tide" - desc += " A rebellious poster symbolizing assistant solidarity." - if(9) - name += " - Missing Gloves" - desc += " This poster is about the uproar that followed Nanotrasen's financial cuts towards insulated-glove purchases." - if(10) - name += " - Hacking Guide" - desc += " This poster details the internal workings of the common Nanotrasen airlock." - if(11) - name += " - RIP Badger" - desc += " This poster commemorates the day hundreds of badgers worldwide were sacrificed for the greater good." - if(12) - name += " - Ambrosia Vulgaris" - desc += " This poster is lookin' pretty trippy man." - if(13) - name += " - Donut Corp." - desc += " This poster is an advertisement for Donut Corp." - if(14) - name += " - EAT" - desc += " This poster is advising that you eat." - if(15) - name += " - Tools" - desc += " This poster is an advertisement for tools." - if(16) - name += " - Power" - desc += " A poster all about power." - if(17) - name += " - Power to the People" - desc += " Screw those EDF guys!" - if(18) - name += " - Communist state" - desc += " All hail the Communist party!" - if(19) - name += " - Lamarr" - desc += " This poster depicts Lamarr. Probably made by the Research Director." - if(20) - name += " - Borg Fancy" - desc += " Being fancy can be for any borg, just need a suit." - if(21) - name += " - Borg Fancy v2" - desc += " Borg Fancy, Now only taking the most fancy." - if(22) - name += " - Kosmicheskaya Stantsiya 13 Does Not Exist" - desc += " A poster denying the existence of the derelict station near [station_name()]." - if(23) - name += " - Rebels Unite!" - desc += " A poster telling the viewer to rebel against Nanotrasen." - if(24) - name += " - C-20r Advertisement" - desc += " A poster advertising the Scarborough Arms C-20r." - if(25) - name += " - Have A Puff" - desc += " Who cares about lung cancer when you're high as a kite?" - if(26) - name += " - Revolver Advertisement" - desc += " Because seven shots are all you need." - if(27) - name += " - D-Day Promotional Poster" - desc += " A promotional poster for some rapper." - if(28) - name += " - Syndicate Pistol Advertisement" - desc += " A poster advertising Syndicate pistols as being 'Classy as fuck'." - if(29) - name += " - E-sword Rainbow" - desc += " All the colors of bloody murder rainbow." - if(30) - name += " - Red Rum" - desc += " Looking at this poster makes you want to kill." - if(31) - name += " - CC 64K Advertisement" - desc += " The latest portable computer from Comrade Computing, with a whole 64kB of ram!" - if(32) - name += " - Punch Shit" - desc += " Fight things for no reason, like a man!" - if(33) - name += " - The Griffin" - desc += " The Griffin commands you to be the worst you can be. Will you?" - else - name += " - Error (subtype 0 serial_number)" - desc += " This is a bug, please report the circumstances under which you encountered this poster at https://github.com/ParadiseSS13/Paradise/issues." - - if(subtype == 1) - icon_state = "poster[serial_number]_legit" - switch(serial_number) - if(1) - name += " - Here for Your Safety" - desc += " A poster glorifying the station's security force." - if(2) - name += " - Nanotrasen Logo" - desc += " A poster depicting the logo of Nanotrasen." - if(3) - name += " - Cleanliness" - desc += " A poster warning of the dangers of poor hygiene." - if(4) - name += " - Help Others" - desc += " A poster encouraging you to help fellow crewmembers." - if(5) - name += " - Build" - desc += " A poster glorifying the engineering team." - if(6) - name += " - Bless This Spess" - desc += " A poster blessing this area." - if(7) - name += " - Science" - desc += " A poster depicting an atom." - if(8) - name += " - Ian" - desc += " Arf Arf." - if(9) - name += " - Obey" - desc += " A poster instructing the viewer to obey authority." - if(10) - name += " - Walk" - desc += " A poster instructing the viewer to walk instead of running." - if(11) - name += " - State Laws" - desc += " A poster instructing cyborgs to state their laws." - if(12) - name += " - Love Ian" - desc += " Ian is love, Ian is life." - if(13) - name += " - Space Cops" - desc += " A poster advertising the television show Space Cops." - if(14) - name += " - Ue No" - desc += " This thing is all in Japanese." - if(15) - name += " - Get Your LEGS" - desc += " LEGS: Leadership, Experience, Genius, S(Opportunity)." - if(16) - name += " - Do Not Question" - desc += " A poster instructing the viewer not to ask about things they aren't meant to know." - if(17) - name += " - Work for a Future" - desc += " A poster encouraging you to work for your future, what it is, no one is really sure." - if(18) - name += " - Soft Cap Pop Art" - desc += " A poster reprint of some cheap pop art." - if(19) - name += " - Safety: Internals" - desc += " A poster instructing the viewer to wear internals in environments where there is no oxygen or the air has been rendered toxic." - if(20) - name += " - Safety: Eye Protection" - desc += " A poster instructing the viewer to wear eye protection when dealing with chemicals, smoke, or bright lights." - if(21) - name += " - Safety: Report" - desc += " A poster instructing the viewer to report suspicious activity to the security force." - if(22) - name += " - Report Crimes" - desc += " Report crimes at: 1-800-FUCKING-TERRORISTS or at https://www.sectorthirteen.nt/malcontents." - if(23) - name += " - Ion Rifle" - desc += " A poster displaying an Ion Rifle." - if(24) - name += " - Foam Force Advertisement" - desc += " Foam Force, it's Foam or be Foamed!" - if(25) - name += " - Cohiba Robusto Advertisement" - desc += " Cohiba Robusto, the classy cigar." - if(26) - name += " - 50th Anniversary Vintage Reprint" - desc += " A reprint of a poster from 2504, commemorating the 50th Anniversary of Nanoposters Manufacturing, a subsidiary of Nanotrasen." - if(27) - name += " - Fruit Bowl" - desc += " Simple, yet awe inspiring." - if(28) - name += " - NanoPDA 1000 Advertisement" - desc += " A poster advertising the latest PDA from Nanotrasen." - if(29) - name += " - Enlist" - desc += " Enlist in the Nanotrasen ERT reserves today!" - if(30) - name += " - Nanomichi Advertisement" - desc += " A poster advertising Nanomichi brand audio cassettes." - if(31) - name += " - 12 Gauge" - desc += " A poster boasting about the superiority of 12-gauge shotgun shells." - if(32) - name += " - High-Class Martini" - desc += " I told you to shake it, no stirring." - if(33) - name += " - The Owl" - desc += " The Owl would do his best to protect the station. Will you?" - if(34) - name += " - Spider Risk" - desc += " A poster detailing what to do when giant spiders are seen." - if(35) - name += " - Kill Syndicate" - desc += " A poster demanding that all crew should be ready to fight the Syndicate." - if(36) - name += " - Information on Air" - desc += " A poster providing visual aid to remind crew of air canisters." - if(37) - name += " - Information on Air" - desc += " A poster providing visual aid to remind crew of air canisters." - if(38) - name += " - Dig for Glory!" - desc += " A poster providing trying to convince crew to mine for ore." - if(39) - name += " - Religious Poster" - desc += " A generic religious poser telling you to believe." - if(40) - name += " - Stay Healthy!" - desc += " A healthy crew is a happy crew!" - else - name += " - Error (subtype 1 serial_number)" - desc += " This is a bug, please report the circumstances under which you encountered this poster at https://github.com/ParadiseSS13/Paradise/issues." +/obj/structure/sign/poster/New() ..() + if(random_basetype) + randomise(random_basetype) + if(!ruined) + original_name = name + name = "poster - [name]" + desc = "A large piece of space-resistant printed paper. [desc]" -obj/structure/sign/poster/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/weapon/wirecutters)) +/obj/structure/sign/poster/proc/randomise(base_type) + var/list/poster_types = subtypesof(base_type) + var/list/approved_types = list() + for(var/t in poster_types) + var/obj/structure/sign/poster/T = t + if(initial(T.icon_state) && !initial(T.never_random)) + approved_types |= T + + var/obj/structure/sign/poster/selected = pick(approved_types) + + name = initial(selected.name) + desc = initial(selected.desc) + icon_state = initial(selected.icon_state) + poster_item_name = initial(selected.poster_item_name) + poster_item_desc = initial(selected.poster_item_desc) + poster_item_icon_state = initial(selected.poster_item_icon_state) + ruined = initial(selected.ruined) + +/obj/structure/sign/poster/attackby(obj/item/I, mob/user, params) + if(iswirecutter(I)) playsound(loc, I.usesound, 100, 1) if(ruined) to_chat(user, "You remove the remnants of the poster.") @@ -337,45 +94,33 @@ obj/structure/sign/poster/attackby(obj/item/I, mob/user, params) else to_chat(user, "You carefully remove the poster from the wall.") roll_and_drop(user.loc) - return - /obj/structure/sign/poster/attack_hand(mob/user) if(ruined) return - var/temp_loc = user.loc - switch(alert("Do I want to rip the poster from the wall?","You think...","Yes","No")) - if("Yes") - if( user.loc != temp_loc || ruined ) - return - visible_message("[user] rips [src] in a single, decisive motion!" ) - playsound(src.loc, 'sound/items/poster_ripped.ogg', 100, 1) - ruined = 1 - icon_state = "poster_ripped" - name = "ripped poster" - desc = "You can't make out anything from the poster's original print. It's ruined." - add_fingerprint(user) - if("No") - return + visible_message("[user] rips [src] in a single, decisive motion!" ) + playsound(src.loc, 'sound/items/poster_ripped.ogg', 100, 1) -/obj/structure/sign/poster/proc/roll_and_drop(turf/location) - var/obj/item/weapon/contraband/poster/P - if(subtype == 1) - P = new/obj/item/weapon/contraband/poster/legit/(src, serial_number) - else - P = new(src, serial_number) - P.resulting_poster = src - P.loc = location - loc = P + var/obj/structure/sign/poster/ripped/R = new(loc) + R.pixel_y = pixel_y + R.pixel_x = pixel_x + R.add_fingerprint(user) + qdel(src) +/obj/structure/sign/poster/proc/roll_and_drop(loc) + pixel_x = 0 + pixel_y = 0 + var/obj/item/weapon/poster/P = new(loc, src) + forceMove(P) + return P //seperated to reduce code duplication. Moved here for ease of reference and to unclutter r_wall/attackby() -/turf/simulated/wall/proc/place_poster(obj/item/weapon/contraband/poster/P, mob/user) - if(!P.resulting_poster) return - +/turf/simulated/wall/proc/place_poster(obj/item/weapon/poster/P, mob/user) + if(!P.poster_structure) + return var/stuff_on_wall = 0 - for(var/obj/O in user.loc.contents) //Let's see if it already has a poster on it or too much stuff - if(istype(O,/obj/structure/sign)) + for(var/obj/O in contents) //Let's see if it already has a poster on it or too much stuff + if(istype(O, /obj/structure/sign/poster)) to_chat(user, "The wall is far too cluttered to place a poster!") return stuff_on_wall++ @@ -385,9 +130,7 @@ obj/structure/sign/poster/attackby(obj/item/I, mob/user, params) to_chat(user, "You start placing the poster on the wall...")//Looks like it's uncluttered enough. Place the poster. - - //declaring D because otherwise if P gets 'deconstructed' we lose our reference to P.resulting_poster - var/obj/structure/sign/poster/D = P.resulting_poster + var/obj/structure/sign/poster/D = P.poster_structure var/temp_loc = user.loc @@ -408,24 +151,422 @@ obj/structure/sign/poster/attackby(obj/item/I, mob/user, params) to_chat(user, "You cannot reach the wall from here!") return - flick("poster_being_set",D) - D.loc = temp_loc - + flick("poster_being_set", D) + D.forceMove(temp_loc) qdel(P) //delete it now to cut down on sanity checks afterwards. Agouri's code supports rerolling it anyway playsound(D.loc, 'sound/items/poster_being_created.ogg', 100, 1) - sleep(17) - if(!D) return + if(do_after(user, PLACE_SPEED, target = src)) + if(!D || qdeleted(D)) + return - if(istype(src,/turf/simulated/wall) && user && user.loc == temp_loc) //Let's check if everything is still there - to_chat(user, "You place the poster!") - else - D.roll_and_drop(temp_loc) - return + if(iswallturf(src) && user && user.loc == temp_loc) //Let's check if everything is still there + to_chat(user, "You place the poster!") + return -//Putting non-contraband posters here because everything else here is related to posters anyway. -JS + to_chat(user, "The poster falls down!") + D.roll_and_drop(temp_loc) -/obj/item/weapon/contraband/poster/legit - desc = "The poster comes with its own automatic adhesive mechanism, for easy pinning to any vertical surface. It's contents go through Nanotrasen's strict content guidelines." - icon_state = "rolled_poster_legit" - subtype = 1 \ No newline at end of file + +////////////////////////////////POSTER VARIATIONS//////////////////////////////// + +/obj/structure/sign/poster/ripped + ruined = TRUE + icon_state = "poster_ripped" + name = "ripped poster" + desc = "You can't make out anything from the poster's original print. It's ruined." + +/obj/structure/sign/poster/random + name = "random poster" // could even be ripped + icon_state = "random_anything" + never_random = TRUE + random_basetype = /obj/structure/sign/poster + +/obj/structure/sign/poster/contraband + poster_item_name = "contraband poster" + poster_item_desc = "This poster comes with its own automatic adhesive mechanism, for easy pinning to any vertical surface. Its vulgar themes have marked it as contraband aboard Nanotrasen space facilities." + poster_item_icon_state = "rolled_poster" + +/obj/structure/sign/poster/contraband/random + name = "random contraband poster" + icon_state = "random_contraband" + never_random = TRUE + random_basetype = /obj/structure/sign/poster/contraband + +/obj/structure/sign/poster/contraband/free_tonto + name = "Free Tonto" + desc = "A salvaged shred of a much larger flag, colors bled together and faded from age." + icon_state = "poster1" + +/obj/structure/sign/poster/contraband/atmosia_independence + name = "Atmosia Declaration of Independence" + desc = "A relic of a failed rebellion." + icon_state = "poster2" + +/obj/structure/sign/poster/contraband/fun_police + name = "Fun Police" + desc = "A poster condemning the station's security forces." + icon_state = "poster3" + +/obj/structure/sign/poster/contraband/lusty_xenomorph + name = "Lusty Xenomorph" + desc = "A heretical poster depicting the titular star of an equally heretical book." + icon_state = "poster4" + +/obj/structure/sign/poster/contraband/syndicate_recruitment + name = "Syndicate Recruitment" + desc = "See the galaxy! Shatter corrupt megacorporations! Join today!" + icon_state = "poster5" + +/obj/structure/sign/poster/contraband/clown + name = "Clown" + desc = "Honk." + icon_state = "poster6" + +/obj/structure/sign/poster/contraband/smoke + name = "Smoke" + desc = "A poster advertising a rival corporate brand of cigarettes." + icon_state = "poster7" + +/obj/structure/sign/poster/contraband/grey_tide + name = "Grey Tide" + desc = "A rebellious poster symbolizing assistant solidarity." + icon_state = "poster8" + +/obj/structure/sign/poster/contraband/missing_gloves + name = "Missing Gloves" + desc = "This poster references the uproar that followed Nanotrasen's financial cuts toward insulated-glove purchases." + icon_state = "poster9" + +/obj/structure/sign/poster/contraband/hacking_guide + name = "Hacking Guide" + desc = "This poster details the internal workings of the common Nanotrasen airlock. Sadly, it appears out of date." + icon_state = "poster10" + +/obj/structure/sign/poster/contraband/rip_badger + name = "RIP Badger" + desc = "This seditious poster references Nanotrasen's genocide of a space station full of badgers." + icon_state = "poster11" + +/obj/structure/sign/poster/contraband/ambrosia_vulgaris + name = "Ambrosia Vulgaris" + desc = "This poster is lookin' pretty trippy man." + icon_state = "poster12" + +/obj/structure/sign/poster/contraband/donut_corp + name = "Donut Corp." + desc = "This poster is an unauthorized advertisement for Donut Corp." + icon_state = "poster13" + +/obj/structure/sign/poster/contraband/eat + name = "EAT." + desc = "This poster promotes rank gluttony." + icon_state = "poster14" + +/obj/structure/sign/poster/contraband/tools + name = "Tools" + desc = "This poster looks like an advertisement for tools, but is in fact a subliminal jab at the tools at CentComm." + icon_state = "poster15" + +/obj/structure/sign/poster/contraband/power + name = "Power" + desc = "A poster that positions the seat of power outside Nanotrasen." + icon_state = "poster16" + +/obj/structure/sign/poster/contraband/power_people + name = "Power to the people" + desc = "Screw those EDF guys!" + icon_state = "poster17" + +/obj/structure/sign/poster/contraband/communist_state + name = "Communist State" + desc = "All hail the Communist party!" + icon_state = "poster18" + +/obj/structure/sign/poster/contraband/lamarr + name = "Lamarr" + desc = "This poster depicts Lamarr. Probably made by a traitorous Research Director." + icon_state = "poster19" + +/obj/structure/sign/poster/contraband/borg_fancy_1 + name = "Borg Fancy" + desc = "Being fancy can be for any borg, just need a suit." + icon_state = "poster20" + +/obj/structure/sign/poster/contraband/borg_fancy_2 + name = "Borg Fancy v2" + desc = "Borg Fancy, Now only taking the most fancy." + icon_state = "poster21" + +/obj/structure/sign/poster/contraband/kss13 + name = "Kosmicheskaya Stantsiya 13 Does Not Exist" + desc = "A poster mocking CentComm's denial of the existence of the derelict station near Space Station 13." + icon_state = "poster22" + +/obj/structure/sign/poster/contraband/rebels_unite + name = "Rebels Unite" + desc = "A poster urging the viewer to rebel against Nanotrasen." + icon_state = "poster23" + +/obj/structure/sign/poster/contraband/c20r + name = "C-20r" + desc = "A poster advertising the Scarborough Arms C-20r." + icon_state = "poster24" + +/obj/structure/sign/poster/contraband/have_a_puff + name = "Have a Puff" + desc = "Who cares about lung cancer when you're high as a kite?" + icon_state = "poster25" + +/obj/structure/sign/poster/contraband/revolver + name = "Revolver" + desc = "Because seven shots are all you need." + icon_state = "poster26" + +/obj/structure/sign/poster/contraband/d_day_promo + name = "D-Day Promo" + desc = "A promotional poster for some rapper." + icon_state = "poster27" + +/obj/structure/sign/poster/contraband/syndicate_pistol + name = "Syndicate Pistol" + desc = "A poster advertising syndicate pistols as being 'classy as fuck'. It is covered in faded gang tags." + icon_state = "poster28" + +/obj/structure/sign/poster/contraband/energy_swords + name = "Energy Swords" + desc = "All the colors of the bloody murder rainbow." + icon_state = "poster29" + +/obj/structure/sign/poster/contraband/red_rum + name = "Red Rum" + desc = "Looking at this poster makes you want to kill." + icon_state = "poster30" + +/obj/structure/sign/poster/contraband/cc64k_ad + name = "CC 64K Ad" + desc = "The latest portable computer from Comrade Computing, with a whole 64kB of ram!" + icon_state = "poster31" + +/obj/structure/sign/poster/contraband/punch_shit + name = "Punch Shit" + desc = "Fight things for no reason, like a man!" + icon_state = "poster32" + +/obj/structure/sign/poster/contraband/the_griffin + name = "The Griffin" + desc = "The Griffin commands you to be the worst you can be. Will you?" + icon_state = "poster33" + +/obj/structure/sign/poster/official + poster_item_name = "motivational poster" + poster_item_desc = "An official Nanotrasen-issued poster to foster a compliant and obedient workforce. It comes with state-of-the-art adhesive backing, for easy pinning to any vertical surface." + poster_item_icon_state = "rolled_poster_legit" + +/obj/structure/sign/poster/official/random + name = "random official poster" + random_basetype = /obj/structure/sign/poster/official + icon_state = "random_official" + never_random = TRUE + +/obj/structure/sign/poster/official/here_for_your_safety + name = "Here For Your Safety" + desc = "A poster glorifying the station's security force." + icon_state = "poster1_legit" + +/obj/structure/sign/poster/official/nanotrasen_logo + name = "Nanotrasen Logo" + desc = "A poster depicting the Nanotrasen logo." + icon_state = "poster2_legit" + +/obj/structure/sign/poster/official/cleanliness + name = "Cleanliness" + desc = "A poster warning of the dangers of poor hygiene." + icon_state = "poster3_legit" + +/obj/structure/sign/poster/official/help_others + name = "Help Others" + desc = "A poster encouraging you to help fellow crewmembers." + icon_state = "poster4_legit" + +/obj/structure/sign/poster/official/build + name = "Build" + desc = "A poster glorifying the engineering team." + icon_state = "poster5_legit" + +/obj/structure/sign/poster/official/bless_this_spess + name = "Bless This Spess" + desc = "A poster blessing this area." + icon_state = "poster6_legit" + +/obj/structure/sign/poster/official/science + name = "Science" + desc = "A poster depicting an atom." + icon_state = "poster7_legit" + +/obj/structure/sign/poster/official/ian + name = "Ian" + desc = "Arf arf. Yap." + icon_state = "poster8_legit" + +/obj/structure/sign/poster/official/obey + name = "Obey" + desc = "A poster instructing the viewer to obey authority." + icon_state = "poster9_legit" + +/obj/structure/sign/poster/official/walk + name = "Walk" + desc = "A poster instructing the viewer to walk instead of running." + icon_state = "poster10_legit" + +/obj/structure/sign/poster/official/state_laws + name = "State Laws" + desc = "A poster instructing cyborgs to state their laws." + icon_state = "poster11_legit" + +/obj/structure/sign/poster/official/love_ian + name = "Love Ian" + desc = "Ian is love, Ian is life." + icon_state = "poster12_legit" + +/obj/structure/sign/poster/official/space_cops + name = "Space Cops." + desc = "A poster advertising the television show Space Cops." + icon_state = "poster13_legit" + +/obj/structure/sign/poster/official/ue_no + name = "Ue No." + desc = "This thing is all in Japanese." + icon_state = "poster14_legit" + +/obj/structure/sign/poster/official/get_your_legs + name = "Get Your LEGS" + desc = "LEGS: Leadership, Experience, Genius, Subordination." + icon_state = "poster15_legit" + +/obj/structure/sign/poster/official/do_not_question + name = "Do Not Question" + desc = "A poster instructing the viewer not to ask about things they aren't meant to know." + icon_state = "poster16_legit" + +/obj/structure/sign/poster/official/work_for_a_future + name = "Work For A Future" + desc = " A poster encouraging you to work for your future." + icon_state = "poster17_legit" + +/obj/structure/sign/poster/official/soft_cap_pop_art + name = "Soft Cap Pop Art" + desc = "A poster reprint of some cheap pop art." + icon_state = "poster18_legit" + +/obj/structure/sign/poster/official/safety_internals + name = "Safety: Internals" + desc = "A poster instructing the viewer to wear internals in the rare environments where there is no oxygen or the air has been rendered toxic." + icon_state = "poster19_legit" + +/obj/structure/sign/poster/official/safety_eye_protection + name = "Safety: Eye Protection" + desc = "A poster instructing the viewer to wear eye protection when dealing with chemicals, smoke, or bright lights." + icon_state = "poster20_legit" + +/obj/structure/sign/poster/official/safety_report + name = "Safety: Report" + desc = "A poster instructing the viewer to report suspicious activity to the security force." + icon_state = "poster21_legit" + +/obj/structure/sign/poster/official/report_crimes + name = "Report Crimes" + desc = "A poster encouraging the swift reporting of crime or seditious behavior to station security." + icon_state = "poster22_legit" + +/obj/structure/sign/poster/official/ion_rifle + name = "Ion Rifle" + desc = "A poster displaying an Ion Rifle." + icon_state = "poster23_legit" + +/obj/structure/sign/poster/official/foam_force_ad + name = "Foam Force Ad" + desc = "Foam Force, it's Foam or be Foamed!" + icon_state = "poster24_legit" + +/obj/structure/sign/poster/official/cohiba_robusto_ad + name = "Cohiba Robusto Ad" + desc = "Cohiba Robusto, the classy cigar." + icon_state = "poster25_legit" + +/obj/structure/sign/poster/official/anniversary_vintage_reprint + name = "50th Anniversary Vintage Reprint" + desc = "A reprint of a poster from 2505, commemorating the 50th Anniversery of Nanoposters Manufacturing, a subsidary of Nanotrasen." + icon_state = "poster26_legit" + +/obj/structure/sign/poster/official/fruit_bowl + name = "Fruit Bowl" + desc = " Simple, yet awe-inspiring." + icon_state = "poster27_legit" + +/obj/structure/sign/poster/official/pda_ad + name = "PDA Ad" + desc = "A poster advertising the latest PDA from Nanotrasen suppliers." + icon_state = "poster28_legit" + +/obj/structure/sign/poster/official/enlist + name = "Enlist" + desc = "Enlist in the Nanotrasen ERT reserves today!" + icon_state = "poster29_legit" + +/obj/structure/sign/poster/official/nanomichi_ad + name = "Nanomichi Ad" + desc = " A poster advertising Nanomichi brand audio cassettes." + icon_state = "poster30_legit" + +/obj/structure/sign/poster/official/twelve_gauge + name = "12 Gauge" + desc = "A poster boasting about the superiority of 12 gauge shotgun shells." + icon_state = "poster31_legit" + +/obj/structure/sign/poster/official/high_class_martini + name = "High-Class Martini" + desc = "I told you to shake it, no stirring." + icon_state = "poster32_legit" + +/obj/structure/sign/poster/official/the_owl + name = "The Owl" + desc = "The Owl would do his best to protect the station. Will you?" + icon_state = "poster33_legit" + +/obj/structure/sign/poster/official/spiders + name = "Spider Risk" + desc = "A poster detailing what to do when giant spiders are seen." + icon_state = "poster34_legit" + +/obj/structure/sign/poster/official/kill_syndicate + name = "Kill Syndicate" + desc = "A poster demanding that all crew should be ready to fight the Syndicate." + icon_state = "poster35_legit" + +/obj/structure/sign/poster/official/air1 + name = "Information on Air" + desc = "A poster providing visual aid to remind crew of air canisters." + icon_state = "poster36_legit" + +/obj/structure/sign/poster/official/air2 + name = "Information on Air" + desc = "A poster providing visual aid to remind crew of air canisters." + icon_state = "poster37_legit" + +/obj/structure/sign/poster/official/dig + name = "Dig for Glory!" + desc = "A poster trying to convince the crew to mine for ore." + icon_state = "poster38_legit" + +/obj/structure/sign/poster/official/religious + name = "Religious Poster" + desc = "A generic religious poster telling you to believe." + icon_state = "poster39_legit" + +/obj/structure/sign/poster/official/healthy + name = "Stay Healthy!" + desc = "A healthy crew is a happy crew!" + icon_state = "poster40_legit" + +#undef PLACE_SPEED diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 1cd105367ed..6cf11f4f3c8 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -440,8 +440,7 @@ steam.start() -- spawns the effect var/obj/chemholder Destroy() - qdel(chemholder) - chemholder = null + QDEL_NULL(chemholder) return ..() New() diff --git a/code/game/objects/effects/gibs.dm b/code/game/objects/effects/gibs.dm index 5c5005fb6fd..39cafaa51ed 100644 --- a/code/game/objects/effects/gibs.dm +++ b/code/game/objects/effects/gibs.dm @@ -1,29 +1,28 @@ -/proc/gibs(atom/location, var/list/viruses, var/datum/dna/MobDNA) //CARN MARKER - new /obj/effect/gibspawner/generic(get_turf(location),viruses,MobDNA) +/proc/gibs(atom/location, datum/dna/MobDNA) //CARN MARKER + new /obj/effect/gibspawner/generic(get_turf(location), MobDNA) -/proc/hgibs(atom/location, var/list/viruses, var/datum/dna/MobDNA) - new /obj/effect/gibspawner/human(get_turf(location),viruses,MobDNA) +/proc/hgibs(atom/location, datum/dna/MobDNA) + new /obj/effect/gibspawner/human(get_turf(location), MobDNA) -/proc/xgibs(atom/location, var/list/viruses) - new /obj/effect/gibspawner/xeno(get_turf(location),viruses) +/proc/xgibs(atom/location) + new /obj/effect/gibspawner/xeno(get_turf(location)) -/proc/robogibs(atom/location, var/list/viruses) - new /obj/effect/gibspawner/robot(get_turf(location),viruses) +/proc/robogibs(atom/location) + new /obj/effect/gibspawner/robot(get_turf(location)) /obj/effect/gibspawner var/sparks = 0 //whether sparks spread on Gib() - var/virusProb = 20 //the chance for viruses to spread on the gibs var/list/gibtypes = list() var/list/gibamounts = list() var/list/gibdirections = list() //of lists - New(location, var/list/viruses, var/datum/dna/MobDNA) + New(location, datum/dna/MobDNA) ..() if(istype(loc,/turf)) //basically if a badmin spawns it - Gib(loc,viruses,MobDNA) + Gib(loc, MobDNA) - proc/Gib(atom/location, var/list/viruses = list(), var/datum/dna/MobDNA = null) + proc/Gib(atom/location, datum/dna/MobDNA = null) if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len) to_chat(world, "Gib list length mismatch!") return diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index 17029920dd3..d386fe07d0b 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -26,7 +26,7 @@ /obj/effect/mine/proc/triggermine(mob/living/victim) if(triggered) return - visible_message("[victim] sets off \icon[src] [src]!") + visible_message("[victim] sets off [bicon(src)] [src]!") var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread s.set_up(3, 1, src) s.start() diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index 0bb6278c0bc..2dd8502d662 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -16,9 +16,9 @@ var/tmp/atom/BeamSource New() ..() - spawn(10) + spawn(10) qdel(src) - + /obj/effect/overlay/palmtree_r name = "Palm tree" icon = 'icons/misc/beach2.dmi' @@ -56,7 +56,7 @@ /obj/effect/overlay/temp/New() if(randomdir) dir = pick(cardinal) - + flick("[icon_state]", src) //Because we might be pulling it from a pool, flick whatever icon it uses so it starts at the start of the icon's animation. spawn(duration) @@ -81,7 +81,7 @@ /obj/effect/overlay/temp/guardian/phase/out icon_state = "phaseout" - + /obj/effect/overlay/temp/emp name = "emp sparks" icon = 'icons/effects/effects.dmi' @@ -92,7 +92,7 @@ icon_state = "emppulse" duration = 8 randomdir = 0 - + /obj/effect/overlay/temp/heal //color is white by default, set to whatever is needed name = "healing glow" icon = 'icons/effects/effects.dmi' @@ -112,7 +112,7 @@ icon_state = "kinetic_blast" layer = 4.1 duration = 4 - + /obj/effect/overlay/temp/explosion name = "explosion" icon = 'icons/effects/96x96.dmi' @@ -124,7 +124,7 @@ /obj/effect/overlay/temp/explosion/fast icon_state = "explosionfast" duration = 4 - + /obj/effect/overlay/temp/decoy desc = "It's a decoy!" duration = 15 @@ -150,14 +150,14 @@ /obj/effect/overlay/temp/cult/sparks randomdir = 1 name = "blood sparks" - icon_state = "bloodsparkles" - + icon_state = "bloodsparkles" + /obj/effect/overlay/temp/dir_setting randomdir = FALSE /obj/effect/overlay/temp/dir_setting/New(loc, set_dir) if(set_dir) - dir = set_dir + setDir(set_dir) ..() /obj/effect/overlay/temp/dir_setting/bloodsplatter @@ -165,9 +165,12 @@ duration = 5 randomdir = FALSE layer = MOB_LAYER - 0.1 + color = "#C80000" var/splatter_type = "splatter" -/obj/effect/overlay/temp/dir_setting/bloodsplatter/New(loc, set_dir) +/obj/effect/overlay/temp/dir_setting/bloodsplatter/New(loc, set_dir, blood_color) + if(blood_color) + color = blood_color if(set_dir in diagonals) icon_state = "[splatter_type][pick(1, 2, 6)]" else @@ -247,7 +250,7 @@ icon = 'icons/effects/effects.dmi' icon_state = "heal" duration = 15 - + /obj/effect/overlay/temp/heal/New(loc, colour) ..() pixel_x = rand(-12, 12) diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index ebfd177959e..47c654768d5 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -95,7 +95,7 @@ /obj/item/clothing/head/cone = 10, /obj/item/weapon/coin/silver = 10, /obj/item/weapon/coin/twoheaded = 10, - /obj/item/weapon/contraband/poster = 10, + /obj/item/weapon/poster/random_contraband = 10, /obj/item/weapon/crowbar = 10, /obj/item/weapon/crowbar/red = 10, /obj/item/weapon/extinguisher = 90, diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 4aea96c167b..86050343662 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -40,7 +40,11 @@ if(!silent) var/frequency = get_rand_frequency() - for(var/mob/M in player_list) + var/sound/explosion_sound = sound(get_sfx("explosion")) + var/sound/global_boom = sound('sound/effects/explosionfar.ogg') + + for(var/P in player_list) + var/mob/M = P // Double check for client if(M && M.client) var/turf/M_turf = get_turf(M) @@ -48,20 +52,10 @@ var/dist = get_dist(M_turf, epicenter) // If inside the blast radius + world.view - 2 if(dist <= round(max_range + world.view - 2, 1)) - M.playsound_local(epicenter, get_sfx("explosion"), 100, 1, frequency, falloff = 5) // get_sfx() is so that everyone gets the same sound + M.playsound_local(epicenter, null, 100, 1, frequency, falloff = 5, S = explosion_sound) // You hear a far explosion if you're outside the blast radius. Small bombs shouldn't be heard all over the station. - else if(dist <= far_dist) - var/far_volume = Clamp(far_dist, 30, 50) // Volume is based on explosion size and dist - far_volume += (dist <= far_dist * 0.5 ? 50 : 0) // add 50 volume if the mob is pretty close to the explosion - M.playsound_local(epicenter, 'sound/effects/explosionfar.ogg', far_volume, 1, frequency, falloff = 5) - - var/close = range(world.view+round(devastation_range,1), epicenter) - // to all distanced mobs play a different sound - for(var/mob/M in world) - if(M.z == epicenter.z && !(M in close)) - // check if the mob can hear - if(M.can_hear() && !istype(M.loc,/turf/space)) - M << 'sound/effects/explosionfar.ogg' + else if(M.can_hear() && !isspaceturf(M.loc)) + M << global_boom if(heavy_impact_range > 1) if(smoke) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 00eb1bd6884..a1a68ff5cf7 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -4,7 +4,6 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d name = "item" icon = 'icons/obj/items.dmi' var/discrete = 0 // used in item_attack.dm to make an item not show an attack message to viewers - var/no_embed = 0 // For use in item_attack.dm var/image/blood_overlay = null //this saves our blood splatter overlay, which will be processed not to go over the edges of the sprite var/blood_overlay_color = null var/item_state = null @@ -63,6 +62,17 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d var/mob/thrownby = null + //So items can have custom embedd values + //Because customisation is king + var/embed_chance = EMBED_CHANCE + var/embedded_fall_chance = EMBEDDED_ITEM_FALLOUT + var/embedded_pain_chance = EMBEDDED_PAIN_CHANCE + var/embedded_pain_multiplier = EMBEDDED_PAIN_MULTIPLIER //The coefficient of multiplication for the damage this item does while embedded (this*w_class) + var/embedded_fall_pain_multiplier = EMBEDDED_FALL_PAIN_MULTIPLIER //The coefficient of multiplication for the damage this item does when falling out of a limb (this*w_class) + var/embedded_impact_pain_multiplier = EMBEDDED_IMPACT_PAIN_MULTIPLIER //The coefficient of multiplication for the damage this item does when first embedded (this*w_class) + var/embedded_unsafe_removal_pain_multiplier = EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER //The coefficient of multiplication for the damage removing this without surgery causes (this*w_class) + var/embedded_unsafe_removal_time = EMBEDDED_UNSAFE_REMOVAL_TIME //A time in ticks, multiplied by the w_class. + var/toolspeed = 1 // If this item is a tool, the speed multiplier /* Species-specific sprites, concept stolen from Paradise//vg/. @@ -77,6 +87,15 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d var/sprite_sheets_obj = null //Used to override hardcoded clothing inventory object dmis in human clothing proc. var/list/species_fit = null //This object has a different appearance when worn by these species + var/trip_verb = TV_TRIP + var/trip_chance = 0 + + var/trip_stun = 0 + var/trip_weaken = 0 + var/trip_any = FALSE + var/trip_walksafe = TRUE + var/trip_tiles = 0 + /obj/item/New() ..() for(var/path in actions_types) @@ -464,51 +483,6 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d M.AdjustEyeBlurry(rand(3,4)) return -/obj/item/clean_blood() - . = ..() - if(blood_overlay) - overlays.Remove(blood_overlay) - if(istype(src, /obj/item/clothing/gloves)) - var/obj/item/clothing/gloves/G = src - G.transfer_blood = 0 - - -/obj/item/add_blood(mob/living/carbon/human/M as mob) - if(!..()) - return 0 - - if(istype(src, /obj/item/weapon/melee/energy)) - return - - //if we haven't made our blood_overlay already - if( !blood_overlay ) - generate_blood_overlay() - - //apply the blood-splatter overlay if it isn't already in there - if(!blood_DNA.len) - blood_overlay.color = blood_color - overlays += blood_overlay - - //if this blood isn't already in the list, add it - if(istype(M)) - if(blood_DNA[M.dna.unique_enzymes]) - return 0 //already bloodied with this blood. Cannot add more. - blood_DNA[M.dna.unique_enzymes] = M.dna.b_type - return 1 //we applied blood to the item - -/obj/item/proc/generate_blood_overlay() - if(blood_overlay) - return - - var/icon/I = new /icon(icon, icon_state) - I.Blend(new /icon('icons/effects/blood.dmi', rgb(255,255,255)),ICON_ADD) //fills the icon_state with white (except where it's transparent) - I.Blend(new /icon('icons/effects/blood.dmi', "itemblood"),ICON_MULTIPLY) //adds blood and the remaining white areas become transparant - - //not sure if this is worth it. It attaches the blood_overlay to every item of the same type if they don't have one already made. - for(var/obj/item/A in world) - if(A.type == type && !A.blood_overlay) - A.blood_overlay = image(I) - /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) @@ -558,3 +532,19 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d /obj/item/proc/is_crutch() //Does an item prop up a human mob and allow them to stand if they are missing a leg/foot? return 0 + +// Return true if you don't want regular throw handling +/obj/item/proc/override_throw(mob/user, atom/target) + return FALSE + +/obj/item/proc/is_equivalent(obj/item/I) + return I == src + +/obj/item/Crossed(atom/movable/AM) + if(prob(trip_chance) && ishuman(AM)) + var/mob/living/carbon/human/H = AM + on_trip(H) + +/obj/item/proc/on_trip(mob/living/carbon/human/H) + if(H.slip(src, trip_stun, trip_weaken, trip_tiles, trip_walksafe, trip_any, trip_verb)) + return TRUE diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index 4108fe85ddd..3ec3db0f168 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -89,51 +89,4 @@ // Make it possible to escape from bodybags in morgues and crematoriums if(loc && (isturf(loc) || istype(loc, /obj/structure/morgue) || istype(loc, /obj/structure/crematorium))) if(!open()) - to_chat(user, "It won't budge!") - -/obj/item/bodybag/cryobag - name = "stasis bag" - desc = "A folded, non-reusable bag designed for the preservation of an occupant's brain by stasis." - icon = 'icons/obj/cryobag.dmi' - icon_state = "bodybag_folded" - - attack_self(mob/user) - var/obj/structure/closet/body_bag/cryobag/R = new /obj/structure/closet/body_bag/cryobag(user.loc) - R.add_fingerprint(user) - qdel(src) - - - -/obj/structure/closet/body_bag/cryobag - name = "stasis bag" - desc = "A non-reusable plastic bag designed for the preservation of an occupant's brain by stasis." - icon = 'icons/obj/cryobag.dmi' - item_path = /obj/item/bodybag/cryobag - var/used = 0 - var/locked = 0 - req_access = list(access_medical) - - open() - . = ..() - if(used) - var/obj/item/O = new/obj/item(src.loc) - O.name = "used stasis bag" - O.icon = src.icon - O.icon_state = "bodybag_used" - O.desc = "Pretty useless now.." - qdel(src) - - MouseDrop(over_object, src_location, over_location) - if((over_object == usr && (in_range(src, usr) || usr.contents.Find(src)))) - if(!ishuman(usr)) return - to_chat(usr, "You can't fold that up anymore..") - ..() - - attackby(W as obj, mob/user as mob, params) - if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda)) - if(src.allowed(user)) - src.locked = !src.locked - to_chat(user, "The controls are now [src.locked ? "locked." : "unlocked."]") - else - to_chat(user, "Access denied.") - return + to_chat(user, "It won't budge!") \ No newline at end of file diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 63c00e1a5ad..295b133d92e 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -73,7 +73,7 @@ temp = pick(graffiti) else temp = href_list["type"] - if((usr.restrained() || usr.stat || usr.get_active_hand() != src)) + if((usr.restrained() || usr.stat || !usr.is_in_active_hand(src))) return drawtype = temp update_window(usr) @@ -147,6 +147,29 @@ colour = "#DA00FF" colourName = "purple" +/obj/item/toy/crayon/random/New() + icon_state = pick(list("crayonred", "crayonorange", "crayonyellow", "crayongreen", "crayonblue", "crayonpurple")) + switch(icon_state) + if("crayonred") + colour = "#DA0000" + colourName = "red" + if("crayonorange") + colour = "#FF9300" + colourName = "orange" + if("crayonyellow") + colour = "#FFF200" + colourName = "yellow" + if("crayongreen") + colour = "#A8E61D" + colourName = "green" + if("crayonblue") + colour = "#00B7EF" + colourName = "blue" + if("crayonpurple") + colour = "#DA00FF" + colourName = "purple" + ..() + /obj/item/toy/crayon/white icon_state = "crayonwhite" colour = "#FFFFFF" @@ -167,7 +190,7 @@ ..() /obj/item/toy/crayon/mime/Topic(href,href_list) - if((usr.restrained() || usr.stat || usr.get_active_hand() != src)) + if(!Adjacent(usr) || usr.incapacitated()) return if(href_list["color"]) if(colour != "#FFFFFF") @@ -192,11 +215,10 @@ ..() /obj/item/toy/crayon/rainbow/Topic(href,href_list[]) - + if(!Adjacent(usr) || usr.incapacitated()) + return if(href_list["color"]) var/temp = input(usr, "Please select colour.", "Crayon colour") as color - if((usr.restrained() || usr.stat || usr.get_active_hand() != src)) - return colour = temp update_window(usr) else diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index ff7eb0ac2cc..eef0b2072b8 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -43,8 +43,7 @@ if(active_dummy) eject_all() playsound(get_turf(src), 'sound/effects/pop.ogg', 100, 1, -6) - qdel(active_dummy) - active_dummy = null + QDEL_NULL(active_dummy) to_chat(usr, "You deactivate \the [src].") var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src)) T.icon = 'icons/effects/effects.dmi' diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index e309cae9bbe..1a1ed2b4c5e 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -39,6 +39,11 @@ overcharged = 1 overlays += "overcharge" +/obj/item/device/flash/random/New() + ..() + if(prob(25)) + broken = 1 + icon_state = "[initial(icon_state)]burnt" /obj/item/device/flash/proc/burn_out() //Made so you can override it if you want to have an invincible flash from R&D or something. broken = 1 @@ -196,4 +201,37 @@ icon_state = "memorizer" item_state = "nullrod" +/obj/item/device/flash/armimplant + name = "photon projector" + desc = "A high-powered photon projector implant normally used for lighting purposes, but also doubles as a flashbulb weapon. Self-repair protocals fix the flashbulb if it ever burns out." + var/flashcd = 20 + var/overheat = 0 + var/obj/item/organ/internal/cyberimp/arm/flash/I = null + +/obj/item/device/flash/armimplant/Destroy() + I = null + return ..() + +/obj/item/device/flash/armimplant/burn_out() + if(I && I.owner) + to_chat(I.owner, "Your photon projector implant overheats and deactivates!") + I.Retract() + overheat = FALSE + addtimer(src, "cooldown", flashcd * 2) + +/obj/item/device/flash/armimplant/try_use_flash(mob/user = null) + if(overheat) + if(I && I.owner) + to_chat(I.owner, "Your photon projector is running too hot to be used again so quickly!") + return FALSE + overheat = TRUE + addtimer(src, "cooldown", flashcd) + playsound(src.loc, 'sound/weapons/flash.ogg', 100, 1) + update_icon(1) + return TRUE + +/obj/item/device/flash/armimplant/proc/cooldown() + overheat = FALSE + + /obj/item/device/flash/synthetic //just a regular flash now diff --git a/code/game/objects/items/devices/guitar.dm b/code/game/objects/items/devices/guitar.dm deleted file mode 100644 index 6c0e4645cc9..00000000000 --- a/code/game/objects/items/devices/guitar.dm +++ /dev/null @@ -1,45 +0,0 @@ -//copy pasta of the space piano, don't hurt me -Pete - -/obj/item/device/guitar - name = "guitar" - desc = "It's made of wood and has bronze strings." - icon = 'icons/obj/musician.dmi' - icon_state = "guitar" - item_state = "guitar" - force = 10 - burn_state = FLAMMABLE - burntime = 20 - var/datum/song/handheld/song - hitsound = 'sound/effects/guitarsmash.ogg' - -/obj/item/device/guitar/New() - song = new("guitar", src) - song.instrumentExt = "ogg" - -/obj/item/device/guitar/Destroy() - QDEL_NULL(song) - return ..() - -/obj/item/device/guitar/attack_self(mob/user as mob) - ui_interact(user) - -/obj/item/device/guitar/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) - if(!isliving(user) || user.incapacitated()) - return - - song.ui_interact(user, ui_key, ui, force_open) - -/obj/item/device/guitar/ui_data(mob/user, ui_key = "main", datum/topic_state/state = default_state) - return song.ui_data(user, ui_key, state) - -/obj/item/device/guitar/Topic(href, href_list) - song.Topic(href, href_list) - -/datum/crafting_recipe/guitar - name = "Guitar" - result = /obj/item/device/guitar - reqs = list(/obj/item/stack/sheet/wood = 5, - /obj/item/stack/cable_coil = 6, - /obj/item/stack/tape_roll = 5) - tools = list(/obj/item/weapon/screwdriver, /obj/item/weapon/wirecutters) - time = 80 diff --git a/code/game/objects/items/devices/instruments.dm b/code/game/objects/items/devices/instruments.dm new file mode 100644 index 00000000000..3643b197d4c --- /dev/null +++ b/code/game/objects/items/devices/instruments.dm @@ -0,0 +1,103 @@ +//copy pasta of the space piano, don't hurt me -Pete +/obj/item/device/instrument + name = "generic instrument" + icon = 'icons/obj/musician.dmi' + burn_state = FLAMMABLE + var/datum/song/handheld/song + var/instrumentId = "generic" + var/instrumentExt = "ogg" + +/obj/item/device/instrument/New() + song = new(instrumentId, src) + song.instrumentExt = instrumentExt + ..() + +/obj/item/device/instrument/Destroy() + QDEL_NULL(song) + return ..() + +/obj/item/device/instrument/suicide_act(mob/user) + user.visible_message("[user] begins to play 'Gloomy Sunday'! It looks like \he's trying to commit suicide!") + return (BRUTELOSS) + +/obj/item/device/instrument/initialize(mapload) + song.tempo = song.sanitize_tempo(song.tempo) // tick_lag isn't set when the map is loaded + ..() + +/obj/item/device/instrument/attack_self(mob/user) + ui_interact(user) + +/obj/item/device/instrument/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1) + if(!isliving(user) || user.incapacitated()) + return + + song.ui_interact(user, ui_key, ui, force_open) + +/obj/item/device/instrument/ui_data(mob/user, ui_key = "main", datum/topic_state/state = default_state) + return song.ui_data(user, ui_key, state) + +/obj/item/device/instrument/Topic(href, href_list) + song.Topic(href, href_list) + +/obj/item/device/instrument/violin + name = "space violin" + desc = "A wooden musical instrument with four strings and a bow. \"The devil went down to space, he was looking for an assistant to grief.\"" + icon_state = "violin" + item_state = "violin" + force = 10 + hitsound = "swing_hit" + instrumentId = "violin" + +/obj/item/device/instrument/violin/golden + name = "golden violin" + desc = "A golden musical instrument with four strings and a bow. \"The devil went down to space, he was looking for an assistant to grief.\"" + icon_state = "golden_violin" + item_state = "golden_violin" + burn_state = LAVA_PROOF + +/obj/item/device/instrument/guitar + name = "guitar" + desc = "It's made of wood and has bronze strings." + icon_state = "guitar" + item_state = "guitar" + force = 10 + attack_verb = list("played metal on", "serenaded", "crashed", "smashed") + hitsound = 'sound/effects/guitarsmash.ogg' + instrumentId = "guitar" + +/obj/item/device/instrument/eguitar + name = "electric guitar" + desc = "Makes all your shredding needs possible." + icon_state = "eguitar" + item_state = "eguitar" + force = 12 + attack_verb = list("played metal on", "shredded", "crashed", "smashed") + hitsound = 'sound/weapons/stringsmash.ogg' + instrumentId = "eguitar" + +/datum/crafting_recipe/violin + name = "Violin" + result = /obj/item/device/instrument/violin + reqs = list(/obj/item/stack/sheet/wood = 5, + /obj/item/stack/cable_coil = 6, + /obj/item/stack/tape_roll = 5) + tools = list(/obj/item/weapon/screwdriver, /obj/item/weapon/wirecutters) + time = 80 + +/datum/crafting_recipe/guitar + name = "Guitar" + result = /obj/item/device/instrument/guitar + reqs = list(/obj/item/stack/sheet/wood = 5, + /obj/item/stack/cable_coil = 6, + /obj/item/stack/tape_roll = 5) + tools = list(/obj/item/weapon/screwdriver, /obj/item/weapon/wirecutters) + time = 80 + +/datum/crafting_recipe/eguitar + name = "Electric Guitar" + result = /obj/item/device/instrument/eguitar + reqs = list(/obj/item/stack/sheet/metal = 5, + /obj/item/stack/cable_coil = 6, + /obj/item/stack/tape_roll = 5) + tools = list(/obj/item/weapon/screwdriver, /obj/item/weapon/wirecutters) + time = 80 \ No newline at end of file diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index c8294590e3c..122bd3a9bae 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -81,7 +81,7 @@ return if(ishuman(user)) var/mob/living/carbon/human/H = user - if((HULK in H.mutations) || (H.species.flags & NOGUNS)) + if((HULK in H.mutations) || (NOGUNS in H.species.species_traits)) user << "Your fingers can't press the button!" return diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 99096ac2649..3d1f1001b06 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -37,6 +37,7 @@ var/global/list/default_medbay_channels = list( var/list/channels = list() //see communications.dm for full list. First channes is a "default" for :h var/subspace_transmission = 0 var/syndie = 0//Holder to see if it's a syndicate encrpyed radio + var/disable_timer = 0 //How many times this is disabled by EMPs var/is_special = 0 //For electropacks mostly, skips Topic() checks @@ -246,6 +247,13 @@ var/global/list/default_medbay_channels = list( A.name = from A.role = role A.message = message + var/jammed = FALSE + for(var/obj/item/device/jammer/jammer in active_jammers) + if(get_dist(get_turf(src), get_turf(jammer)) < jammer.range) + jammed = TRUE + break + if(jammed) + message = Gibberish(message, 100) Broadcast_Message(connection, A, 0, "*garbled automated announcement*", src, message, from, "Automated Announcement", from, "synthesized voice", @@ -331,6 +339,12 @@ var/global/list/default_medbay_channels = list( var/datum/radio_frequency/connection = message_mode var/turf/position = get_turf(src) + var/jammed = FALSE + for(var/obj/item/device/jammer/jammer in active_jammers) + if(get_dist(position, get_turf(jammer)) < jammer.range) + jammed = TRUE + break + //#### Tagging the signal with all appropriate identity values ####// // ||-- The mob's name identity --|| @@ -344,6 +358,9 @@ var/global/list/default_medbay_channels = list( var/jobname // the mob's "job" + if(jammed) + message = Gibberish(message, 100) + // --- Human: use their actual job --- if(ishuman(M)) var/mob/living/carbon/human/H = M @@ -599,12 +616,25 @@ var/global/list/default_medbay_channels = list( else return /obj/item/device/radio/emp_act(severity) + on = 0 + disable_timer++ + addtimer(src, "enable_radio", rand(100, 200)) + + if(listening) + visible_message("[src] buzzes violently!") + broadcasting = 0 listening = 0 for(var/ch_name in channels) channels[ch_name] = 0 ..() +/obj/item/device/radio/proc/enable_radio() + if(disable_timer > 0) + disable_timer-- + if(!disable_timer) + on = 1 + /////////////////////////////// //////////Borg Radios////////// /////////////////////////////// diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index e31c49f9392..88aa19bfef8 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -14,6 +14,7 @@ REAGENT SCANNER icon_state = "t-ray0" var/on = 0 slot_flags = SLOT_BELT + w_class = 2 w_class = WEIGHT_CLASS_SMALL item_state = "electronic" materials = list(MAT_METAL=150) @@ -96,7 +97,7 @@ REAGENT SCANNER if(H.reagents.reagent_list.len) user.show_message("Subject contains the following reagents:") for(var/datum/reagent/R in H.reagents.reagent_list) - user.show_message("[R.volume]u of [R.name][R.overdosed == 1 ? " - OVERDOSING" : ".
    "]") + user.show_message("[R.volume]u of [R.name][R.overdosed ? " - OVERDOSING" : ".
    "]") else user.show_message("Subject contains no reagents.") if(H.reagents.addiction_list.len) @@ -164,15 +165,9 @@ REAGENT SCANNER var/mob/living/carbon/human/H = M var/list/damaged = H.get_damaged_organs(1,1) user.show_message("Localized Damage, Brute/Burn:",1) - if(length(damaged)>0) + if(length(damaged) > 0) for(var/obj/item/organ/external/org in damaged) - user.show_message(text("\t []: [][] - []", \ - capitalize(org.name), \ - (org.brute_dam > 0) ? "[org.brute_dam]" :0, \ - (org.status & ORGAN_BLEEDING)?"\[Bleeding\]":"\t", \ - (org.burn_dam > 0) ? "[org.burn_dam]" :0),1) - else - user.show_message("\t Limbs are OK.",1) + user.show_message("\t\t[capitalize(org.name)]: [(org.brute_dam > 0) ? "[org.brute_dam]" : "0"]-[(org.burn_dam > 0) ? "[org.burn_dam]" : "0"]") OX = M.getOxyLoss() > 50 ? "Severe oxygen deprivation detected" : "Subject bloodstream oxygen level normal" TX = M.getToxLoss() > 50 ? "Dangerous amount of toxins detected" : "Subject bloodstream toxin level minimal" @@ -184,9 +179,10 @@ REAGENT SCANNER if(istype(M, /mob/living/carbon)) if(upgraded) chemscan(user, M) - for(var/datum/disease/D in M.viruses) + for(var/thing in M.viruses) + var/datum/disease/D = thing if(!(D.visibility_flags & HIDDEN_SCANNER)) - to_chat(user, "Warning: [D.form] detected\nName: [D.name].\nType: [D.spread_text].\nStage: [D.stage]/[D.max_stages].\nPossible Cure: [D.cure_text]") + user.show_message("Warning: [D.form] detected\nName: [D.name].\nType: [D.spread_text].\nStage: [D.stage]/[D.max_stages].\nPossible Cure: [D.cure_text]") if(M.getStaminaLoss()) user.show_message("Subject appears to be suffering from fatigue.") if(M.getCloneLoss()) @@ -220,23 +216,28 @@ REAGENT SCANNER user.show_message(text("Bone fractures detected. Advanced scanner required for location."), 1) break for(var/obj/item/organ/external/e in H.bodyparts) - for(var/datum/wound/W in e.wounds) if(W.internal) + if(e.internal_bleeding) user.show_message(text("Internal bleeding detected. Advanced scanner required for location."), 1) break - if(H.vessel) - var/blood_type = H.get_blood_name() - var/blood_volume = round(H.vessel.get_reagent_amount(blood_type)) - var/blood_percent = blood_volume / BLOOD_VOLUME_NORMAL - blood_percent *= 100 - if(blood_volume <= 500) - user.show_message("Warning: Blood Level LOW: [blood_percent]% [blood_volume]cl") - else if(blood_volume <= 336) - user.show_message("Warning: Blood Level CRITICAL: [blood_percent]% [blood_volume]cl") + var/blood_id = H.get_blood_id() + if(blood_id) + if(H.bleed_rate) + user.show_message("Subject is bleeding!") + var/blood_percent = round((H.blood_volume / BLOOD_VOLUME_NORMAL)*100) + var/blood_type = H.b_type + if(blood_id != "blood")//special blood substance + var/datum/reagent/R = chemical_reagents_list[blood_id] + if(R) + blood_type = R.name + else + blood_type = blood_id + if(H.blood_volume <= BLOOD_VOLUME_SAFE && H.blood_volume > BLOOD_VOLUME_OKAY) + user.show_message("LOW blood level [blood_percent] %, [H.blood_volume] cl, type: [blood_type]") + else if(H.blood_volume <= BLOOD_VOLUME_OKAY) + user.show_message("CRITICAL blood level [blood_percent] %, [H.blood_volume] cl, type: [blood_type]") else - user.show_message("Blood Level Normal: [blood_percent]% [blood_volume]cl") - if(H.species.exotic_blood) - user.show_message("Subject possesses exotic blood.") - user.show_message("Exotic blood type: [blood_type].") + user.show_message("Blood level [blood_percent] %, [H.blood_volume] cl, type: [blood_type]") + if(H.undergoing_cardiac_arrest() && H.stat != DEAD) user.show_message("Subject suffering from heart attack: Apply defibrillator immediately.") user.show_message("Subject's pulse: [H.get_pulse(GETPULSE_TOOL)] bpm.") diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 5f140f05d03..6b48dea1910 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -146,3 +146,22 @@ effective or pretty fucking useless. attack_self(usr) add_fingerprint(usr) return + +/obj/item/device/jammer + name = "radio jammer" + desc = "Device used to disrupt nearby radio communication." + icon_state = "jammer" + var/active = FALSE + var/range = 12 + +/obj/item/device/jammer/Destroy() + active_jammers -= src + return ..() + +/obj/item/device/jammer/attack_self(mob/user) + to_chat(user,"You [active ? "deactivate" : "activate"] the [src].") + active = !active + if(active) + active_jammers |= src + else + active_jammers -= src \ No newline at end of file diff --git a/code/game/objects/items/devices/violin.dm b/code/game/objects/items/devices/violin.dm deleted file mode 100644 index 3ef6b2bef85..00000000000 --- a/code/game/objects/items/devices/violin.dm +++ /dev/null @@ -1,41 +0,0 @@ -//copy pasta of the space piano, don't hurt me -Pete - -/obj/item/device/violin - name = "space violin" - desc = "A wooden musical instrument with four strings and a bow. \"The devil went down to space, he was looking for an assistant to grief.\"" - icon = 'icons/obj/musician.dmi' - icon_state = "violin" - item_state = "violin" - attack_verb = list("strung", "fiddled", "tuned", "pitched") - force = 10 - burn_state = FLAMMABLE - burntime = 20 - hitsound = 'sound/weapons/smash.ogg' - var/datum/song/handheld/song - -/obj/item/device/violin/New() - song = new("violin", src) - song.instrumentExt = "ogg" - -/obj/item/device/violin/Destroy() - QDEL_NULL(song) - return ..() - -/obj/item/device/violin/initialize() - song.tempo = song.sanitize_tempo(song.tempo) // tick_lag isn't set when the map is loaded - ..() - -/obj/item/device/violin/attack_self(mob/user as mob) - ui_interact(user) - -/obj/item/device/violin/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) - if(!isliving(user) || user.incapacitated()) - return - - song.ui_interact(user, ui_key, ui, force_open) - -/obj/item/device/violin/ui_data(mob/user, ui_key = "main", datum/topic_state/state = default_state) - return song.ui_data(user, ui_key, state) - -/obj/item/device/violin/Topic(href, href_list) - song.Topic(href, href_list) diff --git a/code/game/objects/items/latexballoon.dm b/code/game/objects/items/latexballoon.dm index 5f55a5acdcc..dccc8f041f6 100644 --- a/code/game/objects/items/latexballoon.dm +++ b/code/game/objects/items/latexballoon.dm @@ -59,5 +59,5 @@ var/obj/item/weapon/tank/T = W blow(T, user) return - if(is_sharp(W) || is_hot(W) || can_puncture(W)) + if(is_sharp(W) || is_hot(W) || is_pointed(W)) burst() diff --git a/code/game/objects/items/policetape.dm b/code/game/objects/items/policetape.dm index 56fd5eadbad..bea99b5d98b 100644 --- a/code/game/objects/items/policetape.dm +++ b/code/game/objects/items/policetape.dm @@ -174,7 +174,7 @@ var/list/tape_roll_applications = list() breaktape(/obj/item/weapon/wirecutters,user) /obj/item/tape/proc/breaktape(obj/item/weapon/W as obj, mob/user as mob) - if(user.a_intent == INTENT_HELP && ((!can_puncture(W) && src.allowed(user)))) + if(user.a_intent == INTENT_HELP && ((!is_pointed(W) && src.allowed(user)))) to_chat(user, "You can't break the [src] with that!") return user.visible_message("[user] breaks the [src]!", "You break the [src]!") diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index ef1589f50b7..b744edd79a6 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -7,7 +7,7 @@ slot_flags = SLOT_BELT var/list/part = null var/sabotaged = 0 //Emagging limbs can have repercussions when installed as prosthetics. - var/model_info + var/model_info = "Unbranded" dir = SOUTH /obj/item/robot_parts/New(newloc, model) @@ -23,33 +23,38 @@ else name = "robot [initial(name)]" +/obj/item/robot_parts/attack_self(mob/user) + var/choice = input(user, "Select the company appearance for this limb.", "Limb Company Selection") as null|anything in selectable_robolimbs + if(!choice) + return + if(loc != user) + return + model_info = choice + to_chat(usr, "You change the company limb model to [choice].") + /obj/item/robot_parts/l_arm name = "left arm" desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case." icon_state = "l_arm" part = list("l_arm","l_hand") - model_info = 1 /obj/item/robot_parts/r_arm name = "right arm" desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case." icon_state = "r_arm" part = list("r_arm","r_hand") - model_info = 1 /obj/item/robot_parts/l_leg name = "left leg" desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case." icon_state = "l_leg" part = list("l_leg","l_foot") - model_info = 1 /obj/item/robot_parts/r_leg name = "right leg" desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case." icon_state = "r_leg" part = list("r_leg","r_foot") - model_info = 1 /obj/item/robot_parts/chest name = "torso" @@ -80,6 +85,7 @@ name = "endoskeleton" desc = "A complex metal backbone with standard limb sockets and pseudomuscle anchors." icon_state = "robo_suit" + model_info = null var/obj/item/robot_parts/l_arm/l_arm = null var/obj/item/robot_parts/r_arm/r_arm = null var/obj/item/robot_parts/l_leg/l_leg = null @@ -108,6 +114,9 @@ forced_ai = null return ..() +/obj/item/robot_parts/robot_suit/attack_self(mob/user) + return + /obj/item/robot_parts/robot_suit/proc/updateicon() overlays.Cut() if(l_arm) diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index c5ecb18edec..1f8cb43fbb2 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -37,8 +37,7 @@ R.hands.icon_state = "nomod" R.icon_state = "robot" R.module.remove_subsystems_and_actions(R) - qdel(R.module) - R.module = null + QDEL_NULL(R.module) R.camera.network.Remove(list("Engineering", "Medical", "Mining Outpost")) R.rename_character(R.real_name, R.get_default_name("Default")) diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 8ec4fc87160..3ffdfaaf751 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -11,6 +11,7 @@ var/heal_burn = 0 var/self_delay = 20 var/unique_handling = 0 //some things give a special prompt, do we want to bypass some checks in parent? + var/stop_bleeding = 0 /obj/item/stack/medical/attack(mob/living/M, mob/user) if(!iscarbon(M) && !isanimal(M)) @@ -37,6 +38,14 @@ to_chat(user, "This can't be used on a robotic limb.") return 1 + if(stop_bleeding) + if(H.bleedsuppress) + to_chat(user, "[H]'s bleeding is already bandaged!") + return 1 + else if(!H.bleed_rate) + to_chat(user, "[H] isn't bleeding!") + return 1 + if(M == user && !unique_handling) user.visible_message("[user] starts to apply [src] on [H]...") if(!do_mob(user, H, self_delay)) @@ -76,6 +85,7 @@ desc = "Some sterile gauze to wrap around bloody stumps." icon_state = "gauze" origin_tech = "biotech=2" + stop_bleeding = 1800 /obj/item/stack/medical/bruise_pack/attack(mob/living/M, mob/user) if(..()) @@ -86,19 +96,17 @@ var/obj/item/organ/external/affecting = H.get_organ(user.zone_sel.selecting) if(affecting.open == 0) - var/bandaged = affecting.bandage() - var/disinfected = affecting.disinfect() + affecting.germ_level = 0 - if(!(bandaged || disinfected)) - to_chat(user, "The wounds on [H]'s [affecting.name] have already been bandaged.") - return 1 - else - user.visible_message("[user] bandages the wounds on [H]'s [affecting.name].", \ - "You bandage the wounds on [H]'s [affecting.name]." ) + user.visible_message("[user] bandages the wounds on [H]'s [affecting.name].", \ + "You bandage the wounds on [H]'s [affecting.name]." ) - affecting.heal_damage(heal_brute, heal_burn) - H.UpdateDamageIcon() - use(1) + if(stop_bleeding) + if(!H.bleedsuppress) //so you can't stack bleed suppression + H.suppress_bloodloss(stop_bleeding) + affecting.heal_damage(heal_brute, heal_burn) + H.UpdateDamageIcon() + use(1) else to_chat(user, "[affecting] is cut open, you'll need more than a bandage!") @@ -109,6 +117,7 @@ desc = "An advanced trauma kit for severe injuries." icon_state = "traumakit" heal_brute = 25 + stop_bleeding = 0 @@ -132,15 +141,13 @@ var/obj/item/organ/external/affecting = H.get_organ(user.zone_sel.selecting) if(affecting.open == 0) - if(!affecting.salve()) - to_chat(user, "The wounds on [H]'s [affecting.name] have already been salved.") - return 1 - else - user.visible_message("[user] salves the wounds on [H]'s [affecting.name].", \ - "You salve the wounds on [H]'s [affecting.name]." ) - affecting.heal_damage(heal_brute, heal_burn) - H.UpdateDamageIcon() - use(1) + affecting.germ_level = 0 + + user.visible_message("[user] salves the wounds on [H]'s [affecting.name].", \ + "You salve the wounds on [H]'s [affecting.name]." ) + affecting.heal_damage(heal_brute, heal_burn) + H.UpdateDamageIcon() + use(1) else to_chat(user, "[affecting] is cut open, you'll need more than some ointment!") diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index 96d5d381a72..9de205d483c 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -55,7 +55,7 @@ var/global/list/datum/stack_recipe/rod_recipes = list ( \ "You shape [src] into metal with the welding tool.", \ "You hear welding.") - var/replace = user.get_inactive_hand() == src + var/replace = user.is_in_inactive_hand(src) use(2) if(get_amount() <= 0 && replace) user.unEquip(src, 1) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 67755655fe3..029cb8cd4a5 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -123,6 +123,7 @@ var/global/list/datum/stack_recipe/metal_recipes = list( */ var/global/list/datum/stack_recipe/plasteel_recipes = list( new /datum/stack_recipe("AI core", /obj/structure/AIcore, 4, time = 50, one_per_turf = 1), + new /datum/stack_recipe("bomb assembly", /obj/machinery/syndicatebomb/empty, 10, time = 50), new /datum/stack_recipe("Surgery Table", /obj/machinery/optable, 5, time = 50, one_per_turf = 1, on_floor = 1), new /datum/stack_recipe("Metal crate", /obj/structure/closet/crate, 10, time = 50, one_per_turf = 1), new /datum/stack_recipe("Mass Driver frame", /obj/machinery/mass_driver_frame, 3, time = 50, one_per_turf = 1) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index d4d4ae7f48c..eeacb71e9b3 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -36,6 +36,23 @@ /obj/item/stack/attack_self(mob/user) list_recipes(user) +/obj/item/stack/attack_self_tk(mob/user) + list_recipes(user) + +/obj/item/stack/attack_tk(mob/user) + if(user.stat || !isturf(loc)) return + // Allow remote stack splitting, because telekinetic inventory managing + // is really cool + if(src in user.tkgrabbed_objects) + var/obj/item/stack/F = split(user, 1) + F.attack_tk(user) + if(src && user.machine == src) + spawn(0) + interact(user) + else + ..() + + /obj/item/stack/proc/list_recipes(mob/user, recipes_sublist) if(!recipes) return @@ -107,7 +124,7 @@ /obj/item/stack/Topic(href, href_list) ..() - if(usr.incapacitated() || usr.get_active_hand() != src) + if(usr.incapacitated() || !usr.is_in_active_hand(src)) return 0 if(href_list["sublist"] && !href_list["make"]) @@ -124,6 +141,7 @@ var/datum/stack_recipe/R = recipes_list[text2num(href_list["make"])] var/multiplier = text2num(href_list["multiplier"]) + var/atom/creation_loc = (loc == usr) ? usr.loc : loc if(!multiplier) multiplier = 1 @@ -134,11 +152,11 @@ to_chat(usr, "You haven't got enough [src] to build \the [R.title]!") return 0 - if(R.one_per_turf && (locate(R.result_type) in usr.loc)) + if(R.one_per_turf && (locate(R.result_type) in creation_loc)) to_chat(usr, "There is another [R.title] here!") return 0 - if(R.on_floor && !istype(usr.loc, /turf/simulated)) + if(R.on_floor && !istype(creation_loc, /turf/simulated)) to_chat(usr, "\The [R.title] must be constructed on the floor!") return 0 @@ -150,7 +168,7 @@ if(amount < R.req_amount * multiplier) return - var/atom/O = new R.result_type(usr.loc) + var/atom/O = new R.result_type(creation_loc) O.dir = usr.dir if(R.max_res_amount > 1) var/obj/item/stack/new_item = O @@ -215,7 +233,7 @@ return max_amount /obj/item/stack/proc/split(mob/user, amt) - var/obj/item/stack/F = new type(user, amt) + var/obj/item/stack/F = new type(loc, amt) F.copy_evidences(src) if(isliving(user)) add_fingerprint(user) @@ -224,7 +242,7 @@ return F /obj/item/stack/attack_hand(mob/user) - if(user.get_inactive_hand() == src) + if(user.is_in_inactive_hand(src)) var/obj/item/stack/F = split(user, 1) user.put_in_hands(F) if(src && usr.machine == src) @@ -241,7 +259,7 @@ return 1 var/to_transfer - if(user.get_inactive_hand() == src) + if(user.is_in_inactive_hand(src)) var/desired = input("How much would you like to transfer from this stack?", "How much?", 1) as null|num if(!desired) return @@ -267,4 +285,4 @@ fingerprints = from.fingerprints fingerprintshidden = from.fingerprintshidden fingerprintslast = from.fingerprintslast - //TODO bloody overlay \ No newline at end of file + //TODO bloody overlay diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index c9956334e2e..b4bacd5326a 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -1288,8 +1288,7 @@ obj/item/toy/cards/deck/syndicate/black if(stored_minature) to_chat(user, "\The [src] makes a violent grinding noise as it tears apart the miniature figure inside!") - qdel(stored_minature) - stored_minature = null + QDEL_NULL(stored_minature) playsound(user, 'sound/goonstation/effects/gib.ogg', 20, 1) cooldown = world.time diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index 2623c70606e..47047b081e7 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -1,12 +1,10 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - /* CONTAINS: RCD */ /obj/item/weapon/rcd name = "rapid-construction-device (RCD)" - desc = "A device used to rapidly build and deconstruct walls and floors." + desc = "A device used to rapidly build and deconstruct walls, floors and airlocks." icon = 'icons/obj/tools.dmi' icon_state = "rcd" opacity = 0 @@ -68,7 +66,7 @@ RCD if(istype(W, /obj/item/weapon/rcd_ammo)) var/obj/item/weapon/rcd_ammo/R = W if((matter + R.ammoamt) > max_matter) - to_chat(user, "The RCD cant hold any more matter-units.") + to_chat(user, "The RCD can't hold any more matter-units.") return matter += R.ammoamt user.drop_item() @@ -84,6 +82,9 @@ RCD //Change the mode ui_interact(user) +/obj/item/weapon/rcd/attack_self_tk(mob/user) + ui_interact(user) + /obj/item/weapon/rcd/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = inventory_state) ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) @@ -199,7 +200,8 @@ RCD to_chat(user, "Building Wall ...") playsound(loc, 'sound/machines/click.ogg', 50, 1) if(do_after(user, 20 * toolspeed, target = A)) - if(!useResource(3, user)) return 0 + if(!useResource(3, user)) + return 0 activate() var/turf/AT = A AT.ChangeTurf(/turf/simulated/wall) @@ -212,7 +214,10 @@ RCD to_chat(user, "Building Airlock...") playsound(loc, 'sound/machines/click.ogg', 50, 1) if(do_after(user, 50 * toolspeed, target = A)) - if(!useResource(10, user)) return 0 + for(var/obj/machinery/door/airlock/D in A.contents) + return 0 + if(!useResource(10, user)) + return 0 activate() var/obj/machinery/door/airlock/T = new door_type(A) T.name = door_name @@ -233,7 +238,8 @@ RCD to_chat(user, "Deconstructing Wall...") playsound(loc, 'sound/machines/click.ogg', 50, 1) if(do_after(user, 40 * toolspeed, target = A)) - if(!useResource(5, user)) return 0 + if(!useResource(5, user)) + return 0 activate() var/turf/AT = A AT.ChangeTurf(/turf/simulated/floor/plating) @@ -245,7 +251,8 @@ RCD to_chat(user, "Deconstructing Floor...") playsound(loc, 'sound/machines/click.ogg', 50, 1) if(do_after(user, 50 * toolspeed, target = A)) - if(!useResource(5, user)) return 0 + if(!useResource(5, user)) + return 0 activate() var/turf/AT = A AT.ChangeTurf(/turf/space) @@ -257,7 +264,8 @@ RCD to_chat(user, "Deconstructing Airlock...") playsound(loc, 'sound/machines/click.ogg', 50, 1) if(do_after(user, 50 * toolspeed, target = A)) - if(!useResource(20, user)) return 0 + if(!useResource(20, user)) + return 0 activate() qdel(A) return 1 @@ -361,7 +369,7 @@ RCD /obj/item/weapon/rcd/borg/New() ..() - desc = "A device used to rapidly build and deconstruct walls and floors." + desc = "A device used to rapidly build and deconstruct walls, floors and airlocks." canRwall = 1 diff --git a/code/game/objects/items/weapons/caution.dm b/code/game/objects/items/weapons/caution.dm index 032decd7bc5..814ba2d2110 100644 --- a/code/game/objects/items/weapons/caution.dm +++ b/code/game/objects/items/weapons/caution.dm @@ -55,7 +55,8 @@ proc/dead_legs(mob/living/carbon/human/H as mob) var/obj/item/organ/external/l = H.get_organ("l_leg") var/obj/item/organ/external/r = H.get_organ("r_leg") - if(l && !(l.status & ORGAN_DESTROYED)) - l.status |= ORGAN_DESTROYED - if(r && !(r.status & ORGAN_DESTROYED)) - r.status |= ORGAN_DESTROYED + if(l) + l.droplimb(0, DROPLIMB_SHARP) + if(r) + r.droplimb(0, DROPLIMB_SHARP) + diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index ad8a30bed07..841d8fa1cda 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -5,49 +5,6 @@ * Bike Horns */ -/* - * Soap - */ -/obj/item/weapon/soap/Crossed(AM as mob|obj) //EXACTLY the same as bananapeel for now, so it makes sense to put it in the same dm -- Urist - if(istype(AM, /mob/living/carbon)) - var/mob/living/carbon/M = AM - M.slip("soap", 4, 2) - -/obj/item/weapon/soap/afterattack(atom/target, mob/user, proximity) - if(!proximity) return - //I couldn't feasibly fix the overlay bugs caused by cleaning items we are wearing. - //So this is a workaround. This also makes more sense from an IC standpoint. ~Carn - if(user.client && (target in user.client.screen)) - to_chat(user, "You need to take that [target.name] off before cleaning it.") - else if(target == user && user.a_intent == INTENT_GRAB && ishuman(target)) - var/mob/living/carbon/human/muncher = user - if(muncher && muncher.get_species() == "Drask") - to_chat(user, "You take a bite of the [src.name]. Delicious!") - playsound(user.loc, 'sound/items/eatfood.ogg', 50, 0) - user.nutrition += 2 - else if(istype(target,/obj/effect/decal/cleanable)) - user.visible_message("[user] begins to scrub \the [target.name] out with [src].") - if(do_after(user, src.cleanspeed, target = target) && target) - to_chat(user, "You scrub \the [target.name] out.") - qdel(target) - else - user.visible_message("[user] begins to clean \the [target.name] with [src].") - if(do_after(user, src.cleanspeed, target = target)) - to_chat(user, "You clean \the [target.name].") - var/obj/effect/decal/cleanable/C = locate() in target - qdel(C) - target.clean_blood() - if(istype(target, /turf/simulated)) - var/turf/simulated/T = target - T.dirt = 0 - return - -/obj/item/weapon/soap/attack(mob/target as mob, mob/user as mob) - if(target && user && ishuman(target) && ishuman(user) && !target.stat && !user.stat && user.zone_sel &&user.zone_sel.selecting == "mouth" ) - user.visible_message("\the [user] washes \the [target]'s mouth out with [src.name]!") - return - ..() - /* * Bike Horns */ diff --git a/code/game/objects/items/weapons/cosmetics.dm b/code/game/objects/items/weapons/cosmetics.dm index d480f8f4010..96d48c55b83 100644 --- a/code/game/objects/items/weapons/cosmetics.dm +++ b/code/game/objects/items/weapons/cosmetics.dm @@ -99,7 +99,7 @@ if(!get_location_accessible(H, "mouth")) to_chat(user, "The mask is in the way.") return - if((C.species && C.species.flags & ALL_RPARTS) && robohead.is_monitor) //If the target is of a species that can have prosthetic heads, but the head doesn't support human hair 'wigs'... + if((C.species.bodyflags & ALL_RPARTS) && robohead.is_monitor) //If the target is of a species that can have prosthetic heads, but the head doesn't support human hair 'wigs'... to_chat(user, "You find yourself disappointed at the appalling lack of facial hair.") return if(C.f_style == "Shaved") @@ -130,7 +130,7 @@ if(!get_location_accessible(H, "head")) to_chat(user, "The headgear is in the way.") return - if((C.species && C.species.flags & ALL_RPARTS) && robohead.is_monitor) //If the target is of a species that can have prosthetic heads, but the head doesn't support human hair 'wigs'... + if((C.species.bodyflags & ALL_RPARTS) && robohead.is_monitor) //If the target is of a species that can have prosthetic heads, but the head doesn't support human hair 'wigs'... to_chat(user, "You find yourself disappointed at the appalling lack of hair.") return if(C.h_style == "Bald" || C.h_style == "Balding Hair" || C.h_style == "Skinhead") diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index 8705b86ea3a..2ac5fb102e1 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -337,105 +337,100 @@ update_icon() defib.cooldowncheck(user) return - if(user.zone_sel && user.zone_sel.selecting == "chest") - user.visible_message("[user] begins to place [src] on [M.name]'s chest.", "You begin to place [src] on [M.name]'s chest.") - busy = 1 - update_icon() - if(do_after(user, 30 * toolspeed, target = M)) //beginning to place the paddles on patient's chest to allow some time for people to move away to stop the process - user.visible_message("[user] places [src] on [M.name]'s chest.", "You place [src] on [M.name]'s chest.") - playsound(get_turf(src), 'sound/machines/defib_charge.ogg', 50, 0) - var/mob/dead/observer/ghost = H.get_ghost() - if(ghost && !ghost.client) - // In case the ghost's not getting deleted for some reason - H.key = ghost.key - log_runtime(EXCEPTION("Ghost of name [ghost.name] is bound to [H.real_name], but lacks a client. Deleting ghost."), src) + user.visible_message("[user] begins to place [src] on [M.name]'s chest.", "You begin to place [src] on [M.name]'s chest.") + busy = 1 + update_icon() + if(do_after(user, 30 * toolspeed, target = M)) //beginning to place the paddles on patient's chest to allow some time for people to move away to stop the process + user.visible_message("[user] places [src] on [M.name]'s chest.", "You place [src] on [M.name]'s chest.") + playsound(get_turf(src), 'sound/machines/defib_charge.ogg', 50, 0) + var/mob/dead/observer/ghost = H.get_ghost() + if(ghost && !ghost.client) + // In case the ghost's not getting deleted for some reason + H.key = ghost.key + log_runtime(EXCEPTION("Ghost of name [ghost.name] is bound to [H.real_name], but lacks a client. Deleting ghost."), src) - qdel(ghost) - ghost = null - var/tplus = world.time - H.timeofdeath - var/tlimit = 1800 //past this much time the patient is unrecoverable (in deciseconds) - var/tloss = 600 //brain damage starts setting in on the patient after some time left rotting - var/total_burn = 0 - var/total_brute = 0 - if(do_after(user, 20 * toolspeed, target = M)) //placed on chest and short delay to shock for dramatic effect, revive time is 5sec total - for(var/obj/item/carried_item in H.contents) - if(istype(carried_item, /obj/item/clothing/suit/space)) - if(!defib.combat) - user.visible_message("[defib] buzzes: Patient's chest is obscured. Operation aborted.") - playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0) - busy = 0 - update_icon() - return - if(H.undergoing_cardiac_arrest()) - if(!H.get_int_organ(/obj/item/organ/internal/heart) && !H.get_int_organ(/obj/item/organ/internal/brain/slime)) //prevents defibing someone still alive suffering from a heart attack attack if they lack a heart - user.visible_message("[defib] buzzes: Resuscitation failed - Failed to pick up any heart electrical activity.") + QDEL_NULL(ghost) + var/tplus = world.time - H.timeofdeath + var/tlimit = 1800 //past this much time the patient is unrecoverable (in deciseconds) + var/tloss = 600 //brain damage starts setting in on the patient after some time left rotting + var/total_burn = 0 + var/total_brute = 0 + if(do_after(user, 20 * toolspeed, target = M)) //placed on chest and short delay to shock for dramatic effect, revive time is 5sec total + for(var/obj/item/carried_item in H.contents) + if(istype(carried_item, /obj/item/clothing/suit/space)) + if(!defib.combat) + user.visible_message("[defib] buzzes: Patient's chest is obscured. Operation aborted.") playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0) busy = 0 update_icon() return - else - H.set_heartattack(FALSE) - user.visible_message("[defib] pings: Cardiac arrhythmia corrected.") - M.visible_message("[M]'s body convulses a bit.") - playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1) - playsound(get_turf(src), "bodyfall", 50, 1) - playsound(get_turf(src), 'sound/machines/defib_success.ogg', 50, 0) - defib.deductcharge(revivecost) - busy = 0 - cooldown = 1 - update_icon() - defib.cooldowncheck(user) - return - if(H.stat == DEAD) - var/health = H.health - M.visible_message("[M]'s body convulses a bit.") - playsound(get_turf(src), "bodyfall", 50, 1) - playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1) - for(var/obj/item/organ/external/O in H.bodyparts) - total_brute += O.brute_dam - total_burn += O.burn_dam - if(total_burn <= 180 && total_brute <= 180 && !H.suiciding && !ghost && tplus < tlimit && !(NOCLONE in H.mutations) && (H.get_int_organ(/obj/item/organ/internal/heart) || H.get_int_organ(/obj/item/organ/internal/brain/slime))) - tobehealed = min(health + threshold, 0) // It's HILARIOUS without this min statement, let me tell you - tobehealed -= 5 //They get 5 of each type of damage healed so excessive combined damage will not immediately kill them after they get revived - H.adjustOxyLoss(tobehealed) - H.adjustToxLoss(tobehealed) - H.adjustFireLoss(tobehealed) - H.adjustBruteLoss(tobehealed) - user.visible_message("[defib] pings: Resuscitation successful.") - playsound(get_turf(src), 'sound/machines/defib_success.ogg', 50, 0) - H.update_revive(FALSE) - H.KnockOut(FALSE) - H.Paralyse(5) - H.emote("gasp") - if(tplus > tloss) - H.setBrainLoss( max(0, min(99, ((tlimit - tplus) / tlimit * 100)))) - defib.deductcharge(revivecost) - add_logs(user, M, "revived", object="defibrillator") - else - if(tplus > tlimit|| !H.get_int_organ(/obj/item/organ/internal/heart)) - user.visible_message("[defib] buzzes: Resuscitation failed - Heart tissue damage beyond point of no return for defibrillation.") - else if(total_burn >= 180 || total_brute >= 180) - user.visible_message("[defib] buzzes: Resuscitation failed - Severe tissue damage detected.") - else if(ghost) - user.visible_message("[defib] buzzes: Resuscitation failed: Patient's brain is unresponsive. Further attempts may succeed.") - to_chat(ghost, "Your heart is being defibrillated. Return to your body if you want to be revived! (Verbs -> Ghost -> Re-enter corpse)") - window_flash(ghost.client) - ghost << sound('sound/effects/genetics.ogg') - else - user.visible_message("[defib] buzzes: Resuscitation failed.") - playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0) - defib.deductcharge(revivecost) - update_icon() - cooldown = 1 - defib.cooldowncheck(user) - else - user.visible_message("[defib] buzzes: Patient is not in a valid state. Operation aborted.") + if(H.undergoing_cardiac_arrest()) + if(!H.get_int_organ(/obj/item/organ/internal/heart) && !H.get_int_organ(/obj/item/organ/internal/brain/slime)) //prevents defibing someone still alive suffering from a heart attack attack if they lack a heart + user.visible_message("[defib] buzzes: Resuscitation failed - Failed to pick up any heart electrical activity.") playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0) - busy = 0 - update_icon() - else - to_chat(user, "You need to target your patient's chest with [src].") - return + busy = 0 + update_icon() + return + else + H.set_heartattack(FALSE) + user.visible_message("[defib] pings: Cardiac arrhythmia corrected.") + M.visible_message("[M]'s body convulses a bit.") + playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1) + playsound(get_turf(src), "bodyfall", 50, 1) + playsound(get_turf(src), 'sound/machines/defib_success.ogg', 50, 0) + defib.deductcharge(revivecost) + busy = 0 + cooldown = 1 + update_icon() + defib.cooldowncheck(user) + return + if(H.stat == DEAD) + var/health = H.health + M.visible_message("[M]'s body convulses a bit.") + playsound(get_turf(src), "bodyfall", 50, 1) + playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1) + for(var/obj/item/organ/external/O in H.bodyparts) + total_brute += O.brute_dam + total_burn += O.burn_dam + if(total_burn <= 180 && total_brute <= 180 && !H.suiciding && !ghost && tplus < tlimit && !(NOCLONE in H.mutations) && (H.get_int_organ(/obj/item/organ/internal/heart) || H.get_int_organ(/obj/item/organ/internal/brain/slime))) + tobehealed = min(health + threshold, 0) // It's HILARIOUS without this min statement, let me tell you + tobehealed -= 5 //They get 5 of each type of damage healed so excessive combined damage will not immediately kill them after they get revived + H.adjustOxyLoss(tobehealed) + H.adjustToxLoss(tobehealed) + H.adjustFireLoss(tobehealed) + H.adjustBruteLoss(tobehealed) + user.visible_message("[defib] pings: Resuscitation successful.") + playsound(get_turf(src), 'sound/machines/defib_success.ogg', 50, 0) + H.update_revive(FALSE) + H.KnockOut(FALSE) + H.Paralyse(5) + H.emote("gasp") + if(tplus > tloss) + H.setBrainLoss( max(0, min(99, ((tlimit - tplus) / tlimit * 100)))) + defib.deductcharge(revivecost) + add_logs(user, M, "revived", object="defibrillator") + else + if(tplus > tlimit|| !H.get_int_organ(/obj/item/organ/internal/heart)) + user.visible_message("[defib] buzzes: Resuscitation failed - Heart tissue damage beyond point of no return for defibrillation.") + else if(total_burn >= 180 || total_brute >= 180) + user.visible_message("[defib] buzzes: Resuscitation failed - Severe tissue damage detected.") + else if(ghost) + user.visible_message("[defib] buzzes: Resuscitation failed: Patient's brain is unresponsive. Further attempts may succeed.") + to_chat(ghost, "Your heart is being defibrillated. Return to your body if you want to be revived! (Verbs -> Ghost -> Re-enter corpse)") + window_flash(ghost.client) + ghost << sound('sound/effects/genetics.ogg') + else + user.visible_message("[defib] buzzes: Resuscitation failed.") + playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0) + defib.deductcharge(revivecost) + update_icon() + cooldown = 1 + defib.cooldowncheck(user) + else + user.visible_message("[defib] buzzes: Patient is not in a valid state. Operation aborted.") + playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0) + busy = 0 + update_icon() /obj/item/weapon/borg_defib name = "defibrillator paddles" @@ -487,80 +482,75 @@ cooldown = 0 update_icon() return - if(user.zone_sel && user.zone_sel.selecting == "chest") - user.visible_message("[user] begins to place [src] on [M.name]'s chest.", "You begin to place [src] on [M.name]'s chest.") - busy = 1 - update_icon() - if(do_after(user, 30 * toolspeed, target = M)) //beginning to place the paddles on patient's chest to allow some time for people to move away to stop the process - user.visible_message("[user] places [src] on [M.name]'s chest.", "You place [src] on [M.name]'s chest.") - playsound(get_turf(src), 'sound/machines/defib_charge.ogg', 50, 0) - var/mob/dead/observer/ghost = H.get_ghost() - if(ghost && !ghost.client) - // In case the ghost's not getting deleted for some reason - H.key = ghost.key - log_runtime(EXCEPTION("Ghost of name [ghost.name] is bound to [H.real_name], but lacks a client. Deleting ghost."), H) + user.visible_message("[user] begins to place [src] on [M.name]'s chest.", "You begin to place [src] on [M.name]'s chest.") + busy = 1 + update_icon() + if(do_after(user, 30 * toolspeed, target = M)) //beginning to place the paddles on patient's chest to allow some time for people to move away to stop the process + user.visible_message("[user] places [src] on [M.name]'s chest.", "You place [src] on [M.name]'s chest.") + playsound(get_turf(src), 'sound/machines/defib_charge.ogg', 50, 0) + var/mob/dead/observer/ghost = H.get_ghost() + if(ghost && !ghost.client) + // In case the ghost's not getting deleted for some reason + H.key = ghost.key + log_runtime(EXCEPTION("Ghost of name [ghost.name] is bound to [H.real_name], but lacks a client. Deleting ghost."), H) - qdel(ghost) - ghost = null - var/tplus = world.time - H.timeofdeath - var/tlimit = 1800 //past this much time the patient is unrecoverable (in deciseconds) - var/tloss = 600 //brain damage starts setting in on the patient after some time left rotting - var/total_burn = 0 - var/total_brute = 0 - if(do_after(user, 20 * toolspeed, target = M)) //placed on chest and short delay to shock for dramatic effect, revive time is 5sec total - if(H.stat == 2) - var/health = H.health - M.visible_message("[M]'s body convulses a bit.") - playsound(get_turf(src), "bodyfall", 50, 1) - playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1) - for(var/obj/item/organ/external/O in H.bodyparts) - total_brute += O.brute_dam - total_burn += O.burn_dam - if(total_burn <= 180 && total_brute <= 180 && !H.suiciding && !ghost && tplus < tlimit && !(NOCLONE in H.mutations)) - tobehealed = min(health + threshold, 0) // It's HILARIOUS without this min statement, let me tell you - tobehealed -= 5 //They get 5 of each type of damage healed so excessive combined damage will not immediately kill them after they get revived - H.adjustOxyLoss(tobehealed) - H.adjustToxLoss(tobehealed) - H.adjustFireLoss(tobehealed) - H.adjustBruteLoss(tobehealed) - user.visible_message("[user] pings: Resuscitation successful.") - playsound(get_turf(src), 'sound/machines/defib_success.ogg', 50, 0) - H.update_revive(FALSE) - H.KnockOut(FALSE) - H.Paralyse(5) - H.emote("gasp") - if(tplus > tloss) - H.setBrainLoss( max(0, min(99, ((tlimit - tplus) / tlimit * 100)))) - if(isrobot(user)) - var/mob/living/silicon/robot/R = user - R.cell.use(revivecost) - add_logs(user, M, "revived", object="defibrillator") - else - if(tplus > tlimit) - user.visible_message("[user] buzzes: Resuscitation failed - Heart tissue damage beyond point of no return for defibrillation.") - else if(total_burn >= 180 || total_brute >= 180) - user.visible_message("[user] buzzes: Resuscitation failed - Severe tissue damage detected.") - else if(ghost) - user.visible_message("[user] buzzes: Resuscitation failed: Patient's brain is unresponsive. Further attempts may succeed.") - to_chat(ghost, "Your heart is being defibrillated. Return to your body if you want to be revived! (Verbs -> Ghost -> Re-enter corpse)") - window_flash(ghost.client) - ghost << sound('sound/effects/genetics.ogg') - else - user.visible_message("[user] buzzes: Resuscitation failed.") - playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0) - if(isrobot(user)) - var/mob/living/silicon/robot/R = user - R.cell.use(revivecost) - update_icon() - cooldown = 1 - spawn(50) - cooldown = 0 - update_icon() + QDEL_NULL(ghost) + var/tplus = world.time - H.timeofdeath + var/tlimit = 1800 //past this much time the patient is unrecoverable (in deciseconds) + var/tloss = 600 //brain damage starts setting in on the patient after some time left rotting + var/total_burn = 0 + var/total_brute = 0 + if(do_after(user, 20 * toolspeed, target = M)) //placed on chest and short delay to shock for dramatic effect, revive time is 5sec total + if(H.stat == 2) + var/health = H.health + M.visible_message("[M]'s body convulses a bit.") + playsound(get_turf(src), "bodyfall", 50, 1) + playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1) + for(var/obj/item/organ/external/O in H.bodyparts) + total_brute += O.brute_dam + total_burn += O.burn_dam + if(total_burn <= 180 && total_brute <= 180 && !H.suiciding && !ghost && tplus < tlimit && !(NOCLONE in H.mutations)) + tobehealed = min(health + threshold, 0) // It's HILARIOUS without this min statement, let me tell you + tobehealed -= 5 //They get 5 of each type of damage healed so excessive combined damage will not immediately kill them after they get revived + H.adjustOxyLoss(tobehealed) + H.adjustToxLoss(tobehealed) + H.adjustFireLoss(tobehealed) + H.adjustBruteLoss(tobehealed) + user.visible_message("[user] pings: Resuscitation successful.") + playsound(get_turf(src), 'sound/machines/defib_success.ogg', 50, 0) + H.update_revive(FALSE) + H.KnockOut(FALSE) + H.Paralyse(5) + H.emote("gasp") + if(tplus > tloss) + H.setBrainLoss( max(0, min(99, ((tlimit - tplus) / tlimit * 100)))) + if(isrobot(user)) + var/mob/living/silicon/robot/R = user + R.cell.use(revivecost) + add_logs(user, M, "revived", object="defibrillator") else - user.visible_message("[user] buzzes: Patient is not in a valid state. Operation aborted.") + if(tplus > tlimit) + user.visible_message("[user] buzzes: Resuscitation failed - Heart tissue damage beyond point of no return for defibrillation.") + else if(total_burn >= 180 || total_brute >= 180) + user.visible_message("[user] buzzes: Resuscitation failed - Severe tissue damage detected.") + else if(ghost) + user.visible_message("[user] buzzes: Resuscitation failed: Patient's brain is unresponsive. Further attempts may succeed.") + to_chat(ghost, "Your heart is being defibrillated. Return to your body if you want to be revived! (Verbs -> Ghost -> Re-enter corpse)") + window_flash(ghost.client) + ghost << sound('sound/effects/genetics.ogg') + else + user.visible_message("[user] buzzes: Resuscitation failed.") playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0) - busy = 0 - update_icon() - else - to_chat(user, "You need to target your patient's chest with [src].") - return + if(isrobot(user)) + var/mob/living/silicon/robot/R = user + R.cell.use(revivecost) + update_icon() + cooldown = 1 + spawn(50) + cooldown = 0 + update_icon() + else + user.visible_message("[user] buzzes: Patient is not in a valid state. Operation aborted.") + playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0) + busy = 0 + update_icon() diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm index b583b3e2c25..59b5f487044 100644 --- a/code/game/objects/items/weapons/dna_injector.dm +++ b/code/game/objects/items/weapons/dna_injector.dm @@ -74,7 +74,7 @@ H = M spawn(0) //Some mutations have sleeps in them, like monkey - if(!(NOCLONE in M.mutations) && !(H && (H.species.flags & NO_DNA))) // prevents drained people from having their DNA changed + if(!(NOCLONE in M.mutations) && !(H && (NO_DNA in H.species.species_traits))) // prevents drained people from having their DNA changed var/prev_ue = M.dna.unique_enzymes var/mutflags = 0 // UI in syringe. @@ -113,7 +113,7 @@ if(ishuman(M)) // Would've done this via species instead of type, but the basic mob doesn't have a species, go figure. var/mob/living/carbon/human/H = M - if(H.species.flags & NO_DNA) + if(NO_DNA in H.species.species_traits) return 0 if(!user.IsAdvancedToolUser()) diff --git a/code/game/objects/items/weapons/dnascrambler.dm b/code/game/objects/items/weapons/dnascrambler.dm index e691fce0961..8e6dcc7e4dd 100644 --- a/code/game/objects/items/weapons/dnascrambler.dm +++ b/code/game/objects/items/weapons/dnascrambler.dm @@ -19,40 +19,41 @@ if(!ishuman(M) || !ishuman(user)) return - if(src.used) + if(used) return if(ishuman(M)) var/mob/living/carbon/human/H = M - if(H.species.flags & NO_DNA) + if(NO_DNA in H.species.species_traits) to_chat(user, "You failed to inject [M], as they have no DNA to scramble, nor flesh to inject.") return if(M == user) user.visible_message("[user] injects \himself with [src]!") - src.injected(user,user) + injected(user, user) else user.visible_message("[user] is trying to inject [M] with [src]!") if(do_mob(user,M,30)) user.visible_message("[user] injects [M] with [src].") - src.injected(M, user) + injected(M, user) else to_chat(user, "You failed to inject [M].") - proc/injected(var/mob/living/carbon/target, var/mob/living/carbon/user) - scramble(1, target, 100) - target.generate_name() - if(istype(target, /mob/living/carbon/human)) + proc/injected(var/mob/living/carbon/human/target, var/mob/living/carbon/user) + if(istype(target)) var/mob/living/carbon/human/H = target + scramble(1, H, 100) + H.real_name = random_name(H.gender, H.species.name) //Give them a name that makes sense for their species. H.sync_organ_dna(assimilate = 1) H.update_body(0) - H.reset_hair() // No more winding up with hairstyles you're not supposed to have, and blowing your cover + H.reset_hair() //No more winding up with hairstyles you're not supposed to have, and blowing your cover. + H.reset_markings() //...Or markings. H.dna.ResetUIFrom(H) target.update_icons() log_attack("[key_name(user)] injected [key_name(target)] with the [name]") log_game("[key_name_admin(user)] injected [key_name_admin(target)] with the [name]") - src.used = 1 - src.update_icon() - src.name = "used " + src.name \ No newline at end of file + used = 1 + update_icon() + name = "used " + name diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index ea89aab651c..58de51085de 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -61,7 +61,7 @@ nadeassembly.attack_self(user) return var/newtime = input(usr, "Please set the timer.", "Timer", 10) as num - if(user.get_active_hand() == src) + if(user.is_in_active_hand(src)) newtime = Clamp(newtime, 10, 60000) det_time = newtime to_chat(user, "Timer set for [det_time] seconds.") diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm index f02eb57ae8b..024783359b5 100644 --- a/code/game/objects/items/weapons/flamethrower.dm +++ b/code/game/objects/items/weapons/flamethrower.dm @@ -62,7 +62,7 @@ /obj/item/weapon/flamethrower/afterattack(atom/target, mob/user, flag) if(flag) return // too close // Make sure our user is still holding us - if(user && user.get_active_hand() == src) + if(user && user.is_in_active_hand(src)) var/turf/target_turf = get_turf(target) if(target_turf) var/turflist = getline(user, target_turf) diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm index 4e558f7b64e..c5e487d1685 100644 --- a/code/game/objects/items/weapons/gift_wrappaper.dm +++ b/code/game/objects/items/weapons/gift_wrappaper.dm @@ -72,7 +72,7 @@ /obj/item/weapon/lipstick/random, /obj/item/weapon/grenade/smokebomb, /obj/item/weapon/grown/corncob, - /obj/item/weapon/contraband/poster, + /obj/item/weapon/poster/random_contraband, /obj/item/weapon/bikehorn, /obj/item/weapon/beach_ball, /obj/item/weapon/beach_ball/holoball, @@ -88,8 +88,8 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/deus, /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris, /obj/item/device/paicard, - /obj/item/device/violin, - /obj/item/device/guitar, + /obj/item/device/instrument/violin, + /obj/item/device/instrument/guitar, /obj/item/weapon/storage/belt/utility/full, /obj/item/clothing/accessory/horrible, /obj/random/carp_plushie, diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index f21914a7c32..8c723ed8b72 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -19,6 +19,9 @@ var/obj/item/device/assembly_holder/nadeassembly = null var/label = null var/assemblyattacher + var/ignition_temp = 10 // The amount of heat added to the reagents when this grenade goes off. + var/threatscale = 1 // Used by advanced grenades to make them slightly more worthy. + var/no_splash = FALSE //If the grenade deletes even if it has no reagents to splash with. Used for slime core reactions. /obj/item/weapon/grenade/chem_grenade/New() create_reagents(1000) @@ -99,6 +102,7 @@ log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z])") bombers += "[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z])" to_chat(user, "You prime the [name]! [det_time / 10] second\s!") + playsound(user.loc, 'sound/weapons/armbomb.ogg', 60, 1) active = 1 update_icon() if(iscarbon(user)) @@ -148,7 +152,7 @@ var/turf/bombturf = get_turf(loc) var/area/A = bombturf.loc message_admins("[key_name_admin(usr)] has completed [name] at [A.name] (JMP) [contained].") - log_game("[key_name(usr)] has completed [name] at [bombturf.x], [bombturf.y], [bombturf.z].") + log_game("[key_name(usr)] has completed [name] at [bombturf.x], [bombturf.y], [bombturf.z]. [contained]") else to_chat(user, "You need to add at least one beaker before locking the assembly.") else if(stage == READY && !nadeassembly) @@ -264,13 +268,18 @@ if(stage != READY) return - var/has_reagents = 0 + var/list/datum/reagents/reactants = list() for(var/obj/item/weapon/reagent_containers/glass/G in beakers) - if(G.reagents.total_volume) - has_reagents = 1 + reactants += G.reagents - if(!has_reagents) - playsound(loc, usesound, 50, 1) + if(!chem_splash(get_turf(src), affected_area, reactants, ignition_temp, threatscale) && !no_splash) + playsound(loc, 'sound/items/Screwdriver2.ogg', 50, 1) + if(beakers.len) + for(var/obj/O in beakers) + O.forceMove(get_turf(src)) + beakers = list() + stage = EMPTY + update_icon() return if(nadeassembly) @@ -281,31 +290,9 @@ message_admins("grenade primed by an assembly, attached by [key_name_admin(M)](?) ([admin_jump_link(M)]) and last touched by [key_name_admin(last)](?) ([admin_jump_link(last)]) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).") log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z])") - playsound(loc, 'sound/effects/bamf.ogg', 50, 1) - update_mob() - invisibility = INVISIBILITY_MAXIMUM //kaboom - qdel(nadeassembly) // do this now to stop infrared beams - var/end_temp = 0 - for(var/obj/item/weapon/reagent_containers/glass/G in beakers) - G.reagents.trans_to(src, G.reagents.total_volume) - end_temp += G.reagents.chem_temp - reagents.chem_temp = end_temp - if(reagents.total_volume) //The possible reactions didnt use up all reagents. - var/datum/effect/system/steam_spread/steam = new /datum/effect/system/steam_spread() - steam.set_up(10, 0, get_turf(src)) - steam.attach(src) - steam.start() - - for(var/atom/A in view(affected_area, loc)) - if(A == src) - continue - reagents.reaction(A, 1, 10) - - - spawn(15) //Making sure all reagents can work - qdel(src) //correctly before deleting the grenade. + qdel(src) /obj/item/weapon/grenade/chem_grenade/proc/CreateDefaultTrigger(var/typekey) if(ispath(typekey,/obj/item/device/assembly)) @@ -327,64 +314,37 @@ //Large chem grenades accept slime cores and use the appropriately. /obj/item/weapon/grenade/chem_grenade/large name = "large grenade casing" - desc = "For oversized grenades; fits additional contents and affects a greater area." + desc = "A custom made large grenade. It affects a larger area." icon_state = "large_grenade" bomb_state = "largebomb" allowed_containers = list(/obj/item/weapon/reagent_containers/glass,/obj/item/weapon/reagent_containers/food/condiment, /obj/item/weapon/reagent_containers/food/drinks) origin_tech = "combat=3;engineering=3" - affected_area = 4 - + affected_area = 5 + ignition_temp = 25 // Large grenades are slightly more effective at setting off heat-sensitive mixtures than smaller grenades. + threatscale = 1.1 // 10% more effective. /obj/item/weapon/grenade/chem_grenade/large/prime() if(stage != READY) return - var/has_reagents = 0 - var/obj/item/slime_extract/valid_core = null + for(var/obj/item/slime_extract/S in beakers) + if(S.Uses) + for(var/obj/item/weapon/reagent_containers/glass/G in beakers) + G.reagents.trans_to(S, G.reagents.total_volume) - for(var/obj/item/weapon/reagent_containers/glass/G in beakers) - if(!istype(G)) continue - if(G.reagents.total_volume) has_reagents = 1 - for(var/obj/item/slime_extract/E in beakers) - if(!istype(E)) continue - if(E.Uses) valid_core = E - if(E.reagents.total_volume) has_reagents = 1 + //If there is still a core (sometimes it's used up) + //and there are reagents left, behave normally, + //otherwise drop it on the ground for timed reactions like gold. - if(!has_reagents) - playsound(loc, prime_sound, 50, 1) - return - - playsound(loc, 'sound/effects/bamf.ogg', 50, 1) - - update_mob() - - if(valid_core) - for(var/obj/item/weapon/reagent_containers/glass/G in beakers) - G.reagents.trans_to(valid_core, G.reagents.total_volume) - - //If there is still a core (sometimes it's used up) - //and there are reagents left, behave normally - - if(valid_core && valid_core.reagents && valid_core.reagents.total_volume) - valid_core.reagents.trans_to(src,valid_core.reagents.total_volume) - else - for(var/obj/item/weapon/reagent_containers/glass/G in beakers) - G.reagents.trans_to(src, G.reagents.total_volume) - - if(reagents.total_volume) //The possible reactions didnt use up all reagents. - var/datum/effect/system/steam_spread/steam = new /datum/effect/system/steam_spread() - steam.set_up(10, 0, get_turf(src)) - steam.attach(src) - steam.start() - - for(var/atom/A in view(affected_area, loc)) - if( A == src ) continue - reagents.reaction(A, 1, 10) - - invisibility = INVISIBILITY_MAXIMUM //Why am i doing this? - spawn(50) //To make sure all reagents can work - qdel(src) //correctly before deleting the grenade. + if(S) + if(S.reagents && S.reagents.total_volume) + for(var/obj/item/weapon/reagent_containers/glass/G in beakers) + S.reagents.trans_to(G, S.reagents.total_volume) + else + S.forceMove(get_turf(src)) + no_splash = TRUE + ..() //I tried to just put it in the allowed_containers list but @@ -399,6 +359,71 @@ else return ..() +/obj/item/weapon/grenade/chem_grenade/cryo // Intended for rare cryogenic mixes. Cools the area moderately upon detonation. + name = "cryo grenade" + desc = "A custom made cryogenic grenade. It rapidly cools its contents upon detonation." + icon_state = "cryog" + affected_area = 2 + ignition_temp = -100 + +/obj/item/weapon/grenade/chem_grenade/pyro // Intended for pyrotechnical mixes. Produces a small fire upon detonation, igniting potentially flammable mixtures. + name = "pyro grenade" + desc = "A custom made pyrotechnical grenade. It heats up and ignites its contents upon detonation." + icon_state = "pyrog" + origin_tech = "combat=4;engineering=4" + affected_area = 3 + ignition_temp = 500 // This is enough to expose a hotspot. + +/obj/item/weapon/grenade/chem_grenade/adv_release // Intended for weaker, but longer lasting effects. Could have some interesting uses. + name = "advanced release grenade" + desc = "A custom made advanced release grenade. It is able to be detonated more than once. Can be configured using a multitool." + icon_state = "timeg" + origin_tech = "combat=3;engineering=4" + var/unit_spread = 10 // Amount of units per repeat. Can be altered with a multitool. + +/obj/item/weapon/grenade/chem_grenade/adv_release/attackby(obj/item/I, mob/user, params) + if(ismultitool(I)) + switch(unit_spread) + if(0 to 24) + unit_spread += 5 + if(25 to 99) + unit_spread += 25 + else + unit_spread = 5 + to_chat(user, " You set the time release to [unit_spread] units per detonation.") + return + ..() + +/obj/item/weapon/grenade/chem_grenade/adv_release/prime() + if(stage != READY) + return + + var/total_volume = 0 + for(var/obj/item/weapon/reagent_containers/RC in beakers) + total_volume += RC.reagents.total_volume + if(!total_volume) + qdel(src) + qdel(nadeassembly) + return + var/fraction = unit_spread/total_volume + var/datum/reagents/reactants = new(unit_spread) + reactants.my_atom = src + for(var/obj/item/weapon/reagent_containers/RC in beakers) + RC.reagents.trans_to(reactants, RC.reagents.total_volume*fraction, threatscale, 1, 1) + chem_splash(get_turf(src), affected_area, list(reactants), ignition_temp, threatscale) + + if(nadeassembly) + var/mob/M = get_mob_by_ckey(assemblyattacher) + var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast) + var/turf/T = get_turf(src) + var/area/A = get_area(T) + message_admins("grenade primed by an assembly, attached by [key_name_admin(M)](?) (FLW) and last touched by [key_name_admin(last)](?) (FLW) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).") + log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z])") + else + addtimer(src, "prime", det_time) + var/turf/DT = get_turf(src) + var/area/DA = get_area(DT) + log_game("A grenade detonated at [DA.name] ([DT.x], [DT.y], [DT.z])") /obj/item/weapon/grenade/chem_grenade/metalfoam payload_name = "metal foam" diff --git a/code/game/objects/items/weapons/grenades/clowngrenade.dm b/code/game/objects/items/weapons/grenades/clowngrenade.dm index 0d24bd80a95..a9d6c20011a 100644 --- a/code/game/objects/items/weapons/grenades/clowngrenade.dm +++ b/code/game/objects/items/weapons/grenades/clowngrenade.dm @@ -50,24 +50,20 @@ */ /obj/item/weapon/grown/bananapeel/traitorpeel + trip_stun = 0 + trip_weaken = 7 + trip_tiles = 4 + trip_walksafe = FALSE + + trip_chance = 100 -/obj/item/weapon/grown/bananapeel/traitorpeel/Crossed(AM as mob|obj) - var/burned = rand(2,5) - if(istype(AM, /mob/living/carbon)) - var/mob/living/carbon/M = AM - if(ishuman(M)) - if(isobj(M:shoes)) - if((M:shoes.flags&NOSLIP) || (M:species.bodyflags & FEET_NOSLIP)) - return - else - to_chat(M, "Your feet feel like they're on fire!") - M.take_overall_damage(0, max(0, (burned - 2))) - - if(!istype(M, /mob/living/carbon/slime) && !isrobot(M)) - M.slip("banana peel!", 0, 7, 4) - M.take_organ_damage(2) // Was 5 -- TLE - M.take_overall_damage(0, burned) +/obj/item/weapon/grown/bananapeel/traitorpeel/on_trip(mob/living/carbon/human/H) + . = ..() + if(.) + to_chat(H, "Your feet feel like they're on fire!") + H.take_overall_damage(0, rand(2,8)) + H.take_organ_damage(2) // Was 5 -- TLE /obj/item/weapon/grown/bananapeel/traitorpeel/throw_impact(atom/hit_atom) var/burned = rand(1,3) diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm index 6aa33fc9714..36ef7167d85 100644 --- a/code/game/objects/items/weapons/grenades/flashbang.dm +++ b/code/game/objects/items/weapons/grenades/flashbang.dm @@ -37,7 +37,7 @@ var/mob/living/carbon/human/H = M var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes) if(E) - E.damage += 8 + E.take_damage(8, 1) if(M.flash_eyes(affect_silicon = 1)) M.Stun(max(10/distance, 3)) diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm index 88abd66913f..a5998591d08 100644 --- a/code/game/objects/items/weapons/grenades/grenade.dm +++ b/code/game/objects/items/weapons/grenades/grenade.dm @@ -32,7 +32,7 @@ /*/obj/item/weapon/grenade/afterattack(atom/target as mob|obj|turf|area, mob/user as mob) if(istype(target, /obj/item/weapon/storage)) return ..() // Trying to put it in a full container if(istype(target, /obj/item/weapon/gun/grenadelauncher)) return ..() - if((user.get_active_hand() == src) && (!active) && (clown_check(user)) && target.loc != src.loc) + if((user.is_in_active_hand(src)) && (!active) && (clown_check(user)) && target.loc != src.loc) to_chat(user, "You prime the [name]! [det_time/10] seconds!") active = 1 icon_state = initial(icon_state) + "_active" diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index f22c706d4f5..0b7850bba1f 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -104,6 +104,10 @@ /obj/item/weapon/restraints/handcuffs/cable/white color = COLOR_WHITE +/obj/item/weapon/restraints/handcuffs/cable/random/New() + color = pick(COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_WHITE, COLOR_PINK, COLOR_YELLOW, COLOR_CYAN) + ..() + /obj/item/weapon/restraints/handcuffs/alien icon_state = "handcuffAlien" diff --git a/code/game/objects/items/weapons/holy_weapons.dm b/code/game/objects/items/weapons/holy_weapons.dm index c4c4175d2fa..968aac67272 100644 --- a/code/game/objects/items/weapons/holy_weapons.dm +++ b/code/game/objects/items/weapons/holy_weapons.dm @@ -100,7 +100,6 @@ slot_flags = SLOT_BACK|SLOT_BELT block_chance = 30 sharp = 1 - edge = 1 hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") @@ -187,7 +186,6 @@ armour_penetration = 35 slot_flags = SLOT_BACK sharp = 1 - edge = 1 attack_verb = list("chopped", "sliced", "cut", "reaped") hitsound = 'sound/weapons/rapierhit.ogg' @@ -266,7 +264,6 @@ w_class = WEIGHT_CLASS_HUGE flags = NODROP | ABSTRACT sharp = 1 - edge = 1 attack_verb = list("sawed", "torn", "cut", "chopped", "diced") hitsound = 'sound/weapons/chainsaw.ogg' @@ -278,7 +275,6 @@ desc = "Used for absolutely hilarious sacrifices." hitsound = 'sound/items/bikehorn.ogg' sharp = 1 - edge = 1 attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut", "honked") /obj/item/weapon/nullrod/whip @@ -324,7 +320,6 @@ flags = ABSTRACT | NODROP w_class = WEIGHT_CLASS_HUGE sharp = 1 - edge = 1 /obj/item/weapon/nullrod/carp name = "carp-sie plushie" @@ -354,7 +349,6 @@ block_chance = 40 slot_flags = SLOT_BACK sharp = 0 - edge = 0 hitsound = "swing_hit" attack_verb = list("smashed", "slammed", "whacked", "thwacked") icon = 'icons/obj/weapons.dmi' @@ -368,7 +362,6 @@ w_class = WEIGHT_CLASS_HUGE desc = "They say fear is the true mind killer, but stabbing them in the head works too. Honour compels you to not sheathe it once drawn." sharp = 1 - edge = 1 slot_flags = null flags = HANDSLOW hitsound = 'sound/weapons/bladeslice.ogg' @@ -394,7 +387,6 @@ attack_verb = list("poked", "impaled", "pierced", "jabbed") hitsound = 'sound/weapons/bladeslice.ogg' sharp = 1 - edge = 1 /obj/item/weapon/nullrod/rosary name = "prayer beads" diff --git a/code/game/objects/items/weapons/implants/health.dm b/code/game/objects/items/weapons/implants/health.dm new file mode 100644 index 00000000000..7d7f5d89499 --- /dev/null +++ b/code/game/objects/items/weapons/implants/health.dm @@ -0,0 +1,11 @@ +/obj/item/weapon/implant/health + name = "health implant" + activated = FALSE + var/healthstring = "" + +/obj/item/weapon/implant/health/proc/sensehealth() + if(!imp_in) + return "ERROR" + else + healthstring = "[round(imp_in.getOxyLoss())] - [round(imp_in.getFireLoss())] - [round(imp_in.getToxLoss())] - [round(imp_in.getBruteLoss())]" + return healthstring \ No newline at end of file diff --git a/code/game/objects/items/weapons/implants/implant_death_alarm.dm b/code/game/objects/items/weapons/implants/implant_death_alarm.dm index da9560122ad..d4807a18701 100644 --- a/code/game/objects/items/weapons/implants/implant_death_alarm.dm +++ b/code/game/objects/items/weapons/implants/implant_death_alarm.dm @@ -35,7 +35,7 @@ var/mob/M = imp_in var/area/t = get_area(M) - var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null) + var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(src) a.follow_target = M switch(cause) @@ -52,7 +52,7 @@ else a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm") qdel(src) - + qdel(a) /obj/item/weapon/implant/death_alarm/emp_act(severity) //for some reason alarms stop going off in case they are emp'd, even without this diff --git a/code/game/objects/items/weapons/implants/implant_explosive.dm b/code/game/objects/items/weapons/implants/implant_explosive.dm index c02c3ba9fcc..158cab57d88 100644 --- a/code/game/objects/items/weapons/implants/implant_explosive.dm +++ b/code/game/objects/items/weapons/implants/implant_explosive.dm @@ -159,6 +159,11 @@ return 0 to_chat(imp_in, "Your dusting implant activates!") imp_in.visible_message("[imp_in] burns up in a flash!") + for(var/obj/item/I in imp_in.contents) + if(I == src) + continue + if(I.flags & NODROP) + qdel(I) imp_in.dust() /obj/item/weapon/implant/dust/emp_act(severity) diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm index 53183e21d63..28b97400449 100644 --- a/code/game/objects/items/weapons/implants/implantchair.dm +++ b/code/game/objects/items/weapons/implants/implantchair.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - /obj/machinery/implantchair name = "mindshield implanter" desc = "Used to implant occupants with mindshield implants." diff --git a/code/game/objects/items/weapons/implants/implantpad.dm b/code/game/objects/items/weapons/implants/implantpad.dm index 2e427638fd1..2106b0eead3 100644 --- a/code/game/objects/items/weapons/implants/implantpad.dm +++ b/code/game/objects/items/weapons/implants/implantpad.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - /obj/item/weapon/implantpad name = "implantpad" desc = "Used to modify implants." diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index 13bc85999e0..4bf40a3ae15 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -98,9 +98,7 @@ throw_range = 6 materials = list(MAT_METAL=12000) attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - no_embed = 1 sharp = 1 - edge = 1 /obj/item/weapon/kitchen/knife/suicide_act(mob/user) user.visible_message(pick("[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.", \ @@ -114,7 +112,6 @@ icon_state = "pknife" item_state = "knife" sharp = 0 - edge = 0 /obj/item/weapon/kitchen/knife/ritual name = "ritual knife" @@ -151,6 +148,13 @@ origin_tech = "materials=3;combat=4" attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut") +/obj/item/weapon/kitchen/knife/combat/cyborg + name = "cyborg knife" + icon = 'icons/obj/items_cyborg.dmi' + icon_state = "knife" + desc = "A cyborg-mounted plasteel knife. Extremely sharp and durable." + origin_tech = null + /obj/item/weapon/kitchen/knife/carrotshiv name = "carrot shiv" icon_state = "carrotshiv" diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index 1c1dbbd8363..afbea9b4c17 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -6,7 +6,6 @@ var/w_class_on = WEIGHT_CLASS_BULKY var/icon_state_on = "axe1" var/list/attack_verb_on = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - no_embed = 1 // Physically impossible for energy weapons to embed themselves into people, this should fix that. -- Dave hitsound = 'sound/weapons/blade1.ogg' // Probably more appropriate than the previous hitsound. -- Dave usesound = 'sound/weapons/blade1.ogg' toolspeed = 1 @@ -25,6 +24,7 @@ force = force_on throwforce = throwforce_on hitsound = 'sound/weapons/blade1.ogg' + throw_speed = 4 if(attack_verb_on.len) attack_verb = attack_verb_on if(!item_color) @@ -38,6 +38,7 @@ force = initial(force) throwforce = initial(throwforce) hitsound = initial(hitsound) + throw_speed = initial(throw_speed) if(attack_verb_on.len) attack_verb = list() icon_state = initial(icon_state) @@ -70,7 +71,6 @@ attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut") attack_verb_on = list() sharp = 1 - edge = 1 /obj/item/weapon/melee/energy/axe/suicide_act(mob/user) user.visible_message("[user] swings the [src.name] towards /his head! It looks like \he's trying to commit suicide.") @@ -85,11 +85,12 @@ throw_speed = 3 throw_range = 5 hitsound = "swing_hit" + embed_chance = 75 + embedded_impact_pain_multiplier = 10 armour_penetration = 35 origin_tech = "combat=3;magnets=4;syndicate=4" block_chance = 50 sharp = 1 - edge = 1 var/hacked = 0 var/blade_color @@ -121,7 +122,6 @@ force_on = 30 force = 18 //About as much as a spear sharp = 1 - edge = 1 hitsound = 'sound/weapons/circsawhit.ogg' icon = 'icons/obj/surgery.dmi' icon_state = "esaw_0" @@ -200,26 +200,28 @@ name = "energy blade" desc = "A concentrated beam of energy in the shape of a blade. Very stylish... and lethal." icon_state = "blade" - force = 30 - sharp = 1 - edge = 1 + force = 30 //Normal attacks deal esword damage + hitsound = 'sound/weapons/blade1.ogg' + active = 1 throwforce = 1//Throwing or dropping the item deletes it. throw_speed = 3 throw_range = 1 w_class = WEIGHT_CLASS_BULKY //So you can't hide it in your pocket or some such. - armour_penetration = 50 - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") var/datum/effect/system/spark_spread/spark_system + sharp = 1 //Most of the other special functions are handled in their own files. aka special snowflake code so kewl /obj/item/weapon/melee/energy/blade/New() + ..() spark_system = new /datum/effect/system/spark_spread() spark_system.set_up(5, 0, src) spark_system.attach(src) -/obj/item/weapon/melee/energy/blade/dropped() - ..() - qdel(src) - /obj/item/weapon/melee/energy/blade/attack_self(mob/user) return + +/obj/item/weapon/melee/energy/blade/hardlight + name = "hardlight blade" + desc = "An extremely sharp blade made out of hard light. Packs quite a punch." + icon_state = "lightblade" + item_state = "lightblade" \ No newline at end of file diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm index f4ccf9fac65..22f4393c94f 100644 --- a/code/game/objects/items/weapons/melee/misc.dm +++ b/code/game/objects/items/weapons/melee/misc.dm @@ -32,7 +32,6 @@ block_chance = 50 armour_penetration = 75 sharp = 1 - edge = 1 origin_tech = "combat=5" attack_verb = list("lunged at", "stabbed") hitsound = 'sound/weapons/rapierhit.ogg' diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm index 93144dc6c17..b7e60411bc5 100644 --- a/code/game/objects/items/weapons/mop.dm +++ b/code/game/objects/items/weapons/mop.dm @@ -1,12 +1,10 @@ -#define is_cleanable(A) (istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/rune)) - /obj/item/weapon/mop desc = "The world of janitalia wouldn't be complete without a mop." name = "mop" icon = 'icons/obj/janitor.dmi' icon_state = "mop" - force = 3.0 - throwforce = 5.0 + force = 3 + throwforce = 5 throw_speed = 3 throw_range = 7 w_class = WEIGHT_CLASS_NORMAL @@ -43,23 +41,25 @@ to_chat(user, "Your mop is dry!") return - var/turf/simulated/turf = A - if(is_cleanable(A)) - turf = A.loc - A = null + var/turf/simulated/T = get_turf(A) - if(istype(turf)) - user.visible_message("[user] begins to clean \the [turf] with [src].", "You begin to clean \the [turf] with [src]...") + if(istype(A, /obj/item/weapon/reagent_containers/glass/bucket) || istype(A, /obj/structure/janitorialcart)) + return - if(do_after(user, src.mopspeed, target = turf)) + if(istype(T)) + user.visible_message("[user] begins to clean [T] with [src].", "You begin to clean [T] with [src]...") + + if(do_after(user, src.mopspeed, target = T)) to_chat(user, "You finish mopping.") - clean(turf) + clean(T) /obj/effect/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/mop) || istype(I, /obj/item/weapon/soap)) return - ..() + else + return ..() + /obj/item/weapon/mop/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J) J.put_in_cart(src, user) @@ -75,22 +75,47 @@ /obj/item/weapon/mop/advanced desc = "The most advanced tool in a custodian's arsenal. Just think of all the viscera you will clean up with this!" name = "advanced mop" - mopcap = 15 + mopcap = 10 icon_state = "advmop" - item_state = "mop" //meh will do for now until TG makes one + item_state = "mop" origin_tech = "materials=3;engineering=3" force = 6 throwforce = 8 throw_range = 4 - mopspeed = 10 + mopspeed = 20 + var/refill_enabled = TRUE //Self-refill toggle for when a janitor decides to mop with something other than water. + var/refill_rate = 1 //Rate per process() tick mop refills itself + var/refill_reagent = "water" //Determins what reagent to use for refilling, just in case someone wanted to make a HOLY MOP OF PURGING + +/obj/item/weapon/mop/advanced/New() + ..() + processing_objects.Add(src) + +/obj/item/weapon/mop/advanced/attack_self(mob/user) + refill_enabled = !refill_enabled + if(refill_enabled) + processing_objects.Add(src) + else + processing_objects.Remove(src) + to_chat(user, "You set the condenser switch to the '[refill_enabled ? "ON" : "OFF"]' position.") + playsound(user, 'sound/machines/click.ogg', 30, 1) + +/obj/item/weapon/mop/advanced/process() + + if(reagents.total_volume < mopcap) + reagents.add_reagent(refill_reagent, refill_rate) + +/obj/item/weapon/mop/advanced/examine(mob/user) + ..() + to_chat(user, "The condenser switch is set to [refill_enabled ? "ON" : "OFF"].") + +/obj/item/weapon/mop/advanced/Destroy() + if(refill_enabled) + processing_objects.Remove(src) + return ..() + /obj/item/weapon/mop/advanced/cyborg - mopcap = 40 -/obj/item/weapon/mop/advanced/cyborg/New() - ..() - reagents.add_reagent("water", mopcap) - -/obj/item/weapon/mop/advanced/cyborg/examine(mob/user) - ..(user) - to_chat(user, "The mop's water tank has [round(reagents.get_reagent_amount("water"))] units of water left.") +/obj/item/weapon/mop/advanced/cyborg/janicart_insert(mob/user, obj/structure/janitorialcart/J) + return \ No newline at end of file diff --git a/code/game/objects/items/weapons/powerfist.dm b/code/game/objects/items/weapons/powerfist.dm index 218fe47ed6b..ec6f285acd1 100644 --- a/code/game/objects/items/weapons/powerfist.dm +++ b/code/game/objects/items/weapons/powerfist.dm @@ -26,17 +26,17 @@ to_chat(user, "You'll need to get closer to see any more.") return if(tank) - to_chat(user, "\icon [tank] It has \the [tank] mounted onto it.") + to_chat(user, "[bicon(tank)] It has [tank] mounted onto it.") /obj/item/weapon/melee/powerfist/attackby(obj/item/weapon/W, mob/user, params) if(istype(W, /obj/item/weapon/tank)) if(!tank) var/obj/item/weapon/tank/IT = W if(IT.volume <= 3) - to_chat(user, "\The [IT] is too small for \the [src].") + to_chat(user, "[IT] is too small for [src].") return updateTank(W, 0, user) - else if(istype(W, /obj/item/weapon/wrench)) + else if(iswrench(W)) switch(fisto_setting) if(1) fisto_setting = 2 @@ -45,8 +45,8 @@ if(3) fisto_setting = 1 playsound(loc, W.usesound, 50, 1) - to_chat(user, "You tweak \the [src]'s piston valve to [fisto_setting].") - else if(istype(W, /obj/item/weapon/screwdriver)) + to_chat(user, "You tweak [src]'s piston valve to [fisto_setting].") + else if(isscrewdriver(W)) if(tank) updateTank(tank, 1, user) @@ -54,29 +54,29 @@ /obj/item/weapon/melee/powerfist/proc/updateTank(obj/item/weapon/tank/thetank, removing = 0, mob/living/carbon/human/user) if(removing) if(!tank) - to_chat(user, "\The [src] currently has no tank attached to it.") + to_chat(user, "[src] currently has no tank attached to it.") return - to_chat(user, "You detach \the [thetank] from \the [src].") + to_chat(user, "You detach [thetank] from [src].") tank.forceMove(get_turf(user)) user.put_in_hands(tank) tank = null if(!removing) if(tank) - to_chat(user, "\The [src] already has a tank.") + to_chat(user, "[src] already has a tank.") return if(!user.unEquip(thetank)) return - to_chat(user, "You hook \the [thetank] up to \the [src].") + to_chat(user, "You hook [thetank] up to [src].") tank = thetank thetank.forceMove(src) /obj/item/weapon/melee/powerfist/attack(mob/living/target, mob/living/user) if(!tank) - to_chat(user, "\The [src] can't operate without a source of gas!") + to_chat(user, "[src] can't operate without a source of gas!") return if(tank && !tank.air_contents.remove(gasperfist * fisto_setting)) - to_chat(user, "\The [src]'s piston-ram lets out a weak hiss, it needs more gas!") + to_chat(user, "[src]'s piston-ram lets out a weak hiss, it needs more gas!") playsound(loc, 'sound/effects/refill.ogg', 50, 1) return @@ -90,8 +90,8 @@ playsound(loc, 'sound/weapons/genhit2.ogg', 50, 1) var/atom/throw_target = get_edge_target_turf(target, get_dir(src, get_step_away(target, src))) - spawn(0) - target.throw_at(throw_target, 5 * fisto_setting, 0.2) + + target.throw_at(throw_target, 5 * fisto_setting, 0.2) add_logs(user, target, "power fisted", src) diff --git a/code/game/objects/items/weapons/rpd.dm b/code/game/objects/items/weapons/rpd.dm new file mode 100644 index 00000000000..de5cb54f722 --- /dev/null +++ b/code/game/objects/items/weapons/rpd.dm @@ -0,0 +1,262 @@ +/*Contains: + Rapid Pipe Dispenser +*/ + +#define SIMPLE_CAP 20 +#define SUPPLY_CAP 32 +#define SCRUBBERS_CAP 33 +#define HE_EXCHANGER 17 +#define CONNECTOR 4 +#define UNARY_VENT 7 +#define PASSIVE_VENT 37 +#define GAS_SCRUBBER 10 +#define INJECTOR 34 +#define GAS_SENSOR 98 +#define METER 99 +#define DISPOSALS_JUNCTION 2 +#define ATMOS_MODE 1 +#define DISPOSALS_MODE 2 +#define ROTATION_MODE 3 +#define FLIP_MODE 4 +#define DELETE_MODE 5 +#define ATMOS_PIPING 1 +#define SUPPLY_PIPING 2 +#define SCRUBBERS_PIPING 3 +#define DEVICES 4 +#define HEAT_PIPING 5 + +/obj/item/weapon/rpd + name = "rapid pipe dispenser" + desc = "This device can rapidly dispense atmospherics and disposals piping, manipulate loose piping, and recycle any detached pipes it is applied to." + icon = 'icons/obj/tools.dmi' + icon_state = "rpd" + opacity = 0 + density = 0 + anchored = 0 + flags = CONDUCT + force = 10 + throwforce = 10 + throw_speed = 3 + throw_range = 5 + w_class = WEIGHT_CLASS_NORMAL + materials = list(MAT_METAL = 30000, MAT_GLASS = 5000) + origin_tech = "engineering=4;materials=2" + var/datum/effect/system/spark_spread/spark_system + var/lastused + var/iconrotation = 0 //used to orient icons and pipes + var/mode = 1 //Disposals, atmospherics, etc. + var/pipetype = 1//For nanoUI menus + var/whatpipe = 0 //What kind of pipe is it? See code/game/machinery/pipe/construction.dm for a list of defines + var/whatdpipe = 0 //What kind of disposals pipe is it? See code/game/machinery/pipe/dispenser.dm for a list of defines + var/spawndelay = 4 //How long should we have to wait between dispensing pipes? + var/walldelay = 40 //How long should drilling into a wall take? + +/obj/item/weapon/rpd/New() + ..() + spark_system = new /datum/effect/system/spark_spread() + spark_system.set_up(1, 0, src) + spark_system.attach(src) + +//Procs + +/obj/item/weapon/rpd/proc/Activaterpd(delay) + playsound(loc, "sound/machines/click.ogg", 50, 1) + if(prob(15)) + spark_system.start() + if(delay) + lastused = world.time + +/obj/item/weapon/rpd/proc/Manipulatepipes(subject, atmosverb, disposalsverb) + if(istype(subject, /obj/item/pipe)) + call(subject, atmosverb)() + else if(istype(subject, /obj/structure/disposalconstruct/)) + call(subject, disposalsverb)() + +//Lists of things + +var/list/pipelist = list( //id refers to the pipe_type found in construction.dm, icon refers to the name of the icon state in icons/obj/pipe-item.dmi. Icons are made with the asset-cache + list("pipename" = "Straight pipe", "id" = 0, "category" = ATMOS_PIPING, "orientations" = 2, "icon" = "simple"), + list("pipename" = "Bent pipe", "id" = 1, "category" = ATMOS_PIPING, "orientations" = 4, "icon" = "simple", "bendy" = 1), + list("pipename" = "T-manifold", "id" = 5, "category" = ATMOS_PIPING, "orientations" = 4, "icon" = "manifold"), + list("pipename" = "4-way manifold", "id" = 19, "category" = ATMOS_PIPING, "orientations" = 1, "icon" = "manifold4w"), + list("pipename" = "Pipe cap", "id" = 20, "category" = ATMOS_PIPING, "orientations" = 4, "icon" = "cap"), + list("pipename" = "Manual valve", "id" = 8, "category" = ATMOS_PIPING, "orientations" = 2, "icon" = "mvalve"), + list("pipename" = "Digital valve", "id" = 35, "category" = ATMOS_PIPING, "orientations" = 2, "icon" = "dvalve"), + list("pipename" = "Manual T-valve", "id" = 18, "category" = ATMOS_PIPING, "orientations" = 4, "icon" = "tvalve"), + list("pipename" = "Digital T-valve", "id" = 38, "category" = ATMOS_PIPING, "orientations" = 4, "icon" = "dtvalve"), + list("pipename" = "Straight supply pipe", "id" = 24, "category" = SUPPLY_PIPING, "orientations" = 2, "icon" = "simple"), + list("pipename" = "Bent supply pipe", "id" = 25, "category" = SUPPLY_PIPING, "orientations" = 4, "icon" = "simple", "bendy" = 1), + list("pipename" = "Supply T-manifold", "id" = 28, "category" = SUPPLY_PIPING, "orientations" = 4, "icon" = "manifold"), + list("pipename" = "4-way supply manifold", "id" = 30, "category" = SUPPLY_PIPING, "orientations" = 1, "icon" = "manifold4w"), + list("pipename" = "Supply pipe cap", "id" = 32, "category" = SUPPLY_PIPING, "orientations" = 4, "icon" = "cap"), + list("pipename" = "Straight scrubbers pipe", "id" = 26, "category" = SCRUBBERS_PIPING, "orientations" = 2, "icon" = "simple"), + list("pipename" = "Bent scrubbers pipe", "id" = 27, "category" = SCRUBBERS_PIPING, "orientations" = 4, "icon" = "simple", "bendy" = 1), + list("pipename" = "Scrubbers T-manifold", "id" = 29, "category" = SCRUBBERS_PIPING, "orientations" = 4, "icon" = "manifold"), + list("pipename" = "4-way scrubbers manifold", "id" = 31, "category" = SCRUBBERS_PIPING, "orientations" = 1, "icon" = "manifold4w"), + list("pipename" = "Scrubbers pipe cap", "id" = 33, "category" = SCRUBBERS_PIPING, "orientations" = 4, "icon" = "cap"), + list("pipename" = "Universal pipe adapter", "id" = 23, "category" = DEVICES, "orientations" = 2, "icon" = "universal"), + list("pipename" = "Connector", "id" = 4, "category" = DEVICES, "orientations" = 4, "icon" = "connector"), + list("pipename" = "Unary vent", "id" = 7, "category" = DEVICES, "orientations" = 4, "icon" = "uvent"), + list("pipename" = "Scrubber", "id" = 10, "category" = DEVICES, "orientations" = 4, "icon" = "scrubber"), + list("pipename" = "Gas pump", "id" = 9, "category" = DEVICES, "orientations" = 4, "icon" = "pump"), + list("pipename" = "Volume pump", "id" = 16, "category" = DEVICES, "orientations" = 4, "icon" = "volumepump"), + list("pipename" = "Passive gate", "id" = 15, "category" = DEVICES, "orientations" = 4, "icon" = "passivegate"), + list("pipename" = "Gas filter", "id" = 13, "category" = DEVICES, "orientations" = 4, "icon" = "filter"), + list("pipename" = "Gas mixer", "id" = 14, "category" = DEVICES, "orientations" = 4, "icon" = "mixer"), + list("pipename" = "Gas sensor", "id" = 98, "category" = DEVICES, "orientations" = 1, "icon" = "sensor"), + list("pipename" = "Meter", "id" = 99, "category" = DEVICES, "orientations" = 1, "icon" = "meter"), + list("pipename" = "Passive vent", "id" = 37, "category" = DEVICES, "orientations" = 4, "icon" = "passive vent"), + list("pipename" = "Dual-port vent pump", "id" = 36, "category" = DEVICES, "orientations" = 2, "icon" = "dual-port vent"), + list("pipename" = "Air injector", "id" = 34, "category" = DEVICES, "orientations" = 4, "icon" = "injector"), + list("pipename" = "Straight HE pipe", "id" = 2, "category" = HEAT_PIPING, "orientations" = 2, "icon" = "he"), + list("pipename" = "Bent HE pipe", "id" = 3, "category" = HEAT_PIPING, "orientations" = 4, "icon" = "he", "bendy" = 1), + list("pipename" = "Junction", "id" = 6, "category" = HEAT_PIPING, "orientations" = 4, "icon" = "junction"), + list("pipename" = "Heat exchanger", "id" = 17, "category" = HEAT_PIPING, "orientations" = 4, "icon" = "heunary")) +var/list/dpipelist = list( + list("pipename" = "Straight pipe", "id" = 0, "orientations" = 2, "icon" = "conpipe-s"), + list("pipename" = "Bent pipe", "id" = 1, "orientations" = 4, "icon" = "conpipe-c"), + list("pipename" = "Junction", "id" = 2, "orientations" = 4, "icon" = "conpipe-j1"), + list("pipename" = "Y-junction", "id" = 4, "orientations" = 4, "icon" = "conpipe-y"), + list("pipename" = "Trunk", "id" = 5, "orientations" = 4, "icon" = "conpipe-t"), + list("pipename" = "Bin", "id" = 6, "orientations" = 1, "icon" = "condisposal"), + list("pipename" = "Outlet", "id" = 7, "orientations" = 4, "icon" = "outlet"), + list("pipename" = "Chute", "id" = 8, "orientations" = 4, "icon" = "intake")) +var/list/mainmenu = list( + list("category" = "Atmospherics", "mode" = 1, "icon" = "wrench"), + list("category" = "Disposals", "mode" = 2, "icon" = "recycle"), + list("category" = "Rotate", "mode" = 3, "icon" = "rotate-right"), + list("category" = "Flip", "mode" = 4, "icon" = "exchange"), + list("category" = "Recycle", "mode" = 5, "icon" = "trash")) +var/list/pipemenu = list( + list("pipecategory" = "Normal", "pipemode" = 1), + list("pipecategory" = "Supply", "pipemode" = 2), + list("pipecategory" = "Scrubber", "pipemode" = 3), + list("pipecategory" = "Devices", "pipemode" = 4), + list("pipecategory" = "Heat exchange", "pipemode" = 5)) + +//NanoUI stuff + +/obj/item/weapon/rpd/attack_self(mob/user) + ui_interact(user) + +/obj/item/weapon/rpd/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = inventory_state) + ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "rpd.tmpl", "[name]", 400, 650, state = state) + ui.open() + ui.set_auto_update(1) + +/obj/item/weapon/rpd/ui_data(mob/user, ui_key = "main", datum/topic_state/state = inventory_state) + var/data[0] + data["dpipelist"] = dpipelist + data["iconrotation"] = iconrotation + data["mainmenu"] = mainmenu + data["mode"] = mode + data["pipelist"] = pipelist + data["pipemenu"] = pipemenu + data["pipetype"] = pipetype + data["whatdpipe"] = whatdpipe + data["whatpipe"] = whatpipe + return data + +/obj/item/weapon/rpd/Topic(href, href_list, nowindow, state) + ..() + if(href_list["iconrotation"]) + iconrotation = text2num(sanitize(href_list["iconrotation"])) + else if(href_list["whatpipe"]) + whatpipe = text2num(sanitize(href_list["whatpipe"])) + else if(href_list["whatdpipe"]) + whatdpipe = text2num(sanitize(href_list["whatdpipe"])) + else if(href_list["pipetype"]) + pipetype = text2num(sanitize(href_list["pipetype"])) + else if(href_list["mode"]) + mode = text2num(sanitize(href_list["mode"])) + else + return + nanomanager.update_uis(src) + +//What the RPD actually does + +/obj/item/weapon/rpd/afterattack(atom/target, mob/user, proximity) + ..() + var/turf/T = get_turf(target) + if(src.loc != user || ismob(target) || istype(target, /obj/structure/window) || !proximity || world.time < lastused + spawndelay) + return + if(mode == ATMOS_MODE && !istype(T, /turf/simulated/shuttle)) //No pipes on shuttles nerds + if(istype(T, /turf/simulated/wall)) //Drilling into walls takes time + playsound(loc, "sound/weapons/circsawhit.ogg", 50, 1) + user.visible_message("[user] starts drilling a hole in [T]...", "You start drilling a hole in [T]...", "You hear a drill.") + if(!do_after(user, walldelay, target = T)) + return + user.visible_message("[user] finishes drilling a hole in [T]!", "You finish drilling a hole in [T]!", "You hear clanking.") + var/obj/item/pipe/P + if(whatpipe == GAS_SENSOR) + P = new /obj/item/pipe_gsensor(T) + else if(whatpipe == METER) + P = new /obj/item/pipe_meter(T) + else + P = new(T, pipe_type = whatpipe, dir = user.dir) + if(iconrotation == 0 && P.is_bent_pipe()) //Automatic rotation of dispensed pipes + P.dir = turn(user.dir, 135) + else if(iconrotation == 0 && P.pipe_type in list(CONNECTOR, UNARY_VENT, GAS_SCRUBBER, HE_EXCHANGER, SIMPLE_CAP, SUPPLY_CAP, SCRUBBERS_CAP, INJECTOR, PASSIVE_VENT)) //Some pipes dispense oppositely to what you'd expect, but we don't want to do anything if they selected a direction + P.flip() + else if(iconrotation != 0 && P.is_bent_pipe()) //If they selected a rotation and the pipe is bent + P.dir = turn(iconrotation, -45) + else if(iconrotation != 0) + P.dir = iconrotation + to_chat(user, "[src] rapidly dispenses [P]!") + Activaterpd(1) + else if(mode == DISPOSALS_MODE && !istype(T, /turf/simulated/shuttle)) + if(istype(T, /turf/simulated/wall)) //No disposals pipes on walls + to_chat(user, "That type of pipe won't fit on [T]!") + return + var/obj/structure/disposalconstruct/P = new(T) //Now we make the pipe + P.dir = iconrotation + P.ptype = whatdpipe + if(iconrotation == 0) //Automatic rotation + P.dir = user.dir + if(iconrotation == 0 && whatdpipe != DISPOSALS_JUNCTION) //Disposals pipes are in the opposite direction to atmos pipes, so we need to flip them. Junctions don't have this quirk though + P.flip() + P.update() + to_chat(user, "[src] rapidly dispenses [P]!") + Activaterpd(1) + else if(mode == ROTATION_MODE) + for(var/obj/W in T) + Manipulatepipes(W, /obj/item/pipe/verb/rotate, /obj/structure/disposalconstruct/verb/rotate) + else if(mode == FLIP_MODE) + for(var/obj/W in T) + Manipulatepipes(W, /obj/item/pipe/verb/flip, /obj/structure/disposalconstruct/verb/flip) + else if(mode == DELETE_MODE) + var/eaten + for(var/obj/W in T) + if(istype(W, /obj/item/pipe) || istype(W, /obj/item/pipe_meter) || istype(W, /obj/item/pipe_gsensor) || istype(W, /obj/structure/disposalconstruct) && !W.anchored) + QDEL_NULL(W) + eaten = TRUE + if(eaten) + to_chat(user, "[src] sucks up the loose pipes on [T].") + Activaterpd() + else + to_chat(user, "There were no loose pipes on [T].") + +#undef SIMPLE_CAP +#undef SUPPLY_CAP +#undef SCRUBBERS_CAP +#undef HE_EXCHANGER +#undef CONNECTOR +#undef UNARY_VENT +#undef PASSIVE_VENT +#undef GAS_SCRUBBER +#undef INJECTOR +#undef GAS_SENSOR +#undef METER +#undef DISPOSALS_JUNCTION +#undef ATMOS_MODE +#undef DISPOSALS_MODE +#undef ROTATION_MODE +#undef FLIP_MODE +#undef DELETE_MODE +#undef ATMOS_PIPING +#undef SUPPLY_PIPING +#undef SCRUBBERS_PIPING +#undef DEVICES +#undef HEAT_PIPING diff --git a/code/game/objects/items/weapons/scissors.dm b/code/game/objects/items/weapons/scissors.dm index e5bd30fe609..ef49db0e449 100644 --- a/code/game/objects/items/weapons/scissors.dm +++ b/code/game/objects/items/weapons/scissors.dm @@ -5,7 +5,6 @@ item_state = "scissor" force = 5 sharp = 1 - edge = 1 w_class = WEIGHT_CLASS_SMALL hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("slices", "cuts", "stabs", "jabs") @@ -39,14 +38,14 @@ for(var/i in facial_hair_styles_list) var/datum/sprite_accessory/facial_hair/tmp_facial = facial_hair_styles_list[i] if(C.species.name in tmp_facial.species_allowed) //If the species is allowed to have the style, add the style to the list. Or, if the character has a prosthetic head, give them the human hair styles. - if(C.species.flags & ALL_RPARTS) //If the character is of a species that can have full body prosthetics and their head doesn't suport human hair 'wigs', don't add the style to the list. + if(C.species.bodyflags & ALL_RPARTS) //If the character is of a species that can have full body prosthetics and their head doesn't suport human hair 'wigs', don't add the style to the list. if(robohead.is_monitor) to_chat(user, "You are unable to find anything on [H]'s face worth cutting. How disappointing.") return continue //If the head DOES support human hair wigs, make sure they don't get monitor-oriented styles. species_facial_hair += i else - if(C.species.flags & ALL_RPARTS) //If the target is of a species that can have prosthetic heads, and the head supports human hair 'wigs' AND the hair-style is human-suitable, add it to the list. + if(C.species.bodyflags & ALL_RPARTS) //If the target is of a species that can have prosthetic heads, and the head supports human hair 'wigs' AND the hair-style is human-suitable, add it to the list. if(!robohead.is_monitor) if("Human" in tmp_facial.species_allowed) species_facial_hair += i @@ -62,14 +61,14 @@ for(var/i in hair_styles_list) var/datum/sprite_accessory/hair/tmp_hair = hair_styles_list[i] if(C.species.name in tmp_hair.species_allowed) //If the species is allowed to have the style, add the style to the list. Or, if the character has a prosthetic head, give them the human facial hair styles. - if(C.species.flags & ALL_RPARTS) //If the character is of a species that can have full body prosthetics and their head doesn't suport human hair 'wigs', don't add the style to the list. + if(C.species.bodyflags & ALL_RPARTS) //If the character is of a species that can have full body prosthetics and their head doesn't suport human hair 'wigs', don't add the style to the list. if(robohead.is_monitor) to_chat(user, "You are unable to find anything on [H]'s head worth cutting. How disappointing.") return continue //If the head DOES support human hair wigs, make sure they don't get monitor-oriented styles. species_hair += i else - if(C.species.flags & ALL_RPARTS) //If the target is of a species that can have prosthetic heads, and the head supports human hair 'wigs' AND the hair-style is human-suitable, add it to the list. + if(C.species.bodyflags & ALL_RPARTS) //If the target is of a species that can have prosthetic heads, and the head supports human hair 'wigs' AND the hair-style is human-suitable, add it to the list. if(!robohead.is_monitor) if("Human" in tmp_hair.species_allowed) species_hair += i @@ -95,7 +94,6 @@ user.visible_message("[user] finishes cutting [M]'s hair!") /obj/item/weapon/scissors/safety //Totally safe, I assure you. - name = "safety scissors" desc = "The blades of the scissors appear to be made of some sort of ultra-strong metal alloy." force = 18 //same as e-daggers var/is_cutting = 0 //to prevent spam clicking this for huge accumulation of losebreath. @@ -118,10 +116,9 @@ playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1) user.visible_message("[user] abruptly stops cutting [M]'s hair and slices their throat!", "You stop cutting [M]'s hair and slice their throat!") //Just a little off the top. H.AdjustLoseBreath(10) //30 Oxy damage over time - H.apply_damage(18, BRUTE, "head", sharp =1, edge =1, used_weapon = "scissors") - var/turf/location = get_turf(H) - if(istype(location, /turf/simulated)) - location.add_blood(H) + H.apply_damage(18, BRUTE, "head", sharp =1, used_weapon = "scissors") + var/turf/location = get_turf(src) + H.add_splatter_floor(location) H.bloody_hands(H) H.bloody_body(H) var/mob/living/carbon/human/U = user diff --git a/code/game/objects/items/weapons/shards.dm b/code/game/objects/items/weapons/shards.dm index 554347224eb..7b87deadb3e 100644 --- a/code/game/objects/items/weapons/shards.dm +++ b/code/game/objects/items/weapons/shards.dm @@ -4,12 +4,11 @@ name = "glass shard" icon = 'icons/obj/shards.dmi' icon_state = "large" - sharp = 1 - edge = 1 + sharp = TRUE desc = "Could probably be used as ... a throwing weapon?" w_class = WEIGHT_CLASS_TINY - force = 5.0 - throwforce = 10.0 + force = 5 + throwforce = 10 item_state = "shard-glass" materials = list(MAT_GLASS=MINERAL_MATERIAL_AMOUNT) attack_verb = list("stabbed", "slashed", "sliced", "cut") @@ -21,19 +20,18 @@ return (BRUTELOSS) /obj/item/weapon/shard/New() - src.icon_state = pick("large", "medium", "small") - switch(src.icon_state) - if("small") - src.pixel_x = rand(-12, 12) - src.pixel_y = rand(-12, 12) - if("medium") - src.pixel_x = rand(-8, 8) - src.pixel_y = rand(-8, 8) - if("large") - src.pixel_x = rand(-5, 5) - src.pixel_y = rand(-5, 5) - else ..() + icon_state = pick("large", "medium", "small") + switch(icon_state) + if("small") + pixel_x = rand(-12, 12) + pixel_y = rand(-12, 12) + if("medium") + pixel_x = rand(-8, 8) + pixel_y = rand(-8, 8) + if("large") + pixel_x = rand(-5, 5) + pixel_y = rand(-5, 5) /obj/item/weapon/shard/afterattack(atom/movable/AM, mob/user, proximity) if(!proximity || !(src in user)) @@ -54,7 +52,7 @@ H.updatehealth() /obj/item/weapon/shard/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/weapon/weldingtool)) + if(iswelder(I)) var/obj/item/weapon/weldingtool/WT = I if(WT.remove_fuel(0, user)) var/obj/item/stack/sheet/glass/NG = new (user.loc) @@ -66,7 +64,8 @@ G.attackby(NG, user) to_chat(user, "You add the newly-formed glass to the stack. It now contains [NG.amount] sheet\s.") qdel(src) - ..() + else + return ..() /obj/item/weapon/shard/Crossed(AM as mob|obj) if(isliving(AM)) @@ -74,7 +73,7 @@ if(M.incorporeal_move || M.flying || M.throwing)//you are incorporal or flying or being thrown ..no shard stepping! return to_chat(M, "You step on \the [src]!") - playsound(src.loc, 'sound/effects/glass_step.ogg', 50, 1) // not sure how to handle metal shards with sounds + playsound(loc, 'sound/effects/glass_step.ogg', 50, 1) // not sure how to handle metal shards with sounds if(ishuman(M)) var/mob/living/carbon/human/H = M @@ -90,26 +89,40 @@ H.updatehealth() ..() -// Shrapnel +/obj/item/weapon/shard/plasma + name = "plasma shard" + desc = "A shard of plasma glass. Considerably tougher then normal glass shards. Apparently not tough enough to be a window." + force = 8 + throwforce = 15 + icon_state = "plasmalarge" + sharp = TRUE -/obj/item/weapon/shard/shrapnel - name = "shrapnel" - icon = 'icons/obj/shards.dmi' - icon_state = "shrapnellarge" - desc = "A bunch of tiny bits of shattered metal." +/obj/item/weapon/shard/plasma/New() + ..() + icon_state = pick("plasmalarge", "plasmamedium", "plasmasmall") + switch(icon_state) + if("plasmasmall") + pixel_x = rand(-12, 12) + pixel_y = rand(-12, 12) + if("plasmamedium") + pixel_x = rand(-8, 8) + pixel_y = rand(-8, 8) + if("plasmalarge") + pixel_x = rand(-5, 5) + pixel_y = rand(-5, 5) -/obj/item/weapon/shard/shrapnel/New() - - src.icon_state = pick("shrapnellarge", "shrapnelmedium", "shrapnelsmall") - switch(src.icon_state) - if("shrapnelsmall") - src.pixel_x = rand(-12, 12) - src.pixel_y = rand(-12, 12) - if("shrapnelmedium") - src.pixel_x = rand(-8, 8) - src.pixel_y = rand(-8, 8) - if("shrapnellarge") - src.pixel_x = rand(-5, 5) - src.pixel_y = rand(-5, 5) - else - return +/obj/item/weapon/shard/plasma/attackby(obj/item/weapon/W, mob/user, params) + if(iswelder(W)) + var/obj/item/weapon/weldingtool/WT = W + if(WT.remove_fuel(0, user)) + var/obj/item/stack/sheet/plasmaglass/NG = new (user.loc) + for(var/obj/item/stack/sheet/plasmaglass/G in user.loc) + if(G == NG) + continue + if(G.amount >= G.max_amount) + continue + G.attackby(NG, user, params) + to_chat(usr, "You add the newly-formed plasma glass to the stack. It now contains [NG.amount] sheets.") + qdel(src) + else + return ..() \ No newline at end of file diff --git a/code/game/objects/items/weapons/soap.dm b/code/game/objects/items/weapons/soap.dm index e4183b5bafd..d7db1e64185 100644 --- a/code/game/objects/items/weapons/soap.dm +++ b/code/game/objects/items/weapons/soap.dm @@ -9,8 +9,51 @@ throw_speed = 4 throw_range = 20 discrete = 1 + + trip_stun = 4 + trip_weaken = 2 + trip_chance = 100 + trip_walksafe = FALSE + trip_verb = TV_SLIP + var/cleanspeed = 50 //slower than mop + + +/obj/item/weapon/soap/afterattack(atom/target, mob/user, proximity) + if(!proximity) return + //I couldn't feasibly fix the overlay bugs caused by cleaning items we are wearing. + //So this is a workaround. This also makes more sense from an IC standpoint. ~Carn + if(user.client && (target in user.client.screen)) + to_chat(user, "You need to take that [target.name] off before cleaning it.") + else if(target == user && user.a_intent == INTENT_GRAB && ishuman(target)) + var/mob/living/carbon/human/muncher = user + if(muncher && muncher.get_species() == "Drask") + to_chat(user, "You take a bite of the [src.name]. Delicious!") + playsound(user.loc, 'sound/items/eatfood.ogg', 50, 0) + user.nutrition += 2 + else if(istype(target,/obj/effect/decal/cleanable)) + user.visible_message("[user] begins to scrub \the [target.name] out with [src].") + if(do_after(user, src.cleanspeed, target = target) && target) + to_chat(user, "You scrub \the [target.name] out.") + qdel(target) + else + user.visible_message("[user] begins to clean \the [target.name] with [src].") + if(do_after(user, src.cleanspeed, target = target)) + to_chat(user, "You clean \the [target.name].") + var/obj/effect/decal/cleanable/C = locate() in target + qdel(C) + target.clean_blood() + if(istype(target, /turf/simulated)) + var/turf/simulated/T = target + T.dirt = 0 + +/obj/item/weapon/soap/attack(mob/target as mob, mob/user as mob) + if(target && user && ishuman(target) && ishuman(user) && !target.stat && !user.stat && user.zone_sel &&user.zone_sel.selecting == "mouth" ) + user.visible_message("\the [user] washes \the [target]'s mouth out with [src.name]!") + return + ..() + /obj/item/weapon/soap/nanotrasen desc = "A Nanotrasen brand bar of soap. Smells of plasma." icon_state = "soapnt" @@ -38,7 +81,7 @@ else if(istype(target,/mob/living/carbon)) for(var/obj/item/carried_item in target.contents) if(!istype(carried_item, /obj/item/weapon/implant))//If it's not an implant. - carried_item.add_blood(target)//Oh yes, there will be blood... + carried_item.add_mob_blood(target)//Oh yes, there will be blood... var/mob/living/carbon/human/H = target H.bloody_hands(target,0) H.bloody_body(target) diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm index 2f4a3b2e5ac..98307f8c561 100644 --- a/code/game/objects/items/weapons/storage/lockbox.dm +++ b/code/game/objects/items/weapons/storage/lockbox.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - /obj/item/weapon/storage/lockbox name = "lockbox" desc = "A locked box." diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm index 7619fd953d7..9eaf9eb8a3a 100644 --- a/code/game/objects/items/weapons/storage/secure.dm +++ b/code/game/objects/items/weapons/storage/secure.dm @@ -216,6 +216,14 @@ for(var/i = 0, i < storage_slots - 2, i++) handle_item_insertion(new /obj/item/stack/spacecash/c1000, 1) +/obj/item/weapon/storage/secure/briefcase/reaper/New() + ..() + handle_item_insertion(new /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow, 1) + handle_item_insertion(new /obj/item/weapon/gun/projectile/revolver/mateba, 1) + handle_item_insertion(new /obj/item/ammo_box/a357, 1) + handle_item_insertion(new /obj/item/weapon/grenade/plastic/c4, 1) + + // ----------------------------- // Secure Safe // ----------------------------- diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 21ea7c33993..f08fc81aaa5 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -478,7 +478,7 @@ /obj/item/weapon/storage/attack_self(mob/user as mob) //Clicking on itself will empty it, if it has the verb to do that. - if(user.get_active_hand() == src) + if(user.is_in_active_hand(src)) if(src.verbs.Find(/obj/item/weapon/storage/verb/quick_empty)) src.quick_empty() return @@ -568,6 +568,8 @@ for(var/thing in data["content"]) if(islist(thing)) list_to_object(thing, src) + else if(thing == null) + log_runtime(EXCEPTION("Null entry found in storage/deserialize."), src) else log_runtime(EXCEPTION("Non-list thing found in storage/deserialize."), src, list("Thing: [thing]")) ..() diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 9efc5f625a6..c5f32121d4f 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -157,6 +157,22 @@ new /obj/item/weapon/grenade/empgrenade(src) new /obj/item/weapon/implanter/emp/(src) +/obj/item/weapon/storage/box/syndie_kit/throwing_weapons + name = "boxed throwing kit" + can_hold = list(/obj/item/weapon/throwing_star, /obj/item/weapon/restraints/legcuffs/bola/tactical) + max_combined_w_class = 16 + max_w_class = WEIGHT_CLASS_NORMAL + +/obj/item/weapon/storage/box/syndie_kit/throwing_weapons/New() + ..() + new /obj/item/weapon/throwing_star(src) + new /obj/item/weapon/throwing_star(src) + new /obj/item/weapon/throwing_star(src) + new /obj/item/weapon/throwing_star(src) + new /obj/item/weapon/throwing_star(src) + new /obj/item/weapon/restraints/legcuffs/bola/tactical(src) + new /obj/item/weapon/restraints/legcuffs/bola/tactical(src) + /obj/item/weapon/storage/box/syndie_kit/sarin name = "Sarin Gas Grenades" diff --git a/code/game/objects/items/weapons/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm index eef5475bdcd..022a8744d7d 100644 --- a/code/game/objects/items/weapons/tanks/jetpack.dm +++ b/code/game/objects/items/weapons/tanks/jetpack.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - /obj/item/weapon/tank/jetpack name = "Jetpack (Empty)" desc = "A tank of compressed gas for use as propulsion in zero-gravity areas. Use with caution." @@ -109,6 +107,14 @@ ..() air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) +/obj/item/weapon/tank/jetpack/oxygen/captain + name = "Captain's jetpack" + desc = "A compact, lightweight jetpack containing a high amount of compressed oxygen." + icon_state = "jetpack-captain" + item_state = "jetpack-captain" + volume = 90 + w_class = WEIGHT_CLASS_NORMAL + /obj/item/weapon/tank/jetpack/oxygen/harness name = "jet harness (oxygen)" desc = "A lightweight tactical harness, used by those who don't want to be weighed down by traditional jetpacks." diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index 3b99936b0a8..27cbff53547 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -54,7 +54,9 @@ C.update_internals_hud_icon(0) else var/can_open_valve = 0 - if(C.wear_mask && C.wear_mask.flags & AIRTIGHT) + if(C.get_organ_slot("breathing_tube")) + can_open_valve = 1 + else if(C.wear_mask && C.wear_mask.flags & AIRTIGHT) can_open_valve = 1 else if(ishuman(C)) var/mob/living/carbon/human/H = C diff --git a/code/game/objects/items/weapons/teleportation.dm b/code/game/objects/items/weapons/teleportation.dm index 0a984821fad..11da88ae680 100644 --- a/code/game/objects/items/weapons/teleportation.dm +++ b/code/game/objects/items/weapons/teleportation.dm @@ -128,7 +128,7 @@ Frequency: if(turfs.len) L["None (Dangerous)"] = pick(turfs) var/t1 = input(user, "Please select a teleporter to lock in on.", "Hand Teleporter") as null|anything in L - if(!t1 || (user.get_active_hand() != src || user.stat || user.restrained())) + if(!t1 || (!user.is_in_active_hand(src) || user.stat || user.restrained())) return if(active_portals >= 3) user.show_message("\The [src] is recharging!") diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 8aabce1eb54..22c4acbf098 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - /* Tools! * Note: Multitools are /obj/item/device * @@ -228,7 +226,6 @@ hitsound = 'sound/items/Wirecutter.ogg' usesound = 'sound/items/Wirecutter.ogg' sharp = 1 - edge = 1 toolspeed = 1 /obj/item/weapon/wirecutters/New(loc, param_color = null) @@ -241,8 +238,7 @@ /obj/item/weapon/wirecutters/attack(mob/living/carbon/C, mob/user) if(istype(C) && C.handcuffed && istype(C.handcuffed, /obj/item/weapon/restraints/handcuffs/cable)) user.visible_message("[user] cuts [C]'s restraints with [src]!") - qdel(C.handcuffed) - C.handcuffed = null + QDEL_NULL(C.handcuffed) if(C.buckled && C.buckled.buckle_requires_restraints) C.buckled.unbuckle_mob(C) C.update_handcuffed() diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index cdd8b8a5de1..87197426495 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -162,7 +162,6 @@ force = 5 throwforce = 15 sharp = 1 - edge = 1 w_class = WEIGHT_CLASS_BULKY slot_flags = SLOT_BACK force_unwielded = 5 @@ -209,8 +208,6 @@ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") block_chance = 75 sharp = 1 - edge = 1 - no_embed = 1 // Like with the single-handed esword, this shouldn't be embedding in people. /obj/item/weapon/twohanded/dualsaber/New() blade_color = pick("red", "blue", "green", "purple") @@ -297,7 +294,6 @@ hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "poked", "jabbed", "torn", "gored") sharp = 1 - edge = 1 no_spin_thrown = 1 var/obj/item/weapon/grenade/explosive = null var/war_cry = "AAAAARGH!!!" @@ -442,7 +438,6 @@ attack_verb = list("sawed", "cut", "hacked", "carved", "cleaved", "butchered", "felled", "timbered") hitsound = "swing_hit" sharp = 1 - edge = 1 actions_types = list(/datum/action/item_action/startchainsaw) var/on = 0 @@ -499,8 +494,6 @@ origin_tech = "materials=6;syndicate=4" attack_verb = list("sawed", "cut", "hacked", "carved", "cleaved", "butchered", "felled", "timbered") sharp = 1 - edge = 1 - no_embed = 1 /obj/item/weapon/twohanded/chainsaw/update_icon() if(wielded) @@ -539,7 +532,6 @@ icon_state = "mjollnir0" flags = CONDUCT slot_flags = SLOT_BACK - no_embed = 1 force = 5 force_unwielded = 5 force_wielded = 20 @@ -604,7 +596,6 @@ icon_state = "mjollnir0" flags = CONDUCT slot_flags = SLOT_BACK - no_embed = 1 force = 5 force_unwielded = 5 force_wielded = 25 @@ -652,7 +643,6 @@ icon_state = "knighthammer0" flags = CONDUCT slot_flags = SLOT_BACK - no_embed = 1 force = 5 force_unwielded = 5 force_wielded = 30 @@ -718,7 +708,6 @@ force = 5 throwforce = 15 sharp = 1 - edge = 1 w_class = WEIGHT_CLASS_HUGE armour_penetration = 20 slot_flags = SLOT_BACK diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index 95317b7f0a6..753a8073313 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -43,7 +43,6 @@ force = 40 throwforce = 10 sharp = 1 - edge = 1 w_class = WEIGHT_CLASS_NORMAL attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") block_chance = 50 @@ -67,7 +66,6 @@ force = 40 throwforce = 10 sharp = 1 - edge = 1 w_class = WEIGHT_CLASS_NORMAL hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") @@ -83,7 +81,6 @@ /obj/item/weapon/harpoon name = "harpoon" sharp = 1 - edge = 0 desc = "Tharr she blows!" icon_state = "harpoon" item_state = "harpoon" @@ -130,6 +127,20 @@ obj/item/weapon/wirerod/attackby(obj/item/I, mob/user, params) qdel(I) qdel(src) +/obj/item/weapon/throwing_star + name = "throwing star" + desc = "An ancient weapon still used to this day due to it's ease of lodging itself into victim's body parts" + icon_state = "throwingstar" + item_state = "eshield0" + force = 2 + throwforce = 20 //This is never used on mobs since this has a 100% embed chance. + throw_speed = 4 + embedded_pain_multiplier = 4 + w_class = WEIGHT_CLASS_SMALL + embed_chance = 100 + embedded_fall_chance = 0 //Hahaha! + sharp = 1 + materials = list(MAT_METAL=500, MAT_GLASS=500) /obj/item/weapon/spear/kidan icon_state = "kidanspear" diff --git a/code/game/objects/items/weapons/whetstone.dm b/code/game/objects/items/weapons/whetstone.dm index b268540f92a..c4595f2deb6 100644 --- a/code/game/objects/items/weapons/whetstone.dm +++ b/code/game/objects/items/weapons/whetstone.dm @@ -19,7 +19,7 @@ if(I.force >= max || I.throwforce >= max)//no esword sharpening to_chat(user, "[I] is much too powerful to sharpen further.") return - if(requires_sharpness && !I.edge) + if(requires_sharpness && !I.sharp) to_chat(user, "You can only sharpen items that are already sharp, such as knives.") return if(istype(I, /obj/item/weapon/twohanded))//some twohanded items should still be sharpenable, but handle force differently. therefore i need this stuff @@ -39,7 +39,6 @@ return user.visible_message("[user] sharpens [I] with [src]!", "You sharpen [I], making it much more deadly than before.") if(!requires_sharpness) - I.edge = 1 I.sharp = 1 I.force = Clamp(I.force + increment, 0, max) I.throwforce = Clamp(I.throwforce + increment, 0, max) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 844c1828200..197b742f307 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -8,7 +8,6 @@ var/throwforce = 1 var/list/attack_verb = list() //Used in attackby() to say how something was attacked "[x] has been [z.attack_verb] by [y] with [z]" var/sharp = 0 // whether this object cuts - var/edge = 0 // whether this object is more likely to dismember var/in_use = 0 // If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING! var/damtype = "brute" @@ -168,15 +167,7 @@ /obj/proc/hear_talk(mob/M as mob, text) - if(talking_atom) - talking_atom.catchMessage(text, M) - -/* - var/mob/mo = locate(/mob) in src - if(mo) - var/rendered = "[M.name]: [text]" - mo.show_message(rendered, 2) -*/ + return /obj/proc/hear_message(mob/M as mob, text) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index d130b22074c..58cad5e5f36 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -34,6 +34,7 @@ new /obj/item/taperoll/engineering(src) new /obj/item/clothing/head/beret/eng(src) new /obj/item/weapon/door_remote/chief_engineer(src) + new /obj/item/weapon/rpd(src) /obj/structure/closet/secure_closet/engineering_electrical name = "electrical supplies locker" @@ -143,3 +144,4 @@ new /obj/item/weapon/watertank/atmos(src) new /obj/item/clothing/suit/fire/atmos(src) new /obj/item/clothing/head/hardhat/atmos(src) + new /obj/item/weapon/rpd(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/miscjobs.dm b/code/game/objects/structures/crates_lockers/closets/secure/miscjobs.dm index 11cfc6a7dd5..7ca417a9d17 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/miscjobs.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/miscjobs.dm @@ -17,6 +17,7 @@ new /obj/item/clothing/mask/gas/clown_hat(src) new /obj/item/weapon/bikehorn(src) new /obj/item/weapon/reagent_containers/spray/waterflower(src) + new /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofbanana(src) new /obj/item/toy/crayon/rainbow(src) new /obj/item/seeds/banana(src) diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index d651ad55adb..a3f716a4a8b 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -133,6 +133,9 @@ new /obj/item/clothing/shoes/sandal(src) new /obj/item/clothing/shoes/sandal(src) new /obj/item/clothing/shoes/sandal(src) + new /obj/item/clothing/shoes/footwraps(src) + new /obj/item/clothing/shoes/footwraps(src) + new /obj/item/clothing/shoes/footwraps(src) /obj/structure/closet/wardrobe/orange @@ -251,6 +254,10 @@ new /obj/item/clothing/under/rank/medical/skirt(src) new /obj/item/clothing/under/rank/medical/skirt(src) new /obj/item/clothing/head/surgery/purple(src) + new /obj/item/clothing/under/medigown(src) + new /obj/item/clothing/under/medigown(src) + new /obj/item/clothing/under/medigown(src) + new /obj/item/clothing/under/medigown(src) new /obj/item/clothing/shoes/black(src) new /obj/item/clothing/shoes/black(src) new /obj/item/clothing/shoes/black(src) @@ -406,6 +413,10 @@ new /obj/item/clothing/suit/storage/labcoat(src) new /obj/item/clothing/mask/surgical(src) new /obj/item/clothing/mask/surgical(src) + new /obj/item/clothing/under/medigown(src) + new /obj/item/clothing/under/medigown(src) + new /obj/item/clothing/under/medigown(src) + new /obj/item/clothing/under/medigown(src) /obj/structure/closet/wardrobe/grey diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 010da69a834..78601c29b74 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - /obj/structure/closet/crate name = "crate" desc = "A rectangular steel crate." @@ -434,12 +432,41 @@ return newgas -/obj/structure/closet/crate/bin - desc = "A large bin." - name = "large bin" +/obj/structure/closet/crate/can + desc = "A large can, looks like a bin to me." + name = "garbage can" icon_state = "largebin" icon_opened = "largebinopen" icon_closed = "largebin" + anchored = TRUE + +/obj/structure/closet/crate/attackby(obj/item/weapon/W, mob/living/user, params) + add_fingerprint(user) + user.changeNext_move(CLICK_CD_MELEE) + if(iswrench(W)) + if(anchored) + playsound(loc, W.usesound, 100, 1) + user.visible_message("[user] starts loosening [src]'s floor casters.", \ + "You start loosening [src]'s floor casters...") + if(do_after(user, 40 * W.toolspeed, target = src)) + if(!loc || !anchored) + return + user.visible_message("[user] loosened [src]'s floor casters.", \ + "You loosen [src]'s floor casters.") + anchored = FALSE + else + if(!isfloorturf(loc)) + user.visible_message("A floor must be present to secure [src]!") + return + playsound(loc, W.usesound, 100, 1) + user.visible_message("[user] start securing [src]'s floor casters...", \ + "You start securing [src]'s floor casters...") + if(do_after(user, 40 * W.toolspeed, target = src)) + if(!loc || anchored) + return + user.visible_message("[user] has secured [src]'s floor casters.", \ + "You have secured [src]'s floor casters.") + anchored = TRUE /obj/structure/closet/crate/radiation desc = "A crate with a radiation sign on it." diff --git a/code/game/objects/structures/decor/decor.dm b/code/game/objects/structures/decor/decor.dm new file mode 100644 index 00000000000..69d62afc2e6 --- /dev/null +++ b/code/game/objects/structures/decor/decor.dm @@ -0,0 +1,7 @@ +// The purpose of "Decor" structures is to look like pre-existing objects without having functionality + +/obj/structure/decor + name = "Non-existent Decor" + desc = "Yell at a coder!" + anchored = TRUE + density = TRUE diff --git a/code/game/objects/structures/decor/machinery/telecomms.dm b/code/game/objects/structures/decor/machinery/telecomms.dm new file mode 100644 index 00000000000..1068cfb0b4e --- /dev/null +++ b/code/game/objects/structures/decor/machinery/telecomms.dm @@ -0,0 +1,23 @@ +/obj/structure/decor/machinery/telecomms/processor + name = "Processor Unit" + icon = 'icons/obj/stationobjs.dmi' + icon_state = "processor" + desc = "This machine is used to process large quantities of information." + +/obj/structure/decor/machinery/telecomms/hub + name = "Telecommunication Hub" + icon = 'icons/obj/stationobjs.dmi' + icon_state = "hub" + desc = "A mighty piece of hardware used to send/receive massive amounts of data." + +/obj/structure/decor/machinery/telecomms/server + name = "Telecommunication Server" + icon = 'icons/obj/stationobjs.dmi' + icon_state = "comm_server" + desc = "A machine used to store data and network statistics." + +/obj/structure/decor/machinery/telecomms/relay + name = "Telecommunication Relay" + icon = 'icons/obj/stationobjs.dmi' + icon_state = "relay" + desc = "A mighty piece of hardware used to send massive amounts of data far away." diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm index 14f1357af87..2cdcfc18376 100644 --- a/code/game/objects/structures/inflatable.dm +++ b/code/game/objects/structures/inflatable.dm @@ -96,7 +96,7 @@ /obj/structure/inflatable/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(!istype(W)) return - if(can_puncture(W)) + if(is_pointed(W)) visible_message("[user] pierces [src] with [W]!") deflate(1) if(W.damtype == BRUTE || W.damtype == BURN) diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm index 043177551ff..73c47ba98a6 100644 --- a/code/game/objects/structures/kitchen_spike.dm +++ b/code/game/objects/structures/kitchen_spike.dm @@ -82,9 +82,8 @@ playsound(loc, 'sound/effects/splat.ogg', 25, 1) H.forceMove(loc) H.emote("scream") - if(istype(H, /mob/living/carbon/human)) //So you don't get human blood when you spike a giant spidere - var/turf/simulated/pos = get_turf(H) - pos.add_blood_floor(H) + if(ishuman(H)) + H.add_splatter_floor() H.adjustBruteLoss(30) H.buckled = src H.dir = 2 diff --git a/code/game/objects/structures/misc.dm b/code/game/objects/structures/misc.dm index 910981974d0..bab097c2e87 100644 --- a/code/game/objects/structures/misc.dm +++ b/code/game/objects/structures/misc.dm @@ -61,7 +61,7 @@ /obj/structure/respawner name = "\improper Long-Distance Cloning Machine" desc = "Top-of-the-line Nanotrasen technology allows for cloning of crew members from off-station upon bluespace request." - icon = 'icons/obj/xenoarchaeology.dmi' + icon = 'icons/obj/objects.dmi' icon_state = "borgcharger1(old)" anchored = 1 density = 1 @@ -121,3 +121,12 @@ if(last_ghost_alert + ghost_alert_delay < world.time) notify_ghosts("[src] active in [get_area(src)].", 'sound/effects/ghost2.ogg', title = alert_title, source = attack_atom, action = (attack_atom == src ? NOTIFY_JUMP : NOTIFY_ATTACK)) last_ghost_alert = world.time + +/obj/structure/boulder + name = "boulder" + desc = "A large rock." + icon = 'icons/obj/mining.dmi' + icon_state = "boulder1" + density = TRUE + opacity = TRUE + anchored = TRUE \ No newline at end of file diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 596673ba0c7..540c2e079aa 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -102,8 +102,7 @@ if(!( A.anchored )) A.forceMove(src) playsound(loc, open_sound, 50, 1) - qdel(connected) - connected = null + QDEL_NULL(connected) else playsound(loc, open_sound, 50, 1) connected = new /obj/structure/m_tray( loc ) @@ -118,8 +117,7 @@ connected.icon_state = "morguet" connected.dir = dir else - qdel(connected) - connected = null + QDEL_NULL(connected) add_fingerprint(user) update() return @@ -155,8 +153,7 @@ A.forceMove(connected.loc) connected.icon_state = "morguet" else - qdel(connected) - connected = null + QDEL_NULL(connected) return /obj/structure/morgue/Destroy() @@ -306,8 +303,7 @@ if(!( A.anchored )) A.forceMove(src) playsound(loc, open_sound, 50, 1) - qdel(connected) - connected = null + QDEL_NULL(connected) else if(locked == 0) playsound(loc, open_sound, 50, 1) connected = new /obj/structure/c_tray( loc ) @@ -321,8 +317,7 @@ A.forceMove(connected.loc) connected.icon_state = "cremat" else - qdel(connected) - connected = null + QDEL_NULL(connected) add_fingerprint(user) update() @@ -355,8 +350,7 @@ A.forceMove(connected.loc) connected.icon_state = "cremat" else - qdel(connected) - connected = null + QDEL_NULL(connected) return /obj/structure/crematorium/proc/cremate(mob/user as mob) diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm index db917ca5588..ca7c18c2e4e 100644 --- a/code/game/objects/structures/musician.dm +++ b/code/game/objects/structures/musician.dm @@ -1,14 +1,14 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 + /datum/song var/name = "Untitled" var/list/lines = new() - var/tempo = 5 // delay between notes + var/tempo = 5 // delay between notes - var/playing = 0 // if we're playing - var/help = 0 // if help is open - var/repeat = 0 // number of times remaining to repeat - var/max_repeat = 10 // maximum times we can repeat + var/playing = 0 // if we're playing + var/help = 0 // if help is open + var/repeat = 0 // number of times remaining to repeat + var/max_repeat = 10 // maximum times we can repeat var/instrumentDir = "piano" // the folder with the sounds var/instrumentExt = "ogg" // the file extension @@ -26,7 +26,7 @@ // note is a number from 1-7 for A-G // acc is either "b", "n", or "#" // oct is 1-8 (or 9 for C) -/datum/song/proc/playnote(var/note, var/acc as text, var/oct) +/datum/song/proc/playnote(note, acc as text, oct) // handle accidental -> B<>C of E<>F if(acc == "b" && (note == 3 || note == 6)) // C or F if(note == 3) @@ -57,10 +57,11 @@ return // and play var/turf/source = get_turf(instrumentObj) + var/sound/music_played = sound(soundfile) for(var/mob/M in hearers(15, source)) if(!M.client || !(M.client.prefs.sound & SOUND_INSTRUMENTS)) continue - M.playsound_local(source, soundfile, 100, falloff = 5) + M.playsound_local(source, null, 100, falloff = 5, S = music_played) /datum/song/proc/shouldStopPlaying(mob/user) if(instrumentObj) @@ -70,7 +71,7 @@ else return 1 -/datum/song/proc/playsong(mob/user as mob) +/datum/song/proc/playsong(mob/user) while(repeat >= 0) var/cur_oct[7] var/cur_acc[7] @@ -79,18 +80,14 @@ cur_acc[i] = "n" for(var/line in lines) -// to_chat(world, line) for(var/beat in splittext(lowertext(line), ",")) -// to_chat(world, "beat: [beat]") var/list/notes = splittext(beat, "/") for(var/note in splittext(notes[1], "-")) -// to_chat(world, "note: [note]") - if(!playing || shouldStopPlaying(user))//If the instrument is playing, or special case + if(!playing || shouldStopPlaying(user)) //If the instrument is playing, or special case playing = 0 return if(lentext(note) == 0) continue -// to_chat(world, "Parse: [copytext(note,1,2)]") var/cur_note = text2ascii(note) - 96 if(cur_note < 1 || cur_note > 7) continue @@ -244,6 +241,7 @@ playing = 0 /datum/song/proc/sanitize_tempo(new_tempo) + new_tempo = abs(new_tempo) return max(round(new_tempo, world.tick_lag), world.tick_lag) // subclass for handheld instruments, like violin @@ -269,6 +267,7 @@ /obj/structure/piano/New() + ..() song = new("piano", src) if(prob(50)) @@ -304,7 +303,7 @@ song.Topic(href, href_list) /obj/structure/piano/attackby(obj/item/O as obj, mob/user as mob, params) - if(istype(O, /obj/item/weapon/wrench)) + if(iswrench(O)) if(!anchored && !isinspace()) playsound(src.loc, O.usesound, 50, 1) to_chat(user, " You begin to tighten \the [src] to the floor...") @@ -324,4 +323,4 @@ "You hear ratchet.") anchored = 0 else - ..() + return ..() diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index 3f4eea3dbf4..b1cf367ba1f 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -182,10 +182,15 @@ icon_state = "nuke" /obj/structure/sign/clown - name = "\improper mech painting" + name = "\improper clown painting" desc = "A painting of the clown and mime. Awwww." icon_state = "clown" +/obj/structure/sign/bobross + name = "\improper calming painting" + desc = "We don't make mistakes, just happy little accidents." + icon_state = "bob" + /obj/structure/sign/singulo name = "\improper singulo painting" desc = "A mesmerizing painting of a singularity. It seems to suck you in..." diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index 56c6861e4fc..bf261d606f9 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -17,6 +17,7 @@ burntime = 30 buildstackamount = 2 var/movable = 0 // For mobility checks + buckle_offset = -6 /obj/structure/stool/bed/MouseDrop(atom/over_object) ..(over_object, skip_fucking_stool_shit = 1) @@ -36,6 +37,7 @@ anchored = 0 buildstackamount = 10 buildstacktype = /obj/item/stack/sheet/wood + buckle_offset = 0 /obj/structure/stool/bed/dogbed/ian name = "Ian's bed" @@ -139,5 +141,4 @@ to_chat(user, "You deploy the roller bed.") var/obj/structure/stool/bed/roller/R = new /obj/structure/stool/bed/roller(user.loc) R.add_fingerprint(user) - qdel(held) - held = null + QDEL_NULL(held) 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 2b8cdd9e3ba..b76cd70d57b 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -5,7 +5,7 @@ buckle_lying = 0 //you sit in a chair, not lay burn_state = FIRE_PROOF buildstackamount = 1 - + buckle_offset = 0 var/propelled = 0 // Check for fire-extinguisher-driven chairs /obj/structure/stool/bed/chair/New() diff --git a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm index b32f47520e4..8e148d75eb5 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm @@ -41,12 +41,12 @@ var/mob/living/carbon/human/driver = user var/obj/item/organ/external/l_hand = driver.get_organ("l_hand") var/obj/item/organ/external/r_hand = driver.get_organ("r_hand") - if((!l_hand || (l_hand.status & ORGAN_DESTROYED)) && (!r_hand || (r_hand.status & ORGAN_DESTROYED))) + if(!l_hand && !r_hand) return 0 // No hands to drive your chair? Tough luck! for(var/organ_name in list("l_hand","r_hand","l_arm","r_arm")) var/obj/item/organ/external/E = driver.get_organ(organ_name) - if(!E || (E.status & ORGAN_DESTROYED)) + if(!E) calculated_move_delay += 4 else if(E.status & ORGAN_SPLINTED) calculated_move_delay += 0.5 @@ -129,12 +129,12 @@ var/mob/living/carbon/human/driver = user var/obj/item/organ/external/l_hand = driver.get_organ("l_hand") var/obj/item/organ/external/r_hand = driver.get_organ("r_hand") - if((!l_hand || (l_hand.status & ORGAN_DESTROYED)) && (!r_hand || (r_hand.status & ORGAN_DESTROYED))) + if(!l_hand && !r_hand) calculated_move_delay += 0.5 //I can ride my bike with no handlebars... (but it's slower) for(var/organ_name in list("l_leg","r_leg","l_foot","r_foot")) var/obj/item/organ/external/E = driver.get_organ(organ_name) - if(!E || (E.status & ORGAN_DESTROYED)) + if(!E) return 0 //Bikes need both feet/legs to work. missing even one makes it so you can't ride the bike else if(E.status & ORGAN_SPLINTED) calculated_move_delay += 0.5 diff --git a/code/game/response_team.dm b/code/game/response_team.dm index 344a9b72054..ebfe10f71e0 100644 --- a/code/game/response_team.dm +++ b/code/game/response_team.dm @@ -387,12 +387,13 @@ var/ert_request_answered = 0 /obj/item/clothing/head/helmet/space/hardsuit/ert/commander = 1, /obj/item/clothing/mask/gas/sechailer/swat = 1, /obj/item/weapon/restraints/handcuffs = 1, + /obj/item/clothing/shoes/magboots = 1, /obj/item/weapon/storage/lockbox/mindshield = 1 ) /datum/outfit/job/centcom/response_team/commander/gamma name = "RT Commander (Gamma)" - shoes = /obj/item/clothing/shoes/combat/swat + shoes = /obj/item/clothing/shoes/magboots/advance gloves = /obj/item/clothing/gloves/combat suit = /obj/item/clothing/suit/space/hardsuit/ert/commander glasses = /obj/item/clothing/glasses/hud/security/night @@ -457,6 +458,7 @@ var/ert_request_answered = 0 backpack_contents = list( /obj/item/clothing/head/helmet/space/hardsuit/ert/security = 1, /obj/item/clothing/mask/gas/sechailer = 1, + /obj/item/clothing/shoes/magboots = 1, /obj/item/weapon/storage/box/handcuffs = 1, /obj/item/weapon/gun/energy/ionrifle/carbine = 1 ) @@ -464,7 +466,7 @@ var/ert_request_answered = 0 /datum/outfit/job/centcom/response_team/security/gamma name = "RT Security (Gamma)" has_grenades = TRUE - shoes = /obj/item/clothing/shoes/combat/swat + shoes = /obj/item/clothing/shoes/magboots/advance gloves = /obj/item/clothing/gloves/combat suit = /obj/item/clothing/suit/space/hardsuit/ert/security suit_store = /obj/item/weapon/gun/energy/gun/nuclear @@ -509,7 +511,7 @@ var/ert_request_answered = 0 /datum/outfit/job/centcom/response_team/engineer/red name = "RT Engineer (Red)" - shoes = /obj/item/clothing/shoes/magboots + shoes = /obj/item/clothing/shoes/magboots/advance gloves = /obj/item/clothing/gloves/color/yellow suit = /obj/item/clothing/suit/space/hardsuit/ert/engineer suit_store = /obj/item/weapon/tank/emergency_oxygen/engi @@ -594,12 +596,13 @@ var/ert_request_answered = 0 /obj/item/weapon/storage/firstaid/toxin = 1, /obj/item/weapon/storage/firstaid/adv = 1, /obj/item/weapon/storage/firstaid/surgery = 1, - /obj/item/weapon/gun/energy/gun = 1 + /obj/item/weapon/gun/energy/gun = 1, + /obj/item/clothing/shoes/magboots = 1 ) /datum/outfit/job/centcom/response_team/medic/gamma name = "RT Medic (Gamma)" - shoes = /obj/item/clothing/shoes/combat/swat + shoes = /obj/item/clothing/shoes/magboots/advance gloves = /obj/item/clothing/gloves/combat suit = /obj/item/clothing/suit/space/hardsuit/ert/medical glasses = /obj/item/clothing/glasses/hud/health/night diff --git a/code/game/sound.dm b/code/game/sound.dm index 14269acb81f..39bf16bc697 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -1,34 +1,15 @@ -var/list/shatter_sound = list('sound/effects/Glassbr1.ogg','sound/effects/Glassbr2.ogg','sound/effects/Glassbr3.ogg') -var/list/explosion_sound = list('sound/effects/Explosion1.ogg','sound/effects/Explosion2.ogg') -var/list/spark_sound = list('sound/effects/sparks1.ogg','sound/effects/sparks2.ogg','sound/effects/sparks3.ogg','sound/effects/sparks4.ogg') -var/list/rustle_sound = list('sound/effects/rustle1.ogg','sound/effects/rustle2.ogg','sound/effects/rustle3.ogg','sound/effects/rustle4.ogg','sound/effects/rustle5.ogg') -var/list/bodyfall_sound = list('sound/effects/bodyfall1.ogg','sound/effects/bodyfall2.ogg','sound/effects/bodyfall3.ogg','sound/effects/bodyfall4.ogg') -var/list/punch_sound = list('sound/weapons/punch1.ogg','sound/weapons/punch2.ogg','sound/weapons/punch3.ogg','sound/weapons/punch4.ogg') -var/list/clown_sound = list('sound/effects/clownstep1.ogg','sound/effects/clownstep2.ogg') -var/list/jackboot_sound = list('sound/effects/jackboot1.ogg','sound/effects/jackboot2.ogg') -var/list/swing_hit_sound = list('sound/weapons/genhit1.ogg', 'sound/weapons/genhit2.ogg', 'sound/weapons/genhit3.ogg') -var/list/hiss_sound = list('sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg') -var/list/page_sound = list('sound/effects/pageturn1.ogg', 'sound/effects/pageturn2.ogg','sound/effects/pageturn3.ogg') -var/list/gun_sound = list('sound/weapons/Gunshot.ogg', 'sound/weapons/Gunshot2.ogg','sound/weapons/Gunshot3.ogg','sound/weapons/Gunshot4.ogg') -var/list/computer_ambience = list('sound/goonstation/machines/ambicomp1.ogg', 'sound/goonstation/machines/ambicomp2.ogg', 'sound/goonstation/machines/ambicomp3.ogg') -var/list/ricochet = list('sound/weapons/effects/ric1.ogg', 'sound/weapons/effects/ric2.ogg','sound/weapons/effects/ric3.ogg','sound/weapons/effects/ric4.ogg','sound/weapons/effects/ric5.ogg') -var/list/terminal_type = list('sound/machines/terminal_button01.ogg', 'sound/machines/terminal_button02.ogg', 'sound/machines/terminal_button03.ogg', - 'sound/machines/terminal_button04.ogg', 'sound/machines/terminal_button05.ogg', 'sound/machines/terminal_button06.ogg', - 'sound/machines/terminal_button07.ogg', 'sound/machines/terminal_button08.ogg') - -/proc/playsound(var/atom/source, soundin, vol as num, vary, extrarange as num, falloff, var/is_global, var/pitch) - - soundin = get_sfx(soundin) // same sound for everyone - +/proc/playsound(atom/source, soundin, vol as num, vary, extrarange as num, falloff, frequency = null, channel = 0, pressure_affected = TRUE) if(isarea(source)) error("[source] is an area and is trying to make the sound: [soundin]") return - var/frequency = pitch var/turf/turf_source = get_turf(source) + //allocate a channel if necessary now so its the same for everyone + channel = channel || open_sound_channel() + // Looping through the player list has the added bonus of working for mobs inside containers - var/sound/S = sound(soundin) + var/sound/S = sound(get_sfx(soundin)) var/maxdistance = (world.view + extrarange) * 3 for(var/P in player_list) var/mob/M = P @@ -40,18 +21,19 @@ var/list/terminal_type = list('sound/machines/terminal_button01.ogg', 'sound/mac var/turf/T = get_turf(M) if(T && T.z == turf_source.z) - M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, is_global, S) + M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, channel, pressure_affected, S) -/mob/proc/playsound_local(var/turf/turf_source, soundin, vol as num, vary, frequency, falloff, is_global, sound/S) - if(!src.client || !can_hear()) +/mob/proc/playsound_local(turf/turf_source, soundin, vol as num, vary, frequency, falloff, channel = 0, pressure_affected = TRUE, sound/S) + if(!client || !can_hear()) return if(!S) S = sound(get_sfx(soundin)) + S.wait = 0 //No queue - S.channel = 0 //Any channel + S.channel = channel || open_sound_channel() S.volume = vol - S.environment = -1 + if(vary) if(frequency) S.frequency = frequency @@ -59,7 +41,6 @@ var/list/terminal_type = list('sound/machines/terminal_button01.ogg', 'sound/mac S.frequency = get_rand_frequency() if(isturf(turf_source)) - // 3D sounds, the technology is here! var/turf/T = get_turf(src) //sound volume falloff with distance @@ -67,27 +48,27 @@ var/list/terminal_type = list('sound/machines/terminal_button01.ogg', 'sound/mac S.volume -= max(distance - world.view, 0) * 2 //multiplicative falloff to add on top of natural audio falloff. - //sound volume falloff with pressure - var/pressure_factor = 1.0 + if(pressure_affected) + //Atmosphere affects sound + var/pressure_factor = 1 + var/datum/gas_mixture/hearer_env = T.return_air() + var/datum/gas_mixture/source_env = turf_source.return_air() - var/datum/gas_mixture/hearer_env = T.return_air() - var/datum/gas_mixture/source_env = turf_source.return_air() + if(hearer_env && source_env) + var/pressure = min(hearer_env.return_pressure(), source_env.return_pressure()) + if(pressure < ONE_ATMOSPHERE) + pressure_factor = max((pressure - SOUND_MINIMUM_PRESSURE)/(ONE_ATMOSPHERE - SOUND_MINIMUM_PRESSURE), 0) + else //space + pressure_factor = 0 - if(hearer_env && source_env) - var/pressure = min(hearer_env.return_pressure(), source_env.return_pressure()) + if(distance <= 1) + pressure_factor = max(pressure_factor, 0.15) //touching the source of the sound - if(pressure < ONE_ATMOSPHERE) - pressure_factor = max((pressure - SOUND_MINIMUM_PRESSURE)/(ONE_ATMOSPHERE - SOUND_MINIMUM_PRESSURE), 0) - else //in space - pressure_factor = 0 - - if(distance <= 1) - pressure_factor = max(pressure_factor, 0.15) //hearing through contact - - S.volume *= pressure_factor + S.volume *= pressure_factor + //End Atmosphere affecting sound if(S.volume <= 0) - return //no volume means no sound + return //No sound var/dx = turf_source.x - T.x // Hearing from the right/left S.x = dx @@ -96,15 +77,23 @@ var/list/terminal_type = list('sound/machines/terminal_button01.ogg', 'sound/mac // The y value is for above your head, but there is no ceiling in 2d spessmens. S.y = 1 S.falloff = (falloff ? falloff : FALLOFF_SOUNDS) - if(!is_global) - S.environment = 2 + src << S /client/proc/playtitlemusic() - if(!ticker || !ticker.login_music || config.disable_lobby_music) return + if(!ticker || !ticker.login_music || config.disable_lobby_music) + return if(prefs.sound & SOUND_LOBBY) - src << sound(ticker.login_music, repeat = 0, wait = 0, volume = 85, channel = 1) // MAD JAMS + src << sound(ticker.login_music, repeat = 0, wait = 0, volume = 85, channel = CHANNEL_LOBBYMUSIC) // MAD JAMS +/proc/open_sound_channel() + var/static/next_channel = 1 //loop through the available 1024 - (the ones we reserve) channels and pray that its not still being used + . = ++next_channel + if(next_channel > CHANNEL_HIGHEST_AVAILABLE) + next_channel = 1 + +/mob/proc/stop_sound_channel(chan) + src << sound(null, repeat = 0, wait = 0, channel = chan) /proc/get_rand_frequency() return rand(32000, 55000) //Frequency stuff only works with 45kbps oggs. @@ -113,33 +102,37 @@ var/list/terminal_type = list('sound/machines/terminal_button01.ogg', 'sound/mac if(istext(soundin)) switch(soundin) if("shatter") - soundin = pick(shatter_sound) + soundin = pick('sound/effects/Glassbr1.ogg','sound/effects/Glassbr2.ogg','sound/effects/Glassbr3.ogg') if("explosion") - soundin = pick(explosion_sound) + soundin = pick('sound/effects/Explosion1.ogg','sound/effects/Explosion2.ogg') if("sparks") - soundin = pick(spark_sound) + soundin = pick('sound/effects/sparks1.ogg','sound/effects/sparks2.ogg','sound/effects/sparks3.ogg','sound/effects/sparks4.ogg') if("rustle") - soundin = pick(rustle_sound) + soundin = pick('sound/effects/rustle1.ogg','sound/effects/rustle2.ogg','sound/effects/rustle3.ogg','sound/effects/rustle4.ogg','sound/effects/rustle5.ogg') if("bodyfall") - soundin = pick(bodyfall_sound) + soundin = pick('sound/effects/bodyfall1.ogg','sound/effects/bodyfall2.ogg','sound/effects/bodyfall3.ogg','sound/effects/bodyfall4.ogg') if("punch") - soundin = pick(punch_sound) + soundin = pick('sound/weapons/punch1.ogg','sound/weapons/punch2.ogg','sound/weapons/punch3.ogg','sound/weapons/punch4.ogg') if("clownstep") - soundin = pick(clown_sound) + soundin = pick('sound/effects/clownstep1.ogg','sound/effects/clownstep2.ogg') if("jackboot") - soundin = pick(jackboot_sound) + soundin = pick('sound/effects/jackboot1.ogg','sound/effects/jackboot2.ogg') if("swing_hit") - soundin = pick(swing_hit_sound) + soundin = pick('sound/weapons/genhit1.ogg', 'sound/weapons/genhit2.ogg', 'sound/weapons/genhit3.ogg') if("hiss") - soundin = pick(hiss_sound) + soundin = pick('sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg') if("pageturn") - soundin = pick(page_sound) + soundin = pick('sound/effects/pageturn1.ogg', 'sound/effects/pageturn2.ogg','sound/effects/pageturn3.ogg') if("gunshot") - soundin = pick(gun_sound) + soundin = pick('sound/weapons/Gunshot.ogg', 'sound/weapons/Gunshot2.ogg','sound/weapons/Gunshot3.ogg','sound/weapons/Gunshot4.ogg') if("computer_ambience") - soundin = pick(computer_ambience) + soundin = pick('sound/goonstation/machines/ambicomp1.ogg', 'sound/goonstation/machines/ambicomp2.ogg', 'sound/goonstation/machines/ambicomp3.ogg') if("ricochet") - soundin = pick(ricochet) + soundin = pick('sound/weapons/effects/ric1.ogg', 'sound/weapons/effects/ric2.ogg','sound/weapons/effects/ric3.ogg','sound/weapons/effects/ric4.ogg','sound/weapons/effects/ric5.ogg') if("terminal_type") - soundin = pick(terminal_type) + soundin = pick('sound/machines/terminal_button01.ogg', 'sound/machines/terminal_button02.ogg', 'sound/machines/terminal_button03.ogg', + 'sound/machines/terminal_button04.ogg', 'sound/machines/terminal_button05.ogg', 'sound/machines/terminal_button06.ogg', + 'sound/machines/terminal_button07.ogg', 'sound/machines/terminal_button08.ogg') + if("growls") + soundin = pick('sound/goonstation/voice/growl1.ogg', 'sound/goonstation/voice/growl2.ogg', 'sound/goonstation/voice/growl3.ogg') return soundin diff --git a/code/game/turfs/simulated.dm b/code/game/turfs/simulated.dm index cf1a1303025..61f622c071f 100644 --- a/code/game/turfs/simulated.dm +++ b/code/game/turfs/simulated.dm @@ -45,12 +45,6 @@ if(wet_overlay) overlays -= wet_overlay -/turf/simulated/proc/AddTracks(var/typepath,var/bloodDNA,var/comingdir,var/goingdir,var/bloodcolor="#A10808") - var/obj/effect/decal/cleanable/blood/tracks/tracks = locate(typepath) in src - if(!tracks) - tracks = new typepath(src) - tracks.AddTracks(bloodDNA,comingdir,goingdir,bloodcolor) - /turf/simulated/Entered(atom/A, atom/OL, ignoreRest = 0) ..() if(!ignoreRest) @@ -73,69 +67,20 @@ if(M.flying) return ..() - // Tracking blood - var/list/bloodDNA = null - var/bloodcolor = "" - if(M.shoes) - var/obj/item/clothing/shoes/S = M.shoes - if(S.track_blood && S.blood_DNA) - bloodDNA = S.blood_DNA - bloodcolor = S.blood_color - S.track_blood-- - else - if(M.track_blood && M.feet_blood_DNA) - bloodDNA = M.feet_blood_DNA - bloodcolor = M.feet_blood_color - M.track_blood-- - - if(bloodDNA) - src.AddTracks(/obj/effect/decal/cleanable/blood/tracks/footprints,bloodDNA,M.dir,0,bloodcolor) // Coming - var/turf/simulated/from = get_step(M,reverse_direction(M.dir)) - if(istype(from) && from) - from.AddTracks(/obj/effect/decal/cleanable/blood/tracks/footprints,bloodDNA,0,M.dir,bloodcolor) // Going - - bloodDNA = null - switch(src.wet) if(TURF_WET_WATER) - if(!(M.slip("wet floor", 4, 2, 0, 1))) + if(!(M.slip("wet floor", 4, 2, tilesSlipped = 0, walkSafely = 1))) M.inertia_dir = 0 return if(TURF_WET_LUBE) //lube - M.slip("floor", 0, 5, 3, 0, 1) + M.slip("floor", 0, 5, tilesSlipped = 3, walkSafely = 0, slipAny = 1) if(TURF_WET_ICE) // Ice - if(!(prob(30) && M.slip("icy floor", 4, 2, 1, 1))) + if(!(prob(30) && M.slip("icy floor", 4, 2, tilesSlipped = 1, walkSafely = 1))) M.inertia_dir = 0 - -//returns 1 if made bloody, returns 0 otherwise -/turf/simulated/add_blood(mob/living/carbon/human/M) - if(!..()) - return 0 - - if(!istype(M)) // To avoid non-humans from causing runtimes whena dding blood to the floor - return 0 - var/obj/effect/decal/cleanable/blood/B = locate() in contents //check for existing blood splatter - if(!B) - B = blood_splatter(src,M.get_blood(M.vessel),1) - if(B) - B.add_blood_list(M) - return 1 //we bloodied the floor - return 0 // Clean floors club - -// Only adds blood on the floor -- Skie -/turf/simulated/add_blood_floor(mob/living/carbon/M as mob) - if(ishuman(M)) - blood_splatter(src,M,1) - if( istype(M, /mob/living/carbon/alien )) - var/obj/effect/decal/cleanable/blood/xeno/this = new /obj/effect/decal/cleanable/blood/xeno(src) - this.blood_DNA["UNKNOWN BLOOD"] = "X*" - else if( istype(M, /mob/living/silicon/robot )) - new /obj/effect/decal/cleanable/blood/oil(src) - /turf/simulated/ChangeTurf(var/path) . = ..() smooth_icon_neighbors(src) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index aac7d370e21..234af2cfb72 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -385,8 +385,8 @@ return //Poster stuff - else if(istype(W,/obj/item/weapon/contraband/poster)) - place_poster(W,user) + else if(istype(W, /obj/item/weapon/poster)) + place_poster(W, user) return //Bone White - Place pipes on walls diff --git a/code/game/turfs/simulated/walls_reinforced.dm b/code/game/turfs/simulated/walls_reinforced.dm index e462a1d77f8..43374ce66d8 100644 --- a/code/game/turfs/simulated/walls_reinforced.dm +++ b/code/game/turfs/simulated/walls_reinforced.dm @@ -317,8 +317,8 @@ return //Poster stuff - else if(istype(W,/obj/item/weapon/contraband/poster)) - place_poster(W,user) + else if(istype(W, /obj/item/weapon/poster)) + place_poster(W, user) return //Bone White - Place pipes on walls diff --git a/code/game/verbs/suicide.dm b/code/game/verbs/suicide.dm index 481fc73631a..dce7b57b9dc 100644 --- a/code/game/verbs/suicide.dm +++ b/code/game/verbs/suicide.dm @@ -37,7 +37,7 @@ // Failing that... if(!(damagetype & BRUTELOSS) && !(damagetype & FIRELOSS) && !(damagetype & TOXLOSS) && !(damagetype & OXYLOSS)) - if(species.flags & NO_BREATHE) + if(NO_BREATHE in species.species_traits) // the ultimate fallback take_overall_damage(max(dmgamt - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0), 0) else diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index d7de6dd6844..4ddab9ccf2c 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -101,10 +101,10 @@ var/global/nologevent = 0

    [check_rights(R_ADMIN,0) ? "Traitor panel | " : "" ] Narrate to | - Subtle message | - Bless | - Smite + Subtle message "} + if(check_rights(R_EVENT, 0)) + body += {" | Bless | Smite"} if(M.client) if(!istype(M, /mob/new_player)) @@ -909,12 +909,12 @@ var/gamma_ship_location = 1 // 0 = station , 1 = space toArea = locate(/area/shuttle/gamma/space) fromArea.move_contents_to(toArea) + for(var/obj/machinery/mech_bay_recharge_port/P in toArea) + P.update_recharge_turf() + for(var/obj/machinery/power/apc/A in toArea) A.init() - for(var/obj/machinery/alarm/A in toArea) - A.first_run() - if(gamma_ship_location) gamma_ship_location = 0 else diff --git a/code/modules/admin/banjob.dm b/code/modules/admin/banjob.dm index 3dffd403caf..6dd7930b120 100644 --- a/code/modules/admin/banjob.dm +++ b/code/modules/admin/banjob.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - var/jobban_runonce // Updates legacy bans with new info var/jobban_keylist[0] // Linear list of jobban strings, kept around for the legacy system var/jobban_assoclist[0] // Associative list, for efficiency diff --git a/code/modules/admin/buildmode.dm b/code/modules/admin/buildmode.dm index f246357e472..d628df054c6 100644 --- a/code/modules/admin/buildmode.dm +++ b/code/modules/admin/buildmode.dm @@ -376,10 +376,8 @@ return 1 /datum/click_intercept/buildmode/proc/deselect_region() - qdel(cornerA) - cornerA = null - qdel(cornerB) - cornerB = null + QDEL_NULL(cornerA) + QDEL_NULL(cornerB) /datum/click_intercept/buildmode/proc/Reset()//Reset temporary variables deselect_region() diff --git a/code/modules/admin/permissionverbs/permissionedit.dm b/code/modules/admin/permissionverbs/permissionedit.dm index ccacefc219b..9d9e60db014 100644 --- a/code/modules/admin/permissionverbs/permissionedit.dm +++ b/code/modules/admin/permissionverbs/permissionedit.dm @@ -101,7 +101,7 @@ to_chat(usr, "Admin rank changed.") /datum/admins/proc/log_admin_permission_modification(var/adm_ckey, var/new_permission) - if(config.admin_legacy_system) + if(config.admin_legacy_system) return if(!usr.client) @@ -153,13 +153,15 @@ var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.[format_table_name("admin_log")] (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Added permission [rights2text(new_permission)] (flag = [new_permission]) to admin [adm_ckey]')") log_query.Execute() to_chat(usr, "Permission added.") - + /datum/admins/proc/updateranktodb(ckey,newrank) establish_db_connection() if(!dbcon.IsConnected()) return + if(!check_rights(R_PERMISSIONS)) + return var/sql_ckey = sanitizeSQL(ckey) var/sql_admin_rank = sanitizeSQL(newrank) var/DBQuery/query_update = dbcon.NewQuery("UPDATE [format_table_name("player")] SET lastadminrank = '[sql_admin_rank]' WHERE ckey = '[sql_ckey]'") - query_update.Execute() \ No newline at end of file + query_update.Execute() diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm index c5004b9dd12..9692eac6713 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/secrets.dm @@ -68,9 +68,10 @@

    IC Events

    Teams
    Send SIT - Syndicate Infiltration Team   -
    Send in the Deathsquad   Send in a Syndie Strike Team   +
    Send in the Deathsquad   Send in a HONKsquad
    + Send in a Gimmick Team
    Change Security Level
    Security Level - Green   Security Level - Blue   diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 9fffa7628f6..91f2fec4f06 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1728,7 +1728,7 @@ log_admin("[key_name(src.owner)] sent [key_name(H)] a [eviltype] fax") message_admins("[key_name_admin(src.owner)] replied to [key_name_admin(H)] with a [eviltype] fax") else if(href_list["Bless"]) - if(!check_rights(R_ADMIN)) + if(!check_rights(R_EVENT)) return var/mob/living/M = locateUID(href_list["Bless"]) if(!istype(M)) @@ -1741,6 +1741,9 @@ btypes += "Heal Over Time" btypes += "Permanent Regeneration" btypes += "Super Powers" + btypes += "Scarab Guardian" + btypes += "Human Protector" + btypes += "Pet" var/blessing = input(owner, "How would you like to bless [M]?", "Its good to be good...", "") as null|anything in btypes if(!(blessing in btypes)) return @@ -1766,6 +1769,7 @@ H.dna.SetSEState(REGENERATEBLOCK, 1) genemutcheck(H, REGENERATEBLOCK, null, MUTCHK_FORCED) H.update_mutations() + H.gene_stability = 100 logmsg = "permanent regeneration." if("Super Powers") var/list/default_genes = list(REGENERATEBLOCK, NOBREATHBLOCK, COLDBLOCK) @@ -1773,12 +1777,49 @@ H.dna.SetSEState(gene, 1) genemutcheck(H, gene, null, MUTCHK_FORCED) H.update_mutations() + H.gene_stability = 100 logmsg = "superpowers." + if("Scarab Guardian") + var/obj/item/weapon/guardiancreator/biological/scarab = new /obj/item/weapon/guardiancreator/biological(H) + var/list/possible_guardians = list("Chaos", "Standard", "Ranged", "Support", "Explosive", "Random") + var/typechoice = input("Select Guardian Type", "Type") as null|anything in possible_guardians + if(isnull(typechoice)) + return + if(typechoice != "Random") + possible_guardians -= "Random" + scarab.possible_guardians = list() + scarab.possible_guardians += typechoice + scarab.attack_self(H) + spawn(700) + qdel(scarab) + logmsg = "scarab guardian." + if("Pet") + var/pets = subtypesof(/mob/living/simple_animal/pet) + var/petchoice = input("Select pet type", "Pets") as null|anything in pets + if(isnull(petchoice)) + return + var/mob/living/simple_animal/pet/P = new petchoice(H.loc) + var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as [P], pet of [H]?", poll_time = 100, min_hours = 10) + var/mob/dead/observer/theghost = null + if(candidates.len) + theghost = pick(candidates) + P.key = theghost.key + P.master_commander = H + spawn(30) + var/newname = sanitize(copytext(input(P, "You are [P], pet of [H]. Would you like to change your name to something else?", "Name change", P.name) as null|text,1,MAX_NAME_LEN)) + if(newname && newname != P.name) + P.name = newname + if(P.mind) + P.mind.name = newname + logmsg = "pet ([P])." + if("Human Protector") + usr.client.create_eventmob_for(H, 0) + logmsg = "syndie protector." if(logmsg) log_admin("[key_name(owner)] answered [key_name(M)]'s prayer with a blessing: [logmsg]") message_admins("[key_name_admin(owner)] answered [key_name_admin(M)]'s prayer with a blessing: [logmsg]") else if(href_list["Smite"]) - if(!check_rights(R_ADMIN)) + if(!check_rights(R_EVENT)) return var/mob/living/M = locateUID(href_list["Smite"]) var/mob/living/carbon/human/H @@ -1797,8 +1838,8 @@ ptypes += "Mutagen Cookie" ptypes += "Hellwater Cookie" ptypes += "Assassin" - ptypes += "Priest" - ptypes += "Lynch" + ptypes += "Hunter" + ptypes += "Crew Traitor" var/punishment = input(owner, "How would you like to smite [M]?", "Its good to be baaaad...", "") as null|anything in ptypes if(!(punishment in ptypes)) return @@ -1856,47 +1897,12 @@ H.drop_l_hand() H.equip_to_slot_or_del(evilcookie, slot_l_hand) logmsg = "a hellwater cookie." - if("Priest") - logmsg = "priest." + if("Hunter") + logmsg = "hunter." H.mutations |= NOCLONE - message_admins("[key_name_admin(owner)] is sending a dark priest to assassinate [key_name_admin(M)]...") - var/list/candidates = pollCandidates("Do you want to play as a murderous dark priest?") - if(!candidates.len) - to_chat(usr, "ERROR: Could not create priest. No valid candidates.") - return - var/mob/C = pick(candidates) - var/key_of_priest = C.key - if(!key_of_priest) - to_chat(usr, "ERROR: Could not create priest. Could not pick key.") - return - var/datum/mind/priest_mind = new /datum/mind(key_of_priest) - priest_mind.active = 1 - var/mob/living/carbon/human/priest_mob = new /mob/living/carbon/human(pick(latejoin)) - priest_mind.transfer_to(priest_mob) - var/datum/outfit/admin/dark_priest/O = new /datum/outfit/admin/dark_priest - priest_mob.equipOutfit(O, FALSE) - var/obj/item/weapon/pinpointer/advpinpointer/N = new /obj/item/weapon/pinpointer/advpinpointer(priest_mob) - priest_mob.equip_to_slot_or_del(N, slot_r_store) - N.active = 1 - N.mode = 2 - N.target = H - N.point_at(N.target) - N.flags |= NODROP - var/datum/objective/assassinate/kill_objective = new - kill_objective.owner = priest_mind - kill_objective.target = H.mind - kill_objective.explanation_text = "Murder [H.real_name], the [H.mind.assigned_role], in the name of the dark gods." - priest_mind.objectives += kill_objective - ticker.mode.traitors |= priest_mob.mind - to_chat(priest_mob, "ATTENTION: You are now a dark priest!") - to_chat(priest_mob, "Goal: MURDER [H.real_name], currently in [get_area(H.loc)], in the name of the dark gods. "); - to_chat(priest_mob, "The gods will prevent their revival."); - priest_mob.mind.special_role = SPECIAL_ROLE_TRAITOR - var/datum/atom_hud/antag/tatorhud = huds[ANTAG_HUD_TRAITOR] - tatorhud.join_hud(priest_mob) - ticker.mode.set_antag_hud(priest_mob, "hudsyndicate") - if("Assassin") - logmsg = "assassin." + usr.client.create_eventmob_for(H, 1) + if("Crew Traitor") + logmsg = "crew traitor." var/list/possible_traitors = list() for(var/mob/living/player in living_mob_list) if(player.client && player.mind && !player.mind.special_role && player.stat != DEAD && player != H) @@ -2524,6 +2530,10 @@ if(usr.client.syndicate_infiltration_team()) feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","SyndieInfiltrationTeam") + if("gimmickteam") + if(usr.client.gimmick_team()) + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","GimmickTeam") if("tripleAI") usr.client.triple_ai() feedback_inc("admin_secrets_fun_used",1) @@ -3326,6 +3336,63 @@ // Refresh the page src.view_flagged_books() +/client/proc/create_eventmob_for(var/mob/living/carbon/human/H, var/killthem = 0) + if(!check_rights(R_EVENT)) + return + var/admin_outfits = subtypesof(/datum/outfit/admin) + var/hunter_outfits = list() + for(var/type in admin_outfits) + var/datum/outfit/admin/O = type + hunter_outfits[initial(O.name)] = type + var/dresscode = input("Select type", "Contracted Agents") as null|anything in hunter_outfits + if(isnull(dresscode)) + return + var/datum/outfit/O = hunter_outfits[dresscode] + message_admins("[key_name_admin(mob)] is sending a ([dresscode]) to [killthem ? "assassinate" : "protect"] [key_name_admin(H)]...") + var/list/candidates = pollCandidates("Play as a [killthem ? "murderous" : "protective"] [dresscode]?", ROLE_TRAITOR, 1) + if(!candidates.len) + to_chat(usr, "ERROR: Could not create eventmob. No valid candidates.") + return + var/mob/C = pick(candidates) + var/key_of_hunter = C.key + if(!key_of_hunter) + to_chat(usr, "ERROR: Could not create eventmob. Could not pick key.") + return + var/datum/mind/hunter_mind = new /datum/mind(key_of_hunter) + hunter_mind.active = 1 + var/mob/living/carbon/human/hunter_mob = new /mob/living/carbon/human(pick(latejoin)) + hunter_mind.transfer_to(hunter_mob) + hunter_mob.equipOutfit(O, FALSE) + var/obj/item/weapon/pinpointer/advpinpointer/N = new /obj/item/weapon/pinpointer/advpinpointer(hunter_mob) + hunter_mob.equip_to_slot_or_del(N, slot_in_backpack) + N.active = 1 + N.mode = 2 + N.target = H + N.point_at(N.target) + if(!locate(/obj/item/weapon/implant/dust, hunter_mob)) + var/obj/item/weapon/implant/dust/D = new /obj/item/weapon/implant/dust(hunter_mob) + D.implant(hunter_mob) + if(killthem) + var/datum/objective/assassinate/kill_objective = new + kill_objective.owner = hunter_mind + kill_objective.target = H.mind + kill_objective.explanation_text = "Kill [H.real_name], the [H.mind.assigned_role]." + hunter_mind.objectives += kill_objective + else + var/datum/objective/protect/protect_objective = new + protect_objective.owner = hunter_mind + protect_objective.target = H.mind + protect_objective.explanation_text = "Protect [H.real_name], the [H.mind.assigned_role]." + hunter_mind.objectives += protect_objective + ticker.mode.traitors |= hunter_mob.mind + to_chat(hunter_mob, "ATTENTION: You are now on a mission!") + to_chat(hunter_mob, "Goal: [killthem ? "MURDER" : "PROTECT"] [H.real_name], currently in [get_area(H.loc)]. "); + if(killthem) + to_chat(hunter_mob, "If you kill them, they cannot be revived."); + hunter_mob.mind.special_role = SPECIAL_ROLE_TRAITOR + var/datum/atom_hud/antag/tatorhud = huds[ANTAG_HUD_TRAITOR] + tatorhud.join_hud(hunter_mob) + ticker.mode.set_antag_hud(hunter_mob, "hudsyndicate") /proc/admin_jump_link(var/atom/target) if(!target) return diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index 84577b51102..7b111e8ed20 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -89,7 +89,8 @@ if("delete") for(var/d in objs) - qdel(d) + if(!datum_is_forbidden(d)) + qdel(d) if("select") var/text = "" @@ -117,6 +118,9 @@ if("set" in query_tree) var/list/set_list = query_tree["set"] for(var/d in objs) + // Forbid explicitly modifying an admin datum's vars + if(datum_is_forbidden(d)) + return for(var/list/sets in set_list) var/datum/temp = d var/i = 0 @@ -124,11 +128,11 @@ if(++i == sets.len) if(istype(temp, /turf) && (v == "x" || v == "y" || v == "z")) continue - if(istype(temp.vars[v], /datum/admins)) - continue + if(!datum_is_forbidden(temp.vars[v])) + return temp.vars[v] = SDQL_expression(d, set_list[sets]) break - if(temp.vars.Find(v) && (istype(temp.vars[v], /datum) || istype(temp.vars[v], /client)) && !istype(temp.vars[v], /datum/admins)) + if(temp.vars.Find(v) && (istype(temp.vars[v], /datum) || istype(temp.vars[v], /client)) && !datum_is_forbidden(temp.vars[v])) temp = temp.vars[v] else break @@ -436,6 +440,11 @@ for(var/arg in arguments) new_args[++new_args.len] = SDQL_expression(source, arg) + for(var/p in forbidden_varedit_object_types) + if(istype(object, p)) + to_chat(usr, "It is forbidden to run this object's procs.") + return + if(object == world) // Global proc. procname = "/proc/[procname]" return call(procname)(arglist(new_args)) diff --git a/code/modules/admin/verbs/gimmick_team.dm b/code/modules/admin/verbs/gimmick_team.dm new file mode 100644 index 00000000000..2ca1d3c27df --- /dev/null +++ b/code/modules/admin/verbs/gimmick_team.dm @@ -0,0 +1,96 @@ +// Gimmick Team +// Spawns a group of player-controlled mobs with an outfit specified by the admin, at their location. + +/client/proc/gimmick_team() + set category = "Event" + set name = "Send Gimmick Team" + set desc = "Spawns a group of players in the specified outfit." + if(!check_rights(R_EVENT)) + return + if(!ticker) + alert("The game hasn't started yet!") + return + if(alert("Do you want to spawn a Gimmick Team at YOUR CURRENT LOCATION?",,"Yes","No")=="No") + return + var/turf/T = get_turf(mob) + var/pick_manually = 0 + if(alert("Pick the team members manually? If you select yes, you pick from ghosts. If you select no, ghosts get offered the chance to join.",,"Yes","No")=="Yes") + pick_manually = 1 + var/list/teamsizeoptions = list(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) + var/teamsize = input(src, "How many team members?") as null|anything in teamsizeoptions + if(!(teamsize in teamsizeoptions)) + alert("Invalid team size specified. Aborting.") + return + var/themission = null + while(!themission) + themission = sanitize(copytext(input(src, "Please specify a briefing message for the team.", "Specify Mission", ""),1,MAX_MESSAGE_LEN)) + if(!themission) + alert("No mission specified. Aborting.") + return + var/admin_outfits = subtypesof(/datum/outfit/admin) + var/outfit_list = list() + for(var/type in admin_outfits) + var/datum/outfit/admin/O = type + outfit_list[initial(O.name)] = type + var/dresscode = input("Select Outfit", "Dress-a-mob") as null|anything in outfit_list + if(isnull(dresscode)) + return + var/is_syndicate = 0 + if(alert("Do you want these characters automatically classified as antagonists?",,"Yes","No")=="Yes") + is_syndicate = 1 + + var/list/players_to_spawn = list() + if(pick_manually) + var/list/possible_ghosts = list() + for(var/mob/dead/observer/G in player_list) + if(!G.client.is_afk()) + if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD)) + possible_ghosts += G + for(var/i=teamsize,(i>0&&possible_ghosts.len),i--) //Decrease with every member selected. + var/candidate = input("Pick characters to spawn. This will go on until there either no more ghosts to pick from, or the slots are full.", "Active Players") as null|anything in possible_ghosts // auto-picks if only one candidate + possible_ghosts -= candidate + players_to_spawn += candidate + else + to_chat(src, "Polling candidates...") + players_to_spawn = pollCandidates("Do you want to play as an event character?") + + if(!players_to_spawn.len) + to_chat(src, "Nobody volunteered.") + return 0 + + var/datum/outfit/O = outfit_list[dresscode] + + var/players_spawned = 0 + for(var/mob/thisplayer in players_to_spawn) + var/mob/living/carbon/human/H = new /mob/living/carbon/human(T) + H.name = random_name(pick(MALE,FEMALE)) + var/datum/preferences/A = new() //Randomize appearance + A.real_name = H.name + A.copy_to(H) + H.dna.ready_dna(H) + + H.mind_initialize() + H.mind.assigned_role = "MODE" + H.mind.special_role = "Event Character" + + H.key = thisplayer.key + + H.equipOutfit(O, FALSE) + + to_chat(H, "
    [themission]") + H.mind.store_memory("[themission]

    ") + + if(is_syndicate) + ticker.mode.traitors |= H.mind //Adds them to extra antag list + + players_spawned++ + if(players_spawned >= teamsize) + break + + + message_admins("[key_name_admin(src)] has spawned a Gimmick Team.", 1) + log_admin("[key_name(src)] used Spawn Gimmick Team.") + feedback_add_details("admin_verb","SPAWNGIM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +// --------------------------------------------------------------------------------------------------------- + diff --git a/code/modules/admin/verbs/honksquad.dm b/code/modules/admin/verbs/honksquad.dm index cecf04b93aa..b437476eb32 100644 --- a/code/modules/admin/verbs/honksquad.dm +++ b/code/modules/admin/verbs/honksquad.dm @@ -93,6 +93,7 @@ var/global/sent_honksquad = 0 new_honksquad.mind_initialize() new_honksquad.mind.assigned_role = "MODE" new_honksquad.mind.special_role = SPECIAL_ROLE_HONKSQUAD + new_honksquad.add_language("Clownish") ticker.mode.traitors |= new_honksquad.mind//Adds them to current traitor list. Which is really the extra antagonist list. new_honksquad.equip_honksquad(honk_leader_selected) return new_honksquad diff --git a/code/modules/admin/verbs/infiltratorteam_syndicate.dm b/code/modules/admin/verbs/infiltratorteam_syndicate.dm index 4e691979507..4c6d5248a6e 100644 --- a/code/modules/admin/verbs/infiltratorteam_syndicate.dm +++ b/code/modules/admin/verbs/infiltratorteam_syndicate.dm @@ -58,7 +58,7 @@ var/global/sent_syndicate_infiltration_team = 0 infiltrators += candidate else to_chat(src, "Polling candidates...") - infiltrators = pollCandidates("Do you want to play as a SYNDICATE INFILTRATOR?") // ROLE_TRAITOR, 7 + infiltrators = pollCandidates("Do you want to play as a SYNDICATE INFILTRATOR?", ROLE_TRAITOR, 1) if(!infiltrators.len) to_chat(src, "Nobody volunteered.") diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm index 8cce4c5a761..cb50d2e6391 100644 --- a/code/modules/admin/verbs/modifyvariables.dm +++ b/code/modules/admin/verbs/modifyvariables.dm @@ -13,6 +13,14 @@ var/list/forbidden_varedit_object_types = list( feedback_add_details("admin_verb","EDITV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! */ +/proc/datum_is_forbidden(type) + for(var/p in forbidden_varedit_object_types) + if(istype(type, p)) + to_chat(usr, "It is forbidden to tamper with this object.") + return FALSE + return TRUE + + /client/proc/cmd_modify_ticker_variables() set category = "Debug" set name = "Edit Ticker Variables" @@ -131,7 +139,7 @@ var/list/forbidden_varedit_object_types = list( L[var_value] = mod_list_add_ass() //haha if("No") L += var_value - + /client/proc/mod_list(var/list/L) if(!check_rights(R_VAREDIT)) return @@ -497,4 +505,4 @@ var/list/forbidden_varedit_object_types = list( to_chat(usr, "Variable type is UNKNOWN.") class = null - return class \ No newline at end of file + return class diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 8d201d6ee8a..d4734e92b53 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -513,7 +513,7 @@ client/proc/one_click_antag() new_vox.update_eyes() for(var/obj/item/organ/external/limb in new_vox.bodyparts) - limb.status &= ~(ORGAN_DESTROYED | ORGAN_ROBOT) + limb.status &= ~ORGAN_ROBOT //Now apply cortical stack. var/obj/item/weapon/implant/cortical/I = new(new_vox) diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm index 69093944f67..1e3e3784e6e 100644 --- a/code/modules/admin/verbs/playsound.dm +++ b/code/modules/admin/verbs/playsound.dm @@ -6,7 +6,7 @@ var/list/sounds_cache = list() if(!check_rights(R_SOUNDS)) return - var/sound/awful_sound = sound(null, repeat = 0, wait = 0, channel = 777) + var/sound/awful_sound = sound(null, repeat = 0, wait = 0, channel = CHANNEL_ADMIN) log_admin("[key_name(src)] stopped admin sounds.") message_admins("[key_name_admin(src)] stopped admin sounds.", 1) @@ -18,7 +18,7 @@ var/list/sounds_cache = list() set name = "Play Global Sound" if(!check_rights(R_SOUNDS)) return - var/sound/uploaded_sound = sound(S, repeat = 0, wait = 1, channel = 777) + var/sound/uploaded_sound = sound(S, repeat = 0, wait = 1, channel = CHANNEL_ADMIN) uploaded_sound.priority = 250 sounds_cache += S diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index af865f7f5c8..6b5f6f16249 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -687,7 +687,7 @@ Traitors and the like can also be revived with the previous role mostly intact. message_admins("[key_name_admin(usr)] has gibbed [key_name_admin(M)]", 1) if(istype(M, /mob/dead/observer)) - gibs(M.loc, M.viruses) + gibs(M.loc) return M.gib() diff --git a/code/modules/awaymissions/maploader/swapmaps.dm b/code/modules/awaymissions/maploader/swapmaps.dm index fab504b150d..bff9df153ef 100644 --- a/code/modules/awaymissions/maploader/swapmaps.dm +++ b/code/modules/awaymissions/maploader/swapmaps.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - /* SwapMaps library by Lummox JR developed for digitalBYOND diff --git a/code/modules/awaymissions/mission_code/UO71-terrorspiders.dm b/code/modules/awaymissions/mission_code/UO71-terrorspiders.dm index 52d8caa6f74..0b6f6343919 100644 --- a/code/modules/awaymissions/mission_code/UO71-terrorspiders.dm +++ b/code/modules/awaymissions/mission_code/UO71-terrorspiders.dm @@ -179,6 +179,10 @@ (the writing trails off, as if the writer was interrupted)
    "} +/obj/item/weapon/paper/terrorspiders9 + name = "paper - 'Research Notes'" + info = "The notes appear gibberish to you. Perhaps a destructive analyser in R&D could make sense of them." + origin_tech = "combat=4;materials=4;engineering=4;biotech=4" /obj/item/weapon/gun/energy/laser/awaymission_aeg name = "Wireless Energy Gun" diff --git a/code/modules/client/asset_cache.dm b/code/modules/client/asset_cache.dm index 72534169e6d..d3dd6a5438b 100644 --- a/code/modules/client/asset_cache.dm +++ b/code/modules/client/asset_cache.dm @@ -302,6 +302,31 @@ proc/getFilesSlow(var/client/client, var/list/files, var/register_asset = TRUE) send_asset_list(client, assets, verify) +//Pipe sprites for UIs +/datum/asset/rpd + var/assets = list() + var/verify = FALSE + +/datum/asset/rpd/register() + for(var/state in icon_states('icons/obj/pipe-item.dmi')) + if(!(state in list("cap", "connector", "dtvalve", "dual-port vent", "dvalve", "filter", "he", "heunary", "injector", "junction", "manifold", "mixer", "tvalve", "mvalve", "passive vent", "passivegate", "pump", "scrubber", "simple", "universal", "uvent", "volumepump"))) //Basically all the pipes we want sprites for + continue + if(state in list("he", "simple")) + for(var/D in alldirs) + assets["[state]-[dir2text(D)].png"] = icon('icons/obj/pipe-item.dmi', state, D) + for(var/D in cardinal) + assets["[state]-[dir2text(D)].png"] = icon('icons/obj/pipe-item.dmi', state, D) + for(var/state in icon_states('icons/obj/pipes/disposal.dmi')) + if(!(state in list("conpipe-c", "conpipe-j1", "conpipe-s", "conpipe-t", "conpipe-y", "intake", "outlet"))) //Pipes we want sprites for + continue + for(var/D in cardinal) + assets["[state]-[dir2text(D)].png"] = icon('icons/obj/pipes/disposal.dmi', state, D) + for(var/asset_name in assets) + register_asset(asset_name, assets[asset_name]) + +/datum/asset/rpd/send(client) + send_asset_list(client, assets, verify) + //Mob Hunt sprites for UIs /datum/asset/mob_hunt var/assets = list() diff --git a/code/modules/client/preference/loadout/loadout_accessories.dm b/code/modules/client/preference/loadout/loadout_accessories.dm index 8353514fb37..58315d2f2a2 100644 --- a/code/modules/client/preference/loadout/loadout_accessories.dm +++ b/code/modules/client/preference/loadout/loadout_accessories.dm @@ -142,5 +142,17 @@ display_name = "simple necklace" path = /obj/item/clothing/accessory/necklace +/datum/gear/accessory/corset + display_name = "corset, black" + path = /obj/item/clothing/accessory/corset + +/datum/gear/accessory/corsetred + display_name = "corset, red" + path = /obj/item/clothing/accessory/corset/red + +/datum/gear/accessory/corsetblue + display_name = "corset, blue" + path = /obj/item/clothing/accessory/corset/blue + diff --git a/code/modules/client/preference/loadout/loadout_hat.dm b/code/modules/client/preference/loadout/loadout_hat.dm index 196f9f65ca0..cf47e28695b 100644 --- a/code/modules/client/preference/loadout/loadout_hat.dm +++ b/code/modules/client/preference/loadout/loadout_hat.dm @@ -147,4 +147,12 @@ /datum/gear/hat/surgicalcap_green display_name = "surgical cap, green" path = /obj/item/clothing/head/surgery/green - allowed_roles = list("Chief Medical Officer", "Medical Doctor") \ No newline at end of file + allowed_roles = list("Chief Medical Officer", "Medical Doctor") + +/datum/gear/hat/flowerpin + display_name = "hair flower" + path = /obj/item/clothing/head/hairflower + +/datum/gear/hat/flowerpinpurp + display_name = "hair flower, purple" + path = /obj/item/clothing/head/hairflower/purple \ No newline at end of file diff --git a/code/modules/client/preference/loadout/loadout_racial.dm b/code/modules/client/preference/loadout/loadout_racial.dm index f7d96011e5c..09b21a63642 100644 --- a/code/modules/client/preference/loadout/loadout_racial.dm +++ b/code/modules/client/preference/loadout/loadout_racial.dm @@ -8,6 +8,7 @@ display_name = "embroidered veil" description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races." path = /obj/item/clothing/glasses/tajblind + cost = 1 /datum/gear/racial/tajsec display_name = "sleek veil" @@ -37,4 +38,9 @@ display_name = "khaki veil" description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races. It is light and comfy!" path = /obj/item/clothing/glasses/tajblind/cargo - allowed_roles = list("Quartermaster","Cargo Technician", "Miner") \ No newline at end of file + allowed_roles = list("Quartermaster","Cargo Technician", "Miner") + +/datum/gear/racial/footwraps + display_name = "cloth footwraps" + path = /obj/item/clothing/shoes/footwraps + cost = 1 \ No newline at end of file diff --git a/code/modules/client/preference/loadout/loadout_uniform.dm b/code/modules/client/preference/loadout/loadout_uniform.dm index 889dfaa1080..f4a5c465aba 100644 --- a/code/modules/client/preference/loadout/loadout_uniform.dm +++ b/code/modules/client/preference/loadout/loadout_uniform.dm @@ -223,3 +223,4 @@ /datum/gear/uniform/pants/caopants display_name = "pants, camo" path = /obj/item/clothing/under/pants/camo + diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm index 9e40914da9b..b4d4bc60041 100644 --- a/code/modules/client/preference/preferences.dm +++ b/code/modules/client/preference/preferences.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - var/list/preferences_datums = list() var/global/list/special_role_times = list( //minimum age (in days) for accounts to play these roles @@ -351,7 +349,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts dat += "
    " - if(!(S.flags & ALL_RPARTS)) + if(!(S.bodyflags & ALL_RPARTS)) dat += "Eyes: " dat += "Color [color_square(r_eyes, g_eyes, b_eyes)]
    " @@ -827,7 +825,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts /datum/preferences/proc/ShowDisabilityState(mob/user,flag,label) var/datum/species/S = all_species[species] - if(flag==DISABILITY_FLAG_FAT && !(S.flags & CAN_BE_FAT)) + if(flag==DISABILITY_FLAG_FAT && !(CAN_BE_FAT in S.species_traits)) return "
  • [species] cannot be fat.
  • " return "
  • [label]: [disabilities & flag ? "Yes" : "No"]
  • " @@ -1089,7 +1087,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts if("input") var/dflag=text2num(href_list["disability"]) if(dflag >= 0) - if(!(dflag==DISABILITY_FLAG_FAT && !(S.flags & CAN_BE_FAT))) //If the disability isn't fatness, toggle it. If it IS fatness, check to see if the species can be fat before going ahead. + if(!(dflag==DISABILITY_FLAG_FAT && !(CAN_BE_FAT in S.species_traits))) //If the disability isn't fatness, toggle it. If it IS fatness, check to see if the species can be fat before going ahead. disabilities ^= text2num(href_list["disability"]) //MAGIC SetDisabilities(user) else @@ -1175,12 +1173,15 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts switch(href_list["task"]) if("random") var/datum/robolimb/robohead - if(S.flags & ALL_RPARTS) + if(S.bodyflags & ALL_RPARTS) var/head_model = "[!rlimb_data["head"] ? "Morpheus Cyberkinetics" : rlimb_data["head"]]" robohead = all_robolimbs[head_model] switch(href_list["preference"]) if("name") real_name = random_name(gender,species) + if(isnewplayer(user)) + var/mob/new_player/N = user + N.new_player_panel_proc() if("age") age = rand(AGE_MIN, AGE_MAX) if("hair") @@ -1268,6 +1269,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts var/new_name = reject_bad_name(raw_name, 1) if(new_name) real_name = new_name + if(isnewplayer(user)) + var/mob/new_player/N = user + N.new_player_panel_proc() else to_chat(user, "Invalid name. Your name should be at least 2 and at most [MAX_NAME_LEN] characters long. It may only contain the characters A-Z, a-z, -, ' and .") @@ -1300,7 +1304,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts if(NS.has_gender && gender == PLURAL) gender = pick(MALE,FEMALE) var/datum/robolimb/robohead - if(NS.flags & ALL_RPARTS) + if(NS.bodyflags & ALL_RPARTS) var/head_model = "[!rlimb_data["head"] ? "Morpheus Cyberkinetics" : rlimb_data["head"]]" robohead = all_robolimbs[head_model] //grab one of the valid hair styles for the newly chosen species @@ -1437,7 +1441,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts if(hairstyle == "Bald") //Just in case. valid_hairstyles += hairstyle continue - if(S.flags & ALL_RPARTS) //Species that can use prosthetic heads. + if(S.bodyflags & ALL_RPARTS) //Species that can use prosthetic heads. var/head_model if(!rlimb_data["head"]) //Handle situations where the head is default. head_model = "Morpheus Cyberkinetics" @@ -1520,7 +1524,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts if(M.heads_allowed && !("All" in M.heads_allowed)) continue - if(S.flags & ALL_RPARTS) //Species that can use prosthetic heads. + if(S.bodyflags & ALL_RPARTS) //Species that can use prosthetic heads. var/head_model if(!rlimb_data["head"]) //Handle situations where the head is default. head_model = "Morpheus Cyberkinetics" @@ -1648,7 +1652,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts continue if(gender == FEMALE && SA.gender == MALE) continue - if(S.flags & ALL_RPARTS) //Species that can use prosthetic heads. + if(S.bodyflags & ALL_RPARTS) //Species that can use prosthetic heads. var/head_model if(!rlimb_data["head"]) //Handle situations where the head is default. head_model = "Morpheus Cyberkinetics" @@ -1777,7 +1781,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts if("limbs") var/valid_limbs = list("Left Leg", "Right Leg", "Left Arm", "Right Arm", "Left Foot", "Right Foot", "Left Hand", "Right Hand") - if(S.flags & ALL_RPARTS) + if(S.bodyflags & ALL_RPARTS) valid_limbs = list("Torso", "Lower Body", "Head", "Left Leg", "Right Leg", "Left Arm", "Right Arm", "Left Foot", "Right Foot", "Left Hand", "Right Hand") var/limb_name = input(user, "Which limb do you want to change?") as null|anything in valid_limbs if(!limb_name) return @@ -1813,19 +1817,19 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts second_limb = "r_hand" if("Left Foot") limb = "l_foot" - if(!(S.flags & ALL_RPARTS)) + if(!(S.bodyflags & ALL_RPARTS)) third_limb = "l_leg" if("Right Foot") limb = "r_foot" - if(!(S.flags & ALL_RPARTS)) + if(!(S.bodyflags & ALL_RPARTS)) third_limb = "r_leg" if("Left Hand") limb = "l_hand" - if(!(S.flags & ALL_RPARTS)) + if(!(S.bodyflags & ALL_RPARTS)) third_limb = "l_arm" if("Right Hand") limb = "r_hand" - if(!(S.flags & ALL_RPARTS)) + if(!(S.bodyflags & ALL_RPARTS)) third_limb = "r_arm" var/new_state = input(user, "What state do you wish the limb to be in?") as null|anything in valid_limb_states @@ -1881,7 +1885,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts if(subchoice) choice = subchoice if(limb in list("head", "chest", "groin")) - if(!(S.flags & ALL_RPARTS)) + if(!(S.bodyflags & ALL_RPARTS)) return if(limb == "head") ha_style = "None" @@ -2032,10 +2036,10 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts if("lobby_music") sound ^= SOUND_LOBBY - if(sound & SOUND_LOBBY) - user << sound(ticker.login_music, repeat = 0, wait = 0, volume = 85, channel = 1) + if((sound & SOUND_LOBBY) && user.client) + user.client.playtitlemusic() else - user << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) + user.stop_sound_channel(CHANNEL_LOBBYMUSIC) if("ghost_ears") toggles ^= CHAT_GHOSTEARS @@ -2074,6 +2078,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts real_name = random_name(gender) save_character(user) close_load_dialog(user) + if(isnewplayer(user)) + var/mob/new_player/N = user + N.new_player_panel_proc() if("tab") if(href_list["tab"]) @@ -2154,7 +2161,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts else if(status == "cyborg") if(rlimb_data[name]) - O.robotize(rlimb_data[name]) + O.robotize(rlimb_data[name], convert_all = 0) else O.robotize() else @@ -2170,7 +2177,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts // Wheelchair necessary? var/obj/item/organ/external/l_foot = character.get_organ("l_foot") var/obj/item/organ/external/r_foot = character.get_organ("r_foot") - if((!l_foot || l_foot.status & ORGAN_DESTROYED) && (!r_foot || r_foot.status & ORGAN_DESTROYED)) + if(!l_foot && !r_foot) var/obj/structure/stool/bed/chair/wheelchair/W = new /obj/structure/stool/bed/chair/wheelchair (character.loc) character.buckled = W character.update_canmove() @@ -2204,7 +2211,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts character.change_eye_color(r_eyes, g_eyes, b_eyes) - if(disabilities & DISABILITY_FLAG_FAT && character.species.flags & CAN_BE_FAT) + if(disabilities & DISABILITY_FLAG_FAT && (CAN_BE_FAT in character.species.species_traits)) character.dna.SetSEState(FATBLOCK,1,1) character.overeatduration = 600 diff --git a/code/modules/client/preference/preferences_toggles.dm b/code/modules/client/preference/preferences_toggles.dm index b922706fd61..40804aa83b2 100644 --- a/code/modules/client/preference/preferences_toggles.dm +++ b/code/modules/client/preference/preferences_toggles.dm @@ -95,12 +95,11 @@ prefs.save_preferences(src) if(prefs.sound & SOUND_LOBBY) to_chat(src, "You will now hear music in the game lobby.") - if(istype(mob, /mob/new_player)) - playtitlemusic() + if(isnewplayer(usr)) + usr.client.playtitlemusic() else to_chat(src, "You will no longer hear music in the game lobby.") - if(istype(mob, /mob/new_player)) - src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1)// stop the jamsz + usr.stop_sound_channel(CHANNEL_LOBBYMUSIC) feedback_add_details("admin_verb","TLobby") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -113,9 +112,7 @@ if(prefs.sound & SOUND_MIDI) to_chat(src, "You will now hear any sounds uploaded by admins.") else - var/sound/break_sound = sound(null, repeat = 0, wait = 0, channel = 777) - break_sound.priority = 250 - src << break_sound //breaks the client's sound output on channel 777 + usr.stop_sound_channel(CHANNEL_ADMIN) to_chat(src, "You will no longer hear sounds uploaded by admins; any currently playing midis have been disabled.") feedback_add_details("admin_verb","TMidi") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -150,7 +147,7 @@ to_chat(src, "You will now hear ambient sounds.") else to_chat(src, "You will no longer hear ambient sounds.") - src << sound(null, repeat = 0, wait = 0, volume = 0, channel = 1) + usr.stop_sound_channel(CHANNEL_AMBIENCE) feedback_add_details("admin_verb","TAmbi") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/verb/Toggle_Buzz() //No more headaches because headphones bump up shipambience.ogg to insanity levels. @@ -163,7 +160,7 @@ to_chat(src, "You will now hear ambient white noise.") else to_chat(src, "You will no longer hear ambient white noise.") - src << sound(null, repeat = 0, wait = 0, volume = 0, channel = 2) + usr.stop_sound_channel(CHANNEL_BUZZ) feedback_add_details("admin_verb","TBuzz") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -177,8 +174,7 @@ to_chat(src, "You will now hear heartbeat sounds.") else to_chat(src, "You will no longer hear heartbeat sounds.") - src << sound(null, repeat = 0, wait = 0, volume = 0, channel = 1) - src << sound(null, repeat = 0, wait = 0, volume = 0, channel = 2) + usr.stop_sound_channel(CHANNEL_HEARTBEAT) feedback_add_details("admin_verb","Thb") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! // This needs a toggle because you people are awful and spammed terrible music diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 3d11f40b1c9..94b9e50d37b 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -332,7 +332,7 @@ BLIND // can't see anything mask_adjusted = 1 if(adjusted_flags) slot_flags = adjusted_flags - if(ishuman(user) && H.internal && user.wear_mask == src) /*If the user was wearing the mask providing internals on their face at the time it was adjusted, turn off internals. + if(ishuman(user) && H.internal && !H.get_organ_slot("breathing_tube") && user.wear_mask == src) /*If the user was wearing the mask providing internals on their face at the time it was adjusted, turn off internals. Otherwise, they adjusted it while it was in their hands or some such so we won't be needing to turn off internals.*/ H.update_internals_hud_icon(0) H.internal = null @@ -372,6 +372,8 @@ BLIND // can't see anything var/silence_steps = 0 var/shoe_sound_footstep = 1 var/shoe_sound = null + var/blood_state = BLOOD_STATE_NOT_BLOODY + var/list/bloody_shoes = list(BLOOD_STATE_HUMAN = 0, BLOOD_STATE_XENO = 0, BLOOD_STATE_NOT_BLOODY = 0) permeability_coefficient = 0.50 slowdown = SHOES_SLOWDOWN diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index c7c7c3afcb0..b60f7407229 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -69,7 +69,6 @@ attack_verb = list("sliced") hitsound = 'sound/weapons/bladeslice.ogg' sharp = 1 - edge = 1 /obj/item/clothing/glasses/meson/cyber name = "Eye Replacement Implant" @@ -90,7 +89,8 @@ scan_reagents = 1 //You can see reagents while wearing science goggles species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/eyes.dmi' + "Vox" = 'icons/mob/species/vox/eyes.dmi', + "Grey" = 'icons/mob/species/grey/eyes.dmi' ) actions_types = list(/datum/action/item_action/toggle_research_scanner) @@ -138,7 +138,8 @@ item_state = "eyepatch" species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/eyes.dmi' + "Vox" = 'icons/mob/species/vox/eyes.dmi', + "Grey" = 'icons/mob/species/grey/eyes.dmi' ) /obj/item/clothing/glasses/monocle @@ -150,7 +151,8 @@ species_fit = list("Vox") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/eyes.dmi', - "Drask" = 'icons/mob/species/drask/eyes.dmi' + "Drask" = 'icons/mob/species/drask/eyes.dmi', + "Grey" = 'icons/mob/species/grey/eyes.dmi' ) /obj/item/clothing/glasses/material @@ -163,7 +165,8 @@ species_fit = list("Vox") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/eyes.dmi', - "Drask" = 'icons/mob/species/drask/eyes.dmi' + "Drask" = 'icons/mob/species/drask/eyes.dmi', + "Grey" = 'icons/mob/species/grey/eyes.dmi' ) /obj/item/clothing/glasses/material/cyber @@ -182,7 +185,8 @@ prescription = 1 species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/eyes.dmi' + "Vox" = 'icons/mob/species/vox/eyes.dmi', + "Grey" = 'icons/mob/species/grey/eyes.dmi' ) /obj/item/clothing/glasses/regular/hipster @@ -198,7 +202,8 @@ item_state = "3d" species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/eyes.dmi' + "Vox" = 'icons/mob/species/vox/eyes.dmi', + "Grey" = 'icons/mob/species/grey/eyes.dmi' ) /obj/item/clothing/glasses/gglasses @@ -208,7 +213,8 @@ item_state = "gglasses" species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/eyes.dmi' + "Vox" = 'icons/mob/species/vox/eyes.dmi', + "Grey" = 'icons/mob/species/grey/eyes.dmi' ) prescription_upgradable = 1 @@ -379,7 +385,8 @@ flash_protect = -1 species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/eyes.dmi' + "Vox" = 'icons/mob/species/vox/eyes.dmi', + "Grey" = 'icons/mob/species/grey/eyes.dmi' ) emp_act(severity) diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 818ed3f2f10..ff8de1a6a82 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -62,7 +62,8 @@ HUDType = DATA_HUD_DIAGNOSTIC species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/eyes.dmi' + "Vox" = 'icons/mob/species/vox/eyes.dmi', + "Grey" = 'icons/mob/species/grey/eyes.dmi' ) /obj/item/clothing/glasses/hud/diagnostic/night @@ -85,7 +86,8 @@ species_fit = list("Vox") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/eyes.dmi', - "Drask" = 'icons/mob/species/drask/eyes.dmi' + "Drask" = 'icons/mob/species/drask/eyes.dmi', + "Grey" = 'icons/mob/species/grey/eyes.dmi' ) /obj/item/clothing/glasses/hud/security/chameleon @@ -138,7 +140,8 @@ HUDType = DATA_HUD_HYDROPONIC species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/eyes.dmi' + "Vox" = 'icons/mob/species/vox/eyes.dmi', + "Grey" = 'icons/mob/species/grey/eyes.dmi' ) /obj/item/clothing/glasses/hud/hydroponic/night diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index c73a6f21306..ae694f8edf2 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -70,4 +70,8 @@ heat_protection = HEAD max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT cold_protection = HEAD - min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT \ No newline at end of file + min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT + species_fit = list("Grey") + sprite_sheets = list( + "Grey" = 'icons/mob/species/grey/helmet.dmi' + ) \ No newline at end of file diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 1bb6c1ec382..c3595288213 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -13,10 +13,11 @@ max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT strip_delay = 60 burn_state = FIRE_PROOF - species_fit = list("Vox", "Drask") + species_fit = list("Vox", "Drask", "Grey") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/helmet.dmi', - "Drask" = 'icons/mob/species/drask/helmet.dmi' + "Drask" = 'icons/mob/species/drask/helmet.dmi', + "Grey" = 'icons/mob/species/grey/helmet.dmi' ) /obj/item/clothing/head/helmet/attack_self(mob/user) diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index aa5a81c2063..ee0610471c8 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -24,12 +24,13 @@ flags_inv = (HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE) actions_types = list(/datum/action/item_action/toggle) burn_state = FIRE_PROOF - species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin") + species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin", "Grey") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/head.dmi', "Unathi" = 'icons/mob/species/unathi/helmet.dmi', "Tajaran" = 'icons/mob/species/tajaran/helmet.dmi', - "Vulpkanin" = 'icons/mob/species/vulpkanin/helmet.dmi' + "Vulpkanin" = 'icons/mob/species/vulpkanin/helmet.dmi', + "Grey" = 'icons/mob/species/grey/helmet.dmi' ) /obj/item/clothing/head/welding/flamedecal diff --git a/code/modules/clothing/masks/boxing.dm b/code/modules/clothing/masks/boxing.dm index 59081cf3d00..d66daf59760 100644 --- a/code/modules/clothing/masks/boxing.dm +++ b/code/modules/clothing/masks/boxing.dm @@ -8,12 +8,13 @@ w_class = WEIGHT_CLASS_SMALL actions_types = list(/datum/action/item_action/adjust) adjusted_flags = SLOT_HEAD - species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin") + species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin", "Grey") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/mask.dmi', "Unathi" = 'icons/mob/species/unathi/mask.dmi', "Tajaran" = 'icons/mob/species/tajaran/mask.dmi', "Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi', + "Grey" = 'icons/mob/species/grey/mask.dmi', "Drask" = 'icons/mob/species/drask/mask.dmi' ) @@ -28,12 +29,13 @@ flags = BLOCKHAIR flags_inv = HIDEFACE w_class = WEIGHT_CLASS_SMALL - species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin") + species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin", "Grey") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/mask.dmi', "Unathi" = 'icons/mob/species/unathi/mask.dmi', "Tajaran" = 'icons/mob/species/tajaran/mask.dmi', "Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi', + "Grey" = 'icons/mob/species/grey/mask.dmi', "Drask" = 'icons/mob/species/drask/mask.dmi' ) diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm index 851c10db354..afefbbc93cc 100644 --- a/code/modules/clothing/masks/breath.dm +++ b/code/modules/clothing/masks/breath.dm @@ -10,13 +10,14 @@ permeability_coefficient = 0.50 actions_types = list(/datum/action/item_action/adjust) burn_state = FIRE_PROOF - species_fit = list("Vox", "Vox Armalis", "Unathi", "Tajaran", "Vulpkanin") + species_fit = list("Vox", "Vox Armalis", "Unathi", "Tajaran", "Vulpkanin", "Grey" ) sprite_sheets = list( "Vox" = 'icons/mob/species/vox/mask.dmi', "Vox Armalis" = 'icons/mob/species/armalis/mask.dmi', "Unathi" = 'icons/mob/species/unathi/mask.dmi', "Tajaran" = 'icons/mob/species/tajaran/mask.dmi', "Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi', + "Grey" = 'icons/mob/species/grey/mask.dmi', "Drask" = 'icons/mob/species/drask/mask.dmi' ) @@ -30,7 +31,7 @@ item_state = "medical" permeability_coefficient = 0.01 put_on_delay = 10 - species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin") + species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin", "Grey") /obj/item/clothing/mask/breath/vox desc = "A weirdly-shaped breath mask." diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index d524d87e3d8..31003f26036 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -34,18 +34,17 @@ w_class = WEIGHT_CLASS_TINY resist_time = 150 mute = 0 - species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin") + species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin", "Grey") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/mask.dmi', "Unathi" = 'icons/mob/species/unathi/mask.dmi', "Tajaran" = 'icons/mob/species/tajaran/mask.dmi', - "Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi' + "Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi', + "Grey" = 'icons/mob/species/grey/mask.dmi' ) /obj/item/clothing/mask/muzzle/tapegag/dropped(mob/living/carbon/human/user) var/atom/movable/R = new /obj/item/trash/tapetrash - if(user.species.bodyflags & HAS_FUR) - R.desc += " Is that...fur?" var/turf/T = get_turf(src) R.loc = T transfer_fingerprints_to(R) @@ -65,12 +64,13 @@ permeability_coefficient = 0.01 armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 25, rad = 0) actions_types = list(/datum/action/item_action/adjust) - species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin") + species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin", "Grey") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/mask.dmi', "Unathi" = 'icons/mob/species/unathi/mask.dmi', "Tajaran" = 'icons/mob/species/tajaran/mask.dmi', - "Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi' + "Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi', + "Grey" = 'icons/mob/species/grey/mask.dmi' ) @@ -83,12 +83,13 @@ icon_state = "fake-moustache" flags_inv = HIDEFACE actions_types = list(/datum/action/item_action/pontificate) - species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin") + species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin", "Grey") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/mask.dmi', "Unathi" = 'icons/mob/species/unathi/mask.dmi', "Tajaran" = 'icons/mob/species/tajaran/mask.dmi', - "Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi' + "Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi', + "Grey" = 'icons/mob/species/grey/mask.dmi' ) /obj/item/clothing/mask/fakemoustache/attack_self(mob/user) @@ -267,12 +268,13 @@ slot_flags = SLOT_MASK adjusted_flags = SLOT_HEAD icon_state = "bandbotany" - species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin") + species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin", "Grey") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/mask.dmi', "Unathi" = 'icons/mob/species/unathi/mask.dmi', "Tajaran" = 'icons/mob/species/tajaran/mask.dmi', - "Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi' + "Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi', + "Grey" = 'icons/mob/species/grey/mask.dmi' ) actions_types = list(/datum/action/item_action/adjust) diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 6a07ea17da8..0f557b6d9aa 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -244,3 +244,12 @@ desc = "For a Rustlin' tustlin' cowgirl." icon_state = "cowboyboots_pink" item_color = "cowboyboots_pink" + +/obj/item/clothing/shoes/footwraps + name = "cloth footwraps" + desc = "A roll of treated canvas used for wrapping claws or paws." + icon_state = "clothwrap" + item_state = "clothwrap" + force = 0 + silence_steps = TRUE + w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/clothing/spacesuits/ert.dm b/code/modules/clothing/spacesuits/ert.dm index 80257cda101..90d61fa0313 100644 --- a/code/modules/clothing/spacesuits/ert.dm +++ b/code/modules/clothing/spacesuits/ert.dm @@ -9,6 +9,10 @@ var/obj/machinery/camera/camera var/has_camera = TRUE strip_delay = 130 + species_fit = list("Grey") + sprite_sheets = list( + "Grey" = 'icons/mob/species/grey/helmet.dmi' + ) /obj/item/clothing/head/helmet/space/hardsuit/ert/attack_self(mob/user) if(camera || !has_camera) diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 802f39ad361..5483ca65072 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -20,14 +20,15 @@ "Skrell" = 'icons/mob/species/skrell/helmet.dmi', "Vox" = 'icons/mob/species/vox/helmet.dmi', "Vulpkanin" = 'icons/mob/species/vulpkanin/helmet.dmi', - "Drask" = 'icons/mob/species/drask/helmet.dmi' + "Drask" = 'icons/mob/species/drask/helmet.dmi', + "Grey" = 'icons/mob/species/grey/helmet.dmi' ) sprite_sheets_obj = list( "Unathi" = 'icons/obj/clothing/species/unathi/hats.dmi', "Tajaran" = 'icons/obj/clothing/species/tajaran/hats.dmi', "Skrell" = 'icons/obj/clothing/species/skrell/hats.dmi', "Vox" = 'icons/obj/clothing/species/vox/hats.dmi', - "Vulpkanin" = 'icons/obj/clothing/species/vulpkanin/hats.dmi', + "Vulpkanin" = 'icons/obj/clothing/species/vulpkanin/hats.dmi' ) /obj/item/clothing/head/helmet/space/hardsuit/equip_to_best_slot(mob/M) @@ -83,7 +84,7 @@ "Tajaran" = 'icons/obj/clothing/species/tajaran/suits.dmi', "Skrell" = 'icons/obj/clothing/species/skrell/suits.dmi', "Vox" = 'icons/obj/clothing/species/vox/suits.dmi', - "Vulpkanin" = 'icons/obj/clothing/species/vulpkanin/suits.dmi', + "Vulpkanin" = 'icons/obj/clothing/species/vulpkanin/suits.dmi' ) //Breach thresholds, should ideally be inherited by most (if not all) hardsuits. @@ -440,7 +441,10 @@ heat_protection = HEAD //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT unacidable = 1 - sprite_sheets = null + species_fit = list("Grey") + sprite_sheets = list( + "Grey" = 'icons/mob/species/grey/helmet.dmi' + ) /obj/item/clothing/suit/space/hardsuit/wizard icon_state = "hardsuit-wiz" @@ -538,7 +542,6 @@ icon_state = "hardsuit0-hos" item_color = "hos" armor = list(melee = 45, bullet = 25, laser = 30,energy = 10, bomb = 25, bio = 100, rad = 50) - sprite_sheets = null /obj/item/clothing/suit/space/hardsuit/security/hos diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 20d9809f2b2..60e76418a53 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -8,9 +8,10 @@ permeability_coefficient = 0.01 armor = list(melee = 40, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50) species_restricted = list("exclude", "Diona", "Wryn") - species_fit = list("Vox") + species_fit = list("Vox", "Grey") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/helmet.dmi' + "Vox" = 'icons/mob/species/vox/helmet.dmi', + "Grey" = 'icons/mob/species/grey/helmet.dmi' ) /obj/item/clothing/head/helmet/space/capspace/equipped(mob/living/carbon/human/user, slot) @@ -136,9 +137,10 @@ desc = "A paramedic EVA helmet. Used in the recovery of bodies from space." icon_state = "paramedic-eva-helmet" item_state = "paramedic-eva-helmet" - species_fit = list("Vox") + species_fit = list("Vox", "Grey") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/helmet.dmi' + "Vox" = 'icons/mob/species/vox/helmet.dmi', + "Grey" = 'icons/mob/species/grey/helmet.dmi' ) sprite_sheets_obj = list( "Vox" = 'icons/obj/clothing/species/vox/hats.dmi' @@ -187,12 +189,13 @@ armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 20) flash_protect = 0 species_restricted = list("exclude", "Diona", "Wryn") - species_fit = list("Tajaran", "Unathi", "Vox", "Vulpkanin") + species_fit = list("Tajaran", "Unathi", "Vox", "Vulpkanin", "Grey") sprite_sheets = list( "Tajaran" = 'icons/mob/species/tajaran/helmet.dmi', "Unathi" = 'icons/mob/species/unathi/helmet.dmi', "Vox" = 'icons/mob/species/vox/helmet.dmi', - "Vulpkanin" = 'icons/mob/species/vulpkanin/helmet.dmi' + "Vulpkanin" = 'icons/mob/species/vulpkanin/helmet.dmi', + "Grey" = 'icons/mob/species/grey/helmet.dmi' ) sprite_sheets_obj = list( "Vox" = 'icons/obj/clothing/species/vox/hats.dmi', diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index 273dab0c787..eda243a859a 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -116,7 +116,7 @@ armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 0) max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT flash_protect = 2 - + /obj/item/clothing/suit/space/eva/plasmaman/engineer name = "plasmaman engineer suit" icon_state = "plasmamanEngineer_suit" @@ -128,7 +128,7 @@ base_state = "plasmamanEngineer_helmet" armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75) flash_protect = 2 - + /obj/item/clothing/suit/space/eva/plasmaman/engineer/ce name = "plasmaman chief engineer suit" icon_state = "plasmaman_CE" @@ -269,6 +269,24 @@ icon_state = "plasmaman_CMO_helmet0" base_state = "plasmaman_CMO_helmet" +/obj/item/clothing/suit/space/eva/plasmaman/medical/coroner + name = "plasmaman coroner suit" + icon_state = "plasmaman_Coroner" + +/obj/item/clothing/head/helmet/space/eva/plasmaman/medical/coroner + name = "plasmaman coroner helmet" + icon_state = "plasmaman_Coroner_helmet0" + base_state = "plasmaman_Coroner_helmet" + +/obj/item/clothing/suit/space/eva/plasmaman/medical/virologist + name = "plasmaman virologist suit" + icon_state = "plasmaman_Virologist" + +/obj/item/clothing/head/helmet/space/eva/plasmaman/medical/virologist + name = "plasmaman virologist helmet" + icon_state = "plasmaman_Virologist_helmet0" + base_state = "plasmaman_Virologist_helmet" + /obj/item/clothing/suit/space/eva/plasmaman/science name = "plasmaman scientist suit" icon_state = "plasmamanScience_suit" @@ -278,6 +296,15 @@ icon_state = "plasmamanScience_helmet0" base_state = "plasmamanScience_helmet" +/obj/item/clothing/suit/space/eva/plasmaman/science/geneticist + name = "plasmaman geneticist suit" + icon_state = "plasmaman_Geneticist" + +/obj/item/clothing/head/helmet/space/eva/plasmaman/science/geneticist + name = "plasmaman geneticist helmet" + icon_state = "plasmaman_Geneticist_helmet0" + base_state = "plasmaman_Geneticist_helmet" + /obj/item/clothing/suit/space/eva/plasmaman/science/rd name = "plasmaman research director suit" icon_state = "plasmaman_RD" diff --git a/code/modules/clothing/spacesuits/rig/modules/computer.dm b/code/modules/clothing/spacesuits/rig/modules/computer.dm index 468141b6628..32908822fee 100644 --- a/code/modules/clothing/spacesuits/rig/modules/computer.dm +++ b/code/modules/clothing/spacesuits/rig/modules/computer.dm @@ -163,13 +163,8 @@ to_chat(user, "You cannot eject your currently stored AI. Purge it manually.") return 0 to_chat(user, "You purge the remaining scraps of data from your previous AI, freeing it for use.") - if(integrated_ai) - integrated_ai.ghostize() - qdel(integrated_ai) - integrated_ai = null - if(ai_card) - qdel(ai_card) - ai_card = null + QDEL_NULL(integrated_ai) + QDEL_NULL(ai_card) else if(user) user.put_in_hands(ai_card) else diff --git a/code/modules/clothing/spacesuits/rig/modules/utility.dm b/code/modules/clothing/spacesuits/rig/modules/utility.dm index aa1e644e506..5f35096dbd7 100644 --- a/code/modules/clothing/spacesuits/rig/modules/utility.dm +++ b/code/modules/clothing/spacesuits/rig/modules/utility.dm @@ -56,20 +56,8 @@ interface_desc = "A diamond-tipped industrial drill." suit_overlay_active = "mounted-drill" suit_overlay_inactive = "mounted-drill" - device_type = /obj/item/weapon/pickaxe/diamonddrill -/obj/item/rig_module/device/anomaly_scanner - name = "hardsuit anomaly scanner" - desc = "You think it's called an Elder Sarsparilla or something." - icon_state = "eldersasparilla" - interface_name = "Alden-Saraspova counter" - interface_desc = "An exotic particle detector commonly used by xenoarchaeologists." - engage_string = "Begin Scan" - usable = 1 - selectable = 0 - device_type = /obj/item/device/ano_scanner - /obj/item/rig_module/device/orescanner name = "ore scanner module" desc = "A clunky old ore scanner." diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index da181368cc5..f1fb29ed645 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -978,10 +978,6 @@ else M.stop_pulling() - if(wearer.pinned.len) - to_chat(src, "Your host is pinned to a wall by [wearer.pinned[1]]!") - return 0 - // AIs are a bit slower than regular and ignore move intent. wearer_move_delay = world.time + ai_controlled_move_delay diff --git a/code/modules/clothing/spacesuits/rig/suits/station.dm b/code/modules/clothing/spacesuits/rig/suits/station.dm index a0e236daee7..966f54973bc 100644 --- a/code/modules/clothing/spacesuits/rig/suits/station.dm +++ b/code/modules/clothing/spacesuits/rig/suits/station.dm @@ -156,7 +156,7 @@ helm_type = /obj/item/clothing/head/helmet/space/new_rig/ert - allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/box/excavation,/obj/item/weapon/pickaxe,/obj/item/device/healthanalyzer,/obj/item/device/measuring_tape,/obj/item/device/ano_scanner,/obj/item/device/depth_scanner,/obj/item/device/core_sampler,/obj/item/device/gps,/obj/item/device/beacon_locator,/obj/item/device/radio/beacon,/obj/item/weapon/pickaxe/hand,/obj/item/weapon/storage/bag/fossils) + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/pickaxe,/obj/item/device/healthanalyzer,/obj/item/device/gps,/obj/item/device/radio/beacon) req_access = list() req_one_access = list() @@ -167,9 +167,7 @@ initial_modules = list( /obj/item/rig_module/ai_container, - /obj/item/rig_module/maneuvering_jets, - /obj/item/rig_module/device/anomaly_scanner - ) + /obj/item/rig_module/maneuvering_jets) /obj/item/weapon/rig/medical diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm index 37aa5b776ba..108dcf3181b 100644 --- a/code/modules/clothing/spacesuits/syndi.dm +++ b/code/modules/clothing/spacesuits/syndi.dm @@ -4,14 +4,14 @@ desc = "Top secret Spess Helmet." icon_state = "syndicate" item_state = "syndicate" - desc = "Has a tag: Totally not property of an enemy corporation, honest." + desc = "Has a tag on it: Totally not property of a hostile corporation, honest!" armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30) /obj/item/clothing/suit/space/syndicate name = "red space suit" icon_state = "syndicate" item_state = "space_suit_syndicate" - desc = "Has a tag on it: Totally not property of of a hostile corporation, honest!" + desc = "Has a tag on it: Totally not property of a hostile corporation, honest!" w_class = WEIGHT_CLASS_NORMAL allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank) armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30) diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 8b6e4d2e0d3..a5340ed91bc 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -949,3 +949,20 @@ linked_staff.faith += 5 if(linked_staff.faith >= 100) //if this charge puts the staff at or above full, notify the wearer to_chat(H, "Faith renewed; ready to convert new followers.") + +/obj/item/clothing/suit/tailcoat + name = "victorian tailcoat" + desc = "A fancy victorian tailcoat." + icon_state = "tailcoat" + item_state = "tailcoat" + +/obj/item/clothing/suit/victcoat + name = "ladies victorian coat" + desc = "A fancy victorian coat." + icon_state = "ladiesvictoriancoat" + item_state = "ladiesvictoriancoat" + +/obj/item/clothing/suit/victcoat/red + name = "ladies red victorian coat" + icon_state = "ladiesredvictoriancoat" + item_state = "ladiesredvictoriancoat" diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index 5f358ac58f4..65a47cc8338 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -136,7 +136,7 @@ user.visible_message("[user] places \the [src] against [M]'s chest and listens attentively.", "You place \the [src] against [M]'s chest...") var/obj/item/organ/internal/H = M.get_int_organ(/obj/item/organ/internal/heart) var/obj/item/organ/internal/L = M.get_int_organ(/obj/item/organ/internal/lungs) - if((H && M.pulse) || (L && !(NO_BREATH in M.mutations) && !(M.species.flags & NO_BREATH))) + if((H && M.pulse) || (L && !(NO_BREATH in M.mutations) && !(NO_BREATH in M.species.species_traits))) var/color = "notice" if(H) var/heart_sound @@ -550,11 +550,35 @@ icon_state = "cowboyshirt_reds" item_state = "cowboyshirt_reds" item_color = "cowboyshirt_reds" - species_fit = list("Vox") + species_fit = list("Vox", "Drask", "Grey") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/suit.dmi' + "Vox" = 'icons/mob/species/vox/suit.dmi', + "Drask" = 'icons/mob/species/drask/suit.dmi', + "Grey" = 'icons/mob/species/grey/suit.dmi' ) +/obj/item/clothing/accessory/corset + name = "black corset" + desc = "A black corset for those fancy nights out." + icon_state = "corset" + item_state = "corset" + item_color = "corset" + + +/obj/item/clothing/accessory/corset/red + name = "red corset" + desc = "A red corset those fancy nights out." + icon_state = "corset_red" + item_state = "corset_red" + item_color = "corset_red" + +/obj/item/clothing/accessory/corset/blue + name = "blue corset" + desc = "A blue corset for those fancy nights out." + icon_state = "corset_blue" + item_state = "corset_blue" + item_color = "corset_blue" + /obj/item/clothing/accessory/petcollar name = "pet collar" desc = "The latest fashion accessory for your favorite pets!" @@ -620,7 +644,7 @@ return var/area/t = get_area(M) - var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null) + var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(src) if(istype(t, /area/syndicate_station) || istype(t, /area/syndicate_mothership) || istype(t, /area/shuttle/syndicate_elite) ) //give the syndicats a bit of stealth a.autosay("[M] has been vandalized in Space!", "[M]'s Death Alarm") diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 41111585072..0b9e516a222 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -787,3 +787,46 @@ lefthand_file = 'icons/goonstation/mob/inhands/clothing_lefthand.dmi' righthand_file = 'icons/goonstation/mob/inhands/clothing_righthand.dmi' flags = NODROP + + +/obj/item/clothing/under/victdress + name = "black victorian dress" + desc = "A victorian style dress, fancy!" + icon_state = "victorianblackdress" + item_state = "victorianblackdress" + item_color = "victorianblackdress" + body_parts_covered = UPPER_TORSO|LOWER_TORSO + +/obj/item/clothing/under/victdress/red + name = "red victorian dress" + icon_state = "victorianreddress" + item_state = "victorianreddress" + item_color = "victorianreddress" + +/obj/item/clothing/under/victsuit + name = "victorian suit" + desc = "A victorian style suit, fancy!" + icon_state = "victorianvest" + item_state = "victorianvest" + item_color = "victorianvest" + body_parts_covered = UPPER_TORSO|LOWER_TORSO + +/obj/item/clothing/under/victsuit/redblk + name = "red and black victorian suit" + icon_state = "victorianblred" + item_state = "victorianblred" + item_color = "victorianblred" + +/obj/item/clothing/under/victsuit/red + name = "red victorian suit" + icon_state = "victorianredvest" + item_state = "victorianredvest" + item_color = "victorianredvest" + +/obj/item/clothing/under/medigown + name = "medical gown" + desc = "a flimsy examination gown, the back ties never close." + icon_state = "medicalgown" + item_state = "medicalgown" + item_color = "medicalgown" + body_parts_covered = UPPER_TORSO|LOWER_TORSO \ No newline at end of file diff --git a/code/modules/countdown/countdown.dm b/code/modules/countdown/countdown.dm index 2ef85d6a9d7..7e651fb910f 100644 --- a/code/modules/countdown/countdown.dm +++ b/code/modules/countdown/countdown.dm @@ -9,15 +9,19 @@ var/atom/attached_to color = "#ff0000" var/text_size = 4 - var/started = 0 + var/started = FALSE invisibility = INVISIBILITY_OBSERVER - anchored = 1 - layer = 5 + anchored = TRUE + layer = GHOST_LAYER /obj/effect/countdown/New(atom/A) . = ..() attach(A) +/obj/effect/countdown/examine(mob/user) + . = ..() + to_chat(user, "This countdown is displaying: [displayed_text]") + /obj/effect/countdown/proc/attach(atom/A) attached_to = A loc = get_turf(A) @@ -25,13 +29,13 @@ /obj/effect/countdown/proc/start() if(!started) fast_processing += src - started = 1 + started = TRUE /obj/effect/countdown/proc/stop() if(started) maptext = null fast_processing -= src - started = 0 + started = FALSE /obj/effect/countdown/proc/get_value() // Get the value from our atom @@ -56,6 +60,19 @@ fast_processing -= src return ..() +/obj/effect/countdown/ex_act(severity) //immune to explosions + return + +/obj/effect/countdown/syndicatebomb + name = "syndicate bomb countdown" + +/obj/effect/countdown/syndicatebomb/get_value() + var/obj/machinery/syndicatebomb/S = attached_to + if(!istype(S)) + return + else if(S.active) + return S.seconds_remaining() + /obj/effect/countdown/clonepod name = "cloning pod countdown" text_size = 1 diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 6f266c121e1..3fbcf39ed08 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -324,6 +324,30 @@ /obj/item/stack/rods = 1) category = CAT_MISC +/datum/crafting_recipe/chemical_payload + name = "Chemical Payload (C4)" + result = /obj/item/weapon/bombcore/chemical + reqs = list( + /obj/item/weapon/stock_parts/matter_bin = 1, + /obj/item/weapon/grenade/plastic/c4 = 1, + /obj/item/weapon/grenade/chem_grenade = 2 + ) + parts = list(/obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/grenade/chem_grenade = 2) + time = 30 + category = CAT_WEAPON + +/datum/crafting_recipe/chemical_payload2 + name = "Chemical Payload (gibtonite)" + result = /obj/item/weapon/bombcore/chemical + reqs = list( + /obj/item/weapon/stock_parts/matter_bin = 1, + /obj/item/weapon/twohanded/required/gibtonite = 1, + /obj/item/weapon/grenade/chem_grenade = 2 + ) + parts = list(/obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/grenade/chem_grenade = 2) + time = 50 + category = CAT_WEAPON + /datum/crafting_recipe/bonfire name = "Bonfire" time = 60 diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index e70fc07a383..4539fa6de79 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -112,12 +112,25 @@ else to_chat(user, "The [src] is out of ink!") +/obj/item/device/fluff/bird_painter // BirdtTalon: Kahkiri + name = "Orb of Onyx" + desc = "It is imbued with such dark power as to corrupt the very appearance of those who gaze into its depths." + icon_state = "bird_orb" + icon = 'icons/obj/custom_items.dmi' + +/obj/item/device/fluff/bird_painter/attack_self(mob/user) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + H.s_tone = -115 + H.regenerate_icons() + to_chat(user, "You use [src] on yourself.") + qdel(src) + /obj/item/weapon/claymore/fluff // MrBarrelrolll: Maximus Greenwood name = "Greenwood's Blade" desc = "A replica claymore with strange markings scratched into the blade." force = 5 sharp = 0 - edge = 0 /obj/item/weapon/claymore/fluff/hit_reaction() return 0 @@ -232,7 +245,7 @@ new /obj/item/weapon/reagent_containers/food/drinks/cans/cola(src) -/obj/item/device/guitar/jello_guitar //Antcolon3: Dan Jello +/obj/item/device/instrument/guitar/jello_guitar //Antcolon3: Dan Jello name = "Dan Jello's Pink Guitar" desc = "Dan Jello's special pink guitar." icon = 'icons/obj/custom_items.dmi' @@ -520,6 +533,13 @@ icon_state = "hairflowerp" item_state = "hairflowerp" +/obj/item/clothing/head/valkyriehelmet //R3Valkyrie: Rikki + name = "charred visor" + desc = "A visor of alien origin, charred by fire and completely non-functioning. It's been impeccably polished, shiny!" + icon = 'icons/obj/custom_items.dmi' + icon_state = "charred_visor" + species_restricted = list("Vox") + /obj/item/clothing/head/bearpelt/fluff/polar //Gibson1027: Sploosh name = "polar bear pelt hat" desc = "Fuzzy, and also stained with blood." @@ -759,6 +779,25 @@ to_chat(user, "You turn the [src]'s lighting system [flavour].") user.update_inv_wear_suit() +/obj/item/clothing/suit/hooded/hoodie/fluff/xantholne // Xantholne: Meex Zwichsnicrur + name = "stripped winter coat" + desc = "A velvety smooth black winter coat with white and red stripes on the side." + icon = 'icons/obj/custom_items.dmi' + icon_state = "xantholne_wintercoat" + hoodtype = /obj/item/clothing/head/hood/fluff/xantholne + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS + allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/emergency_oxygen, /obj/item/toy, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/lighter) + + +/obj/item/clothing/head/hood/fluff/xantholne // Xantholne: Meex Zwichsnicrur + name = "black winter hood" + desc = "A black hood attached to a stripped winter coat." + icon = 'icons/obj/custom_items.dmi' + icon_state = "xantholne_winterhood" + body_parts_covered = HEAD + flags = NODROP|BLOCKHAIR + flags_inv = HIDEEARS + //////////// Uniforms //////////// /obj/item/clothing/under/fluff/kharshai // Kharshai: Athena Castile name = "Castile formal outfit" @@ -1002,6 +1041,12 @@ icon = 'icons/obj/custom_items.dmi' icon_state = "voxcaster_fluff" +/obj/item/weapon/storage/backpack/fluff/ssscratches_back //Ssscratches: Lasshy-Bot + name = "CatPack" + desc = "It's a backpack, but it's also a cat." + icon = 'icons/obj/custom_items.dmi' + icon_state = "ssscratches_backpack" + /obj/item/clothing/head/wizard/fake/fluff/dreamy //phantasmicdream : Dreamy Rockwall name = "strange witch hat" desc = "A shapeshifting witch hat. A strange aura comes from it..." diff --git a/code/modules/detective_work/detective_work.dm b/code/modules/detective_work/detective_work.dm index dd22a439c19..cc53bacc956 100644 --- a/code/modules/detective_work/detective_work.dm +++ b/code/modules/detective_work/detective_work.dm @@ -6,10 +6,10 @@ atom/proc/add_fibers(mob/living/carbon/human/M) if(M.gloves && istype(M.gloves,/obj/item/clothing/)) var/obj/item/clothing/gloves/G = M.gloves if(G.transfer_blood > 1) //bloodied gloves transfer blood to touched objects - if(add_blood(G.bloody_hands_mob)) //only reduces the bloodiness of our gloves if the item wasn't already bloody + if(add_blood(G.blood_DNA, G.blood_color)) //only reduces the bloodiness of our gloves if the item wasn't already bloody G.transfer_blood-- else if(M.bloody_hands > 1) - if(add_blood(M.bloody_hands_mob)) + if(add_blood(M.blood_DNA, M.hand_blood_color)) M.bloody_hands-- if(!suit_fibers) suit_fibers = list() var/fibertext diff --git a/code/modules/detective_work/footprints_and_rag.dm b/code/modules/detective_work/footprints_and_rag.dm index cc6a463a0ee..f0d99152574 100644 --- a/code/modules/detective_work/footprints_and_rag.dm +++ b/code/modules/detective_work/footprints_and_rag.dm @@ -1,18 +1,13 @@ /mob var/bloody_hands = 0 - var/mob/living/carbon/human/bloody_hands_mob - var/track_blood = 0 var/list/feet_blood_DNA - var/track_blood_type var/feet_blood_color + var/blood_state = BLOOD_STATE_NOT_BLOODY + var/list/bloody_feet = list(BLOOD_STATE_HUMAN = 0, BLOOD_STATE_XENO = 0, BLOOD_STATE_NOT_BLOODY = 0) /obj/item/clothing/gloves var/transfer_blood = 0 - var/mob/living/carbon/human/bloody_hands_mob - -/obj/item/clothing/shoes/ - var/track_blood = 0 /obj/item/weapon/reagent_containers/glass/rag name = "damp rag" diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index 069ef9865af..b514924abfa 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -18,22 +18,22 @@ continue if(!H.client) continue - if(H.species.virus_immune) //don't let virus immune things get diseases they're not supposed to get. + if(VIRUSIMMUNE in H.species.species_traits) //don't let virus immune things get diseases they're not supposed to get. continue var/turf/T = get_turf(H) if(!T) continue if(!is_station_level(T.z)) continue - var/foundAlready = 0 // don't infect someone that already has the virus - for(var/datum/disease/D in H.viruses) - foundAlready = 1 + var/foundAlready = FALSE // don't infect someone that already has the virus + for(var/thing in H.viruses) + foundAlready = TRUE break if(H.stat == DEAD || foundAlready) continue var/datum/disease/D D = new virus_type() - D.carrier = 1 + D.carrier = TRUE H.AddDisease(D) break diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index 98fe9fad27f..8b98dac200d 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -137,6 +137,7 @@ var/list/event_last_fired = list() new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Trivial News", /datum/event/trivial_news, 400), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Mundane News", /datum/event/mundane_news, 300), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Vermin Infestation",/datum/event/infestation, 100, list(ASSIGNMENT_JANITOR = 100)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Sentience", /datum/event/sentience, 50), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Wallrot", /datum/event/wallrot, 0, list(ASSIGNMENT_ENGINEER = 30, ASSIGNMENT_GARDENER = 50)) ) diff --git a/code/modules/events/mass_hallucination.dm b/code/modules/events/mass_hallucination.dm index 500350a037c..cc59ec78128 100644 --- a/code/modules/events/mass_hallucination.dm +++ b/code/modules/events/mass_hallucination.dm @@ -4,7 +4,7 @@ /datum/event/mass_hallucination/start() for(var/mob/living/carbon/human/H in living_mob_list) var/armor = H.getarmor(type = "rad") - if((H.species.flags & RADIMMUNE) || armor >= 75) // Leave radiation-immune species/rad armored players completely unaffected + if((RADIMMUNE in H.species.species_traits) || armor >= 75) // Leave radiation-immune species/rad armored players completely unaffected continue H.AdjustHallucinate(rand(50, 100)) diff --git a/code/modules/events/radiation_storm.dm b/code/modules/events/radiation_storm.dm index 2e090979ce6..0f2da54818c 100644 --- a/code/modules/events/radiation_storm.dm +++ b/code/modules/events/radiation_storm.dm @@ -37,7 +37,7 @@ for(var/i = 0, i < 10, i++) for(var/mob/living/carbon/human/H in living_mob_list) var/armor = H.getarmor(type = "rad") - if((H.species.flags & RADIMMUNE) || armor >= 100) // Leave radiation-immune species/fully rad armored players completely unaffected + if((RADIMMUNE in H.species.species_traits) || armor >= 100) // Leave radiation-immune species/fully rad armored players completely unaffected continue var/turf/T = get_turf(H) if(!T) diff --git a/code/modules/events/sentience.dm b/code/modules/events/sentience.dm new file mode 100644 index 00000000000..cfa0d24d98e --- /dev/null +++ b/code/modules/events/sentience.dm @@ -0,0 +1,47 @@ +/datum/event/sentience + +/datum/event/sentience/start() + var/ghostmsg = "Do you want to awaken as a sentient being?" + var/list/candidates = pollCandidates(ghostmsg, ROLE_SENTIENT, 1) + var/list/potential = list() + var/sentience_type = SENTIENCE_ORGANIC + + for(var/mob/living/simple_animal/L in living_mob_list) + var/turf/T = get_turf(L) + if (T.z != 1) + continue + if(!(L in player_list) && !L.mind && (L.sentience_type == sentience_type)) + potential += L + + var/mob/living/simple_animal/SA = pick(potential) + var/mob/SG = pick(candidates) + + if(!SA || !SG) //if you can't find either a simple animal or a player, end + return FALSE + + var/sentience_report = "[command_name()] Medium-Priority Update" + + var/data = pick("scans from our long-range sensors", "our sophisticated probabilistic models", "our omnipotence", "the communications traffic on your station", "energy emissions we detected", "\[REDACTED\]", "Steve") + var/pets = pick("animals", "pets", "simple animals", "lesser lifeforms", "\[REDACTED\]") + var/strength = pick("human", "skrell", "vox", "grey", "diona", "IPC", "tajaran", "vulpakanin", "kidan", "plasmaman", "drask", + "slime", "monkey", "moderate", "lizard", "security", "command", "clown", "mime", "low", "very low", "greytide", "catgirl", "\[REDACTED\]") + + sentience_report += "

    Based on [data], we believe that one of the station's [pets] has developed [strength] level intelligence, and the ability to communicate." + + + + SA.key = SG.key + SA.universal_speak = 1 + SA.sentience_act() + SA.maxHealth = max(SA.maxHealth, 200) + SA.health = SA.maxHealth + SA.del_on_death = FALSE + greet_sentient(SA) + print_command_report(sentience_report, "[command_name()] Update") + +/datum/event/sentience/proc/greet_sentient(var/mob/living/carbon/human/M) + to_chat(M, "Hello world!") + to_chat(M, "Due to freak radiation, you have gained \ + human level intelligence and the ability to speak and understand \ + human language!") + diff --git a/code/modules/events/spontaneous_appendicitis.dm b/code/modules/events/spontaneous_appendicitis.dm index fca585f8baa..237db170612 100644 --- a/code/modules/events/spontaneous_appendicitis.dm +++ b/code/modules/events/spontaneous_appendicitis.dm @@ -4,13 +4,12 @@ continue if(!H.client) continue - if(H.species.virus_immune) //don't count things that are virus immune; they'll just get picked and auto-cure - continue if(!H.get_int_organ(/obj/item/organ/internal/appendix)) continue - var/foundAlready = 0 //don't infect someone that already has the virus - for(var/datum/disease/D in H.viruses) - foundAlready = 1 + var/foundAlready = FALSE //don't infect someone that already has appendicitis + for(var/datum/disease/appendicitis/A in H.viruses) + foundAlready = TRUE + break if(H.stat == DEAD || foundAlready) continue diff --git a/code/modules/examine/examine.dm b/code/modules/examine/examine.dm index 0956877d202..b5d6def5bbf 100644 --- a/code/modules/examine/examine.dm +++ b/code/modules/examine/examine.dm @@ -49,8 +49,17 @@ description_holders["icon"] = "[bicon(A)]" description_holders["desc"] = A.desc +// Byond seemingly calls stat, each tick. +// Calling things each tick can get expensive real quick. +// So we slow this down a little. +// See: http://www.byond.com/docs/ref/info.html#/client/proc/Stat /client/Stat() . = ..() + if(holder) + sleep(1) + else + sleep(5) + stoplag() if(usr && statpanel("Examine")) stat(null,"[description_holders["icon"]] [description_holders["name"]]") //The name, written in big letters. stat(null,"[description_holders["desc"]]") //the default examine text. diff --git a/code/modules/ext_scripts/irc.dm b/code/modules/ext_scripts/irc.dm index 05ac226d7e7..c0a25979df2 100644 --- a/code/modules/ext_scripts/irc.dm +++ b/code/modules/ext_scripts/irc.dm @@ -2,7 +2,8 @@ if(config.use_irc_bot && config.irc_bot_host.len) for(var/IP in config.irc_bot_host) spawn(0) - ext_python("ircbot_message.py", "[config.comms_password] [IP] [channel] [msg]") + // I have no means of trusting you, cmd + ext_python("ircbot_message.py", "[config.comms_password] [IP] [channel] [paranoid_sanitize(msg)]") return /proc/send2mainirc(var/msg) diff --git a/code/modules/ext_scripts/python.dm b/code/modules/ext_scripts/python.dm index b10fc691309..6781af866e3 100644 --- a/code/modules/ext_scripts/python.dm +++ b/code/modules/ext_scripts/python.dm @@ -4,6 +4,6 @@ if(world.system_type == MS_WINDOWS) script = replacetext(script, "/", "\\") - var/command = config.python_path + " " + script + " " + args + var/command = python_path + " " + script + " " + args shell("[command]") - return \ No newline at end of file + return diff --git a/code/modules/flufftext/TextFilters.dm b/code/modules/flufftext/TextFilters.dm index acce72c7f7a..7ff5a2fd0a5 100644 --- a/code/modules/flufftext/TextFilters.dm +++ b/code/modules/flufftext/TextFilters.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - proc/Intoxicated(phrase) phrase = html_decode(phrase) var/leng=lentext(phrase) diff --git a/code/modules/food_and_drinks/drinks/bottler/bottler.dm b/code/modules/food_and_drinks/drinks/bottler/bottler.dm index 89c55a65f98..7b97e22f142 100644 --- a/code/modules/food_and_drinks/drinks/bottler/bottler.dm +++ b/code/modules/food_and_drinks/drinks/bottler/bottler.dm @@ -286,9 +286,7 @@ drink_container.desc = "[recipe_to_use.description]" flick("bottler_on", src) spawn(45) - for(var/i = 1, i <= slots.len, i++) - qdel(slots[i]) - slots[i] = null + QDEL_LIST_ASSOC_VAL(slots) bottling = 0 drink_container.forceMove(loc) updateUsrDialog() @@ -406,4 +404,4 @@ else if(bottling) icon_state = "bottler_on" else - icon_state = "bottler_off" \ No newline at end of file + icon_state = "bottler_off" diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index 011a4ffacde..e9dcf825aad 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -136,7 +136,6 @@ attack_verb = list("stabbed", "slashed", "attacked") var/icon/broken_outline = icon('icons/obj/drinks.dmi', "broken") sharp = 1 - edge = 1 /obj/item/weapon/reagent_containers/food/drinks/bottle/gin name = "Griffeater Gin" @@ -174,6 +173,12 @@ icon_state = "bottleofnothing" list_reagents = list("nothing" = 100) +/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofbanana + name = "Jolly Jug" + desc = "A jug filled with banana juice." + icon_state = "bottleofjolly" + list_reagents = list("banana" = 100) + /obj/item/weapon/reagent_containers/food/drinks/bottle/patron name = "Wrapp Artiste Patron" desc = "Silver laced tequila, served in space night clubs across the galaxy." diff --git a/code/modules/food_and_drinks/food.dm b/code/modules/food_and_drinks/food.dm index 4655dcba98f..f19672667f8 100644 --- a/code/modules/food_and_drinks/food.dm +++ b/code/modules/food_and_drinks/food.dm @@ -12,9 +12,10 @@ var/apply_method = "swallow" var/transfer_efficiency = 1.0 var/instant_application = 0 //if we want to bypass the forcedfeed delay + var/taste = TRUE//whether you can taste eating from this burn_state = FLAMMABLE /obj/item/weapon/reagent_containers/food/New() ..() pixel_x = rand(-5, 5) //Randomizes postion - pixel_y = rand(-5, 5) \ No newline at end of file + pixel_y = rand(-5, 5) diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index f98f870ed79..d22d4eb2c93 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -194,17 +194,22 @@ if(isanimal(M)) M.changeNext_move(CLICK_CD_MELEE) if(iscorgi(M)) - if(bitecount >= 4) + var/mob/living/simple_animal/pet/corgi/G = M + if(world.time < (G.last_eaten + 300)) + to_chat(G, "You are too full to try eating [src] right now.") + else if(bitecount >= 4) M.visible_message("[M] [pick("burps from enjoyment", "yaps for more", "woofs twice", "looks at the area where [src] was")].","You swallow up the last part of [src].") playsound(loc,'sound/items/eatfood.ogg', rand(10,50), 1) var/mob/living/simple_animal/pet/corgi/C = M C.adjustBruteLoss(-5) C.adjustFireLoss(-5) qdel(src) + G.last_eaten = world.time else M.visible_message("[M] takes a bite of [src].","You take a bite of [src].") playsound(loc,'sound/items/eatfood.ogg', rand(10,50), 1) bitecount++ + G.last_eaten = world.time else if(ismouse(M)) var/mob/living/simple_animal/mouse/N = M to_chat(N, text("You nibble away at [src].")) @@ -960,6 +965,13 @@ junkiness = 25 list_reagents = list("nutriment" = 1, "beans" = 3, "msg" = 4, "sugar" = 2) +/obj/item/weapon/reagent_containers/food/snacks/chinese/sweetsourchickenball + name = "Sweet & Sour Chicken Balls" + desc = "Is this chicken cooked? The odds are better than wok paper scissors." + icon_state = "chickenball" + junkiness = 25 + list_reagents = list("nutriment" = 2, "msg" = 4, "sugar" = 2) + /obj/item/weapon/reagent_containers/food/snacks/chinese/tao name = "Admiral Yamamoto carp" desc = "Tastes like chicken." @@ -2097,7 +2109,7 @@ return if(boxes.len > 0) - if(user.get_inactive_hand() != src) + if(user.is_in_inactive_hand(src)) ..() return @@ -2478,3 +2490,11 @@ icon_state = "tatortot" list_reagents = list("nutriment" = 4) filling_color = "FFD700" + +/obj/item/weapon/reagent_containers/food/snacks/onionrings + name = "onion rings" + desc = "Onion slices coated in batter." + icon_state = "onionrings" + list_reagents = list("nutriment" = 3) + filling_color = "#C0C9A0" + gender = PLURAL \ No newline at end of file diff --git a/code/modules/food_and_drinks/recipes/recipes_microwave.dm b/code/modules/food_and_drinks/recipes/recipes_microwave.dm index a0998a67a58..329e39011eb 100644 --- a/code/modules/food_and_drinks/recipes/recipes_microwave.dm +++ b/code/modules/food_and_drinks/recipes/recipes_microwave.dm @@ -541,6 +541,10 @@ datum/recipe/microwave/slimesandwich being_cooked.reagents.del_reagent("toxin") return being_cooked +/datum/recipe/microwave/onionrings + items = list(/obj/item/weapon/reagent_containers/food/snacks/onion_slice) + result = /obj/item/weapon/reagent_containers/food/snacks/onionrings + ////////////////////////////FOOD ADDITTIONS/////////////////////////////// /datum/recipe/microwave/wrap diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index ebe74316ed4..5e15b984a7a 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -15,11 +15,12 @@ var/datum/plant_gene/target var/operation = "" - var/rating = 0 - var/max_extract_pot = 50 - // The cap on potency gene extraction. - // This number is for T1, each upgraded part adds 5% for a tech level above T1. - // At T4, it reaches 95%. + var/max_potency = 50 // See RefreshParts() for how these work + var/max_yield = 2 + var/min_production = 12 + var/max_endurance = 10 // IMPT: ALSO AFFECTS LIFESPAN + var/min_wchance = 67 + var/min_wrate = 10 /obj/machinery/plantgenes/New() ..() @@ -40,13 +41,27 @@ QDEL_NULL(disk) return ..() -/obj/machinery/plantgenes/RefreshParts() - rating = 0 - for(var/I in component_parts) - if(istype(I, /obj/item/weapon/stock_parts)) - var/obj/item/weapon/stock_parts/S = I - rating += S.rating-1 - max_extract_pot = initial(max_extract_pot) + rating*5 +/obj/machinery/plantgenes/RefreshParts() // Comments represent the max you can set per tier, respectively. seeds.dm [219] clamps these for us but we don't want to mislead the viewer. + for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) + if(M.rating > 3) + max_potency = 95 + else + max_potency = initial(max_potency) + (M.rating**3) // 51,58,77,95 Clamps at 100 + + max_yield = initial(max_yield) + (M.rating*2) // 4,6,8,10 Clamps at 10 + + for(var/obj/item/weapon/stock_parts/scanning_module/SM in component_parts) + if(SM.rating > 3) //If you create t5 parts I'm a step ahead mwahahaha! + min_production = 1 + else + min_production = 12 - (SM.rating * 3) //9,6,3,1. Requires if to avoid going below clamp [1] + + max_endurance = initial(max_endurance) + (SM.rating * 25) // 35,60,85,100 Clamps at 10min 100max + + for(var/obj/item/weapon/stock_parts/micro_laser/ML in component_parts) + var/wratemod = ML.rating * 2.5 + min_wrate = Floor(10-wratemod) // 7,5,2,0 Clamps at 0 and 10 You want this low + min_wchance = 67-(ML.rating*16) // 48,35,19,3 Clamps at 0 and 67 You want this low /obj/machinery/plantgenes/update_icon() ..() @@ -133,11 +148,36 @@ if("extract") dat += "[target.get_name()] gene from \the [seed]?
    " dat += "The sample will be destroyed in process!" - if(istype(target, /datum/plant_gene/core/potency)) + if(istype(target, /datum/plant_gene/core)) var/datum/plant_gene/core/gene = target - if(gene.value > max_extract_pot) - dat += "

    This device's extraction capabilities are currently limited to [max_extract_pot] potency. " - dat += "Target gene will be degraded to [max_extract_pot] potency on extraction." + if(istype(target, /datum/plant_gene/core/potency)) + if(gene.value > max_potency) + dat += "

    This device's extraction capabilities are currently limited to [max_potency] potency. " + dat += "Target gene will be degraded to [max_potency] potency on extraction." + else if(istype(target, /datum/plant_gene/core/lifespan)) + if(gene.value > max_endurance) + dat += "

    This device's extraction capabilities are currently limited to [max_endurance] lifespan. " + dat += "Target gene will be degraded to [max_endurance] Lifespan on extraction." + else if(istype(target, /datum/plant_gene/core/endurance)) + if(gene.value > max_endurance) + dat += "

    This device's extraction capabilities are currently limited to [max_endurance] endurance. " + dat += "Target gene will be degraded to [max_endurance] endurance on extraction." + else if(istype(target, /datum/plant_gene/core/yield)) + if(gene.value > max_yield) + dat += "

    This device's extraction capabilities are currently limited to [max_yield] yield. " + dat += "Target gene will be degraded to [max_yield] yield on extraction." + else if(istype(target, /datum/plant_gene/core/production)) + if(gene.value < min_production) + dat += "

    This device's extraction capabilities are currently limited to [min_production] production. " + dat += "Target gene will be degraded to [min_production] production on extraction." + else if(istype(target, /datum/plant_gene/core/weed_rate)) + if(gene.value < min_wrate) + dat += "

    This device's extraction capabilities are currently limited to [min_wrate] weed rate. " + dat += "Target gene will be degraded to [min_wrate] weed rate on extraction." + else if(istype(target, /datum/plant_gene/core/weed_chance)) + if(gene.value < min_wchance) + dat += "

    This device's extraction capabilities are currently limited to [min_wchance] weed chance. " + dat += "Target gene will be degraded to [min_wchance] weed chance on extraction." if("replace") dat += "[target.get_name()] gene with [disk.gene.get_name()]?
    " if("insert") @@ -292,12 +332,24 @@ if("extract") if(disk && !disk.read_only) disk.gene = G.Copy() - if(istype(disk.gene, /datum/plant_gene/core/potency)) + if(istype(disk.gene, /datum/plant_gene/core)) var/datum/plant_gene/core/gene = disk.gene - gene.value = min(gene.value, max_extract_pot) + if(istype(disk.gene, /datum/plant_gene/core/potency)) + gene.value = min(gene.value, max_potency) + else if(istype(disk.gene, /datum/plant_gene/core/lifespan)) + gene.value = min(gene.value, max_endurance) //INTENDED + else if(istype(disk.gene, /datum/plant_gene/core/endurance)) + gene.value = min(gene.value, max_endurance) + else if(istype(disk.gene, /datum/plant_gene/core/production)) + gene.value = max(gene.value, min_production) + else if(istype(disk.gene, /datum/plant_gene/core/yield)) + gene.value = min(gene.value, max_yield) + else if(istype(disk.gene, /datum/plant_gene/core/weed_rate)) + gene.value = max(gene.value, min_wrate) + else if(istype(disk.gene, /datum/plant_gene/core/weed_chance)) + gene.value = max(gene.value, min_wchance) disk.update_name() - qdel(seed) - seed = null + QDEL_NULL(seed) update_icon() if("replace") if(disk && disk.gene && istype(disk.gene, G.type) && istype(G, /datum/plant_gene/core)) @@ -398,7 +450,7 @@ /obj/item/weapon/disk/plantgene/proc/update_name() if(gene) - name = "plant data disk - '[gene.get_name()]'" + name = "[gene.get_name()] (Plant Data Disk)" else name = "plant data disk" @@ -421,4 +473,4 @@ /obj/item/weapon/storage/box/disks_plantgene/New() ..() for(var/i in 1 to 7) - new /obj/item/weapon/disk/plantgene(src) \ No newline at end of file + new /obj/item/weapon/disk/plantgene(src) diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 130fc2730ac..8e2e83675e0 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -112,6 +112,7 @@ for(var/datum/plant_gene/trait/trait in seed.genes) trait.on_squash(src, target) + reagents.reaction(T) for(var/A in T) if(reagents) reagents.reaction(A) @@ -131,6 +132,11 @@ T.on_cross(src, AM) ..() +/obj/item/weapon/reagent_containers/food/snacks/grown/on_trip(mob/living/carbon/human/H) + . = ..() + if(. && seed) + for(var/datum/plant_gene/trait/T in seed.genes) + T.on_slip(src, H) // Glow gene procs /obj/item/weapon/reagent_containers/food/snacks/grown/generate_trash(atom/location) diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm index 8301b021cc4..9787edb59c3 100644 --- a/code/modules/hydroponics/grown/banana.dm +++ b/code/modules/hydroponics/grown/banana.dm @@ -113,9 +113,12 @@ /obj/item/weapon/grown/bananapeel/specialpeel //used by /obj/item/clothing/shoes/clown_shoes/banana_shoes name = "synthesized banana peel" desc = "A synthetic banana peel." + trip_stun = 2 + trip_weaken = 2 + trip_chance = 100 + trip_walksafe = FALSE + trip_verb = TV_SLIP -/obj/item/weapon/grown/bananapeel/specialpeel/Crossed(AM) - if(iscarbon(AM)) - var/mob/living/carbon/carbon = AM - if(carbon.slip("[src]", 2, 2)) - qdel(src) +/obj/item/weapon/grown/bananapeel/specialpeel/on_trip(mob/living/carbon/human/H) + if(..()) + qdel(src) diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm index 2e05e3f18a0..6afeb4502d3 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -1,18 +1,30 @@ -// Weeds -/obj/item/seeds/weeds - name = "pack of weed seeds" - desc = "Yo mang, want some weeds?" - icon_state = "seed" - species = "weeds" +// Starthistle +/obj/item/seeds/starthistle + name = "pack of starthistle seeds" + desc = "A robust species of weed that often springs up in-between the cracks of spaceship parking lots" + icon_state = "seed-starthistle" + species = "starthistle" plantname = "Starthistle" - lifespan = 100 + lifespan = 70 endurance = 50 // damm pesky weeds maturation = 5 production = 1 - yield = -1 - potency = -1 - growthstages = 4 + yield = 2 + potency = 10 + growthstages = 3 + growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' genes = list(/datum/plant_gene/trait/plant_type/weed_hardy) + mutatelist = list(/obj/item/seeds/harebell) + +/obj/item/seeds/starthistle/harvest(mob/user) + var/obj/machinery/hydroponics/parent = loc + if(prob(getYield() * 20)) + var/output_loc = parent.Adjacent(user) ? user.loc : parent.loc + for(var/i in 1 to yield+1) + var/obj/item/seeds/starthistle/harvestseeds = Copy() + harvestseeds.forceMove(output_loc) + + parent.update_tray() // Cabbage diff --git a/code/modules/hydroponics/grown/onion.dm b/code/modules/hydroponics/grown/onion.dm new file mode 100644 index 00000000000..41229481d8d --- /dev/null +++ b/code/modules/hydroponics/grown/onion.dm @@ -0,0 +1,61 @@ +/obj/item/seeds/onion + name = "pack of onion seeds" + desc = "These seeds grow into onions." + icon_state = "seed-onion" + species = "onion" + plantname = "Onion Sprouts" + product = /obj/item/weapon/reagent_containers/food/snacks/grown/onion + lifespan = 20 + maturation = 3 + production = 4 + yield = 6 + endurance = 25 + growthstages = 3 + weed_chance = 3 + growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' + reagents_add = list("vitamin" = 0.04, "plantmatter" = 0.1) + mutatelist = list(/obj/item/seeds/onion/red) + +/obj/item/weapon/reagent_containers/food/snacks/grown/onion + seed = /obj/item/seeds/onion + name = "onion" + desc = "Nothing to cry over." + icon_state = "onion" + filling_color = "#C0C9A0" + bitesize_mod = 2 + slice_path = /obj/item/weapon/reagent_containers/food/snacks/onion_slice + slices_num = 2 + +/obj/item/seeds/onion/red + name = "pack of red onion seeds" + desc = "For growing exceptionally potent onions." + icon_state = "seed-onionred" + species = "onion_red" + plantname = "Red Onion Sprouts" + weed_chance = 1 + product = /obj/item/weapon/reagent_containers/food/snacks/grown/onion/red + reagents_add = list("vitamin" = 0.04, "plantmatter" = 0.1, "onionjuice" = 0.05) + +/obj/item/weapon/reagent_containers/food/snacks/grown/onion/red + seed = /obj/item/seeds/onion/red + name = "red onion" + desc = "Purple despite the name." + icon_state = "onion_red" + filling_color = "#C29ACF" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/onion_slice/red + +/obj/item/weapon/reagent_containers/food/snacks/onion_slice + name = "onion slices" + desc = "Rings, not for wearing." + icon_state = "onionslice" + list_reagents = list("plantmatter" = 5, "vitamin" = 2) + filling_color = "#C0C9A0" + gender = PLURAL + cooked_type = /obj/item/weapon/reagent_containers/food/snacks/onionrings + +/obj/item/weapon/reagent_containers/food/snacks/onion_slice/red + name = "red onion slices" + desc = "They shine like exceptionally low quality amethyst." + icon_state = "onionslice_red" + filling_color = "#C29ACF" + list_reagents = list("plantmatter" = 5, "vitamin" = 2, "onionjuice" = 2.5) \ No newline at end of file diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm index 339459669be..c70def96fde 100644 --- a/code/modules/hydroponics/grown/towercap.dm +++ b/code/modules/hydroponics/grown/towercap.dm @@ -50,6 +50,9 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/deus, /obj/item/weapon/reagent_containers/food/snacks/grown/wheat) +/obj/item/weapon/grown/log/New() + ..() + accepted = typecacheof(accepted) /obj/item/weapon/grown/log/attackby(obj/item/weapon/W, mob/user, params) if(is_sharp(W)) @@ -66,7 +69,7 @@ to_chat(user, "You add the newly-formed [plank_name] to the stack. It now contains [plank.amount] [plank_name].") qdel(src) - if(is_type_in_list(W,accepted)) + if(is_type_in_typecache(W, accepted)) var/obj/item/weapon/reagent_containers/food/snacks/grown/leaf = W if(leaf.dry) user.show_message("You wrap \the [W] around the log, turning it into a torch!") @@ -138,7 +141,7 @@ /obj/structure/bonfire/proc/CheckOxygen() var/datum/gas_mixture/G = loc.return_air() // Check if we're standing in an oxygenless environment - if(G.oxygen > 16) + if(G.oxygen > 13) return 1 return 0 diff --git a/code/modules/hydroponics/growninedible.dm b/code/modules/hydroponics/growninedible.dm index c94706f00e5..1136ec4296b 100644 --- a/code/modules/hydroponics/growninedible.dm +++ b/code/modules/hydroponics/growninedible.dm @@ -57,8 +57,14 @@ T.on_cross(src, AM) ..() +/obj/item/weapon/grown/on_trip(mob/living/carbon/human/H) + . = ..() + if(. && seed) + for(var/datum/plant_gene/trait/T in seed.genes) + T.on_slip(src, H) + /obj/item/weapon/grown/throw_impact(atom/hit_atom) if(!..()) //was it caught by a mob? if(seed) for(var/datum/plant_gene/trait/T in seed.genes) - T.on_throw_impact(src, hit_atom) \ No newline at end of file + T.on_throw_impact(src, hit_atom) diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 9a93d1a9673..cee72938fc6 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -89,7 +89,6 @@ attack_verb = list("chopped", "torn", "cut") hitsound = 'sound/weapons/bladeslice.ogg' sharp = 1 - edge = 1 /obj/item/weapon/hatchet/suicide_act(mob/user) user.visible_message("[user] is chopping at \himself with the [src.name]! It looks like \he's trying to commit suicide.") @@ -119,7 +118,6 @@ attack_verb = list("chopped", "sliced", "cut", "reaped") hitsound = 'sound/weapons/bladeslice.ogg' sharp = 1 - edge = 1 var/extend = 1 /obj/item/weapon/scythe/suicide_act(mob/user) @@ -128,7 +126,7 @@ var/mob/living/carbon/human/H = user var/obj/item/organ/external/affecting = H.get_organ("head") if(affecting) - affecting.droplimb(1, DROPLIMB_EDGE) + affecting.droplimb(1, DROPLIMB_SHARP) playsound(loc, pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg'), 50, 1, -1) return (BRUTELOSS) @@ -139,7 +137,6 @@ desc = "A sharp and curved blade on a collapsable fibre metal handle, this tool is the pinnacle of covert reaping technology." force = 3 sharp = 0 - edge = 0 w_class = WEIGHT_CLASS_SMALL extend = 0 slot_flags = SLOT_BELT @@ -172,7 +169,6 @@ //Collapse sound (blade sheath) playsound(src.loc, 'sound/weapons/blade_sheath.ogg', 50, 1) //Sound credit to Q.K. of Freesound.org sharp = extend - edge = extend if(ishuman(user)) var/mob/living/carbon/human/H = user H.update_inv_l_hand() diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 7c5297e07c4..6c5b1b0adf1 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -30,6 +30,8 @@ var/lid_state = 0 var/recent_bee_visit = FALSE //Have we been visited by a bee recently, so bees dont overpollinate one plant var/using_irrigation = FALSE //If the tray is connected to other trays via irrigation hoses + var/self_sufficiency_req = 20 //Required total dose to make a self-sufficient hydro tray. 1:1 with earthsblood. + var/self_sufficiency_progress = 0 var/self_sustaining = FALSE //If the tray generates nutrients and water on its own hud_possible = list (PLANT_NUTRIENT_HUD, PLANT_WATER_HUD, PLANT_STATUS_HUD, PLANT_HEALTH_HUD, PLANT_TOXIN_HUD, PLANT_PEST_HUD, PLANT_WEED_HUD) @@ -358,6 +360,9 @@ if(!self_sustaining) to_chat(user, "Water: [waterlevel]/[maxwater]") to_chat(user, "Nutrient: [nutrilevel]/[maxnutri]") + if(self_sufficiency_progress > 0) + var/percent_progress = round(self_sufficiency_progress * 100 / self_sufficiency_req) + to_chat(user, "Treatment for self-sustenance are [percent_progress]% complete.") else to_chat(user, "It doesn't require any water or nutrients.") @@ -373,8 +378,7 @@ var/oldPlantName if(myseed) // In case there's nothing in the tray beforehand oldPlantName = myseed.plantname - qdel(myseed) - myseed = null + QDEL_NULL(myseed) else oldPlantName = "empty tray" switch(rand(1,18)) // randomly pick predominative weed @@ -393,7 +397,7 @@ if(4 to 5) myseed = new /obj/item/seeds/plump(src) else - myseed = new /obj/item/seeds/weeds(src) + myseed = new /obj/item/seeds/starthistle(src) age = 0 plant_health = myseed.endurance lastcycle = world.time @@ -422,8 +426,7 @@ var/oldPlantName = myseed.plantname if(myseed.mutatelist.len > 0) var/mutantseed = pick(myseed.mutatelist) - qdel(myseed) - myseed = null + QDEL_NULL(myseed) myseed = new mutantseed else return @@ -444,9 +447,7 @@ /obj/machinery/hydroponics/proc/mutateweed() // If the weeds gets the mutagent instead. Mind you, this pretty much destroys the old plant if( weedlevel > 5 ) - if(myseed) - qdel(myseed) - myseed = null + QDEL_NULL(myseed) var/newWeed = pick(/obj/item/seeds/liberty, /obj/item/seeds/angel, /obj/item/seeds/nettle/death, /obj/item/seeds/kudzu) myseed = new newWeed dead = 0 @@ -550,6 +551,14 @@ adjustNutri(round(S.get_reagent_amount("fishwater") * 0.75)) adjustWater(round(S.get_reagent_amount("fishwater") * 1)) + // Ambrosia Gaia produces earthsblood. + if(S.has_reagent("earthsblood")) + self_sufficiency_progress += S.get_reagent_amount("earthsblood") + if(self_sufficiency_progress >= self_sufficiency_req) + become_self_sufficient() + else if(!self_sustaining) + to_chat(user, "[src] warms as it might on a spring day under a genuine Sun.") + // Antitoxin binds shit pretty well. So the tox goes significantly down if(S.has_reagent("charcoal", 1)) adjustToxic(-round(S.get_reagent_amount("charcoal") * 2)) @@ -572,8 +581,8 @@ // You're an idiot for thinking that one of the most corrosive and deadly gasses would be beneficial if(S.has_reagent("fluorine", 1)) adjustHealth(-round(S.get_reagent_amount("fluorine") * 2)) - adjustToxic(round(S.get_reagent_amount("flourine") * 2.5)) - adjustWater(-round(S.get_reagent_amount("flourine") * 0.5)) + adjustToxic(round(S.get_reagent_amount("fluorine") * 2.5)) + adjustWater(-round(S.get_reagent_amount("fluorine") * 0.5)) adjustWeeds(-rand(1,4)) // You're an idiot for thinking that one of the most corrosive and deadly gasses would be beneficial @@ -724,33 +733,7 @@ /obj/machinery/hydroponics/attackby(obj/item/O, mob/user, params) //Called when mob user "attacks" it with object O - if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/gaia)) //Checked early on so it doesn't have to deal with composting checks - if(self_sustaining) - to_chat(user, "This [name] is already self-sustaining!") - return - if(myseed || weedlevel) - to_chat(user, "[src] needs to be clear of plants and weeds!") - return - if(alert(user, "This will make [src] self-sustaining but consume [O] forever. Are you sure?", "[name]", "I'm Sure", "Abort") == "Abort" || !user) - return - if(!O || qdeleted(O)) - return - if(!Adjacent(user)) - return - if(self_sustaining) - to_chat(user, "This [name] is already self-sustaining!") - return - if(myseed || weedlevel) - to_chat(user, "[src] needs to be clear of plants and weeds!") - return - user.visible_message("[user] gently pulls open the soil for [O] and places it inside.", "You tenderly root [O] into [src].") - user.drop_item() - qdel(O) - visible_message("[src] begins to glow with a beautiful light!") - self_sustaining = TRUE - update_icon() - - else if(istype(O, /obj/item/weapon/reagent_containers) ) // Syringe stuff (and other reagent containers now too) + if(istype(O, /obj/item/weapon/reagent_containers)) // Syringe stuff (and other reagent containers now too) var/obj/item/weapon/reagent_containers/reagent_source = O if(istype(reagent_source, /obj/item/weapon/reagent_containers/syringe)) @@ -935,8 +918,7 @@ else if(dead) dead = 0 to_chat(user, "You remove the dead plant from [src].") - qdel(myseed) - myseed = null + QDEL_NULL(myseed) update_icon() plant_hud_set_status() plant_hud_set_health() @@ -953,8 +935,7 @@ else to_chat(user, "You harvest [myseed.getYield()] items from the [myseed.plantname].") if(!myseed.get_gene(/datum/plant_gene/trait/repeated_harvest)) - qdel(myseed) - myseed = null + QDEL_NULL(myseed) dead = 0 plant_hud_set_status() plant_hud_set_health() @@ -994,6 +975,11 @@ var/mob/living/simple_animal/hostile/C = new chosen C.faction = list("plants") +/obj/machinery/hydroponics/proc/become_self_sufficient() // Ambrosia Gaia effect + visible_message("[src] begins to glow with a beautiful light!") + self_sustaining = TRUE + update_icon() + ///Diona Nymph Related Procs/// /obj/machinery/hydroponics/CanPass(atom/movable/mover, turf/target, height=0) //So nymphs can climb over top of trays. if(height==0) @@ -1041,4 +1027,4 @@ else ..() -#undef HYDRO_CYCLES_PER_AGE \ No newline at end of file +#undef HYDRO_CYCLES_PER_AGE diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index cfda1499555..efc3d0f594f 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -204,24 +204,23 @@ rate = 0.1 examine_line = "It has a very slippery skin." -/datum/plant_gene/trait/slip/on_cross(obj/item/weapon/reagent_containers/food/snacks/grown/G, atom/target) - if(iscarbon(target)) - var/obj/item/seeds/seed = G.seed - var/mob/living/carbon/M = target +/datum/plant_gene/trait/slip/on_new(obj/item/weapon/reagent_containers/food/snacks/grown/G, newloc) + . = ..() + if(istype(G) && ispath(G.trash, /obj/item/weapon/grown)) + return - var/stun_len = seed.potency * rate * 0.8 - if(istype(G) && ispath(G.trash, /obj/item/weapon/grown)) - return + var/stun_len = G.seed.potency * rate * 0.8 - if(!istype(G, /obj/item/weapon/grown/bananapeel) && (!G.reagents || !G.reagents.has_reagent("lube"))) - stun_len /= 3 + if(!istype(G, /obj/item/weapon/grown/bananapeel) && (!G.reagents || !G.reagents.has_reagent("lube"))) + stun_len /= 3 - var/stun = min(stun_len, 7) - var/weaken = min(stun_len, 7) + stun_len = min(stun_len, 7) // No fun allowed - if(M.slip("[G]", stun, weaken)) - for(var/datum/plant_gene/trait/T in seed.genes) - T.on_slip(G, M) + G.trip_stun = stun_len + G.trip_weaken = stun_len + G.trip_chance = 100 + G.trip_verb = TV_SLIP + G.trip_walksafe = FALSE /datum/plant_gene/trait/cell_charge // Cell recharging trait. Charges all mob's power cells to (potency*rate)% mark when eaten. @@ -268,7 +267,7 @@ rate = 0.03 examine_line = "It emits a soft glow." trait_id = "glow" - var/glow_color = "#AAD84B" + var/glow_color = "#C3E381" /datum/plant_gene/trait/glow/proc/glow_range(obj/item/seeds/S) return 1.4 + S.potency*rate @@ -285,6 +284,7 @@ //adds -potency*(rate*0.05) light power to products name = "Shadow Emission" rate = 0.04 + glow_color = "#AAD84B" /datum/plant_gene/trait/glow/shadow/glow_power(obj/item/seeds/S) return -max(S.potency*(rate*0.05), 0.075) diff --git a/code/modules/karma/karma.dm b/code/modules/karma/karma.dm index 81af3a38395..b5cdbe0154f 100644 --- a/code/modules/karma/karma.dm +++ b/code/modules/karma/karma.dm @@ -87,7 +87,7 @@ var/list/karma_spenders = list() /mob/verb/spend_karma_list() set name = "Award Karma" set desc = "Let the gods know whether someone's been nice. Can only be used once per round." - set category = "OOC" + set category = "Special Verbs" if(!can_give_karma()) return @@ -116,7 +116,7 @@ var/list/karma_spenders = list() /mob/verb/spend_karma(var/mob/M) set name = "Award Karma to Player" set desc = "Let the gods know whether someone's been nice. Can only be used once per round." - set category = "OOC" + set category = "Special Verbs" if(!M) to_chat(usr, "Please right click a mob to award karma directly, or use the 'Award Karma' verb to select a player from the player listing.") @@ -149,7 +149,7 @@ var/list/karma_spenders = list() /client/verb/check_karma() set name = "Check Karma" set desc = "Reports how much karma you have accrued." - set category = "OOC" + set category = "Special Verbs" if(config.disable_karma) to_chat(src, "Karma is disabled.") diff --git a/code/modules/library/computers/checkout.dm b/code/modules/library/computers/checkout.dm index 2decc555693..526daeb68a8 100644 --- a/code/modules/library/computers/checkout.dm +++ b/code/modules/library/computers/checkout.dm @@ -178,8 +178,7 @@ M = new manual_type() dat += "[M.title]" manualcount++ - qdel(M) - M = null + QDEL_NULL(M) dat += "" dat += "
    (Return to main menu)
    " diff --git a/code/modules/mining/abandonedcrates.dm b/code/modules/mining/abandonedcrates.dm index c7212fe5a15..16d3fc193a0 100644 --- a/code/modules/mining/abandonedcrates.dm +++ b/code/modules/mining/abandonedcrates.dm @@ -40,7 +40,7 @@ new /obj/item/weapon/ore/diamond(src) if(21 to 25) for(var/i in 1 to 5) - new /obj/item/weapon/contraband/poster(src) + new /obj/item/weapon/poster/random_contraband(src) if(26 to 35) for(var/i in 1 to 3) new /obj/item/weapon/reagent_containers/glass/beaker/noreact(src) @@ -125,6 +125,7 @@ new /obj/item/weapon/bikehorn(src) new /obj/item/toy/crayon/rainbow(src) new /obj/item/weapon/reagent_containers/spray/waterflower(src) + new /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofbanana(src) if(95) new /obj/item/clothing/under/mime(src) new /obj/item/clothing/shoes/black(src) @@ -216,4 +217,4 @@ qdel(AM) var/turf/T = get_turf(src) explosion(T, -1, -1, 1, 1) - qdel(src) \ No newline at end of file + qdel(src) diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index 2c37ad5c5bb..541961e5297 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -978,7 +978,6 @@ hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("smashes", "crushes", "cleaves", "chops", "pulps") sharp = 1 - edge = 1 var/charged = 1 var/charge_time = 16 var/atom/mark = null @@ -1040,8 +1039,7 @@ mark = 0 if(L.mob_size >= MOB_SIZE_LARGE) L.underlays -= marked_image - qdel(marked_image) - marked_image = null + QDEL_NULL(marked_image) var/backstab = check_target_facings(user, L) var/def_check = L.getarmor(type = "bomb") if(backstab == FACING_INIT_FACING_TARGET_TARGET_FACING_PERPENDICULAR || backstab == FACING_SAME_DIR) diff --git a/code/modules/mining/lavaland/loot/ashdragon_loot.dm b/code/modules/mining/lavaland/loot/ashdragon_loot.dm index 418d00c6f19..c3b43e06d6f 100644 --- a/code/modules/mining/lavaland/loot/ashdragon_loot.dm +++ b/code/modules/mining/lavaland/loot/ashdragon_loot.dm @@ -24,7 +24,6 @@ item_state = "spectral" flags = CONDUCT sharp = 1 - edge = 1 w_class = WEIGHT_CLASS_BULKY force = 1 throwforce = 1 diff --git a/code/modules/mining/lavaland/loot/hierophant_loot.dm b/code/modules/mining/lavaland/loot/hierophant_loot.dm index 64689a3a535..e613b2ab276 100644 --- a/code/modules/mining/lavaland/loot/hierophant_loot.dm +++ b/code/modules/mining/lavaland/loot/hierophant_loot.dm @@ -52,7 +52,7 @@ friendly_fire_check = !friendly_fire_check to_chat(user, "You toggle friendly fire [friendly_fire_check ? "off":"on"]!") return - if(user.get_active_hand() != src && user.get_inactive_hand() != src) //you need to hold the staff to teleport + if(user.is_in_active_hand(src) && user.is_in_inactive_hand(src)) //you need to hold the staff to teleport to_chat(user, "You need to hold the staff in your hands to [rune ? "teleport with it" : "create a rune"]!") return if(!rune) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 7852fe0edd8..11f16953017 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -87,7 +87,6 @@ var/list/digsound = list('sound/effects/picaxe1.ogg','sound/effects/picaxe2.ogg','sound/effects/picaxe3.ogg') var/drill_verb = "picking" sharp = 1 - edge = 1 var/excavation_amount = 100 usesound = 'sound/effects/picaxe1.ogg' toolspeed = 1 @@ -482,7 +481,7 @@ var/obj/item/weapon/storage/pill_bottle/dice/D = new(src) load(D) else - var/obj/item/device/guitar/G = new(src) + var/obj/item/device/instrument/guitar/G = new(src) load(G) //Fans diff --git a/code/modules/mining/ore.dm b/code/modules/mining/ore.dm index 873b6c798d1..cf987c654bc 100644 --- a/code/modules/mining/ore.dm +++ b/code/modules/mining/ore.dm @@ -251,11 +251,4 @@ score_oremined++ //When ore spawns, increment score. Only include ore spawned on mining asteroid (No Clown Planet) /obj/item/weapon/ore/ex_act() - return - -/obj/item/weapon/ore/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W,/obj/item/device/core_sampler)) - var/obj/item/device/core_sampler/C = W - C.sample_item(src, user) - else - return ..() + return \ No newline at end of file diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 0750fd9841e..f73236d9720 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -657,7 +657,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp return FALSE -/mob/dead/observer/incapacitated() +/mob/dead/observer/incapacitated(ignore_restraints = FALSE, ignore_grab = FALSE, ignore_lying = FALSE) return TRUE //this is a mob verb instead of atom for performance reasons diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm index 11e51987285..cf3e4c320b5 100644 --- a/code/modules/mob/death.dm +++ b/code/modules/mob/death.dm @@ -16,7 +16,7 @@ animation.master = src // flick("gibbed-m", animation) - gibs(loc, viruses, dna) + gibs(loc, dna) dead_mob_list -= src if(client) respawnable_list += src diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index d23df61e993..908176f5a1b 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -91,6 +91,10 @@ desc = "It's a small maintenance robot." icon_state = "drone" +/obj/item/weapon/holder/drone/emagged + name = "maintenance drone" + icon_state = "drone-emagged" + /obj/item/weapon/holder/pai name = "pAI" desc = "It's a little robot." diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 5d746603418..7236fe57fde 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -6,11 +6,22 @@ if(hand) return l_hand else return r_hand +/mob/proc/is_in_active_hand(obj/item/I) + var/obj/item/item_to_test = get_active_hand() + + return item_to_test && item_to_test.is_equivalent(I) + + //Returns the thing in our inactive hand /mob/proc/get_inactive_hand() if(hand) return r_hand else return l_hand +/mob/proc/is_in_inactive_hand(obj/item/I) + var/obj/item/item_to_test = get_inactive_hand() + + return item_to_test && item_to_test.is_equivalent(I) + //Returns if a certain item can be equipped to a certain slot. // Currently invalid for two-handed items - call obj/item/mob_can_equip() instead. /mob/proc/can_equip(obj/item/I, slot, disable_warning = 0) @@ -119,6 +130,9 @@ else if(I == l_hand) l_hand = null update_inv_l_hand() + else if(I in tkgrabbed_objects) + var/obj/item/tk_grab/tkgrab = tkgrabbed_objects[I] + unEquip(tkgrab, force) if(I) if(client) diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index 36d84b0f72d..cc9ed1a27d6 100644 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -96,6 +96,9 @@ return (copytext(message, length(message)) == "!") ? 2 : 1 /datum/language/proc/broadcast(mob/living/speaker, message, speaker_mask) + if(!check_can_speak(speaker)) + return FALSE + log_say("[key_name(speaker)]: ([name]) [message]") if(!speaker_mask) @@ -114,6 +117,9 @@ /datum/language/proc/check_special_condition(mob/other, mob/living/speaker) return TRUE +/datum/language/proc/check_can_speak(mob/living/speaker) + return TRUE + /datum/language/proc/get_spoken_verb(msg_end) switch(msg_end) if("!") @@ -292,8 +298,29 @@ /datum/language/grey/broadcast(mob/living/speaker, message, speaker_mask) ..(speaker,message,speaker.real_name) +/datum/language/grey/check_can_speak(mob/living/speaker) + if(ishuman(speaker)) + var/mob/living/carbon/human/S = speaker + var/obj/item/organ/external/rhand = S.get_organ("r_hand") + var/obj/item/organ/external/lhand = S.get_organ("l_hand") + if((!rhand || !rhand.is_usable()) && (!lhand || !lhand.is_usable())) + to_chat(speaker,"You can't communicate without the ability to use your hands!") + return FALSE + if(speaker.incapacitated(ignore_lying = 1)) + to_chat(speaker,"You can't communicate while unable to move your hands to your head!") + return FALSE + + var/their = "their" + if(speaker.gender == "female") + their = "her" + if(speaker.gender == "male") + their = "his" + speaker.visible_message("[speaker] touches [their] fingers to [their] temple.") //If placed in grey/broadcast, it will happen regardless of the success of the action. + + return TRUE + /datum/language/grey/check_special_condition(mob/living/carbon/human/other, mob/living/carbon/human/speaker) - if(other in range(7, speaker)) + if(atoms_share_level(other, speaker)) return TRUE return FALSE diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index eef224e8378..ca24cb255b3 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -153,14 +153,10 @@ return has_fine_manipulation /mob/living/carbon/alien/Stat() - + ..() statpanel("Status") stat(null, "Intent: [a_intent]") stat(null, "Move Mode: [m_intent]") - - ..() - - show_stat_emergency_shuttle_eta() /mob/living/carbon/alien/SetStunned(amount, updating = 1, force = 0) @@ -294,3 +290,9 @@ Des: Removes all infected images from the alien. playsound(T, S, volume, 1, range) return 1 return 0 + +/mob/living/carbon/alien/getTrail() + if(getBruteLoss() < 200) + return pick("xltrails_1", "xltrails_2") + else + return pick("xttrails_1", "xttrails_2") \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/death.dm b/code/modules/mob/living/carbon/alien/death.dm index 645259b1fda..2229d4c9d0c 100644 --- a/code/modules/mob/living/carbon/alien/death.dm +++ b/code/modules/mob/living/carbon/alien/death.dm @@ -14,7 +14,7 @@ playsound(src.loc, 'sound/goonstation/effects/gib.ogg', 50, 1) flick("gibbed-a", animation) - xgibs(loc, viruses) + xgibs(loc) dead_mob_list -= src spawn(15) diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm index e6a2f6567c2..580ec3af3cf 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/life.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm @@ -1,11 +1,8 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - /mob/living/carbon/alien/humanoid oxygen_alert = 0 toxins_alert = 0 fire_alert = 0 pass_flags = PASSTABLE - var/temperature_alert = 0 /mob/living/carbon/alien/humanoid/Life() @@ -22,15 +19,13 @@ if(disabilities & COUGHING) if((prob(5) && paralysis <= 1)) drop_item() - spawn( 0 ) - emote("cough") - return + emote("cough") + return if(disabilities & TOURETTES) if((prob(10) && paralysis <= 1)) Stun(10) - spawn( 0 ) - emote("twitch") - return + emote("twitch") + return if(disabilities & NERVOUS) if(prob(10)) stuttering = max(10, stuttering) @@ -68,8 +63,7 @@ //UNCONSCIOUS. NO-ONE IS HOME if((getOxyLoss() > 50) || (config.health_threshold_crit >= health)) if(health <= 20 && prob(1)) - spawn(0) - emote("gasp") + emote("gasp") if(!reagents.has_reagent("epinephrine")) adjustOxyLoss(1) Paralyse(3) @@ -81,8 +75,7 @@ blinded = 1 stat = UNCONSCIOUS if(prob(10) && health) - spawn(0) - emote("hiss") + emote("hiss") //CONSCIOUS else stat = CONSCIOUS diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index 447f65c6744..4faa957163c 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -1,8 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - -/mob/living/carbon/alien/larva - var/temperature_alert = 0 - /mob/living/carbon/alien/larva/Life() if(..()) //still breathing // GROW! @@ -40,9 +35,8 @@ else if(sleeping) blinded = 1 stat = UNCONSCIOUS - if( prob(10) && health ) - spawn(0) - emote("hiss_") + if(prob(10) && health) + emote("hiss_") //CONSCIOUS else stat = CONSCIOUS diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index 38ea99834b0..498a2afb8b0 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - //TODO: Make these simple_animals var/const/MIN_IMPREGNATION_TIME = 100 //time it takes to impregnate someone diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm index 55711fb6a6d..afc9fd13900 100644 --- a/code/modules/mob/living/carbon/brain/MMI.dm +++ b/code/modules/mob/living/carbon/brain/MMI.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - /obj/item/device/mmi name = "Man-Machine Interface" desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity." diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm index 655ad111cf1..76155d01322 100644 --- a/code/modules/mob/living/carbon/brain/brain.dm +++ b/code/modules/mob/living/carbon/brain/brain.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - /mob/living/carbon/brain var/obj/item/container = null var/timeofhostdeath = 0 diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index 7a12b570201..daeebf8442f 100644 --- a/code/modules/mob/living/carbon/brain/brain_item.dm +++ b/code/modules/mob/living/carbon/brain/brain_item.dm @@ -71,9 +71,9 @@ var/obj/item/organ/internal/brain/B = src if(!special) var/mob/living/simple_animal/borer/borer = owner.has_brain_worms() - if(borer) - borer.detach() //Should remove borer if the brain is removed - RR + borer.leave_host() //Should remove borer if the brain is removed - RR + if(owner.mind && !non_primary)//don't transfer if the owner does not have a mind. B.transfer_identity(user) diff --git a/code/modules/mob/living/carbon/brain/death.dm b/code/modules/mob/living/carbon/brain/death.dm index d6a07d48f7e..8303c3ef04a 100644 --- a/code/modules/mob/living/carbon/brain/death.dm +++ b/code/modules/mob/living/carbon/brain/death.dm @@ -29,7 +29,7 @@ animation.master = src // flick("gibbed-m", animation) - gibs(loc, viruses, dna) + gibs(loc, dna) dead_mob_list -= src if(container && istype(container, /obj/item/device/mmi)) diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm index 54d8a680ae7..037a3f520b3 100644 --- a/code/modules/mob/living/carbon/brain/posibrain.dm +++ b/code/modules/mob/living/carbon/brain/posibrain.dm @@ -25,12 +25,14 @@ to_chat(user, "You carefully locate the manual activation switch and start the positronic brain's boot process.") icon_state = "posibrain-searching" ghost_volunteers.Cut() - src.searching = 1 - src.request_player() + searching = 1 + request_player() spawn(600) if(ghost_volunteers.len) - var/mob/dead/observer/O = pick(ghost_volunteers) - if(check_observer(O)) + var/mob/dead/observer/O + while(!istype(O) && ghost_volunteers.len) + O = pick_n_take(ghost_volunteers) + if(istype(O) && check_observer(O)) transfer_personality(O) reset_search() else diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 9cdb618b8a4..bdb9a359a09 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -19,6 +19,10 @@ /mob/living/carbon/Destroy() QDEL_LIST(internal_organs) QDEL_LIST(stomach_contents) + var/mob/living/simple_animal/borer/B = has_brain_worms() + if(B) + B.leave_host() + qdel(B) remove_from_all_data_huds() return ..() @@ -107,7 +111,7 @@ for(var/i=0 to distance) if(blood) if(T) - T.add_blood_floor(src) + add_splatter_floor(T) if(stun) adjustBruteLoss(3) else @@ -126,8 +130,7 @@ if(isturf(loc)) I.remove(src) I.forceMove(get_turf(src)) - spawn() - I.throw_at(get_edge_target_turf(src,pick(alldirs)),rand(1,3),5) + I.throw_at(get_edge_target_turf(src,pick(alldirs)),rand(1,3),5) for(var/mob/M in src) if(M in src.stomach_contents) @@ -217,15 +220,18 @@ "You check yourself for injuries." \ ) - for(var/obj/item/organ/external/org in H.bodyparts) + var/list/missing = list("head", "chest", "groin", "l_arm", "r_arm", "l_hand", "r_hand", "l_leg", "r_leg", "l_foot", "r_foot") + for(var/X in H.bodyparts) + var/obj/item/organ/external/LB = X + missing -= LB.limb_name var/status = "" - var/brutedamage = org.brute_dam - var/burndamage = org.burn_dam + var/brutedamage = LB.brute_dam + var/burndamage = LB.burn_dam if(brutedamage > 0) status = "bruised" if(brutedamage > 20) - status = "bleeding" + status = "battered" if(brutedamage > 40) status = "mangled" if(brutedamage > 0 && burndamage > 0) @@ -237,13 +243,20 @@ status += "blistered" else if(burndamage > 0) status += "numb" - if(org.status & ORGAN_DESTROYED) - status = "MISSING!" - if(org.status & ORGAN_MUTATED) + if(LB.status & ORGAN_MUTATED) status = "weirdly shapen." if(status == "") status = "OK" - src.show_message(text("\t []My [] is [].",status=="OK"?"":"",org.name,status),1) + to_chat(src, "\t Your [LB.name] is [status].") + + for(var/obj/item/I in LB.embedded_objects) + to_chat(src, "\t There is \a [I] embedded in your [LB.name]!") + + for(var/t in missing) + to_chat(src, "Your [parse_zone(t)] is missing!") + + if(H.bleed_rate) + to_chat(src, "You are bleeding!") if(staminaloss) if(staminaloss > 30) to_chat(src, "You're completely exhausted.") @@ -292,7 +305,9 @@ ) if(istype(src,/mob/living/carbon/human)) var/mob/living/carbon/human/H = src - if(H.w_uniform) + if(H.wear_suit) + H.wear_suit.add_fingerprint(M) + else if(H.w_uniform) H.w_uniform.add_fingerprint(M) /mob/living/carbon/flash_eyes(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0) @@ -312,15 +327,15 @@ if(1) to_chat(src, "Your eyes sting a little.") if(prob(40)) //waiting on carbon organs - E.damage += 1 + E.take_damage(1, 1) if(2) to_chat(src, "Your eyes burn.") - E.damage += rand(2, 4) + E.take_damage(rand(2, 4), 1) else to_chat(src, "Your eyes itch and burn severely!") - E.damage += rand(12, 16) + E.take_damage(rand(12, 16), 1) if(E.damage > E.min_bruised_damage) AdjustEyeBlind(damage) @@ -474,21 +489,6 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump, if(istype(loc, /obj/machinery/atmospherics)) add_ventcrawl(loc) -/mob/living/carbon/clean_blood() - . = ..() - if(ishuman(src)) - var/mob/living/carbon/human/H = src - if(H.gloves) - if(H.gloves.clean_blood()) - H.update_inv_gloves(0,0) - H.gloves.germ_level = 0 - else - if(H.bloody_hands) - H.bloody_hands = 0 - H.update_inv_gloves(0,0) - H.germ_level = 0 - update_icons() //apply the now updated overlays to the mob - //Throwing stuff @@ -535,18 +535,19 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump, return /mob/living/carbon/throw_item(atom/target) - throw_mode_off() - if(!target || !isturf(loc)) - return - if(istype(target, /obj/screen)) + if(!target || !isturf(loc) || istype(target, /obj/screen)) + throw_mode_off() return - var/atom/movable/thrown_thing var/obj/item/I = src.get_active_hand() - if(!I || (I.flags & NODROP)) + if(!I || I.override_throw(src, target) || (I.flags & NODROP)) + throw_mode_off() return + throw_mode_off() + var/atom/movable/thrown_thing + if(istype(I, /obj/item/weapon/grab)) var/obj/item/weapon/grab/G = I var/mob/throwable_mob = G.get_mob_if_throwable() //throw the person instead of the grab @@ -649,9 +650,10 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump, "[usr] tries to [internal ? "close" : "open"] the valve on [src]'s [ITEM].") var/no_mask - if(!(wear_mask && wear_mask.flags & AIRTIGHT)) - if(!(head && head.flags & AIRTIGHT)) - no_mask = 1 + if(!get_organ_slot("breathing_tube")) + if(!(wear_mask && wear_mask.flags & AIRTIGHT)) + if(!(head && head.flags & AIRTIGHT)) + no_mask = 1 if(no_mask) to_chat(usr, "[src] is not wearing a suitable mask or helmet!") return @@ -662,9 +664,10 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump, update_internals_hud_icon(0) else var/no_mask2 - if(!(wear_mask && wear_mask.flags & AIRTIGHT)) - if(!(head && head.flags & AIRTIGHT)) - no_mask2 = 1 + if(!get_organ_slot("breathing_tube")) + if(!(wear_mask && wear_mask.flags & AIRTIGHT)) + if(!(head && head.flags & AIRTIGHT)) + no_mask2 = 1 if(no_mask2) to_chat(usr, "[src] is not wearing a suitable mask or helmet!") return @@ -881,8 +884,10 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump, /mob/living/carbon/get_standard_pixel_y_offset(lying = 0) if(lying) - if(buckled) return initial(pixel_y) - return -6 + if(buckled) + return buckled.buckle_offset //tg just has this whole block removed, always returning -6. Paradise is special. + else + return -6 else return initial(pixel_y) @@ -892,11 +897,11 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump, ..() /mob/living/carbon/Stat() + ..() if(statpanel("Status")) var/obj/item/organ/internal/xenos/plasmavessel/vessel = get_int_organ(/obj/item/organ/internal/xenos/plasmavessel) if(vessel) stat(null, "Plasma Stored: [vessel.stored_plasma]/[vessel.max_plasma]") - ..() /mob/living/carbon/get_all_slots() return list(l_hand, @@ -935,7 +940,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump, W.plane = initial(W.plane) -/mob/living/carbon/proc/slip(var/description, var/stun, var/weaken, var/tilesSlipped, var/walkSafely, var/slipAny) +/mob/living/carbon/proc/slip(description, stun, weaken, tilesSlipped, walkSafely, slipAny, slipVerb = "slip") if(flying || buckled || (walkSafely && m_intent == MOVE_INTENT_WALK)) return 0 if((lying) && (!(tilesSlipped))) @@ -943,16 +948,16 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump, if(!(slipAny)) if(istype(src, /mob/living/carbon/human)) var/mob/living/carbon/human/H = src - if((isobj(H.shoes) && H.shoes.flags & NOSLIP) || H.species.bodyflags & FEET_NOSLIP) + if(isobj(H.shoes) && H.shoes.flags & NOSLIP) return 0 if(tilesSlipped) for(var/t = 0, t<=tilesSlipped, t++) spawn (t) step(src, src.dir) stop_pulling() - to_chat(src, "You slipped on [description]!") + to_chat(src, "You [slipVerb]ped on [description]!") playsound(src.loc, 'sound/misc/slip.ogg', 50, 1, -3) - if(stun) - Stun(stun) + // Something something don't run with scissors + Stun(stun) Weaken(weaken) return 1 @@ -976,7 +981,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump, else if(!forceFed(toEat, user, fullness)) return 0 - consume(toEat, bitesize_override) + consume(toEat, bitesize_override, taste = toEat.taste) score_foodeaten++ return 1 @@ -1029,7 +1034,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump, /*TO DO - If/when stomach organs are introduced, override this at the human level sending the item to the stomach so that different stomachs can handle things in different ways VB*/ -/mob/living/carbon/proc/consume(var/obj/item/weapon/reagent_containers/food/toEat, var/bitesize_override) +/mob/living/carbon/proc/consume(var/obj/item/weapon/reagent_containers/food/toEat, var/bitesize_override, var/taste = TRUE) var/this_bite = bitesize_override ? bitesize_override : toEat.bitesize if(!toEat.reagents) return @@ -1038,6 +1043,8 @@ so that different stomachs can handle things in different ways VB*/ if(toEat.consume_sound) playsound(loc, toEat.consume_sound, rand(10,50), 1) if(toEat.reagents.total_volume) + if(taste) + taste_reagents(toEat.reagents) var/fraction = min(this_bite/toEat.reagents.total_volume, 1) toEat.reagents.reaction(src, toEat.apply_type, fraction) toEat.reagents.trans_to(src, this_bite*toEat.transfer_efficiency) diff --git a/code/modules/mob/living/carbon/carbon_defenses.dm b/code/modules/mob/living/carbon/carbon_defenses.dm index c5c1e4917e4..6878a0f28f7 100644 --- a/code/modules/mob/living/carbon/carbon_defenses.dm +++ b/code/modules/mob/living/carbon/carbon_defenses.dm @@ -30,11 +30,17 @@ if(!iscarbon(user)) return - for(var/datum/disease/D in viruses) + for(var/thing in viruses) + var/datum/disease/D = thing if(D.IsSpreadByTouch()) user.ContractDisease(D) - for(var/datum/disease/D in user.viruses) + for(var/thing in user.viruses) + var/datum/disease/D = thing if(D.IsSpreadByTouch()) ContractDisease(D) return 0 + +/mob/living/carbon/is_mouth_covered(head_only = FALSE, mask_only = FALSE) + if((!mask_only && head && (head.flags_cover & HEADCOVERSMOUTH)) || (!head_only && wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH))) + return TRUE \ No newline at end of file diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 6e34291caae..67a8fb7fa20 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -3,18 +3,19 @@ hud_possible = list(HEALTH_HUD,STATUS_HUD,SPECIALROLE_HUD) var/list/stomach_contents = list() var/list/internal_organs = list() + var/list/internal_organs_slot = list() //Same as above, but stores "slot ID" - "organ" pairs for easy access. var/antibodies = 0 var/life_tick = 0 // The amount of life ticks that have processed on this mob. - // total amount of wounds on mob, used to spread out healing and the like over all wounds - var/number_wounds = 0 var/obj/item/handcuffed = null //Whether or not the mob is handcuffed var/obj/item/legcuffed = null //Same as handcuffs but for legs. Bear traps use this. var/obj/item/head = null var/obj/item/clothing/suit/wear_suit = null //TODO: necessary? Are they even used? ~Carn + var/mob/living/simple_animal/borer/borer = null + //Active emote/pose var/pose = null @@ -29,3 +30,5 @@ var/failed_last_breath = 0 //This is used to determine if the mob failed a breath. If they did fail a brath, they will attempt to breathe each tick, otherwise just once per 4 ticks. var/co2overloadtime = null + + blood_volume = BLOOD_VOLUME_NORMAL diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm index e365f870fca..e258962f784 100644 --- a/code/modules/mob/living/carbon/human/appearance.dm +++ b/code/modules/mob/living/carbon/human/appearance.dm @@ -343,7 +343,7 @@ continue if(blacklist.len && (current_species_name in blacklist)) continue - if((current_species.flags & IS_WHITELISTED) && !is_alien_whitelisted(src, current_species_name)) + if((IS_WHITELISTED in current_species.species_traits) && !is_alien_whitelisted(src, current_species_name)) continue valid_species += current_species_name @@ -364,7 +364,7 @@ continue if((H.gender == MALE && S.gender == FEMALE) || (H.gender == FEMALE && S.gender == MALE)) continue - if(H.species.flags & ALL_RPARTS) //If the user is a species who can have a robotic head... + if(H.species.bodyflags & ALL_RPARTS) //If the user is a species who can have a robotic head... var/datum/robolimb/robohead = all_robolimbs[H.model] if((H.species.name in S.species_allowed) && robohead.is_monitor && ((S.models_allowed && (robohead.company in S.models_allowed)) || !S.models_allowed)) //If this is a hair style native to the user's species, check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list. valid_hairstyles += hairstyle //Give them their hairstyles if they do. @@ -392,7 +392,7 @@ continue if((H.gender == MALE && S.gender == FEMALE) || (H.gender == FEMALE && S.gender == MALE)) continue - if(H.species.flags & ALL_RPARTS) //If the user is a species who can have a robotic head... + if(H.species.bodyflags & ALL_RPARTS) //If the user is a species who can have a robotic head... var/datum/robolimb/robohead = all_robolimbs[H.model] if(H.species.name in S.species_allowed) //If this is a facial hair style native to the user's species... if((H.species.name in S.species_allowed) && robohead.is_monitor && ((S.models_allowed && (robohead.company in S.models_allowed)) || !S.models_allowed)) //If this is a facial hair style native to the user's species, check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list. @@ -446,7 +446,7 @@ continue if(location == "head") var/datum/sprite_accessory/body_markings/head/M = marking_styles_list[S.name] - if(H.species.flags & ALL_RPARTS)//If the user is a species that can have a robotic head... + if(H.species.bodyflags & ALL_RPARTS)//If the user is a species that can have a robotic head... var/datum/robolimb/robohead = all_robolimbs[H.model] if(!(S.models_allowed && (robohead.company in S.models_allowed))) //Make sure they don't get markings incompatible with their head. continue diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 69e86de81e6..d0468fb12b6 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -19,8 +19,7 @@ if(isturf(loc)) var/atom/movable/thing = I.remove(src) thing.forceMove(get_turf(src)) - spawn() - thing.throw_at(get_edge_target_turf(src,pick(alldirs)),rand(1,3),5) + thing.throw_at(get_edge_target_turf(src,pick(alldirs)),rand(1,3),5) for(var/obj/item/organ/external/E in bodyparts) if(istype(E, /obj/item/organ/external/chest)) @@ -28,7 +27,7 @@ // Only make the limb drop if it's not too damaged if(prob(100 - E.get_damage())) // Override the current limb status and don't cause an explosion - E.droplimb(DROPLIMB_EDGE) + E.droplimb(DROPLIMB_SHARP) for(var/mob/M in src) if(M in stomach_contents) @@ -38,7 +37,7 @@ if(!isSynthetic()) flick("gibbed-h", animation) - hgibs(loc, viruses, dna) + hgibs(loc, dna) else new /obj/effect/decal/cleanable/blood/gibs/robot(loc) var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread @@ -90,8 +89,10 @@ if(src) qdel(src) /mob/living/carbon/human/death(gibbed) - if(stat == DEAD) return - if(healths) healths.icon_state = "health5" + if(stat == DEAD) + return + if(healths) + healths.icon_state = "health5" if(!gibbed) emote("deathgasp") //let the world KNOW WE ARE DEAD @@ -102,21 +103,8 @@ set_heartattack(FALSE) //Handle species-specific deaths. - if(species) species.handle_death(src) - - //Handle brain slugs. - var/obj/item/organ/external/head = get_organ("head") - var/mob/living/simple_animal/borer/B - - if(istype(head)) - for(var/I in head.implants) - if(istype(I,/mob/living/simple_animal/borer)) - B = I - if(B) - if(B.controlling && B.host == src) - B.detach() - - verbs -= /mob/living/carbon/proc/release_control + if(species) + species.handle_death(src) callHook("death", list(src, gibbed)) @@ -143,9 +131,9 @@ return ..(gibbed) /mob/living/carbon/human/update_revive() - ..() + . = ..() // Update healthdoll - if(healthdoll) + if(. && healthdoll) // We're alive again, so re-build the entire healthdoll healthdoll.cached_healthdoll_overlays.Cut() diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index d1f73360874..7083b04ee35 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -38,6 +38,16 @@ on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm else return + if("howl", "howls") + if (species.name == "Vulpkanin") //Only Vulpkanin can howl + on_CD = handle_emote_CD(100) + else + return + if("growl", "growls") + if (species.name == "Vulpkanin") //Only Vulpkanin can growl + on_CD = handle_emote_CD() + else + return if("squish", "squishes") var/found_slime_bodypart = 0 @@ -76,7 +86,7 @@ on_CD = handle_emote_CD(50) //longer cooldown if("fart", "farts", "flip", "flips", "snap", "snaps") on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm - if("cough", "coughs") + if("cough", "coughs", "slap", "slaps") on_CD = handle_emote_CD() if("sneeze", "sneezes") on_CD = handle_emote_CD() @@ -91,8 +101,21 @@ if("me") //OKAY SO RANT TIME, THIS FUCKING HAS TO BE HERE OR A SHITLOAD OF THINGS BREAK return custom_emote(m_type, message) //DO YOU KNOW WHY SHIT BREAKS? BECAUSE SO MUCH OLDCODE CALLS mob.emote("me",1,"whatever_the_fuck_it_wants_to_emote") //WHO THE FUCK THOUGHT THAT WAS A GOOD FUCKING IDEA!?!? - if("ping", "pings") + + if("howl", "howls") var/M = handle_emote_param(param) //Check to see if the param is valid (mob with the param name is in view). + message = "[src] howls[M ? " at [M]" : ""]!" + playsound(loc, 'sound/goonstation/voice/howl.ogg', 100, 0, 10) + m_type = 2 + + if("growl", "growls") + var/M = handle_emote_param(param) + message = "[src] growls[M ? " at [M]" : ""]." + playsound(loc, "growls", 80, 0) + m_type = 2 + + if("ping", "pings") + var/M = handle_emote_param(param) message = "[src] pings[M ? " at [M]" : ""]." playsound(loc, 'sound/machines/ping.ogg', 50, 0) @@ -711,9 +734,9 @@ message = "[src] [species.scream_verb][M ? " at [M]" : ""]!" m_type = 2 if(gender == FEMALE) - playsound(loc, "[species.female_scream_sound]", 80, 1, 0, pitch = get_age_pitch()) + playsound(loc, "[species.female_scream_sound]", 80, 1, frequency = get_age_pitch()) else - playsound(loc, "[species.male_scream_sound]", 80, 1, 0, pitch = get_age_pitch()) //default to male screams if no gender is present. + playsound(loc, "[species.male_scream_sound]", 80, 1, frequency = get_age_pitch()) //default to male screams if no gender is present. else message = "[src] makes a very loud noise[M ? " at [M]" : ""]." @@ -727,9 +750,9 @@ var/obj/item/organ/external/R = H.get_organ("r_hand") var/left_hand_good = 0 var/right_hand_good = 0 - if(L && (!(L.status & ORGAN_DESTROYED)) && (!(L.status & ORGAN_SPLINTED)) && (!(L.status & ORGAN_BROKEN))) + if(L && (!(L.status & ORGAN_SPLINTED)) && (!(L.status & ORGAN_BROKEN))) left_hand_good = 1 - if(R && (!(R.status & ORGAN_DESTROYED)) && (!(R.status & ORGAN_SPLINTED)) && (!(R.status & ORGAN_BROKEN))) + if(R && (!(R.status & ORGAN_SPLINTED)) && (!(R.status & ORGAN_BROKEN))) right_hand_good = 1 if(!left_hand_good && !right_hand_good) @@ -795,6 +818,8 @@ emotelist += "\nKidan specific emotes :- click(s), clack(s)" if("Unathi") emotelist += "\nUnathi specific emotes :- hiss(es)" + if("Vulpkanin") + emotelist += "\nVulpkanin specific emotes :- growl(s)-none/mob, howl(s)-none/mob" if (species.name == "Slime People") emotelist += "\nSlime people specific emotes :- squish(es)-(none)/mob" diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 693973ab42d..299006c102d 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -191,16 +191,6 @@ //ID if(wear_id) - /*var/id - if(istype(wear_id, /obj/item/device/pda)) - var/obj/item/device/pda/pda = wear_id - id = pda.owner - else if(istype(wear_id, /obj/item/weapon/card/id)) //just in case something other than a PDA/ID card somehow gets in the ID slot :[ - var/obj/item/weapon/card/id/idcard = wear_id - id = idcard.registered_name - if(id && (id != real_name) && (get_dist(src, user) <= 1) && prob(10)) - msg += "[t_He] [t_is] wearing [bicon(wear_id)] \a [wear_id] yet something doesn't seem right...\n" - else*/ msg += "[t_He] [t_is] wearing [bicon(wear_id)] \a [wear_id].\n" //Jitters @@ -212,36 +202,103 @@ if(100 to 200) msg += "[t_He] [t_is] twitching ever so slightly.\n" - //splints - for(var/organ in list("l_leg","r_leg","l_arm","r_arm")) - var/obj/item/organ/external/o = get_organ(organ) - if(o && o.status & ORGAN_SPLINTED) - msg += "[t_He] [t_has] a splint on his [o.name]!\n" - if(suiciding) - msg += "[t_He] appears to have commited suicide... there is no hope of recovery.\n" + var/appears_dead = FALSE + if(stat == DEAD || (status_flags & FAKEDEATH)) + appears_dead = TRUE + if(suiciding) + msg += "[t_He] appears to have committed suicide... there is no hope of recovery.\n" + msg += "[t_He] [t_is] limp and unresponsive; there are no signs of life" + if(get_int_organ(/obj/item/organ/internal/brain)) + if(!key) + var/foundghost = FALSE + if(mind) + for(var/mob/dead/observer/G in player_list) + if(G.mind == mind) + foundghost = TRUE + if(G.can_reenter_corpse == 0) + foundghost = FALSE + break + if(!foundghost) + msg += " and [t_his] soul has departed" + msg += "...\n" - if(DWARF in mutations) - msg += "[t_He] [t_is] a halfling!\n" - - var/distance = get_dist(user,src) - if(istype(user, /mob/dead/observer) || user.stat == 2) // ghosts can see anything - distance = 1 - if(src.stat) - msg += "[t_He] [t_is]n't responding to anything around [t_him] and seems to be asleep.\n" - if((stat == 2 || src.health <= config.health_threshold_crit) && distance <= 3) - msg += "[t_He] does not appear to be breathing.\n" - if(istype(user, /mob/living/carbon/human) && !user.stat && distance <= 1) - for(var/mob/O in viewers(user.loc, null)) - O.show_message("[user] checks [src]'s pulse.", 1) - spawn(15) - if(distance <= 1 && user.stat != 1) - if(pulse == PULSE_NONE) - to_chat(user, "[t_He] has no pulse[src.client ? "" : " and [t_his] soul has departed"]...") - else - to_chat(user, "[t_He] has a pulse!") + if(!get_int_organ(/obj/item/organ/internal/brain)) + msg += "It appears that [t_his] brain is missing...\n" msg += "" + + var/list/wound_flavor_text = list() + var/list/is_destroyed = list() + for(var/organ_tag in species.has_limbs) + + var/list/organ_data = species.has_limbs[organ_tag] + var/organ_descriptor = organ_data["descriptor"] + is_destroyed["[organ_data["descriptor"]]"] = 1 + + var/obj/item/organ/external/E = bodyparts_by_name[organ_tag] + if(!E) + wound_flavor_text["[organ_tag]"] = "[t_He] [t_is] missing [t_his] [organ_descriptor].\n" + else + if(!isSynthetic()) + if(E.status & ORGAN_ROBOT) + wound_flavor_text["[E.limb_name]"] = "[t_He] [t_has] a robotic [E.name]!\n" + + else if(E.status & ORGAN_SPLINTED) + wound_flavor_text["[E.limb_name]"] = "[t_He] [t_has] a splint on his [E.name]!\n" + + for(var/obj/item/I in E.embedded_objects) + msg += "[t_He] [t_has] \a [bicon(I)] [I] embedded in [t_his] [E.name]!\n" + + //Handles the text strings being added to the actual description. + //If they have something that covers the limb, and it is not missing, put flavortext. If it is covered but bleeding, add other flavortext. + if(wound_flavor_text["head"] && (is_destroyed["head"] || (!skipmask && !(wear_mask && istype(wear_mask, /obj/item/clothing/mask/gas))))) + msg += wound_flavor_text["head"] + if(wound_flavor_text["chest"] && !w_uniform && !skipjumpsuit) //No need. A missing chest gibs you. + msg += wound_flavor_text["chest"] + if(wound_flavor_text["l_arm"] && (is_destroyed["left arm"] || (!w_uniform && !skipjumpsuit))) + msg += wound_flavor_text["l_arm"] + if(wound_flavor_text["l_hand"] && (is_destroyed["left hand"] || (!gloves && !skipgloves))) + msg += wound_flavor_text["l_hand"] + if(wound_flavor_text["r_arm"] && (is_destroyed["right arm"] || (!w_uniform && !skipjumpsuit))) + msg += wound_flavor_text["r_arm"] + if(wound_flavor_text["r_hand"] && (is_destroyed["right hand"] || (!gloves && !skipgloves))) + msg += wound_flavor_text["r_hand"] + if(wound_flavor_text["groin"] && (is_destroyed["groin"] || (!w_uniform && !skipjumpsuit))) + msg += wound_flavor_text["groin"] + if(wound_flavor_text["l_leg"] && (is_destroyed["left leg"] || (!w_uniform && !skipjumpsuit))) + msg += wound_flavor_text["l_leg"] + if(wound_flavor_text["l_foot"]&& (is_destroyed["left foot"] || (!shoes && !skipshoes))) + msg += wound_flavor_text["l_foot"] + if(wound_flavor_text["r_leg"] && (is_destroyed["right leg"] || (!w_uniform && !skipjumpsuit))) + msg += wound_flavor_text["r_leg"] + if(wound_flavor_text["r_foot"]&& (is_destroyed["right foot"] || (!shoes && !skipshoes))) + msg += wound_flavor_text["r_foot"] + + var/temp = getBruteLoss() //no need to calculate each of these twice + + if(temp) + var/brute_message = !isSynthetic() ? "bruising" : "denting" + if(temp < 30) + msg += "[t_He] [t_has] minor [brute_message ].\n" + else + msg += "[t_He] [t_has] severe [brute_message ]!\n" + + temp = getFireLoss() + if(temp) + if(temp < 30) + msg += "[t_He] [t_has] minor burns.\n" + else + msg += "[t_He] [t_has] severe burns!\n" + + temp = getCloneLoss() + if(temp) + if(temp < 30) + msg += "[t_He] [t_has] minor cellular damage.\n" + else + msg += "[t_He] [t_has] severe cellular damage.\n" + + if(fire_stacks > 0) msg += "[t_He] [t_is] covered in something flammable.\n" if(fire_stacks < 0) @@ -267,184 +324,49 @@ else msg += "[t_He] [t_is] quite chubby.\n" + if(blood_volume < BLOOD_VOLUME_SAFE) + msg += "[t_He] [t_has] pale skin.\n" + + if(bleedsuppress) + msg += "[t_He] [t_is] bandaged with something.\n" + else if(bleed_rate) + if(reagents.has_reagent("heparin")) + msg += "[t_He] [t_is] bleeding uncontrollably!\n" + else + msg += "[t_He] [t_is] bleeding!\n" + if(reagents.has_reagent("teslium")) msg += "[t_He] is emitting a gentle blue glow!\n" msg += "" - if(getBrainLoss() >= 60) - msg += "[t_He] [t_has] a stupid expression on [t_his] face.\n" + if(!appears_dead) + if(stat == UNCONSCIOUS) + msg += "[t_He] [t_is]n't responding to anything around [t_him] and seems to be asleep.\n" + else if(getBrainLoss() >= 60) + msg += "[t_He] [t_has] a stupid expression on [t_his] face.\n" - if(species.show_ssd && (!species.has_organ["brain"] || get_int_organ(/obj/item/organ/internal/brain)) && stat != DEAD) - if(istype(src, /mob/living/carbon/human/interactive)) - msg += "[t_He] appears to be some sort of sick automaton: [t_his] eyes are glazed over and [t_his] mouth is slightly agape.\n" - else if(!key) - msg += "[t_He] [t_is] fast asleep. It doesn't look like they are waking up anytime soon.\n" - else if(!client) - msg += "[t_He] [t_has] suddenly fallen asleep, suffering from Space Sleep Disorder.\n" + if(get_int_organ(/obj/item/organ/internal/brain)) + if(istype(src, /mob/living/carbon/human/interactive)) + var/mob/living/carbon/human/interactive/auto = src + if(auto.showexaminetext) + msg += "[t_He] [t_is] appears to be some sort of sick automaton, [t_his] eyes are glazed over and [t_his] mouth is slightly agape.\n" + if(auto.debugexamine) + var/dodebug = auto.doing2string(auto.doing) + var/interestdebug = auto.interest2string(auto.interest) + msg += "[t_He] [t_is] appears to be [interestdebug] and [dodebug].\n" + else if(species.show_ssd) + if(!key) + msg += "[t_He] [t_is] totally catatonic. The stresses of life in deep-space must have been too much for [t_him]. Any recovery is unlikely.\n" + else if(!client) + msg += "[t_He] [t_has] suddenly fallen asleep, suffering from Space Sleep Disorder. [t_He] may wake up soon.\n" - if(!get_int_organ(/obj/item/organ/internal/brain)) - msg += "It appears that [t_his] brain is missing...\n" + if(digitalcamo) + msg += "[t_He] [t_is] moving [t_his] body in an unnatural and blatantly inhuman manner.\n" - var/list/wound_flavor_text = list() - var/list/is_destroyed = list() - var/list/is_bleeding = list() - for(var/organ_tag in species.has_limbs) - - var/list/organ_data = species.has_limbs[organ_tag] - var/organ_descriptor = organ_data["descriptor"] - is_destroyed["[organ_data["descriptor"]]"] = 1 - - var/obj/item/organ/external/E = bodyparts_by_name[organ_tag] - if(!E) - wound_flavor_text["[organ_tag]"] = "[t_He] [t_is] missing [t_his] [organ_descriptor].\n" - else if(E.is_stump()) - wound_flavor_text["[organ_tag]"] = "[t_He] [t_has] a stump where [t_his] [organ_descriptor] should be.\n" - else - continue - - for(var/obj/item/organ/external/temp in bodyparts) - if(temp && !temp.is_stump()) - if(temp.status & ORGAN_ROBOT) - if(!(temp.brute_dam + temp.burn_dam)) - if(!isSynthetic()) - wound_flavor_text["[temp.limb_name]"] = "[t_He] [t_has] a robotic [temp.name]!\n" - continue - else - wound_flavor_text["[temp.limb_name]"] = "[t_He] [t_has] a robotic [temp.name]. It has" - if(temp.brute_dam) switch(temp.brute_dam) - if(0 to 20) - wound_flavor_text["[temp.limb_name]"] += " some dents" - if(21 to INFINITY) - wound_flavor_text["[temp.limb_name]"] += pick(" a lot of dents"," severe denting") - if(temp.brute_dam && temp.burn_dam) - wound_flavor_text["[temp.limb_name]"] += " and" - if(temp.burn_dam) switch(temp.burn_dam) - if(0 to 20) - wound_flavor_text["[temp.limb_name]"] += " some burns" - if(21 to INFINITY) - wound_flavor_text["[temp.limb_name]"] += pick(" a lot of burns"," severe melting") - if(wound_flavor_text["[temp.limb_name]"]) - wound_flavor_text["[temp.limb_name]"] += "!\n" - else if(temp.wounds.len > 0) - var/list/wound_descriptors = list() - for(var/datum/wound/W in temp.wounds) - if(W.internal && !temp.open) continue // can't see internal wounds - var/this_wound_desc = W.desc - if(W.damage_type == BURN && W.salved) this_wound_desc = "salved [this_wound_desc]" - if(W.bleeding()) this_wound_desc = "bleeding [this_wound_desc]" - else if(W.bandaged) this_wound_desc = "bandaged [this_wound_desc]" - if(W.germ_level > 600) this_wound_desc = "badly infected [this_wound_desc]" - else if(W.germ_level > 330) this_wound_desc = "lightly infected [this_wound_desc]" - if(this_wound_desc in wound_descriptors) - wound_descriptors[this_wound_desc] += W.amount - continue - wound_descriptors[this_wound_desc] = W.amount - if(wound_descriptors.len) - var/list/flavor_text = list() - var/list/no_exclude = list("gaping wound", "big gaping wound", "massive wound", "large bruise",\ - "huge bruise", "massive bruise", "severe burn", "large burn", "deep burn", "carbonised area") - for(var/wound in wound_descriptors) - switch(wound_descriptors[wound]) - if(1) - if(!flavor_text.len) - flavor_text += "[t_He] [t_has][prob(10) && !(wound in no_exclude) ? " what might be" : ""] a [wound]" - else - flavor_text += "[prob(10) && !(wound in no_exclude) ? " what might be" : ""] a [wound]" - if(2) - if(!flavor_text.len) - flavor_text += "[t_He] [t_has][prob(10) && !(wound in no_exclude) ? " what might be" : ""] a pair of [wound]s" - else - flavor_text += "[prob(10) && !(wound in no_exclude) ? " what might be" : ""] a pair of [wound]s" - if(3 to 5) - if(!flavor_text.len) - flavor_text += "[t_He] [t_has] several [wound]s" - else - flavor_text += " several [wound]s" - if(6 to INFINITY) - if(!flavor_text.len) - flavor_text += "[t_He] [t_has] a bunch of [wound]s" - else - flavor_text += " a ton of [wound]\s" - var/flavor_text_string = "" - for(var/text = 1, text <= flavor_text.len, text++) - if(text == flavor_text.len && flavor_text.len > 1) - flavor_text_string += ", and" - else if(flavor_text.len > 1 && text > 1) - flavor_text_string += "," - flavor_text_string += flavor_text[text] - flavor_text_string += " on [t_his] [temp.name].
    " - wound_flavor_text["[temp.limb_name]"] = flavor_text_string - else - wound_flavor_text["[temp.limb_name]"] = "" - if(temp.status & ORGAN_BLEEDING) - is_bleeding["[temp.limb_name]"] = 1 - else - wound_flavor_text["[temp.limb_name]"] = "" - - //Handles the text strings being added to the actual description. - //If they have something that covers the limb, and it is not missing, put flavortext. If it is covered but bleeding, add other flavortext. - var/display_chest = 0 - var/display_shoes = 0 - var/display_gloves = 0 - if(wound_flavor_text["head"] && (is_destroyed["head"] || (!skipmask && !(wear_mask && istype(wear_mask, /obj/item/clothing/mask/gas))))) - msg += wound_flavor_text["head"] - else if(is_bleeding["head"]) - msg += "[src] has blood running down [t_his] face!\n" - if(wound_flavor_text["chest"] && !w_uniform && !skipjumpsuit) //No need. A missing chest gibs you. - msg += wound_flavor_text["chest"] - else if(is_bleeding["chest"]) - display_chest = 1 - if(wound_flavor_text["l_arm"] && (is_destroyed["left arm"] || (!w_uniform && !skipjumpsuit))) - msg += wound_flavor_text["l_arm"] - else if(is_bleeding["l_arm"]) - display_chest = 1 - if(wound_flavor_text["l_hand"] && (is_destroyed["left hand"] || (!gloves && !skipgloves))) - msg += wound_flavor_text["l_hand"] - else if(is_bleeding["l_hand"]) - display_gloves = 1 - if(wound_flavor_text["r_arm"] && (is_destroyed["right arm"] || (!w_uniform && !skipjumpsuit))) - msg += wound_flavor_text["r_arm"] - else if(is_bleeding["r_arm"]) - display_chest = 1 - if(wound_flavor_text["r_hand"] && (is_destroyed["right hand"] || (!gloves && !skipgloves))) - msg += wound_flavor_text["r_hand"] - else if(is_bleeding["r_hand"]) - display_gloves = 1 - if(wound_flavor_text["groin"] && (is_destroyed["groin"] || (!w_uniform && !skipjumpsuit))) - msg += wound_flavor_text["groin"] - else if(is_bleeding["groin"]) - display_chest = 1 - if(wound_flavor_text["l_leg"] && (is_destroyed["left leg"] || (!w_uniform && !skipjumpsuit))) - msg += wound_flavor_text["l_leg"] - else if(is_bleeding["l_leg"]) - display_chest = 1 - if(wound_flavor_text["l_foot"]&& (is_destroyed["left foot"] || (!shoes && !skipshoes))) - msg += wound_flavor_text["l_foot"] - else if(is_bleeding["l_foot"]) - display_shoes = 1 - if(wound_flavor_text["r_leg"] && (is_destroyed["right leg"] || (!w_uniform && !skipjumpsuit))) - msg += wound_flavor_text["r_leg"] - else if(is_bleeding["r_leg"]) - display_chest = 1 - if(wound_flavor_text["r_foot"]&& (is_destroyed["right foot"] || (!shoes && !skipshoes))) - msg += wound_flavor_text["r_foot"] - else if(is_bleeding["r_foot"]) - display_shoes = 1 - if(display_chest) - msg += "[src] has blood soaking through from under [t_his] clothing!\n" - if(display_shoes) - msg += "[src] has blood running from [t_his] shoes!\n" - if(display_gloves) - msg += "[src] has blood running from under [t_his] gloves!\n" - - - for(var/implant in get_visible_implants(0)) - msg += "[src] has \a [implant] sticking out of [t_his] flesh!\n" - if(digitalcamo) - msg += "[t_He] [t_is] repulsively uncanny!\n" if(!(skipface || ( wear_mask && ( wear_mask.flags_inv & HIDEFACE || wear_mask.flags_cover & MASKCOVERSMOUTH) ) ) && is_thrall(src) && in_range(user,src)) msg += "Their features seem unnaturally tight and drawn.\n" + if(decaylevel == 1) msg += "[t_He] [t_is] starting to smell.\n" if(decaylevel == 2) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 6247613db82..4ed0e47da47 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -8,7 +8,6 @@ //why are these here and not in human_defines.dm //var/list/hud_list[10] var/datum/species/species //Contains icon generation and language information, set during New(). - var/embedded_flag //To check if we've need to roll for damage on movement while an item is imbedded in us. var/obj/item/weapon/rig/wearing_rig // This is very not good, but it's much much better than calling get_rig() every update_canmove() call. /mob/living/carbon/human/New(var/new_loc, var/new_species = null, var/delay_ready_dna = 0) @@ -33,9 +32,6 @@ create_reagents(330) - prev_gender = gender // Debug for plural genders - make_blood() - martial_art = default_martial_art handcrafting = new() @@ -227,7 +223,7 @@ while(limbs_affected != 0 && valid_limbs.len > 0) processing_dismember = pick(valid_limbs) if(processing_dismember.limb_name != "chest" && processing_dismember.limb_name != "head" && processing_dismember.limb_name != "groin") - processing_dismember.droplimb(1,DROPLIMB_EDGE,0,1) + processing_dismember.droplimb(1,DROPLIMB_SHARP,0,1) valid_limbs -= processing_dismember limbs_affected -= 1 else valid_limbs -= processing_dismember @@ -253,7 +249,7 @@ while(limbs_affected != 0 && valid_limbs.len > 0) processing_dismember = pick(valid_limbs) if(processing_dismember.limb_name != "chest" && processing_dismember.limb_name != "head" && processing_dismember.limb_name != "groin") - processing_dismember.droplimb(1,DROPLIMB_EDGE,0,1) + processing_dismember.droplimb(1,DROPLIMB_SHARP,0,1) valid_limbs -= processing_dismember limbs_affected -= 1 else valid_limbs -= processing_dismember @@ -278,7 +274,7 @@ while(limbs_affected != 0 && valid_limbs.len > 0) processing_dismember = pick(valid_limbs) if(processing_dismember.limb_name != "chest" && processing_dismember.limb_name != "head" && processing_dismember.limb_name != "groin") - processing_dismember.droplimb(1,DROPLIMB_EDGE,0,1) + processing_dismember.droplimb(1,DROPLIMB_SHARP,0,1) valid_limbs -= processing_dismember limbs_affected -= 1 else valid_limbs -= processing_dismember @@ -429,7 +425,7 @@ /mob/living/carbon/human/show_inv(mob/user) user.set_machine(src) - var/has_breathable_mask = istype(wear_mask, /obj/item/clothing/mask) + var/has_breathable_mask = istype(wear_mask, /obj/item/clothing/mask) || get_organ_slot("breathing_tube") var/list/obscured = check_obscured_slots() var/dat = {" @@ -541,12 +537,10 @@ popup.open() -// called when something steps onto a human -// this handles mulebots and vehicles -/mob/living/carbon/human/Crossed(var/atom/movable/AM) - if(istype(AM, /obj/vehicle)) - var/obj/vehicle/V = AM - V.RunOver(src) +/mob/living/carbon/human/Crossed(atom/movable/AM) + var/mob/living/simple_animal/bot/mulebot/MB = AM + if(istype(MB)) + MB.RunOver(src) // Get rank from ID, ID inside PDA, PDA, ID in wallet, etc. /mob/living/carbon/human/proc/get_authentification_rank(var/if_no_id = "No id", var/if_no_job = "No job") @@ -598,7 +592,7 @@ return //repurposed proc. Now it combines get_id_name() and get_face_name() to determine a mob's name variable. Made into a seperate proc as it'll be useful elsewhere -/mob/living/carbon/human/get_visible_name() +/mob/living/carbon/human/get_visible_name(var/id_override = FALSE) if(name_override) return name_override if(wear_mask && (wear_mask.flags_inv & HIDEFACE)) //Wearing a mask which hides our face, use id-name if possible @@ -607,14 +601,14 @@ return get_id_name("Unknown") //Likewise for hats var/face_name = get_face_name() var/id_name = get_id_name("") - if(id_name && (id_name != face_name)) + if(id_name && (id_name != face_name) && !id_override) return "[face_name] (as [id_name])" return face_name //Returns "Unknown" if facially disfigured and real_name if not. Useful for setting name when polyacided or when updating a human's name variable /mob/living/carbon/human/proc/get_face_name() var/obj/item/organ/external/head = get_organ("head") - if( !head || head.disfigured || (head.status & ORGAN_DESTROYED) || !real_name || (HUSK in mutations) ) //disfigured. use id-name if possible + if( !head || head.disfigured || !real_name || (HUSK in mutations) ) //disfigured. use id-name if possible return "Unknown" return real_name @@ -701,6 +695,28 @@ if(G && G.pickpocket) thief_mode = 1 + if(href_list["embedded_object"]) + var/obj/item/organ/external/L = locate(href_list["embedded_limb"]) in bodyparts + if(!L) + return + var/obj/item/I = locate(href_list["embedded_object"]) in L.embedded_objects + if(!I || I.loc != src) //no item, no limb, or item is not in limb or in the person anymore + return + var/time_taken = I.embedded_unsafe_removal_time*I.w_class + usr.visible_message("[usr] attempts to remove [I] from their [L.name].","You attempt to remove [I] from your [L.name]... (It will take [time_taken/10] seconds.)") + if(do_after(usr, time_taken, needhand = 1, target = src)) + if(!I || !L || I.loc != src || !(I in L.embedded_objects)) + return + L.embedded_objects -= I + L.take_damage(I.embedded_unsafe_removal_pain_multiplier*I.w_class)//It hurts to rip it out, get surgery you dingus. + I.forceMove(get_turf(src)) + usr.put_in_hands(I) + usr.emote("scream") + usr.visible_message("[usr] successfully rips [I] out of their [L.name]!","You successfully remove [I] from your [L.name].") + if(!has_embedded_objects()) + clear_alert("embeddedobject") + return + if(href_list["item"]) var/slot = text2num(href_list["item"]) if(slot in check_obscured_slots()) @@ -1191,18 +1207,10 @@ for(var/obj/item/organ/internal/I in H.internal_organs) types_of_int_organs |= I.type //Compiling the list of organ types. It is possible for organs to be missing from this list if they are absent from the mob. - //Removing stumps. - for(var/obj/item/organ/organ in H.contents) - if(istype(organ, /obj/item/organ/external/stump)) //Get rid of all stumps. - qdel(organ) - H.contents -= organ //Making sure the list entry is removed. - for(var/obj/item/organ/organ in H.bodyparts) - if(istype(organ, /obj/item/organ/external/stump)) - qdel(organ) - H.bodyparts -= organ //Making sure the list entry is removed. + //Clean up limbs for(var/organ_name in H.bodyparts_by_name) var/obj/item/organ/organ = H.bodyparts_by_name[organ_name] - if(istype(organ, /obj/item/organ/external/stump) || !organ) //The !organ check is to account for mechanical limb (prostheses) losses, since those are handled in a way that leaves indexed but null list entries instead of stumps. + if(!organ) //The !organ check is to account for mechanical limb (prostheses) losses, since those are handled in a way that leaves indexed but null list entries instead of stumps. qdel(organ) H.bodyparts_by_name -= organ_name //Making sure the list entry is removed. @@ -1235,12 +1243,6 @@ I.insert(H) /mob/living/carbon/human/revive() - - if(species && !(species.flags & NO_BLOOD)) - var/blood_reagent = get_blood_name() - vessel.add_reagent(blood_reagent, max_blood-vessel.total_volume) - fixblood() - //Fix up all organs and replace lost ones. restore_all_organs() //Rejuvenate and reset all existing organs. check_and_regenerate_organs(src) //Regenerate limbs and organs only if they're really missing. @@ -1312,23 +1314,13 @@ */ //returns 1 if made bloody, returns 0 otherwise -/mob/living/carbon/human/add_blood(mob/living/carbon/human/M as mob) - if(!..()) - return 0 - //if this blood isn't already in the list, add it - if(blood_DNA[M.dna.unique_enzymes]) - return 0 //already bloodied with this blood. Cannot add more. - blood_DNA[M.dna.unique_enzymes] = M.dna.b_type - hand_blood_color = blood_color - src.update_inv_gloves() - verbs += /mob/living/carbon/human/proc/bloody_doodle - return 1 //we applied blood to the item - /mob/living/carbon/human/clean_blood(var/clean_feet) .=..() if(clean_feet && !shoes && istype(feet_blood_DNA, /list) && feet_blood_DNA.len) feet_blood_color = null qdel(feet_blood_DNA) + bloody_feet = list(BLOOD_STATE_HUMAN = 0, BLOOD_STATE_XENO = 0, BLOOD_STATE_NOT_BLOODY = 0) + blood_state = BLOOD_STATE_NOT_BLOODY update_inv_shoes(1) return 1 @@ -1349,16 +1341,6 @@ else ..() -/mob/living/carbon/human/get_visible_implants(var/class = 0) - - var/list/visible_implants = list() - for(var/obj/item/organ/external/organ in bodyparts) - for(var/obj/item/weapon/O in organ.implants) - if(!istype(O,/obj/item/weapon/implant) && (O.w_class > class) && !istype(O,/obj/item/weapon/shard/shrapnel)) - visible_implants += O - - return(visible_implants) - /mob/living/carbon/human/generate_name() name = species.makeName(gender,src) real_name = name @@ -1366,29 +1348,6 @@ dna.real_name = name return name -/mob/living/carbon/human/proc/handle_embedded_objects() - - for(var/obj/item/organ/external/organ in bodyparts) - if(organ.status & ORGAN_SPLINTED) //Splints prevent movement. - continue - for(var/obj/item/weapon/O in organ.implants) - if(!istype(O,/obj/item/weapon/implant) && prob(5)) //Moving with things stuck in you could be bad. - // All kinds of embedded objects cause bleeding. - var/msg = null - switch(rand(1,3)) - if(1) - msg ="A spike of pain jolts your [organ.name] as you bump [O] inside." - if(2) - msg ="Your movement jostles [O] in your [organ.name] painfully." - if(3) - msg ="[O] in your [organ.name] twists painfully as you move." - to_chat(src, msg) - - organ.take_damage(rand(1,3), 0, 0) - if(!(organ.status & ORGAN_ROBOT)) //There is no blood in protheses. - organ.status |= ORGAN_BLEEDING - src.adjustToxLoss(rand(1,3)) - /mob/living/carbon/human/verb/check_pulse() set category = null set name = "Check pulse" @@ -1456,10 +1415,6 @@ tail = species.tail - if(vessel) - vessel = null - make_blood() - maxHealth = species.total_health toxins_alert = 0 @@ -1556,7 +1511,6 @@ overlays.Cut() update_mutantrace(1) regenerate_icons() - fixblood() if(!delay_icon_update) UpdateAppearance() @@ -1635,11 +1589,11 @@ return var/obj/item/organ/external/head/head_organ = get_organ("head") - if(!head_organ || head_organ.is_stump() || (head_organ.status & ORGAN_DESTROYED)) //If the rock'em-sock'em robot's head came off during a fight, they shouldn't be able to change their screen/optics. + if(!head_organ) //If the rock'em-sock'em robot's head came off during a fight, they shouldn't be able to change their screen/optics. to_chat(src, "Where's your head at? Can't change your monitor/display without one.") return - if(species.flags & ALL_RPARTS) //If they can have a fully cybernetic body... + if(species.bodyflags & ALL_RPARTS) //If they can have a fully cybernetic body... var/datum/robolimb/robohead = all_robolimbs[head_organ.model] if(!head_organ) return @@ -1973,7 +1927,7 @@ . |= A.GetAccess() /mob/living/carbon/human/is_mechanical() - return ..() || (species.flags & ALL_RPARTS) != 0 + return ..() || (species.bodyflags & ALL_RPARTS) != 0 /mob/living/carbon/human/can_use_guns(var/obj/item/weapon/gun/G) . = ..() @@ -1982,7 +1936,7 @@ if(HULK in mutations) to_chat(src, "Your meaty finger is much too large for the trigger guard!") return 0 - if(species.flags & NOGUNS) + if(NOGUNS in species.species_traits) to_chat(src, "Your fingers don't fit in the trigger guard!") return 0 @@ -2095,3 +2049,9 @@ update_icons() ..() + +mob/living/carbon/human/get_taste_sensitivity() + if(species) + return species.taste_sensitivity + else + return 1 diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 59c8f3efa63..28c81b026b9 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -109,16 +109,16 @@ if(INTENT_HARM) //Vampire code if(M.mind && M.mind.vampire && (M.mind in ticker.mode.vampires) && !M.mind.vampire.draining && M.zone_sel && M.zone_sel.selecting == "head" && src != M) - if(species && species.flags & NO_BLOOD)//why this hell were we never checkinf for this? + if((NO_BLOOD in species.species_traits) || species.exotic_blood || !blood_volume) to_chat(M, "They have no blood!") return if(mind && mind.vampire && (mind in ticker.mode.vampires)) - to_chat(M, "Your fangs fail to pierce [src.name]'s cold flesh") + to_chat(M, "Your fangs fail to pierce [name]'s cold flesh") return if(SKELETON in mutations) to_chat(M, "There is no blood in a skeleton!") return - if(issmall(src) && !ckey) //Monkeyized humans are okay, humanized monkeys are okey, monkeys are not. + if(issmall(src) && !ckey) //Monkeyized humans are okay, humanized monkeys are okay, NPC monkeys are not. to_chat(M, "Blood from a monkey is useless!") return //we're good to suck the blood, blaah @@ -158,7 +158,7 @@ visible_message("[M] [pick(attack.attack_verb)]ed [src]!") - apply_damage(damage, BRUTE, affecting, armor_block, sharp=attack.sharp, edge=attack.edge) //moving this back here means Armalis are going to knock you down 70% of the time, but they're pure adminbus anyway. + apply_damage(damage, BRUTE, affecting, armor_block, sharp = attack.sharp) //moving this back here means Armalis are going to knock you down 70% of the time, but they're pure adminbus anyway. if((stat != DEAD) && damage >= M.species.punchstunthreshold) visible_message("[M] has weakened [src]!", \ "[M] has weakened [src]!") diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 04c8ffc9f57..9a96ec72c28 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -112,7 +112,7 @@ var/obj/item/organ/external/O = get_organ(organ_name) if(amount > 0) - O.take_damage(amount, 0, sharp=is_sharp(damage_source), edge=has_edge(damage_source), used_weapon=damage_source) + O.take_damage(amount, 0, sharp=is_sharp(damage_source), used_weapon=damage_source) else //if you don't want to heal robot organs, they you will have to check that yourself before using this proc. O.heal_damage(-amount, 0, internal=0, robo_repair=(O.status & ORGAN_ROBOT)) @@ -126,7 +126,7 @@ var/obj/item/organ/external/O = get_organ(organ_name) if(amount > 0) - O.take_damage(0, amount, sharp=is_sharp(damage_source), edge=has_edge(damage_source), used_weapon=damage_source) + O.take_damage(0, amount, sharp=is_sharp(damage_source), used_weapon=damage_source) else //if you don't want to heal robot organs, they you will have to check that yourself before using this proc. O.heal_damage(0, -amount, internal=0, robo_repair=(O.status & ORGAN_ROBOT)) @@ -240,7 +240,7 @@ if(!parts.len) return var/obj/item/organ/external/picked = pick(parts) - if(picked.take_damage(brute,burn,sharp,edge)) + if(picked.take_damage(brute, burn, sharp)) UpdateDamageIcon() updatehealth() speech_problem_flag = 1 @@ -285,7 +285,7 @@ var/burn_was = picked.burn_dam - update |= picked.take_damage(brute_per_part,burn_per_part,sharp,edge,used_weapon) + update |= picked.take_damage(brute_per_part, burn_per_part, sharp, used_weapon) brute -= (picked.brute_dam - brute_was) burn -= (picked.burn_dam - burn_was) @@ -300,15 +300,6 @@ //////////////////////////////////////////// -/* -This function restores the subjects blood to max. -*/ -/mob/living/carbon/human/proc/restore_blood() - if(!(species.flags & NO_BLOOD)) - var/blood_type = get_blood_name() - var/blood_volume = vessel.get_reagent_amount(blood_type) - vessel.add_reagent(blood_type, BLOOD_VOLUME_NORMAL - blood_volume) - /* This function restores all organs. */ @@ -333,7 +324,7 @@ This function restores all organs. return bodyparts_by_name[zone] -/mob/living/carbon/human/apply_damage(damage = 0, damagetype = BRUTE, def_zone = null, blocked = 0, sharp = 0, edge = 0, obj/used_weapon = null) +/mob/living/carbon/human/apply_damage(damage = 0, damagetype = BRUTE, def_zone = null, blocked = 0, sharp = 0, obj/used_weapon = null) //Handle other types of damage if((damagetype != BRUTE) && (damagetype != BURN)) ..(damage, damagetype, def_zone, blocked) @@ -364,7 +355,7 @@ This function restores all organs. if(species) damage = damage * species.brute_mod - if(organ.take_damage(damage, 0, sharp, edge, used_weapon)) + if(organ.take_damage(damage, 0, sharp, used_weapon)) UpdateDamageIcon() if(LAssailant && ishuman(LAssailant)) //superheros still get the comical hit markers @@ -389,7 +380,7 @@ This function restores all organs. if(species) damage = damage * species.burn_mod - if(organ.take_damage(0, damage, sharp, edge, used_weapon)) + if(organ.take_damage(0, damage, sharp, used_weapon)) UpdateDamageIcon() // Will set our damageoverlay icon to the next level, which will then be set back to the normal level the next mob.Life(). diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index bbe57fa66f9..9783673bc33 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -8,9 +8,10 @@ emp_act */ -/mob/living/carbon/human/bullet_act(var/obj/item/projectile/P, var/def_zone) - if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)) +/mob/living/carbon/human/bullet_act(obj/item/projectile/P, def_zone) + + if(P.is_reflectable) if(check_reflect(def_zone)) // Checks if you've passed a reflection% check visible_message("The [P.name] gets reflected by [src]!", \ "The [P.name] gets reflected by [src]!") @@ -41,19 +42,6 @@ emp_act . = bullet_act(P, "chest") //act on chest instead return - //Shrapnel - if(P.damage_type == BRUTE) - var/armor = getarmor_organ(organ, "bullet") - if((P.embed && prob(20 + max(P.damage - armor, -10)))) - var/obj/item/weapon/shard/shrapnel/SP = new() - (SP.name) = "[P.name] shrapnel" - if(P.ammo_casing && P.ammo_casing.caliber) - (SP.desc) = "[SP.desc] It looks like it is a [P.ammo_casing.caliber] caliber round." - else - (SP.desc) = "[SP.desc] The round's caliber is unidentifiable." - (SP.loc) = organ - organ.embed(SP) - organ.add_autopsy_data(P.name, P.damage) // Add the bullet's name to the autopsy data return (..(P , def_zone)) @@ -61,7 +49,7 @@ emp_act /mob/living/carbon/human/check_projectile_dismemberment(obj/item/projectile/P, def_zone) var/obj/item/organ/external/affecting = get_organ(check_zone(def_zone)) if(affecting && !affecting.cannot_amputate && affecting.get_damage() >= (affecting.max_damage - P.dismemberment)) - var/damtype = DROPLIMB_EDGE + var/damtype = DROPLIMB_SHARP switch(P.damage_type) if(BRUTE) damtype = DROPLIMB_BLUNT @@ -198,7 +186,7 @@ emp_act newmeat.subjectjob = src.job newmeat.reagents.add_reagent ("nutriment", (src.nutrition / 15) / 3) src.reagents.trans_to (newmeat, round ((src.reagents.total_volume) / 3, 1)) - src.loc.add_blood(src) + add_mob_blood(src) --src.meatleft to_chat(user, "You hack off a chunk of meat from [src.name]") if(!src.meatleft) @@ -213,10 +201,10 @@ emp_act qdel(src) var/obj/item/organ/external/affecting = get_organ(ran_zone(user.zone_sel.selecting)) - if(!affecting || affecting.is_stump() || (affecting.status & ORGAN_DESTROYED)) + if(!affecting) to_chat(user, "They are missing that limb!") return 1 - var/hit_area = affecting.name + var/hit_area = parse_zone(affecting.limb_name) if(user != src) user.do_attack_animation(src) @@ -234,32 +222,29 @@ emp_act var/armor = run_armor_check(affecting, "melee", "Your armor has protected your [hit_area].", "Your armor has softened hit to your [hit_area].", armour_penetration = I.armour_penetration) var/weapon_sharp = is_sharp(I) - var/weapon_edge = has_edge(I) - if((weapon_sharp || weapon_edge) && prob(getarmor(user.zone_sel.selecting, "melee"))) + if(weapon_sharp && prob(getarmor(user.zone_sel.selecting, "melee"))) weapon_sharp = 0 - weapon_edge = 0 if(armor >= 100) return 0 if(!I.force) return 0 var/Iforce = I.force //to avoid runtimes on the forcesay checks at the bottom. Some items might delete themselves if you drop them. (stunning yourself, ninja swords) - apply_damage(I.force, I.damtype, affecting, armor, sharp=weapon_sharp, edge=weapon_edge, used_weapon=I) + apply_damage(I.force, I.damtype, affecting, armor, sharp = weapon_sharp, used_weapon = I) var/bloody = 0 if(I.damtype == BRUTE && I.force && prob(25 + I.force * 2)) - I.add_blood(src) //Make the weapon bloody, not the person. + I.add_mob_blood(src) //Make the weapon bloody, not the person. // if(user.hand) user.update_inv_l_hand() //updates the attacker's overlay for the (now bloodied) weapon // else user.update_inv_r_hand() //removed because weapons don't have on-mob blood overlays - if(prob(33)) + if(prob(I.force * 2)) //blood spatter! bloody = 1 var/turf/location = loc if(istype(location, /turf/simulated)) - location.add_blood(src) + add_splatter_floor(location) if(ishuman(user)) var/mob/living/carbon/human/H = user if(get_dist(H, src) <= 1) //people with TK won't get smeared with blood - H.bloody_body(src) - H.bloody_hands(src) + H.add_mob_blood(src) if(!stat) switch(hit_area) @@ -275,43 +260,35 @@ emp_act if(bloody)//Apply blood if(wear_mask) - wear_mask.add_blood(src) + wear_mask.add_mob_blood(src) update_inv_wear_mask(0) if(head) - head.add_blood(src) + head.add_mob_blood(src) update_inv_head(0,0) if(glasses && prob(33)) - glasses.add_blood(src) + glasses.add_mob_blood(src) update_inv_glasses(0) - if("upper body")//Easier to score a stun but lasts less time + + if("chest")//Easier to score a stun but lasts less time if(stat == CONSCIOUS && I.force && prob(I.force + 10)) visible_message("[src] has been knocked down!", \ "[src] has been knocked down!") apply_effect(5, WEAKEN, armor) if(bloody) - bloody_body(src) + if(wear_suit) + wear_suit.add_mob_blood(src) + update_inv_wear_suit(1) + if(w_uniform) + w_uniform.add_mob_blood(src) + update_inv_w_uniform(1) + if(Iforce > 10 || Iforce >= 5 && prob(33)) forcesay(hit_appends) //forcesay checks stat already -/* //Melee weapon embedded object code. Commented out, as most people on the forums seem to find this annoying and think it does not contribute to general gameplay. - Dave - if(I.damtype == BRUTE && !I.is_robot_module()) - var/damage = I.force - if(armor) - damage /= armor+1 - - //blunt objects should really not be embedding in things unless a huge amount of force is involved - var/embed_chance = weapon_sharp? damage/I.w_class : damage/(I.w_class*3) - var/embed_threshold = weapon_sharp? 5*I.w_class : 15*I.w_class - - //Sharp objects will always embed if they do enough damage. - if(((weapon_sharp && damage > (10*I.w_class)) || (damage > embed_threshold && prob(embed_chance))) && (I.no_embed == 0) ) - affecting.embed(I) - return 1*/ - //this proc handles being hit by a thrown atom /mob/living/carbon/human/hitby(atom/movable/AM, skipcatch = 0, hitpush = 1, blocked = 0) var/obj/item/I @@ -325,45 +302,38 @@ emp_act hitpush = 0 skipcatch = 1 blocked = 1 - /*else if(I) + else if(I) if(I.throw_speed >= EMBED_THROWSPEED_THRESHOLD) - if(!I.is_robot_module()) - var/armor = run_armor_check(affecting, "melee", "Your armor has protected your [hit_area].", "Your armor has softened hit to your [hit_area].", I.armour_penetration) //I guess "melee" is the best fit here - var/sharp = is_sharp(I) - var/damage = throwpower * (I.throw_speed / 5) - if(armor) - damage /= armor + 1 - - //blunt objects should really not be embedding in things unless a huge amount of force is involved - var/embed_chance = sharp? damage / I.w_class : damage/(I.w_class * 3) - var/embed_threshold = sharp? 5 * I.w_class : 15 * I.w_class - - //Sharp objects will always embed if they do enough damage. - //Thrown sharp objects have some momentum already and have a small chance to embed even if the damage is below the threshold - - if(((sharp && prob(damage / (10 * I.w_class) * 100)) || (damage > embed_threshold && prob(embed_chance))) && (I.no_embed == 0)) - affecting.embed(I)*/ + if(can_embed(I)) + if(prob(I.embed_chance)) + throw_alert("embeddedobject", /obj/screen/alert/embeddedobject) + var/obj/item/organ/external/L = pick(bodyparts) + L.embedded_objects |= I + I.add_mob_blood(src)//it embedded itself in you, of course it's bloody! + I.forceMove(src) + L.take_damage(I.w_class*I.embedded_impact_pain_multiplier) + visible_message("[I] embeds itself in [src]'s [L.name]!","[I] embeds itself in your [L.name]!") + hitpush = 0 + skipcatch = 1 //can't catch the now embedded item return ..() /mob/living/carbon/human/proc/bloody_hands(var/mob/living/source, var/amount = 2) if(gloves) - gloves.add_blood(source) + gloves.add_mob_blood(source) gloves:transfer_blood = amount - gloves:bloody_hands_mob = source else - add_blood(source) + add_mob_blood(source) bloody_hands = amount - bloody_hands_mob = source update_inv_gloves(1) //updates on-mob overlays for bloody hands and/or bloody gloves /mob/living/carbon/human/proc/bloody_body(var/mob/living/source) if(wear_suit) - wear_suit.add_blood(source) + wear_suit.add_mob_blood(source) update_inv_wear_suit(0) return if(w_uniform) - w_uniform.add_blood(source) + w_uniform.add_mob_blood(source) update_inv_w_uniform(1) /mob/living/carbon/human/proc/handle_suit_punctures(var/damtype, var/damage) @@ -421,5 +391,12 @@ emp_act /mob/living/carbon/human/water_act(volume, temperature, source) ..() - if(temperature >= 330) bodytemperature = bodytemperature + (temperature - bodytemperature) - if(temperature <= 280) bodytemperature = bodytemperature - (bodytemperature - temperature) + species.water_act(src,volume,temperature,source) + +/mob/living/carbon/human/is_eyes_covered(check_glasses = TRUE, check_head = TRUE, check_mask = TRUE) + if(check_glasses && glasses && (glasses.flags_cover & GLASSESCOVERSEYES)) + return TRUE + if(check_head && head && (head.flags_cover & HEADCOVERSEYES)) + return TRUE + if(check_mask && wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH)) + return TRUE \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 5ea1c9baeb0..ac7153e160a 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -52,9 +52,6 @@ var/global/default_martial_art = new/datum/martial_art var/special_voice = "" // For changing our voice. Used by a symptom. - var/last_dam = -1 //Used for determining if we need to process all organs or just some or even none. - var/list/bad_external_organs = list()// organs we check until they are good. - var/hand_blood_color var/name_override //For temporary visible name changes @@ -65,9 +62,13 @@ var/global/default_martial_art = new/datum/martial_art var/meatleft = 3 //For chef item var/decaylevel = 0 // For rotting bodies var/max_blood = BLOOD_VOLUME_NORMAL // For stuff in the vessel + var/bleed_rate = 0 + var/bleedsuppress = 0 //for stopping bloodloss var/check_mutations=0 // Check mutations on next life tick + var/heartbeat = 0 + var/fire_dmi = 'icons/mob/OnFire.dmi' var/fire_sprite = "Standing" diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 4c5c1fb2993..a3a1eb62e7e 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -39,12 +39,41 @@ if(!lying && !buckled && !throwing) for(var/obj/item/organ/external/splinted in splinted_limbs) splinted.update_splints() - if(!shoes) - return - if(!has_gravity(loc)) - return - var/obj/item/clothing/shoes/S = shoes - S.step_action(src) + + if(!has_gravity(loc)) + return + var/obj/item/clothing/shoes/S = shoes + + //Bloody footprints + var/turf/T = get_turf(src) + var/obj/item/organ/external/l_foot = get_organ("l_foot") + var/obj/item/organ/external/r_foot = get_organ("r_foot") + var/hasfeet = 1 + if(!l_foot && !r_foot) + hasfeet = 0 + + if(shoes) + if(S.bloody_shoes && S.bloody_shoes[S.blood_state]) + var/obj/effect/decal/cleanable/blood/footprints/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints) in T + if(oldFP && oldFP.blood_state == S.blood_state && oldFP.basecolor == S.blood_color) + return + else + //No oldFP or it's a different kind of blood + S.bloody_shoes[S.blood_state] = max(0, S.bloody_shoes[S.blood_state] - BLOOD_LOSS_PER_STEP) + createFootprintsFrom(shoes, dir, T) + update_inv_shoes() + else if(hasfeet) + if(bloody_feet && bloody_feet[blood_state]) + var/obj/effect/decal/cleanable/blood/footprints/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints) in T + if(oldFP && oldFP.blood_state == blood_state && oldFP.basecolor == feet_blood_color) + return + else + bloody_feet[blood_state] = max(0, bloody_feet[blood_state] - BLOOD_LOSS_PER_STEP) + createFootprintsFrom(src, dir, T) + update_inv_shoes() + //End bloody footprints + if(S) + S.step_action(src) /mob/living/carbon/human/handle_footstep(turf/T) if(..()) diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index bec84778c73..157e95da32d 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -9,52 +9,24 @@ // Takes care of organ related updates, such as broken and missing limbs /mob/living/carbon/human/proc/handle_organs() - - number_wounds = 0 - var/force_process = 0 - var/damage_this_tick = getBruteLoss() + getFireLoss() + getToxLoss() - if(damage_this_tick > last_dam) - force_process = 1 - last_dam = damage_this_tick - if(force_process) - bad_external_organs.Cut() - for(var/obj/item/organ/external/Ex in bodyparts) - bad_external_organs |= Ex - //processing internal organs is pretty cheap, do that first. for(var/obj/item/organ/internal/I in internal_organs) I.process() + for(var/obj/item/organ/external/E in bodyparts) + E.process() + + if(!lying && world.time - l_move_time < 15) + //Moving around with fractured ribs won't do you any good + if(E.is_broken() && E.internal_organs && E.internal_organs.len && prob(15)) + var/obj/item/organ/internal/I = pick(E.internal_organs) + custom_pain("You feel broken bones moving in your [E.name]!", 1) + I.take_damage(rand(3,5)) + //handle_stance() handle_grasp() handle_stance() - if(!force_process && !bad_external_organs.len) - return - - for(var/obj/item/organ/external/E in bad_external_organs) - if(!E) - continue - if(!E.need_process()) - bad_external_organs -= E - continue - else - E.process() - number_wounds += E.number_wounds - - if(!lying && world.time - l_move_time < 15) - //Moving around with fractured ribs won't do you any good - if(E.is_broken() && E.internal_organs && E.internal_organs.len && prob(15)) - var/obj/item/organ/internal/I = pick(E.internal_organs) - custom_pain("You feel broken bones moving in your [E.name]!", 1) - I.take_damage(rand(3,5)) - - //Moving makes open wounds get infected much faster - if(E.wounds.len) - for(var/datum/wound/W in E.wounds) - if(W.infection_check()) - W.germ_level += 1 - /mob/living/carbon/human/proc/handle_stance() // Don't need to process any of this if they aren't standing anyways @@ -71,7 +43,7 @@ for(var/limb_tag in list("l_leg","r_leg","l_foot","r_foot")) var/obj/item/organ/external/E = bodyparts_by_name[limb_tag] - if(!E || (E.status & (ORGAN_DESTROYED|ORGAN_DEAD)) || E.is_malfunctioning()) + if(!E || (E.status & ORGAN_DEAD) || E.is_malfunctioning()) stance_damage += 2 // let it fail even if just foot&leg. Also malfunctioning happens sporadically so it should impact more when it procs else if(E.is_broken() || !E.is_usable()) stance_damage += 1 @@ -90,7 +62,7 @@ // standing is poor if(stance_damage >= 8) if(!(lying || resting)) - if(species && !(species.flags & NO_PAIN)) + if(!(NO_PAIN in species.species_traits)) emote("scream") custom_emote(1, "collapses!") Weaken(5) //can't emote while weakened, apparently. @@ -118,7 +90,7 @@ continue var/emote_scream = pick("screams in pain and ", "lets out a sharp cry and ", "cries out and ") - custom_emote(1, "[(species.flags & NO_PAIN) ? "" : emote_scream ]drops what they were holding in their [E.name]!") + custom_emote(1, "[(NO_PAIN in species.species_traits) ? "" : emote_scream ]drops what they were holding in their [E.name]!") else if(E.is_malfunctioning()) diff --git a/code/modules/mob/living/carbon/human/interactive/interactive.dm b/code/modules/mob/living/carbon/human/interactive/interactive.dm index 00b8e0a4544..4efca3178cc 100644 --- a/code/modules/mob/living/carbon/human/interactive/interactive.dm +++ b/code/modules/mob/living/carbon/human/interactive/interactive.dm @@ -72,6 +72,8 @@ var/forceProcess = 0 var/processTime = 10 var/speak_file = "npc_chatter.json" + var/debugexamine = FALSE //If we show debug info in our examine + var/showexaminetext = TRUE //If we show our telltale examine text var/list/knownStrings = list() @@ -270,20 +272,20 @@ if(prob((SNPC_FUZZY_CHANCE_LOW+SNPC_FUZZY_CHANCE_HIGH)/4)) var/obj/item/organ/external/R = bodyparts_by_name["r_arm"] if(R) - R.robotize() + R.robotize(make_tough = 1) else var/obj/item/organ/external/L = bodyparts_by_name["l_arm"] if(L) - L.robotize() + L.robotize(make_tough = 1) //legs if(prob((SNPC_FUZZY_CHANCE_LOW+SNPC_FUZZY_CHANCE_HIGH)/4)) var/obj/item/organ/external/R = bodyparts_by_name["r_leg"] if(R) - R.robotize() + R.robotize(make_tough = 1) else var/obj/item/organ/external/L = bodyparts_by_name["l_leg"] if(L) - L.robotize() + L.robotize(make_tough = 1) UpdateDamageIcon() regenerate_icons() diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 8e1c32f931a..c95bb0bd243 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -24,8 +24,7 @@ /mob/living/carbon/human/proc/has_organ(name) var/obj/item/organ/external/O = bodyparts_by_name[name] - - return (O && !(O.status & ORGAN_DESTROYED) && !O.is_stump()) + return O /mob/living/carbon/human/proc/has_organ_for_slot(slot) switch(slot) @@ -151,7 +150,7 @@ update_hair() //rebuild hair update_fhair() update_head_accessory() - if(internal) + if(internal && !get_organ_slot("breathing_tube")) internal = null update_internals_hud_icon(0) wear_mask_update(I, toggle_off = FALSE) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index b820cecbace..c5b02796648 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1,29 +1,10 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - -/mob/living/carbon/human - - var/pressure_alert = 0 - var/prev_gender = null // Debug for plural genders - var/temperature_alert = 0 - var/in_stasis = 0 - var/exposedtimenow = 0 - var/firstexposed = 0 - var/heartbeat = 0 - /mob/living/carbon/human/Life() fire_alert = 0 //Reset this here, because both breathe() and handle_environment() have a chance to set it. life_tick++ - in_stasis = 0 - if(istype(loc, /obj/structure/closet/body_bag/cryobag)) - var/obj/structure/closet/body_bag/cryobag/loc_as_cryobag = loc - if(!loc_as_cryobag.opened) - loc_as_cryobag.used++ - in_stasis = 1 - voice = GetVoice() - if(..() && !in_stasis) + if(..()) if(check_mutations) domutcheck(src,null) @@ -40,11 +21,13 @@ if(!client) species.handle_npc(src) + if(stat != DEAD) + //Stuff jammed in your limbs hurts + handle_embedded_objects() + if(stat == DEAD) handle_decay() - handle_stasis_bag() - if(life_tick > 5 && timeofdeath && (timeofdeath < 5 || world.time - timeofdeath > 6000)) //We are long dead, or we're junk mobs spawned like the clowns on the clown shuttle return //We go ahead and process them 5 times for HUD images and other stuff though. @@ -154,16 +137,6 @@ visible_message("[src] goes limp, their facial expression utterly blank.") death() -/mob/living/carbon/human/proc/handle_stasis_bag() - // Handle side effects from stasis bag - if(in_stasis) - // First off, there's no oxygen supply, so the mob will slowly take brain damage - adjustBrainLoss(0.1) - - // Next, the method to induce stasis has some adverse side-effects, manifesting - // as cloneloss - adjustCloneLoss(0.1) - /mob/living/carbon/human/handle_mutations_and_radiation() for(var/datum/dna/gene/gene in dna_genes) if(!gene.block) @@ -189,53 +162,68 @@ if(gene_stability < GENETIC_DAMAGE_STAGE_3) gib() - if(!(species.flags & RADIMMUNE)) + if(!(RADIMMUNE in species.species_traits)) if(radiation) - if(radiation > 100) - if(!weakened) - emote("collapse") - Weaken(10) - to_chat(src, "You feel weak.") - - radiation = Clamp(radiation, 0, 100) + radiation = Clamp(radiation, 0, 200) var/autopsy_damage = 0 switch(radiation) - if(0 to 50) + if(1 to 49) radiation = max(radiation-1, 0) if(prob(25)) adjustToxLoss(1) - autopsy_damage = 1 + adjustFireLoss(1) + autopsy_damage = 2 - if(50 to 75) + if(50 to 74) radiation = max(radiation-2, 0) adjustToxLoss(1) - autopsy_damage = 1 + adjustFireLoss(1) + autopsy_damage = 2 if(prob(5)) radiation = max(radiation-5, 0) - if(!weakened) - emote("collapse") Weaken(3) to_chat(src, "You feel weak.") + emote("collapse") if(75 to 100) - radiation = max(radiation-3, 0) - adjustToxLoss(3) - autopsy_damage = 3 - if(prob(1)) + radiation = max(radiation-2, 0) + adjustToxLoss(2) + adjustFireLoss(2) + autopsy_damage = 4 + if(prob(2)) to_chat(src, "You mutate!") randmutb(src) domutcheck(src, null) - emote("gasp") - if(autopsy_damage && bodyparts.len) - var/obj/item/organ/external/O = pick(bodyparts) - if(istype(O)) - O.add_autopsy_data("Radiation Poisoning", autopsy_damage) + if(101 to 150) + radiation = max(radiation-3, 0) + adjustToxLoss(2) + adjustFireLoss(3) + autopsy_damage = 5 + if(prob(4)) + to_chat(src, "You mutate!") + randmutb(src) + domutcheck(src, null) + + if(151 to INFINITY) + radiation = max(radiation-3, 0) + adjustToxLoss(2) + adjustFireLoss(3) + autopsy_damage = 5 + if(prob(6)) + to_chat(src, "You mutate!") + randmutb(src) + domutcheck(src, null) + + if(autopsy_damage) + var/obj/item/organ/external/chest/chest = get_organ("chest") + if(chest) + chest.add_autopsy_data("Radiation Poisoning", autopsy_damage) /mob/living/carbon/human/breathe() - if((NO_BREATH in mutations) || (species && (species.flags & NO_BREATHE)) || reagents.has_reagent("lexorin")) + if((NO_BREATH in mutations) || (NO_BREATHE in species.species_traits) || reagents.has_reagent("lexorin")) adjustOxyLoss(-5) oxygen_alert = 0 toxins_alert = 0 @@ -255,7 +243,7 @@ if(losebreath > 0) AdjustLoseBreath(-1) if(prob(10)) - spawn emote("gasp") + emote("gasp") if(istype(loc, /obj/)) var/obj/loc_as_obj = loc loc_as_obj.handle_internal_lifeform(src, 0) @@ -301,9 +289,10 @@ var/null_internals = 0 //internals are invalid, therefore turn them off var/skip_contents_check = 0 //rigsuit snowflake, oxygen tanks aren't stored inside the mob, so the 'contents.Find' check has to be skipped. - if(!(wear_mask && wear_mask.flags & AIRTIGHT)) //if NOT (wear_mask AND wear_mask.flags CONTAIN AIRTIGHT) - if(!(head && head.flags & AIRTIGHT)) //if NOT (head AND head.flags CONTAIN AIRTIGHT) - null_internals = 1 //not wearing a mask or suitable helmet + if(!get_organ_slot("breathing_tube")) + if(!(wear_mask && wear_mask.flags & AIRTIGHT)) //if NOT (wear_mask AND wear_mask.flags CONTAIN AIRTIGHT) + if(!(head && head.flags & AIRTIGHT)) //if NOT (head AND head.flags CONTAIN AIRTIGHT) + null_internals = 1 //not wearing a mask or suitable helmet if(istype(back, /obj/item/weapon/rig)) //wearing a rigsuit var/obj/item/weapon/rig/rig = back //needs to be typecasted because this doesn't use get_rig() for some reason @@ -638,7 +627,7 @@ return 0 //godmode //The fucking FAT mutation is the greatest shit ever. It makes everyone so hot and bothered. - if(species.flags & CAN_BE_FAT) + if(CAN_BE_FAT in species.species_traits) if(FAT in mutations) if(overeatduration < 100) becomeSlim() @@ -702,7 +691,8 @@ AdjustDizzy(-3) AdjustJitter(-3) - if(species && species.flags & NO_INTORGANS) return + if(NO_INTORGANS in species.species_traits) + return handle_trace_chems() @@ -813,13 +803,6 @@ blinded = 1 stat = UNCONSCIOUS - if(embedded_flag && !(mob_master.current_cycle % 10)) - var/list/E - E = get_visible_implants(0) - if(!E.len) - embedded_flag = 0 - - //Vision //god knows why this is here var/obj/item/organ/vision if(species.vision_organ) @@ -878,9 +861,7 @@ if(gloves && germ_level > gloves.germ_level && prob(10)) gloves.germ_level += 1 - if(!in_stasis) - handle_organs() - handle_blood() + handle_organs() else //dead @@ -932,6 +913,22 @@ adjustToxLoss(-3) lastpuke = 0 +/mob/living/carbon/human/proc/handle_embedded_objects() + for(var/X in bodyparts) + var/obj/item/organ/external/BP = X + for(var/obj/item/I in BP.embedded_objects) + if(prob(I.embedded_pain_chance)) + BP.take_damage(I.w_class*I.embedded_pain_multiplier) + to_chat(src, "[I] embedded in your [BP.name] hurts!") + + if(prob(I.embedded_fall_chance)) + BP.take_damage(I.w_class*I.embedded_fall_pain_multiplier) + BP.embedded_objects -= I + I.forceMove(get_turf(src)) + visible_message("[I] falls out of [name]'s [BP.name]!","[I] falls out of your [BP.name]!") + if(!has_embedded_objects()) + clear_alert("embeddedobject") + /mob/living/carbon/human/handle_changeling() if(mind) if(mind.changeling) @@ -943,64 +940,13 @@ if(hud_used) hud_used.lingchemdisplay.invisibility = 101 -/mob/living/carbon/human/handle_shock() - ..() - if(status_flags & GODMODE) - return 0 //godmode - if(species && species.flags & NO_PAIN) - return - - if(health <= config.health_threshold_softcrit)// health 0 makes you immediately collapse - shock_stage = max(shock_stage, 61) - - if(traumatic_shock >= 100) - shock_stage += 1 - else - shock_stage = min(shock_stage, 160) - shock_stage = max(shock_stage-1, 0) - return - - if(shock_stage == 10) - to_chat(src, ""+pick("It hurts so much!", "You really need some painkillers..", "Dear god, the pain!")) - - if(shock_stage >= 30) - if(shock_stage == 30) custom_emote(1,"is having trouble keeping their eyes open.") - EyeBlurry(2) - Stuttering(5) - - if(shock_stage == 40) - to_chat(src, ""+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!")) - - if(shock_stage >=60) - if(shock_stage == 60) custom_emote(1,"falls limp.") - if(prob(2)) - to_chat(src, ""+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!")) - Weaken(20) - - if(shock_stage >= 80) - if(prob(5)) - to_chat(src, ""+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!")) - Weaken(20) - - if(shock_stage >= 120) - if(prob(2)) - to_chat(src, ""+pick("You black out!", "You feel like you could die any moment now.", "You're about to lose consciousness.")) - Paralyse(5) - - if(shock_stage == 150) - custom_emote(1,"can no longer stand, collapsing!") - Weaken(20) - - if(shock_stage >= 150) - Weaken(20) - /mob/living/carbon/human/proc/handle_pulse() if(mob_master.current_cycle % 5) return pulse //update pulse every 5 life ticks (~1 tick/sec, depending on server load) - if(species && species.flags & NO_BLOOD) + if(NO_BLOOD in species.species_traits) return PULSE_NONE //No blood, no pulse. if(stat == DEAD) @@ -1011,8 +957,7 @@ var/temp = PULSE_NORM - var/blood_type = get_blood_name() - if(round(vessel.get_reagent_amount(blood_type)) <= BLOOD_VOLUME_BAD) //how much blood do we have + if(blood_volume <= BLOOD_VOLUME_BAD)//how much blood do we have temp = PULSE_THREADY //not enough :( if(status_flags & FAKEDEATH) @@ -1063,20 +1008,20 @@ makeSkeleton() return //No puking over skeletons, they don't smell at all! + if(!isturf(loc)) + return for(var/mob/living/carbon/human/H in range(decaylevel, src)) if(prob(2)) - if(istype(loc,/obj/item/bodybag)) - return var/obj/item/clothing/mask/M = H.wear_mask if(M && (M.flags_cover & MASKCOVERSMOUTH)) return - if(H.species && H.species.flags & NO_BREATHE) + if(NO_BREATHE in species.species_traits) return //no puking if you can't smell! // Humans can lack a mind datum, y'know - if(H.mind && H.mind.assigned_role == "Detective") + if(H.mind && (H.mind.assigned_role == "Detective" || H.mind.assigned_role == "Coroner")) return //too cool for puke - to_chat(H, "You smell something foul...") + to_chat(H, "You smell something foul...") H.fakevomit() /mob/living/carbon/human/proc/handle_heartbeat() @@ -1096,7 +1041,7 @@ if(heartbeat >= rate) heartbeat = 0 - src << sound('sound/effects/electheart.ogg',0,0,0,30)//Credit to GhostHack (www.ghosthack.de) for sound. + src << sound('sound/effects/electheart.ogg',0,0,CHANNEL_HEARTBEAT,30)//Credit to GhostHack (www.ghosthack.de) for sound. else heartbeat++ @@ -1115,9 +1060,9 @@ if(heartbeat >= rate) heartbeat = 0 if(H.status & ORGAN_ASSISTED) - src << sound('sound/effects/pacemakebeat.ogg',0,0,0,50) + src << sound('sound/effects/pacemakebeat.ogg',0,0,CHANNEL_HEARTBEAT,50) else - src << sound('sound/effects/singlebeat.ogg',0,0,0,50) + src << sound('sound/effects/singlebeat.ogg',0,0,CHANNEL_HEARTBEAT,50) else heartbeat++ @@ -1151,7 +1096,9 @@ /mob/living/carbon/human/proc/can_heartattack() - if(species.flags & (NO_BLOOD|NO_INTORGANS)) + if(NO_BLOOD in species.species_traits) + return FALSE + if(NO_INTORGANS in species.species_traits) return FALSE return TRUE @@ -1159,8 +1106,11 @@ if(!can_heartattack()) return FALSE var/obj/item/organ/internal/heart/heart = get_int_organ(/obj/item/organ/internal/heart) - if(istype(heart) && heart.beating) - return FALSE + if(istype(heart)) + if(heart.status & ORGAN_DEAD) + return TRUE + if(heart.beating) + return FALSE return TRUE /mob/living/carbon/human/proc/set_heartattack(status) diff --git a/code/modules/mob/living/carbon/human/shock.dm b/code/modules/mob/living/carbon/human/shock.dm new file mode 100644 index 00000000000..05042a226d6 --- /dev/null +++ b/code/modules/mob/living/carbon/human/shock.dm @@ -0,0 +1,75 @@ +/mob/living/carbon/human/var/traumatic_shock = 0 +/mob/living/carbon/human/var/shock_stage = 0 + +// proc to find out in how much pain the mob is at the moment +/mob/living/carbon/human/proc/updateshock() + traumatic_shock = getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss() + + // broken or ripped off organs will add quite a bit of pain + for(var/thing in bodyparts) + var/obj/item/organ/external/BP = thing + if(BP.status & ORGAN_BROKEN && !(BP.status & ORGAN_SPLINTED) || BP.open) + traumatic_shock += 15 + + if(reagents) + for(var/datum/reagent/R in reagents.reagent_list) + if(R.shock_reduction) + traumatic_shock = max(0, traumatic_shock - R.shock_reduction) // now you too can varedit cyanide to reduce shock by 1000 - Iamgoofball + if(drunk) + traumatic_shock = max(0, traumatic_shock - 10) + + return traumatic_shock + +/mob/living/carbon/human/proc/handle_shock() + if(status_flags & GODMODE) //godmode + return + if(NO_PAIN in species.species_traits) + return + + updateshock() + + if(health <= config.health_threshold_softcrit)// health 0 makes you immediately collapse + shock_stage = max(shock_stage, 61) + + if(traumatic_shock >= 100) + shock_stage += 1 + else + shock_stage = min(shock_stage, 160) + shock_stage = max(shock_stage-1, 0) + return + + if(shock_stage == 10) + to_chat(src, ""+pick("It hurts so much!", "You really need some painkillers..", "Dear god, the pain!")) + + if(shock_stage >= 30) + if(shock_stage == 30) + custom_emote(1,"is having trouble keeping their eyes open.") + EyeBlurry(2) + Stuttering(5) + + if(shock_stage == 40) + to_chat(src, ""+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!")) + + if(shock_stage >=60) + if(shock_stage == 60) + custom_emote(1,"falls limp.") + if(prob(2)) + to_chat(src, ""+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!")) + Weaken(20) + + if(shock_stage >= 80) + if(prob(5)) + to_chat(src, ""+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!")) + Weaken(20) + + if(shock_stage >= 120) + if(prob(2)) + to_chat(src, ""+pick("You black out!", "You feel like you could die any moment now.", "You're about to lose consciousness.")) + Paralyse(5) + + if(shock_stage == 150) + custom_emote(1,"can no longer stand, collapsing!") + Weaken(20) + + if(shock_stage >= 150) + Weaken(20) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/abductor.dm b/code/modules/mob/living/carbon/human/species/abductor.dm index 8e9c61992aa..75b19395dad 100644 --- a/code/modules/mob/living/carbon/human/species/abductor.dm +++ b/code/modules/mob/living/carbon/human/species/abductor.dm @@ -18,11 +18,10 @@ "eyes" = /obj/item/organ/internal/eyes/abductor //3 darksight. ) - flags = HAS_LIPS | NO_BLOOD | NO_BREATHE | NOGUNS + species_traits = list(NO_BLOOD, NO_BREATHE, VIRUSIMMUNE, NOGUNS) oxy_mod = 0 - virus_immune = 1 clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS dietflags = DIET_OMNI reagent_tag = PROCESS_ORG diff --git a/code/modules/mob/living/carbon/human/species/apollo.dm b/code/modules/mob/living/carbon/human/species/apollo.dm index 24f38bdbf64..989fe9ba62a 100644 --- a/code/modules/mob/living/carbon/human/species/apollo.dm +++ b/code/modules/mob/living/carbon/human/species/apollo.dm @@ -36,7 +36,7 @@ "antennae" = /obj/item/organ/internal/wryn/hivenode ) - flags = IS_WHITELISTED | HAS_LIPS | NO_BREATHE | HAS_SKIN_COLOR | NO_SCAN | HIVEMIND + species_traits = list(IS_WHITELISTED, NO_BREATHE, HAS_SKIN_COLOR, NO_SCAN, HIVEMIND) clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS dietflags = DIET_HERB //bees feed off nectar, so bee people feed off plants too @@ -99,7 +99,7 @@ burn_mod = 4 // holy shite, poor guys wont survive half a second cooking smores brute_mod = 2 // damn, double wham, double dam oxy_mod = 0 - flags = IS_WHITELISTED | NO_BREATHE | NO_BLOOD | NO_PAIN | HAS_LIPS | NO_SCAN | RADIMMUNE + species_traits = list(LIPS, IS_WHITELISTED, NO_BREATHE, NO_BLOOD, NO_PAIN, NO_SCAN, RADIMMUNE) dietflags = DIET_OMNI //still human at their core, so they maintain their eating habits and diet //Default styles for created mobs. diff --git a/code/modules/mob/living/carbon/human/species/golem.dm b/code/modules/mob/living/carbon/human/species/golem.dm index a2f2eb30467..3fbf0a4d8c1 100644 --- a/code/modules/mob/living/carbon/human/species/golem.dm +++ b/code/modules/mob/living/carbon/human/species/golem.dm @@ -6,11 +6,10 @@ deform = 'icons/mob/human_races/r_golem.dmi' default_language = "Galactic Common" - flags = NO_BREATHE | NO_BLOOD | RADIMMUNE | NOGUNS + species_traits = list(NO_BREATHE, NO_BLOOD, RADIMMUNE, VIRUSIMMUNE, NOGUNS) oxy_mod = 0 - virus_immune = 1 dietflags = DIET_OMNI //golems can eat anything because they are magic or something reagent_tag = PROCESS_ORG diff --git a/code/modules/mob/living/carbon/human/species/monkey.dm b/code/modules/mob/living/carbon/human/species/monkey.dm index 6e29d658cfe..1b66dc2b48b 100644 --- a/code/modules/mob/living/carbon/human/species/monkey.dm +++ b/code/modules/mob/living/carbon/human/species/monkey.dm @@ -24,7 +24,7 @@ female_scream_sound = 'sound/goonstation/voice/monkey_scream.ogg' tail = "chimptail" - bodyflags = FEET_PADDED | HAS_TAIL + bodyflags = HAS_TAIL reagent_tag = PROCESS_ORG //Has standard darksight of 2. @@ -155,9 +155,6 @@ reagent_tag = PROCESS_ORG tail = null - bodyflags = FEET_PADDED - - /datum/species/monkey/unathi name = "Stok" name_plural = "Stok" @@ -172,4 +169,4 @@ base_color = "#000000" reagent_tag = PROCESS_ORG - bodyflags = FEET_CLAWS | HAS_TAIL + bodyflags = HAS_TAIL diff --git a/code/modules/mob/living/carbon/human/species/plasmaman.dm b/code/modules/mob/living/carbon/human/species/plasmaman.dm index 2041ca5f3e6..9a5e05723a9 100644 --- a/code/modules/mob/living/carbon/human/species/plasmaman.dm +++ b/code/modules/mob/living/carbon/human/species/plasmaman.dm @@ -6,7 +6,7 @@ //language = "Clatter" unarmed_type = /datum/unarmed_attack/punch - flags = IS_WHITELISTED | NO_BLOOD | NOTRANSSTING + species_traits = list(IS_WHITELISTED, NO_BLOOD, NOTRANSSTING) dietflags = DIET_OMNI reagent_tag = PROCESS_ORG @@ -49,9 +49,12 @@ var/tank_slot_name = "suit storage" switch(assigned_role) - if("Scientist","Geneticist","Roboticist") + if("Scientist","Roboticist") suit=/obj/item/clothing/suit/space/eva/plasmaman/science helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/science + if("Geneticist") + suit=/obj/item/clothing/suit/space/eva/plasmaman/science/geneticist + helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/science/geneticist if("Research Director") suit=/obj/item/clothing/suit/space/eva/plasmaman/science/rd helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/science/rd @@ -90,7 +93,7 @@ if("Nanotrasen Representative") suit = /obj/item/clothing/suit/space/eva/plasmaman/nt_rep helm = /obj/item/clothing/head/helmet/space/eva/plasmaman/nt_rep - if("Medical Doctor","Brig Physician") + if("Medical Doctor","Brig Physician","Virologist") suit=/obj/item/clothing/suit/space/eva/plasmaman/medical helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/medical H.equip_or_collect(new /obj/item/device/flashlight/pen(H), slot_in_backpack) @@ -103,6 +106,12 @@ if("Chief Medical Officer") suit=/obj/item/clothing/suit/space/eva/plasmaman/medical/cmo helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/medical/cmo + if("Coroner") + suit=/obj/item/clothing/suit/space/eva/plasmaman/medical/coroner + helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/medical/coroner + if("Virologist") + suit=/obj/item/clothing/suit/space/eva/plasmaman/medical/virologist + helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/medical/virologist if("Bartender", "Chef") suit=/obj/item/clothing/suit/space/eva/plasmaman/service helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/service @@ -157,8 +166,7 @@ if(Toxins_pp < safe_plasma_min) if(prob(20)) - spawn(0) - H.emote("gasp") + H.emote("gasp") if(Toxins_pp > 0) var/ratio = safe_plasma_min/Toxins_pp H.adjustOxyLoss(min(5*ratio, HUMAN_MAX_OXYLOSS)) // Don't fuck them up too fast (space only does HUMAN_MAX_OXYLOSS after all!) @@ -189,8 +197,7 @@ if(world.time - H.co2overloadtime > 300) // They've been in here 30s now, lets start to kill them for their own good! H.adjustOxyLoss(8) if(prob(20)) // Lets give them some chance to know somethings not right though I guess. - spawn(0) - H.emote("cough") + H.emote("cough") else H.co2overloadtime = 0 @@ -204,8 +211,7 @@ H.AdjustSleeping(8, bound_lower = 0, bound_upper = 10) else if(SA_pp > 0.15) // There is sleeping gas in their lungs, but only a little, so give them a bit of a warning if(prob(20)) - spawn(0) - H.emote(pick("giggle", "laugh")) + H.emote(pick("giggle", "laugh")) SA.moles = 0 if(abs(310.15 - breath.temperature) > 50) // Hot air hurts :( diff --git a/code/modules/mob/living/carbon/human/species/shadow.dm b/code/modules/mob/living/carbon/human/species/shadow.dm index 6f594768d4e..6a48cda5811 100644 --- a/code/modules/mob/living/carbon/human/species/shadow.dm +++ b/code/modules/mob/living/carbon/human/species/shadow.dm @@ -17,12 +17,10 @@ "eyes" = /obj/item/organ/internal/eyes/shadow //8 darksight. ) - flags = NO_BLOOD | NO_BREATHE | RADIMMUNE + species_traits = list(NO_BREATHE, NO_BLOOD, RADIMMUNE, VIRUSIMMUNE) oxy_mod = 0 - virus_immune = 1 - dietflags = DIET_OMNI //the mutation process allowed you to now digest all foods regardless of initial race reagent_tag = PROCESS_ORG suicide_messages = list( diff --git a/code/modules/mob/living/carbon/human/species/skeleton.dm b/code/modules/mob/living/carbon/human/species/skeleton.dm index efb0ca00785..eef78948f7a 100644 --- a/code/modules/mob/living/carbon/human/species/skeleton.dm +++ b/code/modules/mob/living/carbon/human/species/skeleton.dm @@ -13,11 +13,10 @@ blood_color = "#FFFFFF" flesh_color = "#E6E6C6" - flags = NO_BREATHE | NO_BLOOD | RADIMMUNE + species_traits = list(NO_BREATHE, NO_BLOOD, RADIMMUNE, VIRUSIMMUNE) oxy_mod = 0 - virus_immune = 1 //why is this a var and not a flag? dietflags = DIET_OMNI reagent_tag = PROCESS_ORG diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index c1d1a169c1d..7a1c147a927 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -45,6 +45,7 @@ var/reagent_tag //Used for metabolizing reagents. var/hunger_drain = HUNGER_FACTOR var/digestion_ratio = 1 //How quickly the species digests/absorbs reagents. + var/taste_sensitivity = TASTE_SENSITIVITY_NORMAL //the most widely used factor; humans use a different one var/siemens_coeff = 1 //base electrocution coefficient @@ -76,6 +77,8 @@ var/brain_mod = 1 // Brain damage damage reduction/amplification var/stun_mod = 1 // If a species is more/less impacated by stuns/weakens/paralysis + var/blood_damage_type = OXY //What type of damage does this species take if it's low on blood? + var/total_health = 100 var/punchdamagelow = 0 //lowest possible punch damage var/punchdamagehigh = 9 //highest possible punch damage @@ -89,7 +92,8 @@ var/list/allowed_consumed_mobs = list() //If a species can consume mobs, put the type of mobs it can consume here. - var/flags = 0 // Various specific features. + var/list/species_traits = list() + var/clothing_flags = 0 // Underwear and socks. var/exotic_blood var/bodyflags = 0 @@ -108,7 +112,6 @@ var/icon/icon_template var/is_small var/show_ssd = 1 - var/virus_immune var/can_revive_by_healing // Determines whether or not this species can be revived by simply healing them var/has_gender = TRUE @@ -227,8 +230,7 @@ if(O2_pp < atmos_requirements["min_oxy"]) if(prob(20)) - spawn(0) - H.emote("gasp") + H.emote("gasp") H.failed_last_breath = 1 if(O2_pp > 0) @@ -250,8 +252,7 @@ if(N2_pp < atmos_requirements["min_nitro"]) if(prob(20)) - spawn(0) - H.emote("gasp") + H.emote("gasp") H.failed_last_breath = 1 if(N2_pp > 0) @@ -273,8 +274,7 @@ if(Tox_pp < atmos_requirements["min_tox"]) if(prob(20)) - spawn(0) - H.emote("gasp") + H.emote("gasp") H.failed_last_breath = 1 if(Tox_pp > 0) @@ -297,8 +297,7 @@ if(CO2_pp < atmos_requirements["min_co2"]) if(prob(20)) - spawn(0) - H.emote("gasp") + H.emote("gasp") H.failed_last_breath = 1 if(CO2_pp) @@ -316,8 +315,7 @@ if(world.time - H.co2overloadtime > 300) // They've been in here 30s now, lets start to kill them for their own good! H.adjustOxyLoss(8) if(prob(20)) // Lets give them some chance to know somethings not right though I guess. - spawn(0) - H.emote("cough") + H.emote("cough") else H.clear_alert("co2") H.co2overloadtime = 0 @@ -343,8 +341,7 @@ H.AdjustSleeping(8, bound_lower = 0, bound_upper = 10) else if(SA_pp > 0.01) // There is sleeping gas in their lungs, but only a little, so give them a bit of a warning if(prob(20)) - spawn(0) - H.emote(pick("giggle", "laugh")) + H.emote(pick("giggle", "laugh")) handle_temperature(breath, H) return 1 @@ -399,9 +396,6 @@ if(has_gravity(H)) gravity = 1 - if(H.embedded_flag) - H.handle_embedded_objects() //Moving with objects stuck in you can cause bad times. - if(!ignoreslow && gravity) if(slowdown) . = slowdown @@ -473,7 +467,11 @@ // Return 1 if it should do normal processing too // Return 0 if it shouldn't deplete and do its normal effect // Other return values will cause weird badness -/datum/species/proc/handle_reagents(var/mob/living/carbon/human/H, var/datum/reagent/R) +/datum/species/proc/handle_reagents(mob/living/carbon/human/H, datum/reagent/R) + if(R.id == exotic_blood) + H.blood_volume = min(H.blood_volume + round(R.volume, 0.1), BLOOD_VOLUME_NORMAL) + H.reagents.del_reagent(R.id) + return 0 return 1 // For special snowflake species effects @@ -519,7 +517,6 @@ var/attack_sound = "punch" var/miss_sound = 'sound/weapons/punchmiss.ogg' var/sharp = 0 - var/edge = 0 /datum/unarmed_attack/punch attack_verb = list("punch") @@ -535,7 +532,6 @@ attack_sound = 'sound/weapons/slice.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' sharp = 1 - edge = 1 /datum/unarmed_attack/claws/armalis attack_verb = list("slash", "claw") @@ -590,7 +586,7 @@ if(SCREWYHUD_DEAD) H.healths.icon_state = "health7" if(SCREWYHUD_HEALTHY) H.healths.icon_state = "health0" else - switch(100 - ((flags & NO_PAIN) ? 0 : H.traumatic_shock) - H.staminaloss) + switch(100 - ((NO_PAIN in species_traits) ? 0 : H.traumatic_shock) - H.staminaloss) if(100 to INFINITY) H.healths.icon_state = "health0" if(80 to 100) H.healths.icon_state = "health1" if(60 to 80) H.healths.icon_state = "health2" @@ -743,3 +739,9 @@ It'll return null if the organ doesn't correspond, so include null checks when u if(H.see_override) //Override all H.see_invisible = H.see_override + +/datum/species/proc/water_act(mob/living/carbon/human/M, volume, temperature, source) + if(temperature >= 330) + M.bodytemperature = M.bodytemperature + (temperature - M.bodytemperature) + if(temperature <= 280) + M.bodytemperature = M.bodytemperature - (M.bodytemperature - temperature) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/station.dm b/code/modules/mob/living/carbon/human/species/station.dm index e1f8a4b6116..e9dea804cac 100644 --- a/code/modules/mob/living/carbon/human/species/station.dm +++ b/code/modules/mob/living/carbon/human/species/station.dm @@ -6,7 +6,7 @@ primitive_form = "Monkey" path = /mob/living/carbon/human/human language = "Sol Common" - flags = HAS_LIPS | CAN_BE_FAT + species_traits = list(LIPS, CAN_BE_FAT) clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS bodyflags = HAS_SKIN_TONE | HAS_BODY_MARKINGS dietflags = DIET_OMNI @@ -38,9 +38,9 @@ else, frequently even their own lives. They prefer warmer temperatures than most species and \ their native tongue is a heavy hissing laungage called Sinta'Unathi." - flags = HAS_LIPS + species_traits = list(LIPS) clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS - bodyflags = FEET_CLAWS | HAS_TAIL | HAS_HEAD_ACCESSORY | HAS_BODY_MARKINGS | HAS_HEAD_MARKINGS | HAS_SKIN_COLOR | HAS_ALT_HEADS | TAIL_WAGGING + bodyflags = HAS_TAIL | HAS_HEAD_ACCESSORY | HAS_BODY_MARKINGS | HAS_HEAD_MARKINGS | HAS_SKIN_COLOR | HAS_ALT_HEADS | TAIL_WAGGING dietflags = DIET_CARN cold_level_1 = 280 //Default 260 - Lower is better @@ -110,10 +110,11 @@ primitive_form = "Farwa" - flags = HAS_LIPS | CAN_BE_FAT + species_traits = list(LIPS, CAN_BE_FAT) clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS - bodyflags = FEET_PADDED | HAS_TAIL | HAS_HEAD_ACCESSORY | HAS_HEAD_MARKINGS | HAS_BODY_MARKINGS | HAS_SKIN_COLOR | TAIL_WAGGING | HAS_FUR + bodyflags = HAS_TAIL | HAS_HEAD_ACCESSORY | HAS_HEAD_MARKINGS | HAS_BODY_MARKINGS | HAS_SKIN_COLOR | TAIL_WAGGING dietflags = DIET_OMNI + taste_sensitivity = TASTE_SENSITIVITY_SHARP reagent_tag = PROCESS_ORG flesh_color = "#AFA59E" base_color = "#424242" @@ -160,15 +161,18 @@ to the degree it can cause conflict with more rigorous and strict authorities. They speak a guttural language known as 'Canilunzt' \ which has a heavy emphasis on utilizing tail positioning and ear twitches to communicate intent." - flags = HAS_LIPS + species_traits = list(LIPS) clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS - bodyflags = FEET_PADDED | HAS_TAIL | TAIL_WAGGING | TAIL_OVERLAPPED | HAS_HEAD_ACCESSORY | HAS_MARKINGS | HAS_SKIN_COLOR | HAS_FUR + bodyflags = HAS_TAIL | TAIL_WAGGING | TAIL_OVERLAPPED | HAS_HEAD_ACCESSORY | HAS_MARKINGS | HAS_SKIN_COLOR dietflags = DIET_OMNI + taste_sensitivity = TASTE_SENSITIVITY_SHARP reagent_tag = PROCESS_ORG flesh_color = "#966464" base_color = "#CF4D2F" butt_sprite = "vulp" + scream_verb = "yelps" + has_organ = list( "heart" = /obj/item/organ/internal/heart, "lungs" = /obj/item/organ/internal/lungs, @@ -209,10 +213,11 @@ herbivores on the whole and tend to be co-operative with the other species of the galaxy, although they rarely reveal \ the secrets of their empire to their allies." - flags = HAS_LIPS + species_traits = list(LIPS) clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS bodyflags = HAS_SKIN_COLOR | HAS_BODY_MARKINGS dietflags = DIET_HERB + taste_sensitivity = TASTE_SENSITIVITY_DULL flesh_color = "#8CD7A3" blood_color = "#1D2CBF" base_color = "#38b661" //RGB: 56, 182, 97. @@ -289,7 +294,7 @@ breath_type = "nitrogen" poison_type = "oxygen" - flags = NO_SCAN | IS_WHITELISTED | NOTRANSSTING + species_traits = list(NO_SCAN, IS_WHITELISTED, NOTRANSSTING) clothing_flags = HAS_SOCKS dietflags = DIET_OMNI bodyflags = HAS_ICON_SKIN_TONE | HAS_TAIL | TAIL_WAGGING | TAIL_OVERLAPPED | HAS_BODY_MARKINGS | HAS_TAIL_MARKINGS @@ -442,7 +447,7 @@ breath_type = "nitrogen" poison_type = "oxygen" - flags = NO_SCAN | NO_BLOOD | NO_PAIN | IS_WHITELISTED + species_traits = list(NO_SCAN, NO_BLOOD, NO_PAIN, IS_WHITELISTED) bodyflags = HAS_TAIL dietflags = DIET_OMNI //should inherit this from vox, this is here just in case @@ -486,9 +491,9 @@ brute_mod = 0.8 - flags = IS_WHITELISTED + species_traits = list(IS_WHITELISTED) clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS - bodyflags = FEET_CLAWS | HAS_HEAD_ACCESSORY | HAS_HEAD_MARKINGS | HAS_BODY_MARKINGS + bodyflags = HAS_HEAD_ACCESSORY | HAS_HEAD_MARKINGS | HAS_BODY_MARKINGS eyes = "kidan_eyes_s" dietflags = DIET_HERB blood_color = "#FB9800" @@ -517,6 +522,7 @@ "is cracking their exoskeleton!", "is stabbing themselves with their mandibles!", "is holding their breath!") + /datum/species/slime name = "Slime People" name_plural = "Slime People" @@ -540,13 +546,16 @@ male_cough_sounds = list('sound/effects/slime_squish.ogg') female_cough_sounds = list('sound/effects/slime_squish.ogg') - flags = IS_WHITELISTED | NO_BREATHE | HAS_LIPS | NO_INTORGANS | NO_SCAN + species_traits = list(LIPS, IS_WHITELISTED, NO_BREATHE, NO_INTORGANS, NO_SCAN) clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS bodyflags = HAS_SKIN_COLOR | NO_EYES dietflags = DIET_CARN reagent_tag = PROCESS_ORG + + blood_color = "#0064C8" exotic_blood = "water" - //ventcrawler = 1 //ventcrawling commented out + blood_damage_type = TOX + butt_sprite = "slime" //Has default darksight of 2. @@ -573,7 +582,7 @@ #define SLIMEPERSON_BLOOD_SCALING_FACTOR 5 // Used to adjust how much of an effect the blood has on the rate of color change. Higher is slower. // Slowly shifting to the color of the reagents if((H in recolor_list) && H.reagents.total_volume > SLIMEPERSON_COLOR_SHIFT_TRIGGER) - var/blood_amount = H.vessel.total_volume + var/blood_amount = H.blood_volume var/r_color = mix_color_from_reagents(H.reagents.reagent_list) var/new_body_color = BlendRGB(r_color, rgb(H.r_skin, H.g_skin, H.b_skin), (blood_amount*SLIMEPERSON_BLOOD_SCALING_FACTOR)/((blood_amount*SLIMEPERSON_BLOOD_SCALING_FACTOR)+(H.reagents.total_volume))) var/list/new_color_list = ReadRGB(new_body_color) @@ -637,12 +646,12 @@ var/list/missing_limbs = list() for(var/l in bodyparts_by_name) var/obj/item/organ/external/E = bodyparts_by_name[l] - if(!istype(E) || istype(E, /obj/item/organ/external/stump)) + if(!istype(E)) var/list/limblist = species.has_limbs[l] var/obj/item/organ/external/limb = limblist["path"] var/parent_organ = initial(limb.parent_organ) var/obj/item/organ/external/parentLimb = bodyparts_by_name[parent_organ] - if(!istype(parentLimb) || parentLimb.is_stump()) + if(!istype(parentLimb)) continue missing_limbs[initial(limb.name)] = l @@ -668,21 +677,17 @@ var/stored_brute = 0 var/stored_burn = 0 if(istype(O)) - if(!O.is_stump()) - to_chat(src, "Your limb has already been replaced in some way!") - return - else - to_chat(src, "You distribute the damaged tissue around your body, out of the way of your new pseudopod!") - var/obj/item/organ/external/doomedStump = O - stored_brute = doomedStump.brute_dam - stored_burn = doomedStump.burn_dam - qdel(O) + to_chat(src, "You distribute the damaged tissue around your body, out of the way of your new pseudopod!") + var/obj/item/organ/external/doomedStump = O + stored_brute = doomedStump.brute_dam + stored_burn = doomedStump.burn_dam + qdel(O) var/limb_list = species.has_limbs[chosen_limb] var/obj/item/organ/external/limb_path = limb_list["path"] // Parent check var/obj/item/organ/external/potential_parent = bodyparts_by_name[initial(limb_path.parent_organ)] - if(!istype(potential_parent) || potential_parent.is_stump()) + if(!istype(potential_parent)) to_chat(src, "You've lost the organ that you've been growing your new part on!") return // No rayman for you // Grah this line will leave a "not used" warning, in spite of the fact that the new() proc WILL do the thing. @@ -735,7 +740,7 @@ default_genes = list(REMOTE_TALK) - flags = IS_WHITELISTED | HAS_LIPS | CAN_BE_FAT + species_traits = list(LIPS, IS_WHITELISTED, CAN_BE_FAT) clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS bodyflags = HAS_BODY_MARKINGS dietflags = DIET_HERB @@ -751,6 +756,11 @@ genemutcheck(C,REMOTETALKBLOCK,null,MUTCHK_FORCED) ..() +/datum/species/grey/water_act(var/mob/living/carbon/C, volume, temperature, source) + ..() + C.take_organ_damage(5,min(volume,20)) + C.emote("scream") + /datum/species/grey/after_equip_job(datum/job/J, mob/living/carbon/human/H) var/speech_pref = H.client.prefs.speciesprefs if(speech_pref) @@ -790,9 +800,10 @@ even the simplest concepts of other minds. Their alien physiology allows them survive happily off a diet of nothing but light, \ water and other radiation." - flags = NO_BREATHE | RADIMMUNE | IS_PLANT | NO_BLOOD | NO_PAIN + species_traits = list(NO_BREATHE, RADIMMUNE, IS_PLANT, NO_BLOOD, NO_PAIN) clothing_flags = HAS_SOCKS dietflags = 0 //Diona regenerate nutrition in light, no diet necessary + taste_sensitivity = TASTE_SENSITIVITY_NO_TASTE oxy_mod = 0 @@ -855,7 +866,6 @@ var/turf/T = H.loc light_amount = min(T.get_lumcount() * 10, 5) //hardcapped so it's not abused by having a ton of flashlights H.nutrition = min(H.nutrition+light_amount, NUTRITION_LEVEL_WELL_FED+10) - H.traumatic_shock -= light_amount if(light_amount > 0) H.clear_alert("nolight") @@ -868,7 +878,6 @@ H.adjustFireLoss(-(light_amount/4)) if(H.nutrition < NUTRITION_LEVEL_STARVING+50) H.take_overall_damage(10,0) - H.traumatic_shock++ /datum/species/machine name = "Machine" @@ -896,15 +905,15 @@ oxy_mod = 0 death_message = "gives one shrill beep before falling limp, their monitor flashing blue before completely shutting off..." - flags = IS_WHITELISTED | NO_BREATHE | NO_SCAN | NO_BLOOD | NO_PAIN | NO_DNA | RADIMMUNE | ALL_RPARTS | NOTRANSSTING + species_traits = list(IS_WHITELISTED, NO_BREATHE, NO_SCAN, NO_BLOOD, NO_PAIN, NO_DNA, RADIMMUNE, VIRUSIMMUNE, NOTRANSSTING) clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS - bodyflags = HAS_SKIN_COLOR | HAS_HEAD_MARKINGS | HAS_HEAD_ACCESSORY + bodyflags = HAS_SKIN_COLOR | HAS_HEAD_MARKINGS | HAS_HEAD_ACCESSORY | ALL_RPARTS dietflags = 0 //IPCs can't eat, so no diet + taste_sensitivity = TASTE_SENSITIVITY_NO_TASTE blood_color = "#1F181F" flesh_color = "#AAAAAA" //Default styles for created mobs. default_hair = "Blue IPC Screen" - virus_immune = 1 can_revive_by_healing = 1 has_gender = FALSE reagent_tag = PROCESS_SYN @@ -920,7 +929,7 @@ "brain" = /obj/item/organ/internal/brain/mmi_holder/posibrain, "cell" = /obj/item/organ/internal/cell, "optics" = /obj/item/organ/internal/eyes/optical_sensor, //Default darksight of 2. - "charger" = /obj/item/organ/internal/cyberimp/chest/arm_mod/power_cord + "charger" = /obj/item/organ/internal/cyberimp/arm/power_cord ) vision_organ = /obj/item/organ/internal/eyes/optical_sensor @@ -996,9 +1005,9 @@ "is sucking in warm air!", "is holding their breath!") - flags = IS_WHITELISTED | HAS_LIPS + species_traits = list(LIPS, IS_WHITELISTED) clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT - bodyflags = FEET_CLAWS | HAS_SKIN_TONE | HAS_BODY_MARKINGS + bodyflags = HAS_SKIN_TONE | HAS_BODY_MARKINGS dietflags = DIET_OMNI cold_level_1 = -1 //Default 260 - Lower is better diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 9a8a9b91404..2d3fab0b2a6 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -172,11 +172,7 @@ var/global/list/damage_icon_parts = list() var/damage_appearance = "" for(var/obj/item/organ/external/O in bodyparts) - if(O.is_stump()) - continue - if(O.status & ORGAN_DESTROYED) damage_appearance += "d" - else - damage_appearance += O.damage_state + damage_appearance += O.damage_state if(damage_appearance == previous_damage_appearance) // nothing to do here @@ -190,22 +186,19 @@ var/global/list/damage_icon_parts = list() // blend the individual damage states with our icons for(var/obj/item/organ/external/O in bodyparts) - if(O.is_stump()) - continue - if(!(O.status & ORGAN_DESTROYED)) - O.update_icon() - if(O.damage_state == "00") continue - var/icon/DI - var/cache_index = "[O.damage_state]/[O.icon_name]/[species.blood_color]/[species.name]" + O.update_icon() + if(O.damage_state == "00") continue + var/icon/DI + var/cache_index = "[O.damage_state]/[O.icon_name]/[species.blood_color]/[species.name]" - if(damage_icon_parts[cache_index] == null) - DI = new /icon(species.damage_overlays, O.damage_state) // the damage icon for whole human - DI.Blend(new /icon(species.damage_mask, O.icon_name), ICON_MULTIPLY) // mask with this organ's pixels - DI.Blend(species.blood_color, ICON_MULTIPLY) - damage_icon_parts[cache_index] = DI - else - DI = damage_icon_parts[cache_index] - standing_image.overlays += DI + if(damage_icon_parts[cache_index] == null) + DI = new /icon(species.damage_overlays, O.damage_state) // the damage icon for whole human + DI.Blend(new /icon(species.damage_mask, O.icon_name), ICON_MULTIPLY) // mask with this organ's pixels + DI.Blend(species.blood_color, ICON_MULTIPLY) + damage_icon_parts[cache_index] = DI + else + DI = damage_icon_parts[cache_index] + standing_image.overlays += DI overlays_standing[DAMAGE_LAYER] = standing_image @@ -241,7 +234,7 @@ var/global/list/damage_icon_parts = list() for(var/organ_tag in species.has_limbs) var/obj/item/organ/external/part = bodyparts_by_name[organ_tag] - if(isnull(part) || part.is_stump() || (part.status & ORGAN_DESTROYED)) + if(isnull(part)) icon_key += "0" else if(part.status & ORGAN_ROBOT) icon_key += "2[part.model ? "-[part.model]": ""]" @@ -341,7 +334,7 @@ var/global/list/damage_icon_parts = list() if(update_icons) update_icons() - if(lip_style && species && species.flags & HAS_LIPS) + if(lip_style && (LIPS in species.species_traits)) var/icon/lips = icon("icon"='icons/mob/human_face.dmi', "icon_state"="lips_[lip_style]_s") lips.Blend(lip_color, ICON_ADD) @@ -368,7 +361,7 @@ var/global/list/damage_icon_parts = list() //Body markings. var/obj/item/organ/external/chest/chest_organ = get_organ("chest") - if(chest_organ && !chest_organ.is_stump() && !(chest_organ.status & ORGAN_DESTROYED) && m_styles["body"]) + if(chest_organ && m_styles["body"]) var/body_marking = m_styles["body"] var/datum/sprite_accessory/body_marking_style = marking_styles_list[body_marking] if(body_marking_style && body_marking_style.species_allowed && (species.name in body_marking_style.species_allowed)) @@ -378,7 +371,7 @@ var/global/list/damage_icon_parts = list() markings_standing.Blend(b_marking_s, ICON_OVERLAY) //Head markings. var/obj/item/organ/external/head/head_organ = get_organ("head") - if(head_organ && !head_organ.is_stump() && !(head_organ.status & ORGAN_DESTROYED) && m_styles["head"]) //If the head is destroyed, forget the head markings. This prevents floating optical markings on decapitated IPCs, for example. + if(head_organ && m_styles["head"]) //If the head is destroyed, forget the head markings. This prevents floating optical markings on decapitated IPCs, for example. var/head_marking = m_styles["head"] var/datum/sprite_accessory/head_marking_style = marking_styles_list[head_marking] if(head_marking_style && head_marking_style.species_allowed && (head_organ.species.name in head_marking_style.species_allowed)) @@ -398,7 +391,7 @@ var/global/list/damage_icon_parts = list() overlays_standing[HEAD_ACC_OVER_LAYER] = null var/obj/item/organ/external/head/head_organ = get_organ("head") - if(!head_organ || head_organ.is_stump() || (head_organ.status & ORGAN_DESTROYED) ) + if(!head_organ) if(update_icons) update_icons() return @@ -435,7 +428,7 @@ var/global/list/damage_icon_parts = list() overlays_standing[HAIR_LAYER] = null var/obj/item/organ/external/head/head_organ = get_organ("head") - if(!head_organ || head_organ.is_stump() || (head_organ.status & ORGAN_DESTROYED)) + if(!head_organ) if(update_icons) update_icons() return @@ -453,7 +446,7 @@ var/global/list/damage_icon_parts = list() //if(!src.get_int_organ(/obj/item/organ/internal/brain) && src.get_species() != "Machine" )//make it obvious we have NO BRAIN // hair_standing.Blend(debrained_s, ICON_OVERLAY) if(hair_style && hair_style.species_allowed) - if((head_organ.species.name in hair_style.species_allowed) || (head_organ.species.flags & ALL_RPARTS)) //If the head's species is in the list of allowed species for the hairstyle, or the head's species is one flagged to have bodies comprised wholly of cybernetics... + if((head_organ.species.name in hair_style.species_allowed) || (head_organ.species.bodyflags & ALL_RPARTS)) //If the head's species is in the list of allowed species for the hairstyle, or the head's species is one flagged to have bodies comprised wholly of cybernetics... var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s") if(head_organ.species.name == "Slime People") // I am el worstos hair_s.Blend(rgb(r_skin, g_skin, b_skin, 160), ICON_AND) @@ -484,7 +477,7 @@ var/global/list/damage_icon_parts = list() overlays_standing[FHAIR_OVER_LAYER] = null var/obj/item/organ/external/head/head_organ = get_organ("head") - if(!head_organ || head_organ.is_stump() || (head_organ.status & ORGAN_DESTROYED)) + if(!head_organ) if(update_icons) update_icons() return @@ -499,7 +492,7 @@ var/global/list/damage_icon_parts = list() if(head_organ.f_style) var/datum/sprite_accessory/facial_hair/facial_hair_style = facial_hair_styles_list[head_organ.f_style] if(facial_hair_style && facial_hair_style.species_allowed) - if((head_organ.species.name in facial_hair_style.species_allowed) || (head_organ.species.flags & ALL_RPARTS)) //If the head's species is in the list of allowed species for the hairstyle, or the head's species is one flagged to have bodies comprised wholly of cybernetics... + if((head_organ.species.name in facial_hair_style.species_allowed) || (head_organ.species.bodyflags & ALL_RPARTS)) //If the head's species is in the list of allowed species for the hairstyle, or the head's species is one flagged to have bodies comprised wholly of cybernetics... var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s") if(head_organ.species.name == "Slime People") // I am el worstos facial_s.Blend(rgb(r_skin, g_skin, b_skin, 160), ICON_AND) diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index da764cafda3..21f087eeeee 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -9,6 +9,7 @@ if(..()) . = 1 + handle_blood() for(var/obj/item/organ/internal/O in internal_organs) O.on_life() handle_changeling() @@ -54,7 +55,7 @@ if(losebreath > 0) AdjustLoseBreath(-1) if(prob(10)) - spawn emote("gasp") + emote("gasp") if(istype(loc, /obj/)) var/obj/loc_as_obj = loc loc_as_obj.handle_internal_lifeform(src, 0) @@ -114,8 +115,7 @@ //OXYGEN if(O2_partialpressure < safe_oxy_min) //Not enough oxygen if(prob(20)) - spawn(0) - emote("gasp") + emote("gasp") if(O2_partialpressure > 0) var/ratio = safe_oxy_min/O2_partialpressure adjustOxyLoss(min(5*ratio, 3)) @@ -145,7 +145,7 @@ if(world.time - co2overloadtime > 300) adjustOxyLoss(8) if(prob(20)) - spawn(0) emote("cough") + emote("cough") else co2overloadtime = 0 @@ -168,7 +168,7 @@ AdjustSleeping(2, bound_lower = 0, bound_upper = 10) else if(SA_partialpressure > 0.01) if(prob(20)) - spawn(0) emote(pick("giggle","laugh")) + emote(pick("giggle","laugh")) //BREATH TEMPERATURE handle_breath_temperature(breath) @@ -183,9 +183,10 @@ if(internal) if(internal.loc != src) internal = null - if(!wear_mask || !(wear_mask.flags & AIRTIGHT)) //not wearing mask or non-breath mask - if(!head || !(head.flags & AIRTIGHT)) //not wearing helmet or non-breath helmet - internal = null //turn off internals + if(!get_organ_slot("breathing_tube")) + if(!wear_mask || !(wear_mask.flags & AIRTIGHT)) //not wearing mask or non-breath mask + if(!head || !(head.flags & AIRTIGHT)) //not wearing helmet or non-breath helmet + internal = null //turn off internals if(internal) update_internals_hud_icon(1) @@ -195,7 +196,18 @@ return +/mob/living/carbon/handle_diseases() + for(var/thing in viruses) + var/datum/disease/D = thing + if(prob(D.infectivity)) + D.spread() + + if(stat != DEAD) + D.stage_act() + //remember to remove the "proc" of the child procs of these. +/mob/living/carbon/proc/handle_blood() + return /mob/living/carbon/proc/handle_changeling() return @@ -235,21 +247,18 @@ wetlevel = max(wetlevel - 1,0) /mob/living/carbon/handle_stomach() - spawn(0) - for(var/mob/living/M in stomach_contents) - if(M.loc != src) + for(var/mob/living/M in stomach_contents) + if(M.loc != src) + stomach_contents.Remove(M) + continue + if(stat != DEAD) + if(M.stat == DEAD) stomach_contents.Remove(M) + qdel(M) continue - if(istype(M, /mob/living) && stat != 2) - if(M.stat == 2) - M.death(1) - stomach_contents.Remove(M) - qdel(M) - continue - if(mob_master.current_cycle%3==1) - if(!(M.status_flags & GODMODE)) - M.adjustBruteLoss(5) - nutrition += 10 + if(mob_master.current_cycle%3==1) + M.adjustBruteLoss(5) + nutrition += 10 //This updates the health and status of the mob (conscious, unconscious, dead) /mob/living/carbon/handle_regular_status_updates() @@ -346,8 +355,7 @@ handle_dreams() adjustStaminaLoss(-10) if(prob(10) && health && hal_screwyhud != SCREWYHUD_CRIT) - spawn(0) - emote("snore") + emote("snore") // Keep SSD people asleep if(player_logged) Sleeping(2) diff --git a/code/modules/mob/living/carbon/shock.dm b/code/modules/mob/living/carbon/shock.dm deleted file mode 100644 index b86f88c4ff4..00000000000 --- a/code/modules/mob/living/carbon/shock.dm +++ /dev/null @@ -1,38 +0,0 @@ -/mob/living/var/traumatic_shock = 0 -/mob/living/carbon/var/shock_stage = 0 - -// proc to find out in how much pain the mob is at the moment -/mob/living/carbon/proc/updateshock() - src.traumatic_shock = \ - 1 * src.getOxyLoss() + \ - 1 * src.getToxLoss() + \ - 1 * src.getFireLoss() + \ - 1 * src.getBruteLoss() + \ - 1 * src.getCloneLoss() - - if(reagents) - for(var/datum/reagent/R in reagents.reagent_list) - if(R.shock_reduction) - src.traumatic_shock -= R.shock_reduction // now you too can varedit cyanide to reduce shock by 1000 - Iamgoofball - if(src.slurring) - src.traumatic_shock -= 10 - - // broken or ripped off organs will add quite a bit of pain - if(istype(src,/mob/living/carbon/human)) - var/mob/living/carbon/human/M = src - for(var/obj/item/organ/external/organ in M.bodyparts) - if(!organ) - continue - else if(organ.status & ORGAN_BROKEN || organ.open) - src.traumatic_shock += 15 - if(organ.status & ORGAN_SPLINTED) - src.traumatic_shock -= 15 - - if(src.traumatic_shock < 0) - src.traumatic_shock = 0 - - return src.traumatic_shock - - -/mob/living/carbon/proc/handle_shock() - updateshock() diff --git a/code/modules/mob/living/carbon/slime/slime.dm b/code/modules/mob/living/carbon/slime/slime.dm index 94ae7482437..28e457fd128 100644 --- a/code/modules/mob/living/carbon/slime/slime.dm +++ b/code/modules/mob/living/carbon/slime/slime.dm @@ -281,11 +281,9 @@ if(prob(90) && !client) Discipline++ - spawn() - SStun = 1 - sleep(rand(45,60)) - if(src) - SStun = 0 + SStun = 1 + spawn(rand(45,60)) + SStun = 0 Victim = null anchored = 0 @@ -309,11 +307,9 @@ if(Discipline == 1) attacked = 0 - spawn() - SStun = 1 - sleep(rand(55,65)) - if(src) - SStun = 0 + SStun = 1 + spawn(rand(55,65)) + SStun = 0 Victim = null anchored = 0 @@ -439,9 +435,8 @@ if(Discipline == 1) attacked = 0 - spawn() - SStun = 1 - sleep(rand(5,20)) + SStun = 1 + spawn(rand(5,20)) SStun = 0 spawn(0) @@ -491,9 +486,8 @@ Target = null anchored = 0 - spawn() - SStun = 1 - sleep(rand(5,20)) + SStun = 1 + spawn(rand(5,20)) SStun = 0 spawn(0) @@ -513,9 +507,8 @@ Discipline++ if(Discipline == 1) attacked = 0 - spawn() - SStun = 1 - sleep(rand(5,20)) + SStun = 1 + spawn(rand(5,20)) SStun = 0 Victim = null diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index ffd1fb9cd60..96caf40b191 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -8,7 +8,7 @@ Returns standard 0 if fail */ -/mob/living/proc/apply_damage(var/damage = 0, var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/sharp = 0, var/edge = 0, var/used_weapon = null) +/mob/living/proc/apply_damage(var/damage = 0, var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/sharp = 0, var/used_weapon = null) blocked = (100-blocked)/100 if(!damage || (blocked <= 0)) return 0 switch(damagetype) @@ -27,6 +27,22 @@ updatehealth() return 1 +/mob/living/proc/apply_damage_type(damage = 0, damagetype = BRUTE) //like apply damage except it always uses the damage procs + switch(damagetype) + if(BRUTE) + return adjustBruteLoss(damage) + if(BURN) + return adjustFireLoss(damage) + if(TOX) + return adjustToxLoss(damage) + if(OXY) + return adjustOxyLoss(damage) + if(CLONE) + return adjustCloneLoss(damage) + if(STAMINA) + return adjustStaminaLoss(damage) + if(BRAIN) + return adjustBrainLoss(damage) /mob/living/proc/apply_damages(var/brute = 0, var/burn = 0, var/tox = 0, var/oxy = 0, var/clone = 0, var/def_zone = null, var/blocked = 0, var/stamina = 0) if(blocked >= 100) return 0 diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index c5ce705ba17..8a043dbf591 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -3,4 +3,12 @@ clear_fullscreens() update_action_buttons_icon() + + for(var/s in ownedSoullinks) + var/datum/soullink/S = s + S.ownerDies(gibbed, src) + for(var/s in sharedSoullinks) + var/datum/soullink/S = s + S.sharerDies(gibbed, src) + ..(gibbed) diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index b85146b8b63..8db2b9f54a2 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -15,20 +15,22 @@ blinded = null if(stat != DEAD) - //Breathing, if applicable - handle_breathing() + //Chemicals in the body + handle_chemicals_in_body() //Mutations and radiation handle_mutations_and_radiation() - //Chemicals in the body - handle_chemicals_in_body() + //Breathing, if applicable + handle_breathing() //Random events (vomiting etc) handle_random_events() . = 1 + handle_diseases() + //Handle temperature/pressure differences between body and environment if(environment) handle_environment(environment) @@ -69,6 +71,9 @@ /mob/living/proc/handle_chemicals_in_body() return +/mob/living/proc/handle_diseases() + return + /mob/living/proc/handle_random_events() return diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 90003c12e65..7c1968d4004 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -168,23 +168,23 @@ //same as above /mob/living/pointed(atom/A as mob|obj|turf in view()) - if(incapacitated()) - return 0 + if(incapacitated(ignore_lying = TRUE)) + return FALSE if(status_flags & FAKEDEATH) - return 0 + return FALSE if(!..()) - return 0 + return FALSE var/obj/item/hand_item = get_active_hand() if(istype(hand_item, /obj/item/weapon/gun) && A != hand_item) if(a_intent == INTENT_HELP || !ismob(A)) visible_message("[src] points to [A] with [hand_item]") - return 1 + return TRUE A.visible_message("[src] points [hand_item] at [A]!", "[src] points [hand_item] at you!") A << 'sound/weapons/TargetOn.ogg' - return 1 + return TRUE visible_message("[src] points to [A]") - return 1 + return TRUE /mob/living/verb/succumb() set hidden = 1 @@ -502,7 +502,8 @@ var/mob/living/carbon/C = src C.handcuffed = initial(C.handcuffed) - for(var/datum/disease/D in C.viruses) + for(var/thing in C.viruses) + var/datum/disease/D = thing D.cure(0) // restore all of the human's blood and reset their shock stage @@ -512,6 +513,7 @@ human_mob.restore_blood() human_mob.shock_stage = 0 human_mob.decaylevel = 0 + human_mob.remove_all_embedded_objects() restore_all_organs() surgeries.Cut() //End all surgeries. @@ -523,6 +525,7 @@ stat = CONSCIOUS update_fire() regenerate_icons() + restore_blood() if(human_mob) human_mob.update_eyes() human_mob.update_dna() @@ -576,10 +579,10 @@ var/pull_dir = get_dir(src, pulling) if(get_dist(src, pulling) > 1 || ((pull_dir - 1) & pull_dir)) // puller and pullee more than one tile away or in diagonal position - //if(isliving(pulling)) - //var/mob/living/M = pulling - //if(M.lying && !M.buckled && (prob(M.getBruteLoss() * 200 / M.maxHealth))) - //M.makeTrail(T) + if(isliving(pulling)) + var/mob/living/M = pulling + if(M.lying && !M.buckled && (prob(M.getBruteLoss() * 200 / M.maxHealth))) + M.makeTrail(T) pulling.Move(T, get_dir(pulling, T)) // the pullee tries to reach our previous position if(pulling && get_dist(src, pulling) > 1) // the pullee couldn't keep up stop_pulling() @@ -600,6 +603,55 @@ return 1 return 0 +/mob/living/proc/makeTrail(turf/T) + if(!has_gravity(src)) + return + var/blood_exists = 0 + + for(var/obj/effect/decal/cleanable/trail_holder/C in loc) //checks for blood splatter already on the floor + blood_exists = 1 + if(isturf(loc)) + var/trail_type = getTrail() + if(trail_type) + var/brute_ratio = round(getBruteLoss()/maxHealth, 0.1) + if(blood_volume && blood_volume > max(BLOOD_VOLUME_NORMAL*(1 - brute_ratio * 0.25), 0))//don't leave trail if blood volume below a threshold + blood_volume = max(blood_volume - max(1, brute_ratio * 2), 0) //that depends on our brute damage. + var/newdir = get_dir(T, loc) + if(newdir != src.dir) + newdir = newdir | dir + if(newdir == 3) //N + S + newdir = NORTH + else if(newdir == 12) //E + W + newdir = EAST + if((newdir in cardinal) && (prob(50))) + newdir = turn(get_dir(T, loc), 180) + if(!blood_exists) + new /obj/effect/decal/cleanable/trail_holder(loc) + for(var/obj/effect/decal/cleanable/trail_holder/TH in loc) + if((!(newdir in TH.existing_dirs) || trail_type == "trails_1" || trail_type == "trails_2") && TH.existing_dirs.len <= 16) //maximum amount of overlays is 16 (all light & heavy directions filled) + TH.existing_dirs += newdir + TH.overlays.Add(image('icons/effects/blood.dmi', trail_type, dir = newdir)) + TH.transfer_mob_blood_dna(src) + if(ishuman(src)) + var/mob/living/carbon/human/H = src + if(H.species.blood_color) + TH.color = H.species.blood_color + else + TH.color = "#A10808" + +/mob/living/carbon/human/makeTrail(turf/T) + + if((NO_BLOOD in species.species_traits) || species.exotic_blood || !bleed_rate || bleedsuppress) + return + ..() + +/mob/living/proc/getTrail() + if(getBruteLoss() < 300) + return pick("ltrails_1", "ltrails_2") + else + return pick("trails_1", "trails_2") + + /*////////////////////// START RESIST PROCS */////////////////////// @@ -950,3 +1002,41 @@ to_chat(src, "You don't have the dexterity to do this!") return 0 return 1 + +/mob/living/proc/get_taste_sensitivity() + return 1 + +/mob/living/proc/taste_reagents(datum/reagents/tastes) + if(!get_taste_sensitivity())//this also works for IPCs and stuff that returns 0 here + return + + var/do_not_taste_at_all = 1//so we don't spam with recent tastes + + var/taste_sum = 0 + var/list/taste_list = list()//associative list so we can stack stuff that tastes the same + var/list/final_taste_list = list()//final list of taste strings + + for(var/datum/reagent/R in tastes.reagent_list) + taste_sum += R.volume * R.taste_strength + if(!R.taste_message)//set to null; no taste, like water + continue + taste_list[R.taste_message] += R.volume * R.taste_strength + + for(var/R in taste_list) + if(recent_tastes[R] && (world.time - recent_tastes[R] < 12 SECONDS)) + continue + + do_not_taste_at_all = 0//something was fresh enough to taste; could still be bland enough to be unrecognizable + + if(taste_list[R] / taste_sum >= 0.15 / get_taste_sensitivity())//we return earlier if the proc returns a 0; won't break the universe + final_taste_list += R + recent_tastes[R] = world.time + + if(do_not_taste_at_all) + return //no message spam + + if(final_taste_list.len == 0)//too many reagents - none meet their thresholds + to_chat(src, "You you can't really make out what you're tasting...") + return + + to_chat(src, "You can taste [english_list(final_taste_list)].") diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 548f1fb357b..d757aff3ada 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -37,16 +37,15 @@ /mob/living/proc/getarmor(var/def_zone, var/type) return 0 +/mob/living/proc/is_mouth_covered(head_only = FALSE, mask_only = FALSE) + return FALSE + +/mob/living/proc/is_eyes_covered(check_glasses = TRUE, check_head = TRUE, check_mask = TRUE) + return FALSE /mob/living/bullet_act(var/obj/item/projectile/P, var/def_zone) //Armor var/armor = run_armor_check(def_zone, P.flag, armour_penetration = P.armour_penetration) - var/proj_sharp = is_sharp(P) - var/proj_edge = has_edge(P) - if((proj_sharp || proj_edge) && prob(getarmor(def_zone, P.flag))) - proj_sharp = 0 - proj_edge = 0 - if(!P.nodamage) apply_damage(P.damage, P.damage_type, def_zone, armor) if(P.dismemberment) @@ -78,7 +77,7 @@ if(istype(AM, /obj/item)) var/obj/item/I = AM var/zone = ran_zone("chest", 65)//Hits a random part of the body, geared towards the chest - var/dtype = BRUTE + var/dtype = BRUTE var/volume = I.get_volume_by_throwforce_and_or_w_class() if(istype(I, /obj/item/weapon)) var/obj/item/weapon/W = I @@ -97,7 +96,7 @@ visible_message("[src] has been hit by [I].", "[src] has been hit by [I].") var/armor = run_armor_check(zone, "melee", "Your armor has protected your [parse_zone(zone)].", "Your armor has softened hit to your [parse_zone(zone)].", I.armour_penetration) - apply_damage(I.throwforce, dtype, zone, armor, is_sharp(I), has_edge(I), I) + apply_damage(I.throwforce, dtype, zone, armor, is_sharp(I), I) if(I.thrownby) add_logs(I.thrownby, src, "hit", I) else @@ -266,6 +265,4 @@ if(!supress_message) visible_message("[user] has grabbed [src] passively!") -/mob/living/incapacitated() - if(stat || paralysis || stunned || weakened || restrained()) - return 1 + return G \ No newline at end of file diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 397ce90af6c..c120742f7c0 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -59,3 +59,6 @@ var/tesla_ignore = FALSE var/list/say_log = list() //a log of what we've said, plain text, no spans or junk, essentially just each individual "message" + + var/list/recent_tastes = list() + var/blood_volume = 0 //how much blood the mob has diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm index ccd0f652b68..f360d07a4cb 100644 --- a/code/modules/mob/living/silicon/ai/say.dm +++ b/code/modules/mob/living/silicon/ai/say.dm @@ -55,7 +55,7 @@ if(mob_to_track) track = "[speaker_name] ([jobname])" - track += "\[OPEN\]" + track += "\[O\]" return track @@ -66,7 +66,6 @@ */ var/announcing_vox = 0 // Stores the time of the last announcement -var/const/VOX_CHANNEL = 200 var/const/VOX_DELAY = 100 var/const/VOX_PATH = "sound/vox_fem/" @@ -136,11 +135,14 @@ var/const/VOX_PATH = "sound/vox_fem/" play_vox_word(word, src.z, null) -/proc/play_vox_word(var/word, var/z_level, var/mob/only_listener) +/proc/play_vox_word(word, z_level, mob/only_listener) + word = lowertext(word) + if(vox_sounds[word]) + var/sound_file = vox_sounds[word] - var/sound/voice = sound(sound_file, wait = 1, channel = VOX_CHANNEL) + var/sound/voice = sound(sound_file, wait = 1, channel = CHANNEL_VOX) voice.status = SOUND_STREAM // If there is no single listener, broadcast to everyone in the same z level diff --git a/code/modules/mob/living/silicon/death.dm b/code/modules/mob/living/silicon/death.dm index 6dc6ae21c46..b5c658c6c62 100644 --- a/code/modules/mob/living/silicon/death.dm +++ b/code/modules/mob/living/silicon/death.dm @@ -14,7 +14,7 @@ playsound(src.loc, 'sound/goonstation/effects/robogib.ogg', 50, 1) // flick("gibbed-r", animation) - robogibs(loc, viruses) + robogibs(loc) dead_mob_list -= src spawn(15) diff --git a/code/modules/mob/living/silicon/pai/recruit.dm b/code/modules/mob/living/silicon/pai/recruit.dm index ff0bcacd903..f29b402dd50 100644 --- a/code/modules/mob/living/silicon/pai/recruit.dm +++ b/code/modules/mob/living/silicon/pai/recruit.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - // Recruiting observers to play as pAIs var/datum/paiController/paiController // Global handler for pAI candidates diff --git a/code/modules/mob/living/silicon/robot/component.dm b/code/modules/mob/living/silicon/robot/component.dm index 2c9ab233eda..1c514a891ca 100644 --- a/code/modules/mob/living/silicon/robot/component.dm +++ b/code/modules/mob/living/silicon/robot/component.dm @@ -34,13 +34,15 @@ installed = -1 uninstall() -/datum/robot_component/proc/take_damage(brute, electronics, sharp, edge) - if(installed != 1) return +/datum/robot_component/proc/take_damage(brute, electronics, sharp) + if(installed != 1) + return brute_damage += brute electronics_damage += electronics - if(brute_damage + electronics_damage >= max_damage) destroy() + if(brute_damage + electronics_damage >= max_damage) + destroy() /datum/robot_component/proc/heal_damage(brute, electronics) if(installed != 1) diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index 4b7d0a04a27..99b79d35360 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -14,7 +14,7 @@ playsound(src.loc, 'sound/goonstation/effects/robogib.ogg', 50, 1) flick("gibbed-r", animation) - robogibs(loc, viruses) + robogibs(loc) living_mob_list -= src dead_mob_list -= src diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index 282f97c4dc4..c0e8af8e998 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -188,6 +188,9 @@ lawchanges.Add("[time] : [H.name]([H.key]) emagged [name]([key])") emagged = 1 + icon_state = "repairbot-emagged" + holder_type = /obj/item/weapon/holder/drone/emagged + update_icons() lawupdate = 0 connected_ai = null clear_supplied_laws() diff --git a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm b/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm index ba4c616b2f3..9306e2d78d7 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm @@ -91,6 +91,9 @@ H.righthand_file = 'icons/mob/custom_synthetic/custom_righthand.dmi' H.icon_state = "[icon_state]" H.item_state = "[icon_state]_hand" + else if(emagged) + H.icon_state = "drone-emagged" + H.item_state = "drone-emagged" else H.icon_state = "drone" H.item_state = "drone" 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 056a65a8e66..5228803bd9d 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_console.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_console.dm @@ -53,7 +53,7 @@ if(..()) return - if(!allowed(usr)) + if(!allowed(usr) && !usr.can_admin_interact()) to_chat(usr, "Access denied.") return 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 16c8f1a3ef0..d1e81013dce 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -161,8 +161,8 @@ name = "matter decompiler" desc = "Eating trash, bits of glass, or other debris will replenish your stores." - icon = 'icons/obj/device.dmi' - icon_state = "decompiler" + icon = 'icons/obj/toy.dmi' + icon_state = "minigibber" //Metal, glass, wood, plastic. var/list/stored_comms = list( @@ -260,10 +260,6 @@ stored_comms["glass"]++ else if(istype(W,/obj/item/ammo_casing)) stored_comms["metal"]++ - else if(istype(W,/obj/item/weapon/shard/shrapnel)) - stored_comms["metal"]++ - stored_comms["metal"]++ - stored_comms["metal"]++ else if(istype(W,/obj/item/weapon/shard)) stored_comms["glass"]++ stored_comms["glass"]++ 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 187a32633b6..767a78e1f77 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm @@ -108,6 +108,12 @@ to_chat(usr, "This role is not yet available to you. You need to wait another [player_age_check] days.") return + var/pt_req = role_available_in_playtime(client, ROLE_DRONE) + if(pt_req) + var/pt_req_string = get_exp_format(pt_req) + to_chat(usr, "This role is not yet available to you. Play another [pt_req_string] to unlock it.") + return + var/deathtime = world.time - src.timeofdeath var/joinedasobserver = 0 if(istype(src,/mob/dead/observer)) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 1f4430c3aea..3de8b868430 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1205,13 +1205,11 @@ var/list/robot_verbs_default = list( canmove = 1 scrambledcodes = 1 //Disconnect it's camera so it's not so easily tracked. - if(src.camera) - qdel(src.camera) - src.camera = null - // I'm trying to get the Cyborg to not be listed in the camera list - // Instead of being listed as "deactivated". The downside is that I'm going - // to have to check if every camera is null or not before doing anything, to prevent runtime errors. - // I could change the network to null but I don't know what would happen, and it seems too hacky for me. + QDEL_NULL(src.camera) + // I'm trying to get the Cyborg to not be listed in the camera list + // Instead of being listed as "deactivated". The downside is that I'm going + // to have to check if every camera is null or not before doing anything, to prevent runtime errors. + // I could change the network to null but I don't know what would happen, and it seems too hacky for me. /mob/living/silicon/robot/proc/ResetSecurityCodes() set category = "Robot Commands" diff --git a/code/modules/mob/living/silicon/robot/robot_damage.dm b/code/modules/mob/living/silicon/robot/robot_damage.dm index 780a622906a..f84696c9964 100644 --- a/code/modules/mob/living/silicon/robot/robot_damage.dm +++ b/code/modules/mob/living/silicon/robot/robot_damage.dm @@ -98,11 +98,11 @@ var/datum/robot_component/armour/A = get_armour() if(A) - A.take_damage(brute,burn,sharp,edge) + A.take_damage(brute, burn, sharp) return var/datum/robot_component/C = pick(components) - C.take_damage(brute,burn,sharp,edge) + C.take_damage(brute, burn, sharp) /mob/living/silicon/robot/heal_overall_damage(var/brute, var/burn) var/list/datum/robot_component/parts = get_damaged_components(brute,burn) @@ -149,7 +149,7 @@ var/datum/robot_component/armour/A = get_armour() if(A) - A.take_damage(brute,burn,sharp) + A.take_damage(brute, burn, sharp) return while(parts.len && (brute>0 || burn>0) ) @@ -158,7 +158,7 @@ var/brute_was = picked.brute_damage var/burn_was = picked.electronics_damage - picked.take_damage(brute,burn) + picked.take_damage(brute, burn) brute -= (picked.brute_damage - brute_was) burn -= (picked.electronics_damage - burn_was) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 31b4c826e9d..4d5ea6b983d 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -255,8 +255,9 @@ modules += new /obj/item/weapon/reagent_containers/food/condiment/enzyme(src) modules += new /obj/item/weapon/pen(src) modules += new /obj/item/weapon/razor(src) - modules += new /obj/item/device/violin(src) - modules += new /obj/item/device/guitar(src) + modules += new /obj/item/device/instrument/violin(src) + modules += new /obj/item/device/instrument/guitar(src) + modules += new /obj/item/device/instrument/eguitar(src) var/obj/item/weapon/rsf/M = new /obj/item/weapon/rsf(src) M.matter = 30 diff --git a/code/modules/mob/living/silicon/robot/update_status.dm b/code/modules/mob/living/silicon/robot/update_status.dm index a28aae28278..ca755748231 100644 --- a/code/modules/mob/living/silicon/robot/update_status.dm +++ b/code/modules/mob/living/silicon/robot/update_status.dm @@ -1,7 +1,7 @@ // No args for restraints because robots don't have those -/mob/living/silicon/robot/incapacitated() +/mob/living/silicon/robot/incapacitated(ignore_restraints = FALSE, ignore_grab = FALSE, ignore_lying = FALSE) if(stat || lockcharge || weakened || stunned || paralysis || !is_component_functioning("actuator")) - return 1 + return TRUE /mob/living/silicon/robot/update_stat() if(status_flags & GODMODE) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 16b81582faa..74daf90fa4e 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -144,11 +144,11 @@ // This adds the basic clock, shuttle recall timer, and malf_ai info to all silicon lifeforms /mob/living/silicon/Stat() + ..() if(statpanel("Status")) show_stat_station_time() show_stat_emergency_shuttle_eta() show_system_integrity() - ..() //Silicon mob language procs diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index f9f1bbf1c08..a71fbe2ae03 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -167,9 +167,8 @@ mode = BOT_CLEANING spawn(50) if(mode == BOT_CLEANING) - qdel(target) + QDEL_NULL(target) anchored = 0 - target = null mode = BOT_IDLE icon_state = "cleanbot[on]" @@ -222,4 +221,4 @@ text("[on ? "On" : "Off"]")) if(istype(A,/obj/effect/decal/cleanable)) clean(A) else - ..() \ No newline at end of file + ..() diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index 50475fe45db..2d863b99b4a 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -398,7 +398,8 @@ return 1 if(treat_virus) - for(var/datum/disease/D in C.viruses) + for(var/thing in C.viruses) + var/datum/disease/D = thing //the medibot can't detect viruses that are undetectable to Health Analyzers or Pandemic machines. if(D.visibility_flags & HIDDEN_SCANNER || D.visibility_flags & HIDDEN_PANDEMIC) return 0 @@ -451,7 +452,8 @@ else if(treat_virus) var/virus = 0 - for(var/datum/disease/D in C.viruses) + for(var/thing in C.viruses) + var/datum/disease/D = thing //detectable virus if((!(D.visibility_flags & HIDDEN_SCANNER)) || (!(D.visibility_flags & HIDDEN_PANDEMIC))) if(D.severity != NONTHREAT) //virus is harmful diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 9f8725067b0..3ea36bcc2cc 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - // Mulebot - carries crates around for Quartermaster // Navigates via floor navbeacons // Remote Controlled from QM's PDA @@ -568,23 +566,6 @@ mode = BOT_NO_ROUTE -/mob/living/simple_animal/bot/mulebot/Move(turf/simulated/next) - var/turf/simulated/last = loc - - if(istype(last) && bloodiness) - last.AddTracks(/obj/effect/decal/cleanable/blood/tracks/wheels, currentDNA, 0, get_dir(last, next), currentBloodColor) - - . = ..() - - if(. && istype(next)) - if(bloodiness) - next.AddTracks(/obj/effect/decal/cleanable/blood/tracks/wheels, currentDNA, get_dir(last, next), 0, currentBloodColor) - bloodiness-- - - for(var/mob/living/carbon/human/H in next) - if(H != load) - RunOver(H) - // calculates a path to the current destination // given an optional turf to avoid /mob/living/simple_animal/bot/mulebot/calc_path(turf/avoid = null) @@ -668,6 +649,30 @@ return +/mob/living/simple_animal/bot/mulebot/Move(turf/simulated/next) + . = ..() + + if(. && istype(next)) + if(bloodiness) + var/obj/effect/decal/cleanable/blood/tracks/B = locate() in next + if(!B) + B = new /obj/effect/decal/cleanable/blood/tracks(loc) + if(blood_DNA && blood_DNA.len) + B.blood_DNA |= blood_DNA.Copy() + B.basecolor = currentBloodColor + var/newdir = get_dir(next, loc) + if(newdir == dir) + B.setDir(newdir) + else + newdir = newdir | dir + if(newdir == 3) + newdir = 1 + else if(newdir == 12) + newdir = 4 + B.setDir(newdir) + B.update_icon() + bloodiness-- + // called when bot bumps into anything /mob/living/simple_animal/bot/mulebot/Bump(atom/obs) if(!wires.MobAvoid()) // usually just bumps, but if avoidance disabled knock over mobs @@ -697,21 +702,18 @@ H.apply_damage(0.5*damage, BRUTE, "l_arm", run_armor_check("l_arm", "melee")) H.apply_damage(0.5*damage, BRUTE, "r_arm", run_armor_check("r_arm", "melee")) - var/obj/effect/decal/cleanable/blood/B = new(loc) - B.blood_DNA = list() - B.blood_DNA[H.dna.unique_enzymes] = H.dna.b_type - currentDNA = B.blood_DNA + + var/turf/T = get_turf(src) + H.add_mob_blood(H) + H.add_splatter_floor(T) bloodiness += 4 - currentBloodColor = "#A10808" - if(istype(H)) - var/datum/reagent/blood/bld = H.get_blood(H.vessel) - if(bld.data["blood_colour"]) - currentBloodColor = bld.data["blood_colour"] - return - B.basecolor = currentBloodColor - B.update_icon() + var/list/blood_dna = H.get_blood_dna_list() + if(blood_dna) + transfer_blood_dna(blood_dna) + currentBloodColor = H.species.blood_color + return /mob/living/simple_animal/bot/mulebot/bot_control_message(command, mob/user, user_turf) switch(command) diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index bf4ac4a1664..45029891575 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -22,12 +22,13 @@ see_in_dark = 5 childtype = /mob/living/simple_animal/pet/corgi/puppy simplespecies = /mob/living/simple_animal/pet/corgi + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY var/shaved = 0 var/obj/item/inventory_head var/obj/item/inventory_back var/facehugger var/default_atmos_requirements = 0 - gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY + var/last_eaten = 0 /mob/living/simple_animal/pet/corgi/New() ..() diff --git a/code/modules/mob/living/simple_animal/friendly/diona.dm b/code/modules/mob/living/simple_animal/friendly/diona.dm index 6bec35b98db..15d39ae2627 100644 --- a/code/modules/mob/living/simple_animal/friendly/diona.dm +++ b/code/modules/mob/living/simple_animal/friendly/diona.dm @@ -13,6 +13,8 @@ pass_flags = PASSTABLE | PASSMOB mob_size = MOB_SIZE_SMALL ventcrawler = 2 + atmos_requirements = list("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 maxHealth = 50 health = 50 @@ -176,7 +178,7 @@ if(!M || !src) return - if(M.species.flags & NO_BLOOD) + if(NO_BLOOD in M.species.species_traits) to_chat(src, "That donor has no blood to take.") return diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 4f3d4588378..b7bd4fc46c1 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -27,6 +27,7 @@ stop_automated_movement_when_pulled = 1 var/milk_content = 0 can_collar = 1 + blood_volume = BLOOD_VOLUME_NORMAL /mob/living/simple_animal/hostile/retaliate/goat/handle_automated_movement() ..() @@ -110,6 +111,7 @@ var/milk_content = 0 can_collar = 1 gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY + blood_volume = BLOOD_VOLUME_NORMAL /mob/living/simple_animal/cow/New() ..() @@ -312,6 +314,7 @@ var/global/chicken_count = 0 maxHealth = 50 can_collar = 1 gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY + blood_volume = BLOOD_VOLUME_NORMAL /mob/living/simple_animal/turkey name = "turkey" @@ -381,6 +384,7 @@ var/global/chicken_count = 0 maxHealth = 50 can_collar = 1 gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY + blood_volume = BLOOD_VOLUME_NORMAL /mob/living/simple_animal/walrus name = "walrus" @@ -404,3 +408,4 @@ var/global/chicken_count = 0 maxHealth = 50 can_collar = 1 gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY + blood_volume = BLOOD_VOLUME_NORMAL diff --git a/code/modules/mob/living/simple_animal/friendly/pet.dm b/code/modules/mob/living/simple_animal/friendly/pet.dm index 2d7bc63dc75..7202c8a4054 100644 --- a/code/modules/mob/living/simple_animal/friendly/pet.dm +++ b/code/modules/mob/living/simple_animal/friendly/pet.dm @@ -2,6 +2,7 @@ icon = 'icons/mob/pets.dmi' can_collar = 1 mob_size = MOB_SIZE_SMALL + blood_volume = BLOOD_VOLUME_NORMAL /mob/living/simple_animal/pet/attackby(var/obj/item/O as obj, var/mob/user as mob, params) if(istype(O, /obj/item/weapon/newspaper)) diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 911f66a5527..50fab332201 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -98,10 +98,8 @@ /mob/living/simple_animal/hostile/proc/ListTargets()//Step 1, find out what we can see - . = list() if(!search_objects) - var/list/Mobs = hearers(vision_range, targets_from) - src //Remove self, so we don't suicide - . += Mobs + . = hearers(vision_range, targets_from) - src //Remove self, so we don't suicide var/static/hostile_machines = typecacheof(list(/obj/machinery/porta_turret, /obj/mecha, /obj/spacepod)) @@ -109,8 +107,7 @@ if(can_see(targets_from, HM, vision_range)) . += HM else - var/list/Objects = oview(vision_range, targets_from) - . += Objects + . = oview(vision_range, targets_from) /mob/living/simple_animal/hostile/proc/FindTarget(var/list/possible_targets, var/HasTargetsList = 0)//Step 2, filter down possible targets to things we actually care about . = list() diff --git a/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm index 517b71a3a6d..a0f0a2b8b22 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm @@ -203,9 +203,9 @@ reagents.reaction(C, INGEST, fraction) reagents.trans_to(C, volume) -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/proc/link_host(mob/living/carbon/human/H) - faction = list("\ref[src]", "\ref[H]") // Hostile to everyone except the host. - H.vessel.trans_to(src, 30) +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/proc/link_host(mob/living/carbon/C) + faction = list("\ref[src]", "\ref[C]") // Hostile to everyone except the host. + C.transfer_blood_to(src, 30) color = mix_color_from_reagents(reagents.reagent_list) // Legion diff --git a/code/modules/mob/living/simple_animal/hostile/pirate.dm b/code/modules/mob/living/simple_animal/hostile/pirate.dm index d3fec4bf8d8..29c9923b5cd 100644 --- a/code/modules/mob/living/simple_animal/hostile/pirate.dm +++ b/code/modules/mob/living/simple_animal/hostile/pirate.dm @@ -26,6 +26,7 @@ /obj/item/weapon/melee/energy/sword/pirate) del_on_death = 1 faction = list("pirate") + sentience_type = SENTIENCE_OTHER /mob/living/simple_animal/hostile/pirate/ranged name = "Pirate Gunner" diff --git a/code/modules/mob/living/simple_animal/hostile/russian.dm b/code/modules/mob/living/simple_animal/hostile/russian.dm index 2f639d9e6f7..8e36e96c2af 100644 --- a/code/modules/mob/living/simple_animal/hostile/russian.dm +++ b/code/modules/mob/living/simple_animal/hostile/russian.dm @@ -25,7 +25,7 @@ loot = list(/obj/effect/landmark/mobcorpse/russian, /obj/item/weapon/kitchen/knife) del_on_death = 1 - + sentience_type = SENTIENCE_OTHER /mob/living/simple_animal/hostile/russian/ranged icon_state = "russianranged" diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index 469631951aa..470163315f3 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -25,6 +25,7 @@ status_flags = CANPUSH loot = list(/obj/effect/landmark/mobcorpse/syndicatesoldier) del_on_death = 1 + sentience_type = SENTIENCE_OTHER ///////////////Sword and shield//////////// diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/empress.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/empress.dm index 2d2c9af9bda..72e058a1b81 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/empress.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/empress.dm @@ -82,7 +82,7 @@ /mob/living/simple_animal/hostile/poison/terror_spider/black) S.spider_myqueen = spider_myqueen if(prob(sbpc)) - S.stillborn = 1 + S.stillborn = TRUE if(spider_growinstantly) S.amount_grown = 250 @@ -94,7 +94,7 @@ for(var/obj/structure/spider/eggcluster/terror_eggcluster/T in ts_egg_list) qdel(T) for(var/obj/structure/spider/spiderling/terror_spiderling/T in ts_spiderling_list) - T.stillborn = 1 + T.stillborn = TRUE to_chat(src, "All Terror Spiders, except yourself, will die off shortly.") diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm index b6e8a0680ae..f4ab38eda93 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm @@ -33,12 +33,15 @@ ventsmash_action.Grant(src) /mob/living/simple_animal/hostile/poison/terror_spider/mother/death(gibbed) + var/always_stillborn = FALSE + if(spider_awaymission && !is_away_level(z)) + always_stillborn = TRUE if(canspawn) canspawn = 0 for(var/i in 0 to 30) var/obj/structure/spider/spiderling/terror_spiderling/S = new /obj/structure/spider/spiderling/terror_spiderling(get_turf(src)) S.grow_as = pick(/mob/living/simple_animal/hostile/poison/terror_spider/red, /mob/living/simple_animal/hostile/poison/terror_spider/gray) - if(prob(66)) + if(always_stillborn || prob(66)) S.stillborn = 1 else if(prob(10)) S.grow_as = pick(/mob/living/simple_animal/hostile/poison/terror_spider/black, /mob/living/simple_animal/hostile/poison/terror_spider/green) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm index 3b6266e777b..a9032b8a13d 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm @@ -333,7 +333,7 @@ for(var/i in 1 to numlings) var/obj/structure/spider/spiderling/terror_spiderling/S = new /obj/structure/spider/spiderling/terror_spiderling(get_turf(src)) S.grow_as = /mob/living/simple_animal/hostile/poison/terror_spider/red - S.stillborn = 1 + S.stillborn = TRUE S.name = "Evil-Looking Spiderling" S.desc = "It moves very quickly, hisses loudly for its size... and has disproportionately large fangs. Hopefully it does not grow up..." if(!spider_can_fakelings) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm index d9c20c09172..2f92df3e562 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm @@ -10,16 +10,19 @@ anchored = 0 layer = 2.75 health = 3 - var/stillborn = 0 + var/stillborn = FALSE faction = list("terrorspiders") var/spider_myqueen = null var/use_vents = 1 var/list/enemies = list() var/immediate_ventcrawl = 0 + var/spider_awaymission = FALSE /obj/structure/spider/spiderling/terror_spiderling/New() ..() ts_spiderling_list += src + if(is_away_level(z)) + spider_awaymission = TRUE /obj/structure/spider/spiderling/terror_spiderling/Destroy() ts_spiderling_list -= src @@ -85,6 +88,8 @@ if(isturf(loc)) amount_grown += rand(0,2) if(amount_grown >= 100) + if(spider_awaymission && !is_away_level(z)) + stillborn = TRUE if(stillborn) die() else @@ -174,6 +179,6 @@ var/rnum = 5 - spiderling_number for(var/i=0, i[user] has [O.attack_verb.len ? "[pick(O.attack_verb)]": "attacked"] [src] with [O]!",\ "[user] has [O.attack_verb.len ? "[pick(O.attack_verb)]": "attacked"] you with [O]!") else @@ -432,7 +439,6 @@ "This weapon is ineffective, it does no damage.") adjustBruteLoss(damage) - /mob/living/simple_animal/movement_delay() . = ..() diff --git a/code/modules/mob/living/stat_states.dm b/code/modules/mob/living/stat_states.dm index 58c4221504d..812eeaa0821 100644 --- a/code/modules/mob/living/stat_states.dm +++ b/code/modules/mob/living/stat_states.dm @@ -37,9 +37,9 @@ // handles revival through other means than cloning or adminbus (defib, IPC repair) /mob/living/proc/update_revive(updating = TRUE) if(stat != DEAD) - return + return 0 if(!can_be_revived()) - return + return 0 add_logs(src, null, "came back to life at [atom_loc_line(get_turf(src))]", admin=0, print_attack_log = 0) stat = CONSCIOUS dead_mob_list -= src @@ -49,3 +49,11 @@ update_canmove() // update_blind_effects() updatehealth() + + for(var/s in ownedSoullinks) + var/datum/soullink/S = s + S.ownerRevives(src) + for(var/s in sharedSoullinks) + var/datum/soullink/S = s + S.sharerRevives(src) + return 1 diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 30fe030bdcb..b8d432d5609 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -330,6 +330,8 @@ SetParalysis(max(paralysis, amount), updating, force) /mob/living/SetParalysis(amount, updating = 1, force = 0) + if((!!amount) == (!!paralysis)) // We're not changing from + to 0 or vice versa + updating = FALSE if(status_flags & CANPARALYSE || force) paralysis = max(amount, 0) if(updating) @@ -358,9 +360,11 @@ SetSleeping(max(sleeping, amount), updating, no_alert) /mob/living/SetSleeping(amount, updating = 1, no_alert = FALSE) + if((!!amount) == (!!sleeping)) // We're not changing from + to 0 or vice versa + updating = FALSE sleeping = max(amount, 0) - update_sleeping_effects(no_alert) if(updating) + update_sleeping_effects(no_alert) update_stat() update_canmove() @@ -410,6 +414,8 @@ SetStunned(max(stunned, amount), updating, force) /mob/living/SetStunned(amount, updating = 1, force = 0) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned" + if((!!amount) == (!!stunned)) // We're not changing from + to 0 or vice versa + updating = FALSE if(status_flags & CANSTUN || force) stunned = max(amount, 0) if(updating) @@ -440,6 +446,8 @@ SetWeakened(max(weakened, amount), updating, force) /mob/living/SetWeakened(amount, updating = 1, force = 0) + if((!!amount) == (!!weakened)) // We're not changing from + to 0 or vice versa + updating = FALSE if(status_flags & CANWEAKEN || force) weakened = max(amount, 0) if(updating) diff --git a/code/modules/mob/living/update_status.dm b/code/modules/mob/living/update_status.dm index 257a4bc87c1..9466806a78b 100644 --- a/code/modules/mob/living/update_status.dm +++ b/code/modules/mob/living/update_status.dm @@ -56,9 +56,9 @@ return !(weakened || paralysis || stat || (status_flags & FAKEDEATH)) // Whether the mob is capable of actions or not -/mob/living/incapacitated(ignore_restraints = 0, ignore_grab = 0, ignore_lying = 0) - if(stat || paralysis || stunned || (weakened && lying) || (!ignore_restraints && restrained()) || (!ignore_lying && lying)) - return 1 +/mob/living/incapacitated(ignore_restraints = FALSE, ignore_grab = FALSE, ignore_lying = FALSE) + if(stat || paralysis || stunned || weakened || (!ignore_restraints && restrained()) || (!ignore_lying && lying)) + return TRUE // wonderful proc names, I know - used to check whether the blur overlay // should show or not diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index cb86d417fbc..03bc97c2d73 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -11,6 +11,10 @@ for(var/mob/dead/observer/M in following_mobs) M.following = null following_mobs = null + QDEL_LIST_ASSOC_VAL(tkgrabbed_objects) + for(var/I in tkgrabbed_objects) + qdel(tkgrabbed_objects[I]) + tkgrabbed_objects = null if(buckled) buckled.unbuckle_mob() if(viewing_alternate_appearances) @@ -863,19 +867,6 @@ var/list/slot_equipment_priority = list( \ /mob/proc/stripPanelEquip(obj/item/what, mob/who) return - -/mob/proc/pull_damage() - if(ishuman(src)) - var/mob/living/carbon/human/H = src - if(H.health <= config.health_threshold_softcrit) - for(var/name in H.bodyparts_by_name) - var/obj/item/organ/external/e = H.bodyparts_by_name[name] - if(e && H.lying) - if(((e.status & ORGAN_BROKEN && !(e.status & ORGAN_SPLINTED)) || e.status & ORGAN_BLEEDING) && (H.getBruteLoss() + H.getFireLoss() >= 100)) - return 1 - break - return 0 - /mob/MouseDrop(mob/M as mob) ..() if(M != usr) return @@ -1048,104 +1039,6 @@ var/list/slot_equipment_priority = list( \ /mob/proc/get_species() return "" -/mob/proc/get_visible_implants(var/class = 0) - var/list/visible_implants = list() - for(var/obj/item/O in embedded) - if(O.w_class > class) - visible_implants += O - return visible_implants - -/mob/proc/yank_out_object() - set category = "Object" - set name = "Yank out object" - set desc = "Remove an embedded item at the cost of bleeding and pain." - set src in view(1) - - if(!isliving(usr) || usr.next_move > world.time) - return - usr.changeNext_move(CLICK_CD_RESIST) - - if(usr.stat == 1) - to_chat(usr, "You are unconcious and cannot do that!") - return - - if(usr.restrained()) - to_chat(usr, "You are restrained and cannot do that!") - return - - var/mob/S = src - var/mob/U = usr - var/list/valid_objects = list() - var/self = null - - if(S == U) - self = 1 // Removing object from yourself. - - valid_objects = get_visible_implants(0) - if(!valid_objects.len) - if(self) - to_chat(src, "You have nothing stuck in your body that is large enough to remove.") - else - to_chat(U, "[src] has nothing stuck in their wounds that is large enough to remove.") - return - - var/obj/item/weapon/selection = input("What do you want to yank out?", "Embedded objects") in valid_objects - - if(self) - visible_message("[usr] appears to be trying to extract an object from their body.") - to_chat(src, "You attempt to get a good grip on [selection] in your body.") - else - visible_message("[usr] attempts to get a good grip on [selection] in [S]'s body.") - to_chat(U, "You attempt to get a good grip on [selection] in [S]'s body.") - - if(!do_after(U, 80, target = S)) - return - if(!selection || !S || !U) - return - - if(self) - visible_message("[src] rips [selection] out of their body.","You rip [selection] out of your body.") - else - visible_message("[usr] rips [selection] out of [src]'s body.","[usr] rips [selection] out of your body.") - valid_objects = get_visible_implants(0) - if(valid_objects.len == 1) //Yanking out last object - removing verb. - src.verbs -= /mob/proc/yank_out_object - - if(ishuman(src)) - - var/mob/living/carbon/human/H = src - var/obj/item/organ/external/affected - - for(var/obj/item/organ/external/organ in H.bodyparts) //Grab the organ holding the implant. - for(var/obj/item/weapon/O in organ.implants) - if(O == selection) - affected = organ - - affected.implants -= selection - H.shock_stage+=10 - - if(prob(10)) //I'M SO ANEMIC I COULD JUST -DIE-. - var/datum/wound/internal_bleeding/I = new () - affected.wounds += I - H.custom_pain("Something tears wetly in your [affected] as [selection] is pulled free!", 1) - - if(ishuman(U)) - var/mob/living/carbon/human/human_user = U - human_user.bloody_hands(H) - - selection.forceMove(get_turf(src)) - if(!(U.l_hand && U.r_hand)) - U.put_in_hands(selection) - - for(var/obj/item/weapon/O in pinned) - if(O == selection) - pinned -= O - if(!pinned.len) - anchored = 0 - return 1 - - - /mob/dead/observer/verb/respawn() set name = "Respawn as NPC" set category = "Ghost" diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 959913972fa..e275d855328 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -53,8 +53,6 @@ var/lastpuke = 0 var/unacidable = 0 var/can_strip = 1 - var/list/pinned = list() //List of things pinning this creature to walls (see living_defense.dm) - var/list/embedded = list() //Embedded items, since simple mobs don't have organs. var/list/languages = list() // For speaking/listening. var/list/abilities = list() // For species-derived or admin-given powers. var/list/speak_emote = list("says") // Verbs used when speaking. Defaults to 'say' if speak_emote is null. @@ -122,6 +120,7 @@ var/has_enabled_antagHUD = 0 var/antagHUD = 0 + var/can_change_intents = 1 //all mobs can change intents by default. //Generic list for proc holders. Only way I can see to enable certain verbs/procs. Should be modified if needed. var/proc_holder_list[] = list() @@ -146,7 +145,7 @@ //List of active diseases - var/list/viruses = list() // replaces var/datum/disease/virus + var/list/viruses = list() // list of all diseases in a mob var/list/resistances = list() mouse_drag_pointer = MOUSE_ACTIVE_POINTER @@ -198,3 +197,5 @@ var/list/actions = list() var/list/progressbars = null //for stacking do_after bars + + var/list/tkgrabbed_objects = list() // Assoc list of items to TK grabs diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index ecc987530ab..4b41b5084c6 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -167,9 +167,11 @@ */ + var/breathing_tube = affecting.get_organ_slot("breathing_tube") + if(state >= GRAB_NECK) affecting.Stun(5) //It will hamper your voice, being choked and all. - if(isliving(affecting)) + if(isliving(affecting) && !breathing_tube) var/mob/living/L = affecting L.adjustOxyLoss(1) @@ -177,7 +179,8 @@ //affecting.apply_effect(STUTTER, 5) //would do this, but affecting isn't declared as mob/living for some stupid reason. affecting.Stuttering(5) //It will hamper your voice, being choked and all. affecting.Weaken(5) //Should keep you down unless you get help. - affecting.AdjustLoseBreath(2, bound_lower = 0, bound_upper = 3) + if(!breathing_tube) + affecting.AdjustLoseBreath(2, bound_lower = 0, bound_upper = 3) adjust_position() @@ -290,7 +293,8 @@ msg_admin_attack("[key_name(assailant)] strangled (kill intent) [key_name(affecting)]") assailant.next_move = world.time + 10 - affecting.AdjustLoseBreath(1) + if(!affecting.get_organ_slot("breathing_tube")) + affecting.AdjustLoseBreath(1) affecting.setDir(WEST) adjust_position() diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index e1a1bdc1d8b..43b12417215 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -16,11 +16,9 @@ return 0 /mob/living/carbon/human/isSynthetic() - // If they are 100% robotic, they count as synthetic. - for(var/obj/item/organ/external/E in bodyparts) - if(!(E.status & ORGAN_ROBOT)) - return 0 - return 1 + if(get_species() == "Machine") + return 1 + return 0 /mob/proc/get_screen_colour() @@ -244,7 +242,7 @@ proc/slur(phrase, var/list/slurletters = ("'"))//use a different list as an inpu return sanitize(copytext(t,1,MAX_MESSAGE_LEN)) -proc/Gibberish(t, p)//t is the inputted message, and any value higher than 70 for p will cause letters to be replaced instead of added +/proc/Gibberish(t, p)//t is the inputted message, and any value higher than 70 for p will cause letters to be replaced instead of added /* Turn text into complete gibberish! */ var/returntext = "" for(var/i = 1, i <= length(t), i++) @@ -339,30 +337,31 @@ var/list/intents = list(INTENT_HELP,INTENT_DISARM,INTENT_GRAB,INTENT_HARM) set name = "a-intent" set hidden = 1 - if(ishuman(src) || isalienadult(src) || isbrain(src)) - switch(input) - if(INTENT_HELP,INTENT_DISARM,INTENT_GRAB,INTENT_HARM) - a_intent = input - if("right") - a_intent = intent_numeric((intent_numeric(a_intent)+1) % 4) - if("left") - a_intent = intent_numeric((intent_numeric(a_intent)+3) % 4) - if(hud_used && hud_used.action_intent) - hud_used.action_intent.icon_state = "[a_intent]" + if(can_change_intents) + if(ishuman(src) || isalienadult(src) || isbrain(src)) + switch(input) + if(INTENT_HELP,INTENT_DISARM,INTENT_GRAB,INTENT_HARM) + a_intent = input + if("right") + a_intent = intent_numeric((intent_numeric(a_intent)+1) % 4) + if("left") + a_intent = intent_numeric((intent_numeric(a_intent)+3) % 4) + if(hud_used && hud_used.action_intent) + hud_used.action_intent.icon_state = "[a_intent]" - else if(isrobot(src) || islarva(src)) - switch(input) - if(INTENT_HELP) - a_intent = INTENT_HELP - if(INTENT_HARM) - a_intent = INTENT_HARM - if("right","left") - a_intent = intent_numeric(intent_numeric(a_intent) - 3) - if(hud_used && hud_used.action_intent) - if(a_intent == INTENT_HARM) - hud_used.action_intent.icon_state = "harm" - else - hud_used.action_intent.icon_state = "help" + else if(isrobot(src) || islarva(src)) + switch(input) + if(INTENT_HELP) + a_intent = INTENT_HELP + if(INTENT_HARM) + a_intent = INTENT_HARM + if("right","left") + a_intent = intent_numeric(intent_numeric(a_intent) - 3) + if(hud_used && hud_used.action_intent) + if(a_intent == INTENT_HARM) + hud_used.action_intent.icon_state = "harm" + else + hud_used.action_intent.icon_state = "help" /mob/living/verb/mob_sleep() diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 5a52ccf8c9e..19c72238c3a 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - /mob/new_player var/ready = 0 var/spawning = 0//Referenced when you want to delete the new_player later on in the code. @@ -67,9 +65,9 @@ return /mob/new_player/Stat() + ..() if((!ticker) || ticker.current_state == GAME_STATE_PREGAME) statpanel("Lobby") // First tab during pre-game. - ..() statpanel("Status") if(client.statpanel == "Status" && ticker) @@ -125,7 +123,7 @@ var/mob/dead/observer/observer = new() src << browse(null, "window=playersetup") spawning = 1 - src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1)// MAD JAMS cant last forever yo + stop_sound_channel(CHANNEL_LOBBYMUSIC) observer.started_as_observer = 1 @@ -302,7 +300,9 @@ AnnounceArrival(character, rank, join_message) callHook("latespawn", list(character)) - + var/datum/job/thisjob = job_master.GetJob(rank) + if(!thisjob.is_position_available() && thisjob in job_master.prioritized_jobs) + job_master.prioritized_jobs -= thisjob qdel(src) @@ -451,7 +451,7 @@ client.prefs.real_name = random_name(client.prefs.gender) client.prefs.copy_to(new_character) - src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1)// MAD JAMS cant last forever yo + stop_sound_channel(CHANNEL_LOBBYMUSIC) if(mind) @@ -514,7 +514,7 @@ /mob/new_player/proc/is_species_whitelisted(datum/species/S) if(!S) return 1 - return is_alien_whitelisted(src, S.name) || !config.usealienwhitelist || !(S.flags & IS_WHITELISTED) + return is_alien_whitelisted(src, S.name) || !config.usealienwhitelist || !(IS_WHITELISTED in S.species_traits) /mob/new_player/get_species() var/datum/species/chosen_species diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 9a2ea2e3499..75f1872fdad 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -1,8 +1,13 @@ /datum/preferences //The mob should have a gender you want before running this proc. Will run fine without H /datum/preferences/proc/random_character(gender_override) + var/datum/species/S = all_species[species] + if(!istype(S)) //The species was invalid. Set the species to the default, fetch the datum for that species and generate a random character. + species = initial(species) + S = all_species[species] var/datum/robolimb/robohead - if(species == "Machine") + + if(S.bodyflags & ALL_RPARTS) var/head_model = "[!rlimb_data["head"] ? "Morpheus Cyberkinetics" : rlimb_data["head"]]" robohead = all_robolimbs[head_model] if(gender_override) @@ -12,38 +17,38 @@ underwear = random_underwear(gender, species) undershirt = random_undershirt(gender, species) socks = random_socks(gender, species) - if(species == "Vulpkanin") + if(body_accessory_by_species[species]) body_accessory = random_body_accessory(species) if(body_accessory == "None") //Required to prevent a bug where the information/icons in the character preferences screen wouldn't update despite the data being changed. body_accessory = null - if(species in list("Human", "Drask", "Vox")) + if(S.bodyflags & (HAS_SKIN_TONE|HAS_ICON_SKIN_TONE)) s_tone = random_skin_tone(species) h_style = random_hair_style(gender, species, robohead) f_style = random_facial_hair_style(gender, species, robohead) - if(species in list("Human", "Unathi", "Tajaran", "Skrell", "Machine", "Vulpkanin", "Vox")) + if(species in list("Human", "Unathi", "Tajaran", "Skrell", "Machine", "Wryn", "Vulpkanin", "Vox")) randomize_hair_color("hair") randomize_hair_color("facial") - if(species in list("Unathi", "Vulpkanin", "Tajaran", "Machine")) + if(S.bodyflags & HAS_HEAD_ACCESSORY) ha_style = random_head_accessory(species) var/list/colours = randomize_skin_color(1) r_headacc = colours["red"] g_headacc = colours["green"] b_headacc = colours["blue"] - if(species in list("Machine", "Tajaran", "Unathi", "Vulpkanin")) + if(S.bodyflags & HAS_HEAD_MARKINGS) m_styles["head"] = random_marking_style("head", species, robohead, null, alt_head) var/list/colours = randomize_skin_color(1) m_colours["head"] = rgb(colours["red"], colours["green"], colours["blue"]) - if(species in list("Human", "Unathi", "Grey", "Vulpkanin", "Tajaran", "Skrell", "Vox", "Drask")) + if(S.bodyflags & HAS_BODY_MARKINGS) m_styles["body"] = random_marking_style("body", species) var/list/colours = randomize_skin_color(1) m_colours["body"] = rgb(colours["red"], colours["green"], colours["blue"]) - if(species in list("Vox", "Vulpkanin")) //Species with tail markings. + if(S.bodyflags & HAS_TAIL_MARKINGS) //Species with tail markings. m_styles["tail"] = random_marking_style("tail", species, null, body_accessory) var/list/colours = randomize_skin_color(1) m_colours["tail"] = rgb(colours["red"], colours["green"], colours["blue"]) - if(species != "Machine") + if(!(S.bodyflags & ALL_RPARTS)) randomize_eyes_color() - if(species in list("Unathi", "Tajaran", "Skrell", "Vulpkanin")) + if(S.bodyflags & HAS_SKIN_COLOR) randomize_skin_color() backbag = 2 age = rand(AGE_MIN, AGE_MAX) @@ -254,7 +259,7 @@ icobase = 'icons/mob/human_races/r_human.dmi' var/fat="" - if(disabilities & DISABILITY_FLAG_FAT && current_species.flags & CAN_BE_FAT) + if(disabilities & DISABILITY_FLAG_FAT && (CAN_BE_FAT in current_species.species_traits)) fat="_fat" preview_icon = new /icon(icobase, "torso_[g][fat]") preview_icon.Blend(new /icon(icobase, "groin_[g]"), ICON_OVERLAY) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 51890a7337f..072300a85f8 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -20,7 +20,7 @@ /mob/proc/AIize() if(client) - src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1)// stop the jams for AIs + stop_sound_channel(CHANNEL_LOBBYMUSIC) var/mob/living/silicon/ai/O = new (loc,,,1)//No MMI but safety is in effect. O.invisibility = 0 diff --git a/code/modules/mob/update_status.dm b/code/modules/mob/update_status.dm index b9245fc1b6e..7e1df6171e7 100644 --- a/code/modules/mob/update_status.dm +++ b/code/modules/mob/update_status.dm @@ -43,8 +43,8 @@ /mob/proc/can_speak() return 1 -/mob/proc/incapacitated(ignore_restraints, ignore_grab) - return 0 +/mob/proc/incapacitated(ignore_restraints = FALSE, ignore_grab = FALSE, ignore_lying = FALSE) + return FALSE /mob/proc/restrained(ignore_grab) // All are created free diff --git a/code/modules/modular_computers/file_system/programs/generic/file_browser.dm b/code/modules/modular_computers/file_system/programs/generic/file_browser.dm index 20c4e92fd98..a868c0958ea 100644 --- a/code/modules/modular_computers/file_system/programs/generic/file_browser.dm +++ b/code/modules/modular_computers/file_system/programs/generic/file_browser.dm @@ -43,7 +43,7 @@ if(!istype(file)) data["error"] = "I/O ERROR: Unable to open file." else - data["filedata"] = pencode_to_html(file.stored_data, sign = 0, fields = 0) + data["filedata"] = pencode_to_html(file.stored_data, format = 1, sign = 0, fields = 0) data["filename"] = "[file.filename].[file.filetype]" else if(!computer || !HDD) diff --git a/code/modules/modular_computers/file_system/programs/generic/ntnrc_client.dm b/code/modules/modular_computers/file_system/programs/generic/ntnrc_client.dm index bfb90ab881b..7460d357b21 100644 --- a/code/modules/modular_computers/file_system/programs/generic/ntnrc_client.dm +++ b/code/modules/modular_computers/file_system/programs/generic/ntnrc_client.dm @@ -213,8 +213,7 @@ if("PRG_deletechannel") . = 1 if(channel && ((channel.operator == src) || netadmin_mode)) - qdel(channel) - channel = null + QDEL_NULL(channel) if("PRG_setpassword") . = 1 if(!channel || ((channel.operator != src) && !netadmin_mode)) @@ -228,4 +227,4 @@ if(newpassword == "nopassword") channel.password = "" else - channel.password = newpassword \ No newline at end of file + channel.password = newpassword diff --git a/code/modules/modular_computers/laptop_vendor.dm b/code/modules/modular_computers/laptop_vendor.dm index 2a6cb6f18a6..81281fe3dcc 100644 --- a/code/modules/modular_computers/laptop_vendor.dm +++ b/code/modules/modular_computers/laptop_vendor.dm @@ -31,12 +31,8 @@ /obj/machinery/lapvend/proc/reset_order() state = 0 devtype = 0 - if(fabricated_laptop) - qdel(fabricated_laptop) - fabricated_laptop = null - if(fabricated_tablet) - qdel(fabricated_tablet) - fabricated_tablet = null + QDEL_NULL(fabricated_laptop) + QDEL_NULL(fabricated_tablet) dev_cpu = 1 dev_battery = 1 dev_disk = 1 @@ -303,4 +299,4 @@ obj/machinery/lapvend/attackby(obj/item/I, mob/user) T.time = worldtime2text() vendor_account.transaction_log.Add(T) return 1 - return 0 \ No newline at end of file + return 0 diff --git a/code/modules/nano/interaction/inventory.dm b/code/modules/nano/interaction/inventory.dm index ccfbb695a99..cbe5165e5ff 100644 --- a/code/modules/nano/interaction/inventory.dm +++ b/code/modules/nano/interaction/inventory.dm @@ -4,7 +4,7 @@ /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 user)) + if(!((src_object in user) || user.is_in_active_hand(src_object) || user.is_in_inactive_hand(src_object))) return STATUS_CLOSE return user.shared_nano_interaction() diff --git a/code/modules/ninja/suit/suit_initialisation.dm b/code/modules/ninja/suit/suit_initialisation.dm index 9954281b06f..59303b4707c 100644 --- a/code/modules/ninja/suit/suit_initialisation.dm +++ b/code/modules/ninja/suit/suit_initialisation.dm @@ -28,9 +28,8 @@ sleep(10) to_chat(usr, "Disconnecting neural-net interface... Success.") - if(usr.hud_used) - qdel(usr.hud_used) - usr.hud_used = null + + QDEL_NULL(usr.hud_used) usr.create_mob_hud() usr.regenerate_icons() @@ -64,9 +63,8 @@ sleep(5) to_chat(usr, "Suit secured, extending neural-net interface...") - if(usr.hud_used) - qdel(usr.hud_used) - usr.hud_used = null + + QDEL_NULL(usr.hud_used) usr.hud_used = new /datum/hud/human(usr, 'icons/mob/screen_ninja.dmi', "#ffffff", 255) if(usr.hud_used) usr.hud_used.show_hud(usr.hud_used.hud_version) @@ -91,4 +89,4 @@ to_chat(usr, "NOTICE: Suit de-activation protocals aborted.") else to_chat(usr, "FĆAL �Rr�R: ŧer nt recgnized, c-cntr-r䣧-ç äcked.") - return \ No newline at end of file + return diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index a759ab2c850..5703058c40a 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -22,6 +22,9 @@ name = "chest drawer" icon_state = "chestdrawer" +/obj/structure/filingcabinet/chestdrawer/autopsy + name = "autopsy reports drawer" + desc = "A large drawer for holding autopsy reports." /obj/structure/filingcabinet/filingcabinet //not changing the path to avoid unecessary map issues, but please don't name stuff like this in the future -Pete icon_state = "tallcabinet" diff --git a/code/modules/paperwork/frames.dm b/code/modules/paperwork/frames.dm index 1e16049f4b8..067c9abcdd6 100644 --- a/code/modules/paperwork/frames.dm +++ b/code/modules/paperwork/frames.dm @@ -43,10 +43,10 @@ overlays |= icon_state /obj/item/weapon/picture_frame/proc/insert(obj/D) - if(istype(D, /obj/item/weapon/contraband/poster)) - var/obj/item/weapon/contraband/poster/P = D - displayed = P.resulting_poster - P.resulting_poster = null + if(istype(D, /obj/item/weapon/poster)) + var/obj/item/weapon/poster/P = D + displayed = P.poster_structure + P.poster_structure = null else displayed = D @@ -54,7 +54,7 @@ displayed.pixel_x = 0 displayed.pixel_y = 0 displayed.forceMove(src) - if(istype(D, /obj/item/weapon/contraband/poster)) + if(istype(D, /obj/item/weapon/poster)) qdel(D) /obj/item/weapon/picture_frame/attackby(obj/item/I, mob/user) @@ -85,7 +85,7 @@ O.forceMove(user.loc) displayed = null qdel(src) - else if(istype(I, /obj/item/weapon/paper) || istype(I, /obj/item/weapon/photo) || istype(I, /obj/item/weapon/contraband/poster)) + else if(istype(I, /obj/item/weapon/paper) || istype(I, /obj/item/weapon/photo) || istype(I, /obj/item/weapon/poster)) if(!displayed) user.unEquip(I) insert(I) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 250abe3d682..cd5b065b3ca 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -203,7 +203,7 @@ /obj/item/weapon/paper/proc/parsepencode(var/t, var/obj/item/weapon/pen/P, mob/user as mob) - t = pencode_to_html(t, usr, P, TRUE, TRUE, deffont, signfont, crayonfont) + t = pencode_to_html(t, usr, P, TRUE, TRUE, TRUE, deffont, signfont, crayonfont) //Count the fields var/laststart = 1 diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index 2a7c7e113e1..f5d10cef156 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -87,7 +87,7 @@ user.visible_message("[class][user] burns right through \the [src], turning it to ash. It flutters through the air before settling on the floor in a heap.", \ "[class]You burn right through \the [src], turning it to ash. It flutters through the air before settling on the floor in a heap.") - if(user.get_inactive_hand() == src) + if(user.is_in_inactive_hand(src)) user.unEquip(src) new /obj/effect/decal/cleanable/ash(get_turf(src)) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 9f5d3534215..d93281f2468 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -155,10 +155,10 @@ on = 0 force = initial(force) sharp = 0 - edge = 0 w_class = initial(w_class) name = initial(name) hitsound = initial(hitsound) + embed_chance = initial(embed_chance) throwforce = initial(throwforce) playsound(user, 'sound/weapons/saberoff.ogg', 5, 1) to_chat(user, "[src] can now be concealed.") @@ -166,10 +166,10 @@ on = 1 force = 18 sharp = 1 - edge = 1 w_class = WEIGHT_CLASS_NORMAL name = "energy dagger" hitsound = 'sound/weapons/blade1.ogg' + embed_chance = 100 //rule of cool throwforce = 35 playsound(user, 'sound/weapons/saberon.ogg', 5, 1) to_chat(user, "[src] is now active.") diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index dc86ce2299a..5797107e502 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -64,7 +64,7 @@ user.visible_message("[class][user] burns right through \the [src], turning it to ash. It flutters through the air before settling on the floor in a heap.", \ "[class]You burn right through \the [src], turning it to ash. It flutters through the air before settling on the floor in a heap.") - if(user.get_inactive_hand() == src) + if(user.is_in_inactive_hand(src)) user.unEquip(src) new /obj/effect/decal/cleanable/ash(get_turf(src)) diff --git a/code/modules/pda/PDA.dm b/code/modules/pda/PDA.dm index 9b0413b94ee..e002049e55f 100755 --- a/code/modules/pda/PDA.dm +++ b/code/modules/pda/PDA.dm @@ -376,7 +376,7 @@ var/global/list/obj/item/device/pda/PDAs = list() /obj/item/device/pda/proc/id_check(mob/user as mob, choice as num)//To check for IDs; 1 for in-pda use, 2 for out of pda use. if(choice == 1) if(id) - remove_id() + remove_id(user) else var/obj/item/I = user.get_active_hand() if(istype(I, /obj/item/weapon/card/id)) diff --git a/code/modules/pda/cart_apps.dm b/code/modules/pda/cart_apps.dm index 30f732f48ae..0ccef76ec7c 100644 --- a/code/modules/pda/cart_apps.dm +++ b/code/modules/pda/cart_apps.dm @@ -103,7 +103,7 @@ "poweravail" = powmonitor.powernet.avail, "powerload" = num2text(powmonitor.powernet.viewload, 10), "powerdemand" = powmonitor.powernet.load, - "apcs" = apc_repository.apc_data(powmonitor)) + "apcs" = apc_repository.apc_data(powmonitor.powernet)) has_back = 1 else data["records"] = list( diff --git a/code/modules/pda/pdas.dm b/code/modules/pda/pdas.dm index db7d68fdf37..8fdffded4df 100644 --- a/code/modules/pda/pdas.dm +++ b/code/modules/pda/pdas.dm @@ -38,10 +38,11 @@ desc = "A portable microcomputer by Thinktronic Systems, LTD. The surface is coated with polytetrafluoroethylene and banana drippings." ttone = "honk" -/obj/item/device/pda/clown/Crossed(AM as mob|obj) //Clown PDA is slippery. - if(istype(AM, /mob/living/carbon)) - var/mob/living/carbon/M = AM - M.slip("pda", 8, 5, 0, 1) + trip_stun = 8 + trip_weaken = 5 + trip_chance = 100 + trip_walksafe = TRUE + trip_verb = TV_SLIP /obj/item/device/pda/mime default_cartridge = /obj/item/weapon/cartridge/mime diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 705e4ad8ed7..e44a694ba06 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -715,7 +715,7 @@ var/global/list/datum/stack_recipe/cable_coil_recipes = list( // cable is pointing at us, we're standing on an open tile // so create a stub pointing at the clicked cable on our tile - place_turf(T, user, turn(dirn, 180)) + place_turf(U, user, turn(dirn, 180)) return // exisiting cable doesn't point at our position, so see if it's a stub diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index a9893d690c8..ca5c295b688 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -373,13 +373,15 @@ var/const/GRAV_NEEDS_WRENCH = 3 // Shake everyone on the z level to let them know that gravity was enagaged/disenagaged. /obj/machinery/gravity_generator/main/proc/shake_everyone() var/turf/our_turf = get_turf(src) - for(var/mob/M in mob_list) + var/sound/alert_sound = sound('sound/effects/alert.ogg') + for(var/shaked in mob_list) + var/mob/M = shaked var/turf/their_turf = get_turf(M) if(their_turf && their_turf.z == our_turf.z) M.update_gravity(M.mob_has_gravity()) if(M.client) shake_camera(M, 15, 1) - M.playsound_local(our_turf, 'sound/effects/alert.ogg', 100, 1, 0.5) + M.playsound_local(our_turf, null, 100, 1, 0.5, S = alert_sound) // TODO: Make the gravity generator cooperate with the space manager /obj/machinery/gravity_generator/main/proc/gravity_in_level() diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 11c83313737..73f14a4b143 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -1,4 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 var/global/list/rad_collectors = list() /obj/machinery/power/rad_collector diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index 751fda95fab..564a52e0acd 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - /obj/machinery/field/containment name = "Containment Field" desc = "An energy field." diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 7ee9ea5edf1..3ebcbb565dc 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - /obj/machinery/power/emitter name = "Emitter" desc = "A heavy duty industrial laser" diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index aebee058c18..5b1fc73e24b 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -1,6 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - - /* field_generator power level display The icon used for the field_generator need to have 'num_power_levels' number of icon states diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm index 2232e322dbd..85ef45eef20 100644 --- a/code/modules/power/singularity/particle_accelerator/particle.dm +++ b/code/modules/power/singularity/particle_accelerator/particle.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - /obj/effect/accelerated_particle name = "Accelerated Particles" desc = "Small things moving very fast." diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index 0ce1159743e..d6d83255a81 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - /*Composed of 7 parts 3 Particle emitters proc diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index d0bdc9c6490..c59e7734f37 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - /obj/machinery/particle_accelerator/control_box name = "Particle Accelerator Control Console" desc = "This part controls the density of the particles." diff --git a/code/modules/power/singularity/particle_accelerator/particle_emitter.dm b/code/modules/power/singularity/particle_accelerator/particle_emitter.dm index cbfd212e873..97bf4fa4277 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_emitter.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_emitter.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - /obj/structure/particle_accelerator/particle_emitter name = "EM Containment Grid" desc_holder = "This part launches the Alpha particles. You might not want to stand near this end." diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 114ffc29d6f..fab6e106cb7 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - /obj/singularity name = "gravitational singularity" desc = "A gravitational singularity." diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index b231e32b183..f2ffbb9b857 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -1,24 +1,6 @@ #define TESLA_DEFAULT_POWER 1738260 #define TESLA_MINI_POWER 869130 -var/list/blacklisted_tesla_types = typecacheof(list(/obj/machinery/atmospherics, - /obj/machinery/power/emitter, - /obj/machinery/field/generator, - /mob/living/simple_animal, - /obj/machinery/particle_accelerator/control_box, - /obj/structure/particle_accelerator/fuel_chamber, - /obj/structure/particle_accelerator/particle_emitter/center, - /obj/structure/particle_accelerator/particle_emitter/left, - /obj/structure/particle_accelerator/particle_emitter/right, - /obj/structure/particle_accelerator/power_box, - /obj/structure/particle_accelerator/end_cap, - /obj/machinery/field/containment, - /obj/structure/disposalpipe, - /obj/structure/sign, - /obj/machinery/gateway, - /obj/structure/grille, - /obj/machinery/the_singularitygen/tesla)) - /obj/singularity/energy_ball name = "energy ball" desc = "An energy ball." @@ -169,8 +151,27 @@ var/list/blacklisted_tesla_types = typecacheof(list(/obj/machinery/atmospherics, var/obj/machinery/closest_machine var/obj/structure/closest_structure var/obj/structure/blob/closest_blob + var/static/things_to_shock = typecacheof(list(/obj/machinery, /mob/living, /obj/structure)) + var/static/blacklisted_tesla_types = typecacheof(list(/obj/machinery/atmospherics, + /obj/machinery/power/emitter, + /obj/machinery/field/generator, + /mob/living/simple_animal, + /obj/machinery/particle_accelerator/control_box, + /obj/structure/particle_accelerator/fuel_chamber, + /obj/structure/particle_accelerator/particle_emitter/center, + /obj/structure/particle_accelerator/particle_emitter/left, + /obj/structure/particle_accelerator/particle_emitter/right, + /obj/structure/particle_accelerator/power_box, + /obj/structure/particle_accelerator/end_cap, + /obj/machinery/field/containment, + /obj/structure/disposalpipe, + /obj/structure/sign, + /obj/machinery/gateway, + /obj/structure/grille, + /obj/machinery/the_singularitygen/tesla)) - for(var/A in oview(source, zap_range+2)) + + for(var/A in typecache_filter_multi_list_exclusion(oview(source, zap_range+2), things_to_shock, blacklisted_tesla_types)) if(istype(A, /obj/machinery/power/tesla_coil)) var/dist = get_dist(source, A) var/obj/machinery/power/tesla_coil/C = A @@ -193,7 +194,7 @@ var/list/blacklisted_tesla_types = typecacheof(list(/obj/machinery/atmospherics, closest_atom = A closest_dist = dist - else if(closest_grounding_rod || is_type_in_typecache(A, blacklisted_tesla_types)) + else if(closest_grounding_rod) continue else if(isliving(A)) diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm index 3b808c64d53..076c2f9c39b 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -27,7 +27,7 @@ desc = "A .38 bullet casing." caliber = "38" icon_state = "r-casing" - projectile_type = /obj/item/projectile/bullet/weakbullet2/rubber + projectile_type = /obj/item/projectile/bullet/weakbullet2 /obj/item/ammo_casing/c10mm desc = "A 10mm bullet casing." @@ -144,7 +144,7 @@ name = "beanbag slug" desc = "A weak beanbag slug for riot control." icon_state = "bshell" - projectile_type = /obj/item/projectile/bullet/weakbullet/rubber + projectile_type = /obj/item/projectile/bullet/weakbullet materials = list(MAT_METAL=250) @@ -248,7 +248,6 @@ ..() flags |= OPENCONTAINER create_reagents(30) - reagents.set_reacting(FALSE) /obj/item/ammo_casing/shotgun/dart/attackby() return diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index d3cf7702c00..e16ce690c45 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -235,8 +235,8 @@ return 1 return 0 - /obj/item/ammo_box/magazine/m45/enforcer45/lethal - ammo_type = /obj/item/ammo_casing/c45 +/obj/item/ammo_box/magazine/m45/enforcer45/lethal + ammo_type = /obj/item/ammo_casing/c45 /obj/item/ammo_box/magazine/wt550m9 name = "wt550 magazine (4.6x30mm)" diff --git a/code/modules/projectiles/firing.dm b/code/modules/projectiles/firing.dm index 773ed4cff72..08a2104383d 100644 --- a/code/modules/projectiles/firing.dm +++ b/code/modules/projectiles/firing.dm @@ -43,8 +43,7 @@ if(targloc == curloc) if(target) //if the target is right on our location we go straight to bullet_act() target.bullet_act(BB, BB.def_zone) - qdel(BB) - BB = null + QDEL_NULL(BB) return 1 BB.preparePixelProjectile(target, targloc, user, params, spread) diff --git a/code/modules/projectiles/guns/alien.dm b/code/modules/projectiles/guns/alien.dm index f541ca2a94a..bf0cd79f322 100644 --- a/code/modules/projectiles/guns/alien.dm +++ b/code/modules/projectiles/guns/alien.dm @@ -49,8 +49,6 @@ name = "alloy spike" desc = "A broadhead spike made out of a weird silvery metal." projectile_type = /obj/item/projectile/bullet/spike - sharp = 1 - edge = 0 throwforce = 5 w_class = WEIGHT_CLASS_NORMAL caliber = "spike" @@ -68,7 +66,7 @@ /obj/item/projectile/bullet/spike/on_hit(atom/target, blocked = 0) if((blocked != 100) && istype(target, /mob/living/carbon/human)) var/mob/living/carbon/human/H = target - H.drip(500) + H.bleed(50) ..() //This gun only functions for armalis. The on-sprite is too huge to render properly on other sprites. @@ -101,6 +99,5 @@ flag = "bullet" pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE - embed = 0 weaken = 5 stun = 5 diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index cde0361c810..5b0c0766dc1 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -144,7 +144,6 @@ attack_verb = list("attacked", "slashed", "cut", "sliced") force = 12 sharp = 1 - edge = 1 can_charge = 0 /obj/item/weapon/gun/energy/plasmacutter/examine(mob/user) @@ -273,6 +272,7 @@ icon_state = "disabler" ammo_type = list(/obj/item/ammo_casing/energy/clown) clumsy_check = 0 + selfcharge = 1 ammo_x_offset = 3 /obj/item/weapon/gun/energy/toxgun diff --git a/code/modules/projectiles/guns/magic/staff.dm b/code/modules/projectiles/guns/magic/staff.dm index 9909cb18d9d..0ae0d886be9 100644 --- a/code/modules/projectiles/guns/magic/staff.dm +++ b/code/modules/projectiles/guns/magic/staff.dm @@ -68,7 +68,7 @@ icon_state = "focus" item_state = "focus" ammo_type = list(/obj/item/ammo_casing/forcebolt) - + /obj/item/weapon/gun/magic/staff/spellblade name = "spellblade" desc = "A deadly combination of laziness and boodlust, this blade allows the user to dismember their enemies without all the hard work of actually swinging the sword." @@ -81,7 +81,6 @@ armour_penetration = 75 block_chance = 50 sharp = 1 - edge = 1 max_charges = 4 /obj/item/weapon/gun/magic/staff/spellblade/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type) diff --git a/code/modules/projectiles/guns/mounted.dm b/code/modules/projectiles/guns/mounted.dm index 8fec6cd8b8e..a767c94cc9c 100644 --- a/code/modules/projectiles/guns/mounted.dm +++ b/code/modules/projectiles/guns/mounted.dm @@ -1,30 +1,20 @@ /obj/item/weapon/gun/energy/gun/advtaser/mounted name = "mounted taser" desc = "An arm mounted dual-mode weapon that fires electrodes and disabler shots." - icon_state = "armcannon" + icon = 'icons/obj/items_cyborg.dmi' + icon_state = "taser" + item_state = "armcannonstun4" force = 5 - flags = NODROP - w_class = WEIGHT_CLASS_HUGE - can_flashlight = 0 selfcharge = 1 + can_flashlight = 0 trigger_guard = TRIGGER_GUARD_ALLOW_ALL // Has no trigger at all, uses neural signals instead -/obj/item/weapon/gun/energy/gun/advtaser/mounted/dropped()//if somebody manages to drop this somehow... - ..() - loc = null//send it to nullspace to get retrieved by the implant later on. gotta cover those edge cases. - /obj/item/weapon/gun/energy/laser/mounted name = "mounted laser" - desc = "An arm mounted cannon that fires lethal lasers. Doesn't come with a charge beam." - icon_state = "armcannon" + desc = "An arm mounted cannon that fires lethal lasers." + icon = 'icons/obj/items_cyborg.dmi' + icon_state = "laser" item_state = "armcannonlase" force = 5 - flags = NODROP - w_class = WEIGHT_CLASS_HUGE - materials = null selfcharge = 1 - trigger_guard = TRIGGER_GUARD_ALLOW_ALL - -/obj/item/weapon/gun/energy/laser/mounted/dropped() - ..() - loc = null + trigger_guard = TRIGGER_GUARD_ALLOW_ALL \ No newline at end of file diff --git a/code/modules/projectiles/guns/projectile/bow.dm b/code/modules/projectiles/guns/projectile/bow.dm index 2512ebfa35f..3fea800936e 100644 --- a/code/modules/projectiles/guns/projectile/bow.dm +++ b/code/modules/projectiles/guns/projectile/bow.dm @@ -77,7 +77,6 @@ desc = "Stab, stab, stab." icon_state = "arrow" force = 10 - sharp = 1 projectile_type = /obj/item/projectile/bullet/reusable/arrow caliber = "arrow" diff --git a/code/modules/projectiles/guns/projectile/saw.dm b/code/modules/projectiles/guns/projectile/saw.dm index 8b35ac805b4..3714a7983da 100644 --- a/code/modules/projectiles/guns/projectile/saw.dm +++ b/code/modules/projectiles/guns/projectile/saw.dm @@ -67,9 +67,9 @@ /obj/item/projectile/bullet/saw/bleeding/on_hit(atom/target, blocked = 0, hit_zone) . = ..() - if((blocked != 100) && istype(target, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = target - H.drip(350) + if((blocked != 100) && iscarbon(target)) + var/mob/living/carbon/C = target + C.bleed(35) /obj/item/projectile/bullet/saw/hollow damage = 60 diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index b0bcc0743e2..cd8a64fbde6 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -119,9 +119,9 @@ breakthings = FALSE /obj/item/projectile/bullet/sniper/haemorrhage/on_hit(atom/target, blocked = 0, hit_zone) - if((blocked != 100) && istype(target, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = target - H.drip(1000) + if((blocked != 100) && iscarbon(target)) + var/mob/living/carbon/C = target + C.bleed(100) return ..() diff --git a/code/modules/projectiles/guns/throw/crossbow.dm b/code/modules/projectiles/guns/throw/crossbow.dm index 77d3e89eade..00bafd296ce 100644 --- a/code/modules/projectiles/guns/throw/crossbow.dm +++ b/code/modules/projectiles/guns/throw/crossbow.dm @@ -155,7 +155,6 @@ throwforce = 20 w_class = WEIGHT_CLASS_NORMAL sharp = 1 - edge = 0 /obj/item/weapon/arrow/proc/removed() //Helper for metal rods falling apart. return @@ -170,8 +169,6 @@ /obj/item/weapon/arrow/rod/removed() if(superheated) // The rod has been superheated - we don't want it to be useable when removed from the bow. visible_message("[src] shatters into a scattering of overstressed metal shards as it leaves the crossbow.") - var/obj/item/weapon/shard/shrapnel/S = new /obj/item/weapon/shard/shrapnel - S.loc = get_turf(src) qdel(src) #undef XBOW_TENSION_20 diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 4a3afd18684..f2beec3f6bc 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -37,6 +37,7 @@ var/flag = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb //Cael - bio and rad are also valid var/projectile_type = "/obj/item/projectile" var/range = 50 //This will de-increment every step. When 0, it will delete the projectile. + var/is_reflectable = FALSE // Can it be reflected or not? //Effects var/stun = 0 var/weaken = 0 @@ -48,7 +49,6 @@ var/drowsy = 0 var/stamina = 0 var/jitter = 0 - var/embed = 0 // whether or not the projectile can embed itself in the mob var/forcedodge = 0 //to pass through everything var/dismemberment = 0 //The higher the number, the greater the bonus to dismembering. 0 will not dismember at all. @@ -67,10 +67,26 @@ qdel(src) /obj/item/projectile/proc/on_hit(atom/target, blocked = 0, hit_zone) + var/turf/target_loca = get_turf(target) if(!isliving(target)) return 0 var/mob/living/L = target if(blocked < 100) // not completely blocked + if(damage && L.blood_volume && damage_type == BRUTE) + var/splatter_dir = dir + if(starting) + splatter_dir = get_dir(starting, target_loca) + if(isalien(L)) + new /obj/effect/overlay/temp/dir_setting/bloodsplatter/xenosplatter(target_loca, splatter_dir) + else + var/blood_color = "#C80000" + if(ishuman(target)) + var/mob/living/carbon/human/H = target + blood_color = H.species.blood_color + new /obj/effect/overlay/temp/dir_setting/bloodsplatter(target_loca, splatter_dir, blood_color) + if(prob(33)) + L.add_splatter_floor(target_loca) + var/organ_hit_text = "" if(L.has_limbs) organ_hit_text = " in \the [parse_zone(def_zone)]" diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 01dcbd5228d..48fe1f74564 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -8,6 +8,7 @@ hitsound_wall = 'sound/weapons/effects/searwall.ogg' flag = "laser" eyeblur = 2 + is_reflectable = TRUE /obj/item/projectile/beam/laser diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 7434038eb91..701be48d7b1 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -4,8 +4,6 @@ damage = 60 damage_type = BRUTE flag = "bullet" - embed = 1 - sharp = 1 hitsound_wall = "ricochet" /obj/item/projectile/bullet/weakbullet //beanbag, heavy stamina damage @@ -13,12 +11,7 @@ damage = 5 stamina = 80 -/obj/item/projectile/bullet/weakbullet/rubber //beanbag that shells that don't embed - embed = 0 - sharp = 0 - /obj/item/projectile/bullet/weakbullet/booze - embed = 0 /obj/item/projectile/bullet/weakbullet/booze/on_hit(atom/target, blocked = 0) if(..(target, blocked)) @@ -44,10 +37,6 @@ stamina = 60 icon_state = "bullet-r" -/obj/item/projectile/bullet/weakbullet2/rubber //detective's bullets that don't embed - embed = 0 - sharp = 0 - /obj/item/projectile/bullet/weakbullet3 damage = 20 @@ -56,8 +45,6 @@ damage = 5 stamina = 30 icon_state = "bullet-r" - embed = 0 - sharp = 0 /obj/item/projectile/bullet/toxinbullet damage = 15 @@ -145,8 +132,6 @@ name = "rubber pellet" damage = 3 stamina = 25 - embed = 0 - sharp = 0 icon_state = "bullet-r" /obj/item/projectile/bullet/stunshot//taser slugs for shotguns, nothing special @@ -157,8 +142,6 @@ stutter = 5 jitter = 20 range = 7 - embed = 0 - sharp = 0 icon_state = "spark" color = "#FFFF00" @@ -209,8 +192,6 @@ stun = 5 forcedodge = 1 nodamage = 1 - embed = 0 - sharp = 0 pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE hitsound = 'sound/items/bikehorn.ogg' icon = 'icons/obj/hydroponics/harvest.dmi' @@ -244,8 +225,6 @@ name = "dart" icon_state = "cbbolt" damage = 6 - embed = 0 - sharp = 0 var/piercing = 0 /obj/item/projectile/bullet/dart/New() @@ -259,7 +238,6 @@ if(blocked != 100) if(M.can_inject(null,0,hit_zone)) // Pass the hit zone to see if it can inject by whether it hit the head or the body. ..() - reagents.reaction(M, INGEST) reagents.trans_to(M, reagents.total_volume) return 1 else @@ -286,6 +264,7 @@ icon_state = "syringeproj" /obj/item/projectile/bullet/dart/syringe/tranquilizer + /obj/item/projectile/bullet/dart/syringe/tranquilizer/New() ..() reagents.add_reagent("haloperidol", 15) @@ -307,8 +286,6 @@ name = "cap" damage = 0 nodamage = 1 - embed = 0 - sharp = 0 /obj/item/projectile/bullet/cap/fire() loc = null diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 79ffc1d0898..d9e8a0759bd 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -4,6 +4,7 @@ damage = 0 damage_type = BURN flag = "energy" + is_reflectable = TRUE /obj/item/projectile/energy/electrode name = "electrode" diff --git a/code/modules/projectiles/projectile/force.dm b/code/modules/projectiles/projectile/force.dm index 4e5c6d27700..4d62550a852 100644 --- a/code/modules/projectiles/projectile/force.dm +++ b/code/modules/projectiles/projectile/force.dm @@ -4,7 +4,6 @@ icon_state = "ice_1" damage = 20 flag = "energy" - embed = 1 /obj/item/projectile/forcebolt/strong name = "force bolt" diff --git a/code/modules/projectiles/projectile/reusable.dm b/code/modules/projectiles/projectile/reusable.dm index a223f415165..c66913651a3 100644 --- a/code/modules/projectiles/projectile/reusable.dm +++ b/code/modules/projectiles/projectile/reusable.dm @@ -35,8 +35,6 @@ ammo_type = /obj/item/ammo_casing/caseless/foam_dart range = 10 var/obj/item/weapon/pen/pen = null - edge = 0 - embed = 0 log_override = TRUE//it won't log even when there's a pen inside, but since the damage will be so low, I don't think there's any point in making it any more complex /obj/item/projectile/bullet/reusable/foam_dart/handle_drop() diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 83a4ec0650c..e11702b1f69 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -23,8 +23,6 @@ icon_state= "bolter" damage = 50 flag = "bullet" - sharp = 1 - edge = 1 /obj/item/projectile/bullet/gyro/on_hit(var/atom/target, var/blocked = 0) ..() @@ -136,7 +134,7 @@ var/mob/living/M = target if(ishuman(target)) var/mob/living/carbon/human/H = M - if(H.species.flags & IS_PLANT) + if(IS_PLANT in H.species.species_traits) if(prob(15)) M.apply_effect((rand(30,80)),IRRADIATE) M.Weaken(5) @@ -169,7 +167,7 @@ var/mob/M = target if(ishuman(target)) //These rays make plantmen fat. var/mob/living/carbon/human/H = M - if(H.species.flags & IS_PLANT) + if(IS_PLANT in H.species.species_traits) H.nutrition = min(H.nutrition+30, NUTRITION_LEVEL_FULL) else if(iscarbon(target)) M.show_message("The radiation beam dissipates harmlessly through your body.") diff --git a/code/modules/reagents/chem_splash.dm b/code/modules/reagents/chem_splash.dm new file mode 100644 index 00000000000..7c16bf1ab9a --- /dev/null +++ b/code/modules/reagents/chem_splash.dm @@ -0,0 +1,78 @@ +// Replaces chemgrenade stuff, allowing reagent explosions to be called from anywhere. +// It should be called using a location, the range, and a list of reagents involved. + +// Threatscale is a multiplier for the 'threat' of the grenade. If you're increasing the affected range drastically, you might want to improve this. +// Extra heat affects the temperature of the mixture, and may cause it to react in different ways. + + +/proc/chem_splash(turf/epicenter, affected_range = 3, list/datum/reagents/reactants = list(), extra_heat = 0, threatscale = 1, adminlog = 1) + if(!isturf(epicenter) || !reactants.len || threatscale <= 0) + return + var/has_reagents + var/total_reagents + for(var/datum/reagents/R in reactants) + if(R.total_volume) + has_reagents = 1 + total_reagents += R.total_volume + + if(!has_reagents) + return + + var/datum/reagents/splash_holder = new/datum/reagents(total_reagents*threatscale) + splash_holder.my_atom = epicenter // For some reason this is setting my_atom to null, and causing runtime errors. + var/total_temp = 0 + + for(var/datum/reagents/R in reactants) + R.trans_to(splash_holder, R.total_volume, threatscale, 1, 1) + total_temp += R.chem_temp + splash_holder.chem_temp = (total_temp/reactants.len) + extra_heat // Average temperature of reagents + extra heat. + splash_holder.handle_reactions() // React them now. + + if(splash_holder.total_volume && affected_range >= 0) //The possible reactions didnt use up all reagents, so we spread it around. + var/datum/effect/system/steam_spread/steam = new /datum/effect/system/steam_spread() + steam.set_up(10, 0, epicenter) + steam.attach(epicenter) + steam.start() + + var/list/viewable = view(affected_range, epicenter) + + var/list/accessible = list(epicenter) + for(var/i=1; i<=affected_range; i++) + var/list/turflist = list() + for(var/turf/T in (orange(i, epicenter) - orange(i-1, epicenter))) + turflist |= T + for(var/turf/T in turflist) + if( !(get_dir(T,epicenter) in cardinal) && (abs(T.x - epicenter.x) == abs(T.y - epicenter.y) )) + turflist.Remove(T) + turflist.Add(T) // we move the purely diagonal turfs to the end of the list. + for(var/turf/T in turflist) + if(accessible[T]) + continue + for(var/thing in T.GetAtmosAdjacentTurfs(alldir = TRUE)) + var/turf/NT = thing + if(!(NT in accessible)) + continue + if(!(get_dir(T,NT) in cardinal)) + continue + accessible[T] = 1 + break + var/list/reactable = accessible + for(var/turf/T in accessible) + for(var/atom/A in T.GetAllContents()) + if(!(A in viewable)) + continue + reactable |= A + if(extra_heat >= 300) + T.hotspot_expose(extra_heat*2, 5) + if(!reactable.len) //Nothing to react with. Probably means we're in nullspace. + return + for(var/thing in reactable) + var/atom/A = thing + var/distance = max(1,get_dist(A, epicenter)) + var/fraction = 0.5/(2 ** distance) //50/25/12/6... for a 200u splash, 25/12/6/3... for a 100u, 12/6/3/1 for a 50u + splash_holder.reaction(A, TOUCH, fraction) + + qdel(splash_holder) + return 1 + + diff --git a/code/modules/reagents/chemistry/colors.dm b/code/modules/reagents/chemistry/colors.dm index 3d4ab41fe9c..0eea945349c 100644 --- a/code/modules/reagents/chemistry/colors.dm +++ b/code/modules/reagents/chemistry/colors.dm @@ -14,8 +14,8 @@ var/list/random_color_list = list("#00aedb","#a200ff","#f47835","#d41243","#d111 var/vol_temp // see libs/IconProcs/IconProcs.dm for(var/datum/reagent/reagent in reagent_list) - if(reagent.id == "blood" && reagent.data && reagent.data["blood_colour"]) - reagent_color = reagent.data["blood_colour"] + if(reagent.id == "blood" && reagent.data && reagent.data["blood_color"]) + reagent_color = reagent.data["blood_color"] else reagent_color = reagent.color diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index c65c628353b..83a000fa693 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - var/const/TOUCH = 1 var/const/INGEST = 2 #define ADDICTION_TIME 4800 //8 minutes @@ -27,8 +25,6 @@ var/const/INGEST = 2 for(var/path in paths) var/datum/reagent/D = new path() chemical_reagents_list[D.id] = D - if(!D.can_grow_in_plants) - plant_blocked_chems.Add(D.id) if(!chemical_reactions_list) //Chemical Reactions - Initialises all /datum/chemical_reaction into a list // It is filtered into multiple lists within a list. @@ -108,7 +104,7 @@ var/const/INGEST = 2 return the_id -/datum/reagents/proc/trans_to(target, amount=1, multiplier=1, preserve_data=1)//if preserve_data=0, the reagents data will be lost. Usefull if you use data for some strange stuff and don't want it to be transferred. +/datum/reagents/proc/trans_to(target, amount=1, multiplier=1, preserve_data=1, no_react = 0)//if preserve_data=0, the reagents data will be lost. Usefull if you use data for some strange stuff and don't want it to be transferred. if(!target) return if(total_volume <= 0) @@ -135,21 +131,18 @@ var/const/INGEST = 2 for(var/datum/reagent/current_reagent in reagent_list) if(!current_reagent) continue - if(current_reagent.id == "blood" && ishuman(target)) - var/mob/living/carbon/human/H = target - H.inject_blood(my_atom, amount) - continue var/current_reagent_transfer = current_reagent.volume * part if(preserve_data) trans_data = copy_data(current_reagent) - R.add_reagent(current_reagent.id, (current_reagent_transfer * multiplier), trans_data, chem_temp) + R.add_reagent(current_reagent.id, (current_reagent_transfer * multiplier), trans_data, chem_temp, no_react = 1) remove_reagent(current_reagent.id, current_reagent_transfer) update_total() R.update_total() - R.handle_reactions() - handle_reactions() + if(!no_react) + R.handle_reactions() + handle_reactions() return amount /datum/reagents/proc/copy_to(obj/target, amount=1, multiplier=1, preserve_data=1, safety = 0) @@ -242,10 +235,10 @@ var/const/INGEST = 2 if(M && R) R.on_mob_life(M) if(R.volume >= R.overdose_threshold && !R.overdosed && R.overdose_threshold > 0) - R.overdosed = 1 + R.overdosed = TRUE R.overdose_start(M) if(R.volume < R.overdose_threshold && R.overdosed) - R.overdosed = 0 + R.overdosed = FALSE if(R.overdosed) R.overdose_process(M, R.volume >= R.overdose_threshold*2 ? 2 : 1) @@ -496,48 +489,40 @@ var/const/INGEST = 2 //Species with PROCESS_DUO are only affected by reagents that affect both organics and synthetics, like acid and hellwater if((R.process_flags & ORGANIC) && (R.process_flags & SYNTHETIC) && (H.species.reagent_tag & PROCESS_DUO)) can_process = 1 - if(H.species && H.species.exotic_blood) - if(R.id == H.species.exotic_blood) - can_process = 0 //We'll assume that non-human mobs lack the ability to process synthetic-oriented reagents (adjust this if we need to change that assumption) else if(R.process_flags != SYNTHETIC) can_process = 1 return can_process -/datum/reagents/proc/reaction(atom/A, method=TOUCH, volume_modifier = 1) - switch(method) - if(TOUCH) - for(var/datum/reagent/R in reagent_list) - if(isliving(A)) - var/check = reaction_check(A, R) - if(!check) - continue - else - R.reaction_mob(A, TOUCH, R.volume*volume_modifier) - if(isturf(A)) - R.reaction_turf(A, R.volume*volume_modifier) - if(isobj(A)) - R.reaction_obj(A, R.volume*volume_modifier) - if(INGEST) - for(var/datum/reagent/R in reagent_list) - if(isliving(A)) - var/check = reaction_check(A, R) - if(!check) - continue - else - R.reaction_mob(A, INGEST, R.volume*volume_modifier) - if(isturf(A)) - R.reaction_turf(A, R.volume*volume_modifier) - if(isobj(A)) - R.reaction_obj(A, R.volume*volume_modifier) +/datum/reagents/proc/reaction(atom/A, method = TOUCH, volume_modifier = 1) + var/react_type + if(isliving(A)) + react_type = "LIVING" + else if(isturf(A)) + react_type = "TURF" + else if(istype(A, /obj)) + react_type = "OBJ" + else + return + for(var/datum/reagent/R in reagent_list) + switch(react_type) + if("LIVING") + var/check = reaction_check(A, R) + if(!check) + continue + R.reaction_mob(A, method, R.volume * volume_modifier) + if("TURF") + R.reaction_turf(A, R.volume * volume_modifier) + if("OBJ") + R.reaction_obj(A, R.volume * volume_modifier) /datum/reagents/proc/add_reagent_list(list/list_reagents, list/data=null) // Like add_reagent but you can enter a list. Format it like this: list("toxin" = 10, "beer" = 15) for(var/r_id in list_reagents) var/amt = list_reagents[r_id] add_reagent(r_id, amt, data) -/datum/reagents/proc/add_reagent(reagent, amount, list/data=null, reagtemp = 300) +/datum/reagents/proc/add_reagent(reagent, amount, list/data=null, reagtemp = 300, no_react = 0) if(!isnum(amount)) return 1 update_total() @@ -554,7 +539,8 @@ var/const/INGEST = 2 update_total() my_atom.on_reagent_change() R.on_merge(data) - handle_reactions() + if(!no_react) + handle_reactions() return 0 var/datum/reagent/D = chemical_reagents_list[reagent] @@ -570,7 +556,8 @@ var/const/INGEST = 2 update_total() my_atom.on_reagent_change() - handle_reactions() + if(!no_react) + handle_reactions() return 0 else warning("[my_atom] attempted to add a reagent called '[reagent]' which doesn't exist. ([usr])") @@ -696,27 +683,6 @@ var/const/INGEST = 2 return trans_data -// For random item spawning. Takes a list of paths, and returns the same list without anything that contains admin only reagents -/proc/adminReagentCheck(list/incoming) - var/list/outgoing[0] - for(var/tocheck in incoming) - if(ispath(tocheck)) - var/check = new tocheck - if(istype(check, /atom)) - var/atom/reagentCheck = check - var/datum/reagents/reagents = reagentCheck.reagents - var/admin = 0 - for(var/reag in reagents.reagent_list) - var/datum/reagent/reagent = reag - if(reagent.admin_only) - admin = 1 - break - if(!(admin)) - outgoing += tocheck - else - outgoing += tocheck - return outgoing - /////////////////////////////////////////////////////////////////////////////////// diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index 1aa72ac0918..625849b8dbc 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -159,7 +159,7 @@ if(archive_diseases[id]) var/datum/disease/advance/A = archive_diseases[id] A.AssignName(new_name) - for(var/datum/disease/advance/AD in disease_master.processing) + for(var/datum/disease/advance/AD in active_diseases) AD.Refresh() updateUsrDialog() @@ -205,7 +205,8 @@ var/list/vir = Blood.data["viruses"] if(vir.len) var/i = 0 - for(var/datum/disease/D in Blood.data["viruses"]) + for(var/thing in Blood.data["viruses"]) + var/datum/disease/D = thing i++ if(!(D.visibility_flags & HIDDEN_PANDEMIC)) diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index cdc214c3089..16e4197f72c 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -7,38 +7,37 @@ var/list/data = null var/volume = 0 var/metabolization_rate = REAGENTS_METABOLISM - //var/list/viruses = list() var/color = "#000000" // rgb: 0, 0, 0 (does not support alpha channels - yet!) var/shock_reduction = 0 var/heart_rate_increase = 0 var/heart_rate_decrease = 0 var/heart_rate_stop = 0 - var/penetrates_skin = 0 //Whether or not a reagent penetrates the skin - var/can_grow_in_plants = 1 //Determines if the reagent can be grown in plants, 0 means it cannot be grown + var/penetrates_skin = FALSE //Whether or not a reagent penetrates the skin //Processing flags, defines the type of mobs the reagent will affect //By default, all reagents will ONLY affect organics, not synthetics. Re-define in the reagent's definition if the reagent is meant to affect synths var/process_flags = ORGANIC - var/admin_only = 0 - var/can_synth = 1 //whether or not a mech syringe gun and synthesize this reagent + var/can_synth = TRUE //whether or not a mech syringe gun and synthesize this reagent var/overdose_threshold = 0 var/addiction_chance = 0 var/addiction_stage = 1 var/last_addiction_dose = 0 - var/overdosed = 0 // You fucked up and this is now triggering it's overdose effects, purge that shit quick. + var/overdosed = FALSE // You fucked up and this is now triggering it's overdose effects, purge that shit quick. var/current_cycle = 1 var/drink_icon = null var/drink_name = "Glass of ..what?" var/drink_desc = "You can't really tell what this is." + var/taste_strength = 1 //how easy it is to taste - the more the easier + var/taste_message = "bitterness" //life's bitter by default. Cool points for using a span class for when you're tasting LIQUID FUCKING DEATH /datum/reagent/Destroy() . = ..() holder = null -/datum/reagent/proc/reaction_mob(mob/living/M, method=TOUCH, volume) //Some reagents transfer on touch, others don't; dependent on if they penetrate the skin or not. +/datum/reagent/proc/reaction_mob(mob/living/M, method = TOUCH, volume) //Some reagents transfer on touch, others don't; dependent on if they penetrate the skin or not. if(holder) //for catching rare runtimes if(method == TOUCH && penetrates_skin) var/block = M.get_permeability_protection() - var/amount = round(volume * (1.0 - block), 0.1) + var/amount = round(volume * (1 - block), 0.1) if(M.reagents) if(amount >= 1) M.reagents.add_reagent(id, amount) @@ -59,7 +58,7 @@ if(AD && istype(AD, src)) AD.last_addiction_dose = world.timeofday AD.addiction_stage = 1 - return 1 + return TRUE /datum/reagent/proc/reaction_obj(obj/O, volume) return @@ -148,4 +147,4 @@ if(prob(5)) to_chat(M, "You feel like you can't live without [name]!") if(prob(5)) - to_chat(M, "You would DIE for some [name] right now!") \ No newline at end of file + to_chat(M, "You would DIE for some [name] right now!") diff --git a/code/modules/reagents/chemistry/reagents/admin.dm b/code/modules/reagents/chemistry/reagents/admin.dm index b94998221ef..a7fc7fa6108 100644 --- a/code/modules/reagents/chemistry/reagents/admin.dm +++ b/code/modules/reagents/chemistry/reagents/admin.dm @@ -5,8 +5,8 @@ reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 process_flags = ORGANIC | SYNTHETIC //Adminbuse knows no bounds! - admin_only = 1 - can_synth = 0 + can_synth = FALSE + taste_message = "admin abuse" /datum/reagent/medicine/adminordrazine/on_mob_life(mob/living/carbon/M) M.setCloneLoss(0) @@ -18,9 +18,9 @@ M.setBrainLoss(0) if(ishuman(M)) var/mob/living/carbon/human/H = M - for(var/name in H.internal_organs) - var/obj/item/organ/internal/I = H.get_int_organ(name) - I.damage = max(0, I.damage-5) + for(var/thing in H.internal_organs) + var/obj/item/organ/internal/I = thing + I.take_damage(-5) for(var/obj/item/organ/external/E in H.bodyparts) if(E.mend_fracture()) E.perma_injury = 0 @@ -46,16 +46,15 @@ M.SetConfused(0) M.SetSleeping(0) M.SetJitter(0) - for(var/datum/disease/D in M.viruses) + for(var/thing in M.viruses) + var/datum/disease/D = thing if(D.severity == NONTHREAT) continue - D.spread_text = "Remissive" - D.stage-- - if(D.stage < 1) - D.cure() + D.cure(0) ..() /datum/reagent/medicine/adminordrazine/nanites name = "Nanites" id = "nanites" - description = "Nanomachines that aid in rapid cellular regeneration." \ No newline at end of file + description = "Nanomachines that aid in rapid cellular regeneration." + taste_message = "nanomachines, son" diff --git a/code/modules/reagents/chemistry/reagents/alcohol.dm b/code/modules/reagents/chemistry/reagents/alcohol.dm index 9b651a21443..2ba73d2a127 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol.dm @@ -6,9 +6,9 @@ reagent_state = LIQUID nutriment_factor = 0 //So alcohol can fill you up! If they want to. color = "#404030" // rgb: 64, 64, 48 - can_grow_in_plants = 0 //Alcoholic drinks won't be grown in plants (would "water down" random seed chems too much) var/dizzy_adj = 3 var/alcohol_perc = 1 //percentage of ethanol in a beverage 0.0 - 1.0 + taste_message = "liquid fire" /datum/reagent/consumable/ethanol/on_mob_life(mob/living/M) M.AdjustDrunk(alcohol_perc) @@ -43,6 +43,7 @@ drink_icon ="beerglass" drink_name = "Beer glass" drink_desc = "A freezing pint of beer" + taste_message = "beer" /datum/reagent/consumable/ethanol/cider name = "Cider" @@ -54,6 +55,7 @@ drink_icon = "rewriter" drink_name = "Cider" drink_desc = "a refreshing glass of traditional cider" + taste_message = "cider" /datum/reagent/consumable/ethanol/whiskey name = "Whiskey" @@ -72,6 +74,7 @@ description = "Just when you thought regular station whiskey was good... This silky, amber goodness has to come along and ruin everything." color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.5 + taste_message = "class" /datum/reagent/consumable/ethanol/gin name = "Gin" @@ -95,6 +98,7 @@ drink_icon = "absinthebottle" drink_name = "Glass of Absinthe" drink_desc = "The green fairy is going to get you now!" + taste_message = "fucking pain" //copy paste from LSD... shoot me /datum/reagent/consumable/ethanol/absinthe/on_mob_life(mob/living/M) @@ -128,6 +132,7 @@ drink_icon = "mojito" drink_name = "Glass of Mojito" drink_desc = "Fresh from Spesscuba." + taste_message = "mojito" /datum/reagent/consumable/ethanol/vodka name = "Vodka" @@ -148,6 +153,7 @@ drink_icon = "ginvodkaglass" drink_name = "Glass of Sake" drink_desc = "A glass of Sake." + taste_message = "sake" /datum/reagent/consumable/ethanol/tequila name = "Tequila" @@ -168,6 +174,7 @@ drink_icon = "vermouthglass" drink_name = "Glass of Vermouth" drink_desc = "You wonder why you're even drinking this straight." + taste_message = "vermouth" /datum/reagent/consumable/ethanol/wine name = "Wine" @@ -179,6 +186,7 @@ drink_icon = "wineglass" drink_name = "Glass of wine" drink_desc = "A very classy looking drink." + taste_message = "wine" /datum/reagent/consumable/ethanol/cognac name = "Cognac" @@ -201,6 +209,7 @@ drink_icon = "suicider" drink_name = "Suicider" drink_desc = "You've really hit rock bottom now... your liver packed its bags and left last night." + taste_message = "approaching death" /datum/reagent/consumable/ethanol/ale name = "Ale" @@ -211,6 +220,7 @@ drink_icon = "aleglass" drink_name = "Ale glass" drink_desc = "A freezing pint of delicious Ale" + taste_message = "ale" /datum/reagent/consumable/ethanol/thirteenloko name = "Thirteen Loko" @@ -224,6 +234,7 @@ drink_icon = "thirteen_loko_glass" drink_name = "Glass of Thirteen Loko" drink_desc = "This is a glass of Thirteen Loko, it appears to be of the highest quality. The drink, not the glass" + taste_message = "party" /datum/reagent/consumable/ethanol/thirteenloko/on_mob_life(mob/living/M) M.AdjustDrowsy(-7) @@ -247,6 +258,7 @@ drink_icon = "glass_brown" drink_name = "Glass of bilk" drink_desc = "A brew of milk and beer. For those alcoholics who fear osteoporosis." + taste_message = "bilk" /datum/reagent/consumable/ethanol/atomicbomb name = "Atomic Bomb" @@ -258,6 +270,7 @@ drink_icon = "atomicbombglass" drink_name = "Atomic Bomb" drink_desc = "Nanotrasen cannot take legal responsibility for your actions after imbibing." + taste_message = "fruity alcohol" /datum/reagent/consumable/ethanol/threemileisland name = "THree Mile Island Iced Tea" @@ -269,6 +282,7 @@ drink_icon = "threemileislandglass" drink_name = "Three Mile Island Ice Tea" drink_desc = "A glass of this is sure to prevent a meltdown." + taste_message = "fruity alcohol" /datum/reagent/consumable/ethanol/goldschlager name = "Goldschlager" @@ -313,6 +327,7 @@ drink_icon = "cubalibreglass" drink_name = "Cuba Libre" drink_desc = "A classic mix of rum and cola." + taste_message = "fruity alcohol" /datum/reagent/consumable/ethanol/whiskey_cola name = "Whiskey Cola" @@ -324,6 +339,7 @@ drink_icon = "whiskeycolaglass" drink_name = "Whiskey Cola" drink_desc = "An innocent-looking mixture of cola and Whiskey. Delicious." + taste_message = "whiskey and coke" /datum/reagent/consumable/ethanol/martini name = "Classic Martini" @@ -335,6 +351,7 @@ drink_icon = "martiniglass" drink_name = "Classic Martini" drink_desc = "Damn, the bartender even stirred it, not shook it." + taste_message = "martini" /datum/reagent/consumable/ethanol/vodkamartini name = "Vodka Martini" @@ -357,6 +374,7 @@ drink_icon = "whiterussianglass" drink_name = "White Russian" drink_desc = "A very nice looking drink. But that's just, like, your opinion, man." + taste_message = "creamy alcohol" /datum/reagent/consumable/ethanol/screwdrivercocktail name = "Screwdriver" @@ -368,6 +386,7 @@ drink_icon = "screwdriverglass" drink_name = "Screwdriver" drink_desc = "A simple, yet superb mixture of Vodka and orange juice. Just the thing for the tired engineer." + taste_message = "fruity alcohol" /datum/reagent/consumable/ethanol/booger name = "Booger" @@ -379,6 +398,7 @@ drink_icon = "booger" drink_name = "Booger" drink_desc = "Ewww..." + taste_message = "sweet alcohol" /datum/reagent/consumable/ethanol/bloody_mary name = "Bloody Mary" @@ -390,6 +410,7 @@ drink_icon = "bloodymaryglass" drink_name = "Bloody Mary" drink_desc = "Tomato juice, mixed with Vodka and a lil' bit of lime. Tastes like liquid murder." + taste_message = "tomatoes with booze" /datum/reagent/consumable/ethanol/gargle_blaster name = "Pan-Galactic Gargle Blaster" @@ -401,6 +422,7 @@ drink_icon = "gargleblasterglass" drink_name = "Pan-Galactic Gargle Blaster" drink_desc = "Does... does this mean that Arthur and Ford are on the station? Oh joy." + taste_message = "the number fourty two" /datum/reagent/consumable/ethanol/brave_bull name = "Brave Bull" @@ -412,6 +434,7 @@ drink_icon = "bravebullglass" drink_name = "Brave Bull" drink_desc = "Tequila and Coffee liquor, brought together in a mouthwatering mixture. Drink up." + taste_message = "sweet alcohol" /datum/reagent/consumable/ethanol/tequila_sunrise name = "Tequila Sunrise" @@ -423,6 +446,7 @@ drink_icon = "tequilasunriseglass" drink_name = "Tequila Sunrise" drink_desc = "Oh great, now you feel nostalgic about sunrises back on Terra..." + taste_message = "fruity alcohol" /datum/reagent/consumable/ethanol/toxins_special name = "Toxins Special" @@ -434,6 +458,7 @@ drink_icon = "toxinsspecialglass" drink_name = "Toxins Special" drink_desc = "Whoah, this thing is on FIRE" + taste_message = "FIRE" /datum/reagent/consumable/ethanol/toxins_special/on_mob_life(mob/living/M) if(M.bodytemperature < 330) @@ -448,8 +473,10 @@ color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.5 drink_icon = "beepskysmashglass" + description = "Whiskey-imbued cream, what else would you expect from the Irish." drink_name = "Beepsky Smash" drink_desc = "Heavy, hot and strong. Just like the Iron fist of the LAW." + taste_message = "THE LAW" /datum/reagent/consumable/ethanol/beepsky_smash/on_mob_life(mob/living/M) M.Stun(1) @@ -458,13 +485,13 @@ /datum/reagent/consumable/ethanol/irish_cream name = "Irish Cream" id = "irishcream" - description = "Whiskey-imbued cream, what else would you expect from the Irish." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.3 drink_icon = "irishcreamglass" drink_name = "Irish Cream" drink_desc = "It's cream, mixed with whiskey. What else would you expect from the Irish?" + taste_message = "creamy alcohol" /datum/reagent/consumable/ethanol/manly_dorf name = "The Manly Dorf" @@ -476,6 +503,7 @@ drink_icon = "manlydorfglass" drink_name = "The Manly Dorf" drink_desc = "A manly concotion made from Ale and Beer. Intended for true men only." + taste_message = "manliness" /datum/reagent/consumable/ethanol/longislandicedtea name = "Long Island Iced Tea" @@ -487,6 +515,7 @@ drink_icon = "longislandicedteaglass" drink_name = "Long Island Iced Tea" drink_desc = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only." + taste_message = "fruity alcohol" /datum/reagent/consumable/ethanol/moonshine name = "Moonshine" @@ -498,6 +527,7 @@ drink_icon = "glass_clear" drink_name = "Moonshine" drink_desc = "You've really hit rock bottom now... your liver packed its bags and left last night." + taste_message = "prohibition" /datum/reagent/consumable/ethanol/b52 name = "B-52" @@ -509,6 +539,7 @@ drink_icon = "b52glass" drink_name = "B-52" drink_desc = "Kahlua, Irish Cream, and congac. You will get bombed." + taste_message = "creamy alcohol" /datum/reagent/consumable/ethanol/irishcoffee name = "Irish Coffee" @@ -520,6 +551,7 @@ drink_icon = "irishcoffeeglass" drink_name = "Irish Coffee" drink_desc = "Coffee and alcohol. More fun than a Mimosa to drink in the morning." + taste_message = "coffee and booze" /datum/reagent/consumable/ethanol/margarita name = "Margarita" @@ -531,6 +563,7 @@ drink_icon = "margaritaglass" drink_name = "Margarita" drink_desc = "On the rocks with salt on the rim. Arriba~!" + taste_message = "fruity alcohol" /datum/reagent/consumable/ethanol/black_russian name = "Black Russian" @@ -542,6 +575,7 @@ drink_icon = "blackrussianglass" drink_name = "Black Russian" drink_desc = "For the lactose-intolerant. Still as classy as a White Russian." + taste_message = "sweet alcohol" /datum/reagent/consumable/ethanol/manhattan name = "Manhattan" @@ -553,6 +587,7 @@ drink_icon = "manhattanglass" drink_name = "Manhattan" drink_desc = "The Detective's undercover drink of choice. He never could stomach gin..." + taste_message = "bitter alcohol" /datum/reagent/consumable/ethanol/manhattan_proj name = "Manhattan Project" @@ -564,6 +599,7 @@ drink_icon = "proj_manhattanglass" drink_name = "Manhattan Project" drink_desc = "A scienitst drink of choice, for thinking how to blow up the station." + taste_message = "bitter alcohol" /datum/reagent/consumable/ethanol/whiskeysoda name = "Whiskey Soda" @@ -575,6 +611,7 @@ drink_icon = "whiskeysodaglass2" drink_name = "Whiskey Soda" drink_desc = "Ultimate refreshment." + taste_message = "mediocrity" /datum/reagent/consumable/ethanol/antifreeze name = "Anti-freeze" @@ -586,6 +623,7 @@ drink_icon = "antifreeze" drink_name = "Anti-freeze" drink_desc = "The ultimate refreshment." + taste_message = "poor life choices" /datum/reagent/consumable/ethanol/antifreeze/on_mob_life(mob/living/M) if(M.bodytemperature < 330) @@ -602,6 +640,7 @@ drink_icon = "b&p" drink_name = "Barefoot" drink_desc = "Barefoot and pregnant" + taste_message = "sweet alcohol" /datum/reagent/consumable/ethanol/snowwhite name = "Snow White" @@ -613,6 +652,7 @@ drink_icon = "snowwhite" drink_name = "Snow White" drink_desc = "A cold refreshment." + taste_message = "refreshing alcohol" /datum/reagent/consumable/ethanol/demonsblood name = "Demons Blood" @@ -625,6 +665,7 @@ drink_icon = "demonsblood" drink_name = "Demons Blood" drink_desc = "Just looking at this thing makes the hair at the back of your neck stand up." + taste_message = "evil" /datum/reagent/consumable/ethanol/vodkatonic name = "Vodka and Tonic" @@ -637,6 +678,7 @@ drink_icon = "vodkatonicglass" drink_name = "Vodka and Tonic" drink_desc = "For when a gin and tonic isn't russian enough." + taste_message = "fizzy alcohol" /datum/reagent/consumable/ethanol/ginfizz name = "Gin Fizz" @@ -649,6 +691,7 @@ drink_icon = "ginfizzglass" drink_name = "Gin Fizz" drink_desc = "Refreshingly lemony, deliciously dry." + taste_message = "fizzy alcohol" /datum/reagent/consumable/ethanol/bahama_mama name = "Bahama mama" @@ -660,6 +703,7 @@ drink_icon = "bahama_mama" drink_name = "Bahama Mama" drink_desc = "Tropic cocktail" + taste_message = "fruity alcohol" /datum/reagent/consumable/ethanol/singulo name = "Singulo" @@ -672,6 +716,7 @@ drink_icon = "singulo" drink_name = "Singulo" drink_desc = "A blue-space beverage." + taste_message = "infinity" /datum/reagent/consumable/ethanol/sbiten name = "Sbiten" @@ -683,6 +728,7 @@ drink_icon = "sbitenglass" drink_name = "Sbiten" drink_desc = "A spicy mix of Vodka and Spice. Very hot." + taste_message = "spicy alcohol" /datum/reagent/consumable/ethanol/sbiten/on_mob_life(mob/living/M) if(M.bodytemperature < 360) @@ -699,6 +745,7 @@ drink_icon = "devilskiss" drink_name = "Devils Kiss" drink_desc = "Creepy time!" + taste_message = "blood" /datum/reagent/consumable/ethanol/red_mead name = "Red Mead" @@ -710,6 +757,7 @@ drink_icon = "red_meadglass" drink_name = "Red Mead" drink_desc = "A True Vikings Beverage, though its color is strange." + taste_message = "blood" /datum/reagent/consumable/ethanol/mead name = "Mead" @@ -722,6 +770,7 @@ drink_icon = "meadglass" drink_name = "Mead" drink_desc = "A Vikings Beverage, though a cheap one." + taste_message = "sweet alcohol" /datum/reagent/consumable/ethanol/iced_beer name = "Iced Beer" @@ -733,6 +782,7 @@ drink_icon = "iced_beerglass" drink_name = "Iced Beer" drink_desc = "A beer so frosty, the air around it freezes." + taste_message = "refreshing alcohol" /datum/reagent/consumable/ethanol/iced_beer/on_mob_life(mob/living/M) if(M.bodytemperature > 270) @@ -749,6 +799,7 @@ drink_icon = "grogglass" drink_name = "Grog" drink_desc = "A fine and cepa drink for Space." + taste_message = "rum" /datum/reagent/consumable/ethanol/aloe name = "Aloe" @@ -760,6 +811,7 @@ drink_icon = "aloe" drink_name = "Aloe" drink_desc = "Very, very, very good." + taste_message = "sweet alcohol" /datum/reagent/consumable/ethanol/andalusia name = "Andalusia" @@ -771,6 +823,7 @@ drink_icon = "andalusia" drink_name = "Andalusia" drink_desc = "A nice, strange named drink." + taste_message = "sweet alcohol" /datum/reagent/consumable/ethanol/alliescocktail name = "Allies Cocktail" @@ -782,6 +835,7 @@ drink_icon = "alliescocktail" drink_name = "Allies cocktail" drink_desc = "A drink made from your allies." + taste_message = "bitter alcohol" /datum/reagent/consumable/ethanol/acid_spit name = "Acid Spit" @@ -793,6 +847,7 @@ drink_icon = "acidspitglass" drink_name = "Acid Spit" drink_desc = "A drink from Nanotrasen. Made from live aliens." + taste_message = "PAIN" /datum/reagent/consumable/ethanol/amasec name = "Amasec" @@ -804,6 +859,7 @@ drink_icon = "amasecglass" drink_name = "Amasec" drink_desc = "Always handy before COMBAT!!!" + taste_message = "a stunbaton" /datum/reagent/consumable/ethanol/neurotoxin name = "Neuro-toxin" @@ -817,6 +873,7 @@ drink_icon = "neurotoxinglass" drink_name = "Neurotoxin" drink_desc = "A drink that is guaranteed to knock you silly." + taste_message = "brain damageeeEEeee" /datum/reagent/consumable/ethanol/neurotoxin/on_mob_life(mob/living/M) if(current_cycle >= 13) @@ -870,6 +927,7 @@ drink_icon = "changelingsting" drink_name = "Changeling Sting" drink_desc = "A stingy drink." + taste_message = "a tiny prick" /datum/reagent/consumable/ethanol/irishcarbomb name = "Irish Car Bomb" @@ -882,6 +940,7 @@ drink_icon = "irishcarbomb" drink_name = "Irish Car Bomb" drink_desc = "An irish car bomb." + taste_message = "creamy alcohol" /datum/reagent/consumable/ethanol/syndicatebomb name = "Syndicate Bomb" @@ -893,6 +952,7 @@ drink_icon = "syndicatebomb" drink_name = "Syndicate Bomb" drink_desc = "A syndicate bomb." + taste_message = "a job offer" /datum/reagent/consumable/ethanol/erikasurprise name = "Erika Surprise" @@ -904,6 +964,7 @@ drink_icon = "erikasurprise" name = "Erika Surprise" drink_desc = "The surprise is, it's green!" + taste_message = "sweet alcohol" /datum/reagent/consumable/ethanol/driestmartini name = "Driest Martini" @@ -916,6 +977,7 @@ drink_icon = "driestmartiniglass" drink_name = "Driest Martini" drink_desc = "Only for the experienced. You think you see sand floating in the glass." + taste_message = "bitter alcohol" /datum/reagent/consumable/ethanol/driestmartini/on_mob_life(mob/living/M) if(current_cycle >= 55 && current_cycle < 115) @@ -931,6 +993,7 @@ drink_icon = "kahluaglass" drink_name = "Glass of RR coffee Liquor" drink_desc = "DAMN, THIS THING LOOKS ROBUST" + taste_message = "sweet alcohol" /datum/reagent/consumable/ethanol/kahlua/on_mob_life(mob/living/M) M.AdjustDizzy(-5) @@ -948,6 +1011,7 @@ drink_icon = "ginsonic" drink_name = "Gin and Sonic" drink_desc = "An extremely high amperage drink. Absolutely not for the true Englishman." + taste_message = "SPEED" /datum/reagent/ginsonic/on_mob_life(mob/living/M) M.AdjustDrowsy(-5) @@ -973,6 +1037,7 @@ drink_icon = "cognacglass" drink_name = "Glass of applejack" drink_desc = "When cider isn't strong enough, you gotta jack it." + taste_message = "strong cider" /datum/reagent/consumable/ethanol/jackrose name = "Jack Rose" @@ -983,6 +1048,7 @@ drink_icon = "patronglass" drink_name = "Jack Rose" drink_desc = "Drinking this makes you feel like you belong in a luxury hotel bar during the 1920s." + taste_message = "style" /datum/reagent/consumable/ethanol/drunkenblumpkin name = "Drunken Blumpkin" @@ -993,6 +1059,7 @@ drink_icon = "drunkenblumpkin" drink_name = "Drunken Blumpkin" drink_desc = "A drink for the drunks" + taste_message = "weirdness" /datum/reagent/consumable/ethanol/eggnog name = "Eggnog" @@ -1004,6 +1071,7 @@ drink_icon = "glass_yellow" drink_name = "Eggnog" drink_desc = "For enjoying the most wonderful time of the year." + taste_message = "christmas spirit" /datum/reagent/consumable/ethanol/dragons_breath //inaccessible to players, but here for admin shennanigans name = "Dragon's Breath" @@ -1012,7 +1080,8 @@ reagent_state = LIQUID color = "#DC0000" alcohol_perc = 1 - can_synth = 0 + can_synth = FALSE + taste_message = "LIQUID FUCKING DEATH OH GOD WHAT THE FUCK" /datum/reagent/consumable/ethanol/dragons_breath/reaction_mob(mob/living/M, method=TOUCH, volume) if(method == INGEST && prob(20)) @@ -1060,6 +1129,7 @@ drink_icon = "synthanolglass" drink_name = "Glass of Synthanol" drink_desc = "The equivalent of alcohol for synthetic crewmembers. They'd find it awful if they had tastebuds too." + taste_message = "motor oil mixed with puke" /datum/reagent/consumable/ethanol/synthanol/on_mob_life(mob/living/M) if(!M.isSynthetic()) @@ -1139,4 +1209,4 @@ alcohol_perc = 0.25 drink_icon = "synthignonglass" drink_name = "Glass of Synthignon" - drink_desc = "Someone mixed good wine and robot booze. Romantic, but atrocious." \ No newline at end of file + drink_desc = "Someone mixed good wine and robot booze. Romantic, but atrocious." diff --git a/code/modules/reagents/chemistry/reagents/blob.dm b/code/modules/reagents/chemistry/reagents/blob.dm index 895922c7542..565648c00e2 100644 --- a/code/modules/reagents/chemistry/reagents/blob.dm +++ b/code/modules/reagents/chemistry/reagents/blob.dm @@ -4,7 +4,7 @@ description = "" var/message = "The blob strikes you" //message sent to any mob hit by the blob var/message_living = null //extension to first mob sent to only living mobs i.e. silicons have no skin to be burnt - can_synth = 0 + can_synth = FALSE /datum/reagent/blob/reaction_mob(mob/living/M, method=TOUCH, volume, show_message, touch_protection) return round(volume * min(1.5 - touch_protection, 1), 0.1) //full touch protection means 50% volume, any prot below 0.5 means 100% volume. diff --git a/code/modules/reagents/chemistry/reagents/disease.dm b/code/modules/reagents/chemistry/reagents/disease.dm index 7db78883e90..bac6f475261 100644 --- a/code/modules/reagents/chemistry/reagents/disease.dm +++ b/code/modules/reagents/chemistry/reagents/disease.dm @@ -4,7 +4,7 @@ description = "A fine dust containing spider eggs. Oh gosh." reagent_state = SOLID color = "#FFFFFF" - can_synth = 0 + can_synth = FALSE /datum/reagent/spider_eggs/on_mob_life(mob/living/M) if(volume > 2.5) @@ -19,7 +19,7 @@ id = "nanomachines" description = "Microscopic construction robots." color = "#535E66" // rgb: 83, 94, 102 - can_synth = 0 + can_synth = FALSE /datum/reagent/nanomachines/on_mob_life(mob/living/carbon/M) if(volume > 1.5) @@ -32,7 +32,7 @@ id = "xenomicrobes" description = "Microbes with an entirely alien cellular structure." color = "#535E66" // rgb: 83, 94, 102 - can_synth = 0 + can_synth = FALSE /datum/reagent/xenomicrobes/on_mob_life(mob/living/carbon/M) if(volume > 1.5) @@ -44,7 +44,7 @@ id = "fungalspores" description = "Active fungal spores." color = "#92D17D" // rgb: 146, 209, 125 - can_synth = 0 + can_synth = FALSE /datum/reagent/fungalspores/on_mob_life(mob/living/carbon/M) if(volume > 2.5) @@ -57,7 +57,7 @@ description = "Rapid chemical decomposition has warped these crystals into twisted spikes." reagent_state = SOLID color = "#FA0000" // rgb: 250, 0, 0 - can_synth = 0 + can_synth = FALSE /datum/reagent/jagged_crystals/on_mob_life(mob/living/carbon/M) M.ForceContractDisease(new /datum/disease/berserker(0)) @@ -69,7 +69,7 @@ description = "A nasty bacteria found in spoiled food." reagent_state = LIQUID color = "#1E4600" - can_synth = 0 + can_synth = FALSE /datum/reagent/salmonella/on_mob_life(mob/living/carbon/M) M.ForceContractDisease(new /datum/disease/food_poisoning(0)) @@ -81,7 +81,7 @@ description = "Liquid gibbis." reagent_state = LIQUID color = "#FF0000" - can_synth = 0 + can_synth = FALSE /datum/reagent/gibbis/on_mob_life(mob/living/carbon/M) if(volume > 2.5) @@ -94,7 +94,7 @@ description = "A disease-causing agent that is neither bacterial nor fungal nor viral and contains no genetic material." reagent_state = LIQUID color = "#FFFFFF" - can_synth = 0 + can_synth = FALSE /datum/reagent/prions/on_mob_life(mob/living/carbon/M) if(volume > 4.5) @@ -107,7 +107,7 @@ description = "Moldy old dust taken from a grave site." reagent_state = LIQUID color = "#465046" - can_synth = 0 + can_synth = FALSE /datum/reagent/grave_dust/on_mob_life(mob/living/carbon/M) if(volume > 4.5) @@ -120,7 +120,7 @@ description = "Aww, gross! These things can't be good for your heart. They're gunna eat it!" reagent_state = SOLID color = "#925D6C" - can_synth = 0 + can_synth = FALSE /datum/reagent/heartworms/on_mob_life(mob/living/carbon/M) if(volume > 4.5) @@ -138,7 +138,7 @@ description = "A guaranteed heart-stopper!" reagent_state = LIQUID color = "#AB1CCF" - can_synth = 0 + can_synth = FALSE /datum/reagent/concentrated_initro/on_mob_life(mob/living/M) if(volume >= 5) @@ -146,6 +146,7 @@ var/mob/living/carbon/human/H = M if(!H.undergoing_cardiac_arrest()) H.set_heartattack(TRUE) // rip in pepperoni + ..() //virus foods diff --git a/code/modules/reagents/chemistry/reagents/drink_base.dm b/code/modules/reagents/chemistry/reagents/drink_base.dm index 25484983a4f..a924d84349b 100644 --- a/code/modules/reagents/chemistry/reagents/drink_base.dm +++ b/code/modules/reagents/chemistry/reagents/drink_base.dm @@ -23,4 +23,4 @@ if(adj_temp_cool) if(M.bodytemperature > 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = max(310, M.bodytemperature - (adj_temp_cool * TEMPERATURE_DAMAGE_COEFFICIENT)) - ..() \ No newline at end of file + ..() diff --git a/code/modules/reagents/chemistry/reagents/drink_cold.dm b/code/modules/reagents/chemistry/reagents/drink_cold.dm index ffd43a81840..a92d8644c6b 100644 --- a/code/modules/reagents/chemistry/reagents/drink_cold.dm +++ b/code/modules/reagents/chemistry/reagents/drink_cold.dm @@ -1,6 +1,7 @@ /datum/reagent/consumable/drink/cold name = "Cold drink" adj_temp_cool = 5 + taste_message = null /datum/reagent/consumable/drink/cold/tonic name = "Tonic Water" @@ -50,6 +51,7 @@ drink_icon = "glass_brown" drink_name = "Glass of Space Cola" drink_desc = "A glass of refreshing Space Cola" + taste_message = "cola" /datum/reagent/consumable/drink/cold/nuka_cola name = "Nuka Cola" @@ -60,6 +62,7 @@ drink_icon = "nuka_colaglass" drink_name = "Nuka Cola" drink_desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland" + taste_message = "cola" /datum/reagent/consumable/drink/cold/nuka_cola/on_mob_life(mob/living/M) M.Jitter(20) @@ -83,6 +86,7 @@ drink_icon = "Space_mountain_wind_glass" drink_name = "Glass of Space Mountain Wind" drink_desc = "Space Mountain Wind. As you know, there are no mountains in space, only wind." + taste_message = "lime soda" /datum/reagent/consumable/drink/cold/dr_gibb name = "Dr. Gibb" @@ -93,6 +97,7 @@ drink_icon = "dr_gibb_glass" drink_name = "Glass of Dr. Gibb" drink_desc = "Dr. Gibb. Not as dangerous as the name might imply." + taste_message = "cherry soda" /datum/reagent/consumable/drink/cold/space_up name = "Space-Up" @@ -103,6 +108,7 @@ drink_icon = "space-up_glass" drink_name = "Glass of Space-up" drink_desc = "Space-up. It helps keep your cool." + taste_message = "lemon soda" /datum/reagent/consumable/drink/cold/lemon_lime name = "Lemon Lime" @@ -110,6 +116,7 @@ id = "lemon_lime" color = "#878F00" // rgb: 135, 40, 0 adj_temp_cool = 8 + taste_message = "citrus soda" /datum/reagent/consumable/drink/cold/lemonade name = "Lemonade" @@ -119,6 +126,7 @@ drink_icon = "lemonade" drink_name = "Lemonade" drink_desc = "Oh the nostalgia..." + taste_message = "lemonade" /datum/reagent/consumable/drink/cold/kiraspecial name = "Kira Special" @@ -128,6 +136,7 @@ drink_icon = "kiraspecial" drink_name = "Kira Special" drink_desc = "Long live the guy who everyone had mistaken for a girl. Baka!" + taste_message = "citrus soda" /datum/reagent/consumable/drink/cold/brownstar name = "Brown Star" @@ -138,6 +147,7 @@ drink_icon = "brownstar" drink_name = "Brown Star" drink_desc = "Its not what it sounds like..." + taste_message = "orange soda" /datum/reagent/consumable/drink/cold/milkshake name = "Milkshake" @@ -148,6 +158,7 @@ drink_icon = "milkshake" drink_name = "Milkshake" drink_desc = "Glorious brainfreezing mixture." + taste_message = "milkshake" /datum/reagent/consumable/drink/cold/rewriter name = "Rewriter" @@ -157,7 +168,8 @@ drink_icon = "rewriter" drink_name = "Rewriter" drink_desc = "The secert of the sanctuary of the Libarian..." + taste_message = "coffee...soda?" /datum/reagent/consumable/drink/cold/rewriter/on_mob_life(mob/living/M) M.Jitter(5) - ..() \ No newline at end of file + ..() diff --git a/code/modules/reagents/chemistry/reagents/drinks.dm b/code/modules/reagents/chemistry/reagents/drinks.dm index 7db9387c3ff..9a524aa377a 100644 --- a/code/modules/reagents/chemistry/reagents/drinks.dm +++ b/code/modules/reagents/chemistry/reagents/drinks.dm @@ -6,6 +6,7 @@ drink_icon = "glass_orange" drink_name = "Glass of Orange juice" drink_desc = "Vitamins! Yay!" + taste_message = "orange juice" /datum/reagent/consumable/drink/orangejuicde/on_mob_life(mob/living/M) if(M.getOxyLoss() && prob(30)) @@ -20,6 +21,7 @@ drink_icon = "glass_red" drink_name = "Glass of Tomato juice" drink_desc = "Are you sure this is tomato juice?" + taste_message = "tomato juice" /datum/reagent/consumable/drink/tomatojuice/on_mob_life(mob/living/M) if(M.getFireLoss() && prob(20)) @@ -34,6 +36,7 @@ drink_icon = "glass_green" drink_name = "Glass of Lime juice" drink_desc = "A glass of sweet-sour lime juice." + taste_message = "lime juice" /datum/reagent/consumable/drink/limejuice/on_mob_life(mob/living/M) if(M.getToxLoss() && prob(20)) @@ -48,6 +51,7 @@ drink_icon = "carrotjuice" drink_name = "Glass of carrot juice" drink_desc = "It is just like a carrot but without crunching." + taste_message = "carrot juice" /datum/reagent/consumable/drink/carrotjuicde/on_mob_life(mob/living/M) M.AdjustEyeBlurry(-1) @@ -69,6 +73,7 @@ drink_icon = "doctorsdelightglass" drink_name = "Doctor's Delight" drink_desc = "A healthy mixture of juices, guaranteed to keep you healthy until the next toolboxing takes place." + taste_message = "healthy dietary choices" /datum/reagent/consumable/drink/doctors_delight/on_mob_life(mob/living/M) if(M.getToxLoss() && prob(20)) @@ -84,6 +89,7 @@ drink_icon = "triplecitrus" drink_name = "Glass of Triplecitrus Juice" drink_desc = "As colorful and healthy as it is delicious." + taste_message = "citrus juice" /datum/reagent/consumable/drink/triple_citrus/reaction_mob(mob/living/M, method=TOUCH, volume) if(method == INGEST) @@ -97,6 +103,7 @@ drink_icon = "berryjuice" drink_name = "Glass of berry juice" drink_desc = "Berry juice. Or maybe its jam. Who cares?" + taste_message = "berry juice" /datum/reagent/consumable/drink/poisonberryjuice name = "Poison Berry Juice" @@ -106,6 +113,7 @@ drink_icon = "poisonberryjuice" drink_name = "Glass of poison berry juice" drink_desc = "A glass of deadly juice." + taste_message = "berry juice" /datum/reagent/consumable/drink/poisonberryjuice/on_mob_life(mob/living/M) M.adjustToxLoss(1) @@ -116,12 +124,14 @@ id = "applejuice" description = "The sweet juice of an apple, fit for all ages." color = "#ECFF56" // rgb: 236, 255, 86 + taste_message = "apple juice" /datum/reagent/consumable/drink/watermelonjuice name = "Watermelon Juice" id = "watermelonjuice" description = "Delicious juice made from watermelon." color = "#863333" // rgb: 134, 51, 51 + taste_message = "watermelon juice" /datum/reagent/consumable/drink/lemonjuice name = "Lemon Juice" @@ -131,12 +141,14 @@ drink_icon = "lemonglass" drink_name = "Glass of lemonjuice" drink_desc = "Sour..." + taste_message = "lemon juice" /datum/reagent/consumable/drink/grapejuice name = "Grape Juice" id = "grapejuice" description = "This juice is known to stain shirts." color = "#993399" // rgb: 153, 51, 153 + taste_message = "grape juice" /datum/reagent/consumable/drink/banana name = "Banana Juice" @@ -146,6 +158,7 @@ drink_icon = "banana" drink_name = "Glass of banana juice" drink_desc = "The raw essence of a banana. HONK" + taste_message = "banana juice" /datum/reagent/consumable/drink/banana/on_mob_life(mob/living/M) if((ishuman(M) && M.job in list("Clown") ) || issmall(M)) @@ -160,6 +173,7 @@ drink_icon = "nothing" drink_name = "Nothing" drink_desc = "Absolutely nothing." + taste_message = "nothing... how?" /datum/reagent/consumable/drink/nothing/on_mob_life(mob/living/M) if(ishuman(M) && M.job in list("Mime")) @@ -176,6 +190,7 @@ drink_icon = "glass_brown" drink_name = "Glass of potato juice" drink_desc = "Who in the hell requests this? Gross!" + taste_message = "puke, you're pretty sure" /datum/reagent/consumable/drink/milk name = "Milk" @@ -185,6 +200,7 @@ drink_icon = "glass_white" drink_name = "Glass of milk" drink_desc = "White and nutritious goodness!" + taste_message = "milk" /datum/reagent/consumable/drink/milk/on_mob_life(mob/living/M) if(M.getBruteLoss() && prob(20)) @@ -200,6 +216,7 @@ color = "#DFDFC7" // rgb: 223, 223, 199 drink_name = "Glass of soy milk" drink_desc = "White and nutritious soy goodness!" + taste_message = "fake milk" /datum/reagent/consumable/drink/milk/cream name = "Cream" @@ -208,12 +225,14 @@ color = "#DFD7AF" // rgb: 223, 215, 175 drink_name = "Glass of cream" drink_desc = "Ewwww..." + taste_message = "cream" /datum/reagent/consumable/drink/milk/chocolate_milk name = "Chocolate milk" id ="chocolate_milk" description = "Chocolate-flavored milk, tastes like being a kid again." color = "#85432C" + taste_message = "chocolate milk" /datum/reagent/consumable/drink/hot_coco name = "Hot Chocolate" @@ -225,6 +244,7 @@ drink_icon = "hot_coco" drink_name = "Glass of hot coco" drink_desc = "Delicious and cozy" + taste_message = "chocolate" /datum/reagent/consumable/drink/coffee name = "Coffee" @@ -242,6 +262,7 @@ drink_icon = "glass_brown" drink_name = "Glass of coffee" drink_desc = "Don't drop it, or you'll send scalding liquid and glass shards everywhere." + taste_message = "coffee" /datum/reagent/consumable/drink/coffee/on_mob_life(mob/living/M) if(holder.has_reagent("frostoil")) @@ -266,6 +287,7 @@ drink_icon = "icedcoffeeglass" drink_name = "Iced Coffee" drink_desc = "A drink to perk you up and refresh you!" + taste_message = "coffee" /datum/reagent/consumable/drink/coffee/soy_latte name = "Soy Latte" @@ -322,6 +344,7 @@ drink_icon = "glass_brown" drink_name = "Glass of Tea" drink_desc = "A glass of hot tea. Perhaps a cup with a handle would have been smarter?" + taste_message = "tea" /datum/reagent/consumable/drink/tea/on_mob_life(mob/living/M) if(M.getToxLoss() && prob(20)) @@ -347,6 +370,7 @@ drink_icon = "bananahonkglass" drink_name = "Banana Honk" drink_desc = "A drink from Banana Heaven." + taste_message = "honks" /datum/reagent/consumable/drink/bananahonk/on_mob_life(mob/living/M) if((ishuman(M) && M.job in list("Clown") ) || issmall(M)) @@ -362,6 +386,7 @@ drink_icon = "silencerglass" drink_name = "Silencer" drink_desc = "A drink from mime Heaven." + taste_message = "mphhhh" /datum/reagent/consumable/drink/silencer/on_mob_life(mob/living/M) if(ishuman(M) && M.job in list("Mime")) @@ -378,6 +403,7 @@ drink_icon = "chocolatepudding" drink_name = "Chocolate Pudding" drink_desc = "Tasty" + taste_message = "chocolate" /datum/reagent/consumable/drink/vanillapudding name = "Vanilla Pudding" @@ -388,6 +414,7 @@ drink_icon = "vanillapudding" drink_name = "Vanilla Pudding" drink_desc = "Tasty." + taste_message = "vanilla" /datum/reagent/consumable/drink/cherryshake name = "Cherry Shake" @@ -398,6 +425,7 @@ drink_icon = "cherryshake" drink_name = "Cherry Shake" drink_desc = "A cherry flavored milkshake." + taste_message = "cherry milkshake" /datum/reagent/consumable/drink/bluecherryshake name = "Blue Cherry Shake" @@ -408,6 +436,7 @@ drink_icon = "bluecherryshake" drink_name = "Blue Cherry Shake" drink_desc = "An exotic blue milkshake." + taste_message = "cherry milkshake" /datum/reagent/consumable/drink/pumpkin_latte name = "Pumpkin Latte" @@ -418,6 +447,7 @@ drink_icon = "pumpkin_latte" drink_name = "Pumpkin Latte" drink_desc = "A mix of coffee and pumpkin juice." + taste_message = "overpriced hipster spices" /datum/reagent/consumable/drink/gibbfloats name = "Gibb Floats" @@ -428,21 +458,25 @@ drink_icon= "gibbfloats" drink_name = "Gibbfloat" drink_desc = "Dr. Gibb with ice cream on top." + taste_message = "taste revolution" /datum/reagent/consumable/drink/pumpkinjuice name = "Pumpkin Juice" id = "pumpkinjuice" description = "Juiced from real pumpkin." color = "#FFA500" + taste_message = "autumn" /datum/reagent/consumable/drink/blumpkinjuice name = "Blumpkin Juice" id = "blumpkinjuice" description = "Juiced from real blumpkin." color = "#00BFFF" + taste_message = "caustic puke" /datum/reagent/consumable/drink/grape_soda name = "Grape soda" id = "grapesoda" description = "Beloved of children and teetotalers." - color = "#E6CDFF" \ No newline at end of file + color = "#E6CDFF" + taste_message = "grape soda" diff --git a/code/modules/reagents/chemistry/reagents/drugs.dm b/code/modules/reagents/chemistry/reagents/drugs.dm index 3719c6f49b8..6a4ede5fe50 100644 --- a/code/modules/reagents/chemistry/reagents/drugs.dm +++ b/code/modules/reagents/chemistry/reagents/drugs.dm @@ -439,6 +439,7 @@ reagent_state = LIQUID color = "#644600" addiction_chance = 30 + taste_message = "puke... or worse" /datum/reagent/jenkem/on_mob_life(mob/living/M) M.Dizzy(5) @@ -500,6 +501,7 @@ overdose_threshold = 15 process_flags = ORGANIC | SYNTHETIC //Flipping for everyone! addiction_chance = 10 + taste_message = "flips" /datum/reagent/fliptonium/on_mob_life(mob/living/M) if(current_cycle == 5) @@ -575,6 +577,7 @@ overdose_threshold = 20 addiction_chance = 60 metabolization_rate = 0.6 + taste_message = "wiper fluid" /datum/reagent/lube/ultra/on_mob_life(mob/living/M) var/high_message = pick("You feel your servos whir!", "You feel like you need to go faster.", "You feel like you were just overclocked!") @@ -622,6 +625,7 @@ process_flags = SYNTHETIC overdose_threshold = 20 addiction_chance = 50 + taste_message = "silicone" /datum/reagent/surge/on_mob_life(mob/living/M) @@ -651,4 +655,4 @@ B.pixel_y = rand(-20, 0) B.icon = I M.adjustFireLoss(rand(1,5)*REAGENTS_EFFECT_MULTIPLIER) - M.adjustBruteLoss(rand(1,5)*REAGENTS_EFFECT_MULTIPLIER) \ No newline at end of file + M.adjustBruteLoss(rand(1,5)*REAGENTS_EFFECT_MULTIPLIER) diff --git a/code/modules/reagents/chemistry/reagents/food.dm b/code/modules/reagents/chemistry/reagents/food.dm index a18f1c01c42..9b4ffbad1c4 100644 --- a/code/modules/reagents/chemistry/reagents/food.dm +++ b/code/modules/reagents/chemistry/reagents/food.dm @@ -23,6 +23,7 @@ reagent_state = SOLID nutriment_factor = 15 * REAGENTS_METABOLISM color = "#664330" // rgb: 102, 67, 48 + taste_message = "bland food" /datum/reagent/consumable/nutriment/on_mob_life(mob/living/M) if(!(M.mind in ticker.mode.vampires)) @@ -31,11 +32,9 @@ if(H.can_eat(diet_flags)) //Make sure the species has it's dietflag set, otherwise it can't digest any nutrients if(prob(50)) M.adjustBruteLoss(-1) - if(H.species.exotic_blood) - H.vessel.add_reagent(H.species.exotic_blood, 0.4) - else - if(!(H.species.flags & NO_BLOOD)) - H.vessel.add_reagent("blood", 0.4) + if(!(NO_BLOOD in H.species.species_traits))//do not restore blood on things with no blood by nature. + if(H.blood_volume < BLOOD_VOLUME_NORMAL) + H.blood_volume += 0.4 ..() /datum/reagent/consumable/nutriment/protein // Meat-based protein, digestable by carnivores and omnivores, worthless to herbivores @@ -43,12 +42,14 @@ id = "protein" description = "Various essential proteins and fats commonly found in animal flesh and blood." diet_flags = DIET_CARN | DIET_OMNI + taste_message = "meat" /datum/reagent/consumable/nutriment/plantmatter // Plant-based biomatter, digestable by herbivores and omnivores, worthless to carnivores name = "Plant-matter" id = "plantmatter" description = "Vitamin-rich fibers and natural sugars commonly found in fresh produce." diet_flags = DIET_HERB | DIET_OMNI + taste_message = "plant matter" /datum/reagent/consumable/vitamin name = "Vitamin" @@ -56,6 +57,7 @@ description = "All the best vitamins, minerals, and carbohydrates the body needs in pure form." reagent_state = SOLID color = "#664330" // rgb: 102, 67, 48 + taste_message = null /datum/reagent/consumable/vitamin/on_mob_life(mob/living/M) if(prob(50)) @@ -65,11 +67,9 @@ M.satiety += 30 if(ishuman(M)) var/mob/living/carbon/human/H = M - if(H.species.exotic_blood) - H.vessel.add_reagent(H.species.exotic_blood, 0.5) - else - if(!(H.species.flags & NO_BLOOD)) - H.vessel.add_reagent("blood", 0.5) + if(!(NO_BLOOD in H.species.species_traits))//do not restore blood on things with no blood by nature. + if(H.blood_volume < BLOOD_VOLUME_NORMAL) + H.blood_volume += 0.5 ..() /datum/reagent/consumable/sugar @@ -80,6 +80,7 @@ color = "#FFFFFF" // rgb: 255, 255, 255 nutriment_factor = 5 * REAGENTS_METABOLISM overdose_threshold = 200 // Hyperglycaemic shock + taste_message = "sweetness" /datum/reagent/consumable/sugar/on_mob_life(mob/living/M) M.AdjustDrowsy(-5) @@ -111,6 +112,7 @@ reagent_state = LIQUID nutriment_factor = 2 * REAGENTS_METABOLISM color = "#792300" // rgb: 121, 35, 0 + taste_message = "salt" /datum/reagent/consumable/ketchup name = "Ketchup" @@ -119,6 +121,7 @@ reagent_state = LIQUID nutriment_factor = 5 * REAGENTS_METABOLISM color = "#731008" // rgb: 115, 16, 8 + taste_message = "ketchup" /datum/reagent/consumable/capsaicin name = "Capsaicin Oil" @@ -126,6 +129,7 @@ description = "This is what makes chilis hot." reagent_state = LIQUID color = "#B31008" // rgb: 179, 16, 8 + taste_message = "HOTNESS" /datum/reagent/consumable/capsaicin/on_mob_life(mob/living/M) switch(current_cycle) @@ -155,6 +159,7 @@ description = "This shit goes in pepperspray." reagent_state = LIQUID color = "#B31008" // rgb: 179, 16, 8 + taste_message = "PURE FIRE" /datum/reagent/consumable/condensedcapsaicin/on_mob_life(mob/living/M) if(prob(5)) @@ -223,6 +228,7 @@ reagent_state = LIQUID color = "#8BA6E9" // rgb: 139, 166, 233 process_flags = ORGANIC | SYNTHETIC + taste_message = "cold" /datum/reagent/consumable/frostoil/on_mob_life(mob/living/M) switch(current_cycle) @@ -262,6 +268,7 @@ reagent_state = SOLID color = "#B1B0B0" overdose_threshold = 100 + taste_message = "salt" /datum/reagent/consumable/sodiumchloride/overdose_process(mob/living/M, severity) if(prob(70)) @@ -273,6 +280,7 @@ id = "blackpepper" description = "A powder ground from peppercorns. *AAAACHOOO*" reagent_state = SOLID + taste_message = "pepper" /datum/reagent/consumable/cocoa name = "Cocoa Powder" @@ -281,6 +289,7 @@ reagent_state = SOLID nutriment_factor = 5 * REAGENTS_METABOLISM color = "#302000" // rgb: 48, 32, 0 + taste_message = "bitter cocoa" /datum/reagent/consumable/vanilla name = "Vanilla Powder" @@ -289,6 +298,7 @@ reagent_state = SOLID nutriment_factor = 5 * REAGENTS_METABOLISM color = "#FFFACD" + taste_message = "bitter vanilla" /datum/reagent/consumable/hot_coco name = "Hot Chocolate" @@ -297,6 +307,7 @@ reagent_state = LIQUID nutriment_factor = 2 * REAGENTS_METABOLISM color = "#403010" // rgb: 64, 48, 16 + taste_message = "chocolate" /datum/reagent/consumable/hot_coco/on_mob_life(mob/living/M) if(M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 @@ -308,6 +319,7 @@ id = "sprinkles" description = "Multi-colored little bits of sugar, commonly found on donuts. Loved by cops." color = "#FF00FF" // rgb: 255, 0, 255 + taste_message = "sweetness" /datum/reagent/consumable/sprinkles/on_mob_life(mob/living/M) if(ishuman(M) && M.job in list("Security Officer", "Security Pod Pilot", "Detective", "Warden", "Head of Security", "Brig Physician", "Internal Affairs Agent", "Magistrate")) @@ -322,6 +334,7 @@ reagent_state = LIQUID nutriment_factor = 20 * REAGENTS_METABOLISM color = "#302000" // rgb: 48, 32, 0 + taste_message = "oil" /datum/reagent/consumable/cornoil/reaction_turf(turf/simulated/T, volume) if(!istype(T)) @@ -342,6 +355,7 @@ description = "Heated beyond usefulness, this enzyme is now worthless." reagent_state = LIQUID color = "#282314" // rgb: 54, 94, 48 + taste_message = null /datum/reagent/consumable/dry_ramen name = "Dry Ramen" @@ -349,6 +363,7 @@ description = "Space age food, since August 25, 1958. Contains dried noodles, vegetables, and chemicals that boil in contact with water." reagent_state = SOLID color = "#302000" // rgb: 48, 32, 0 + taste_message = "dry ramen coated with what might just be your tears" /datum/reagent/consumable/hot_ramen name = "Hot Ramen" @@ -357,6 +372,7 @@ reagent_state = LIQUID nutriment_factor = 5 * REAGENTS_METABOLISM color = "#302000" // rgb: 48, 32, 0 + taste_message = "ramen" /datum/reagent/consumable/hot_ramen/on_mob_life(mob/living/M) if(M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 @@ -370,6 +386,7 @@ reagent_state = LIQUID nutriment_factor = 5 * REAGENTS_METABOLISM color = "#302000" // rgb: 48, 32, 0 + taste_message = "SPICY ramen" /datum/reagent/consumable/hell_ramen/on_mob_life(mob/living/M) M.bodytemperature += 10 * TEMPERATURE_DAMAGE_COEFFICIENT @@ -381,9 +398,10 @@ description = "This is what you rub all over yourself to pretend to be a ghost." reagent_state = SOLID color = "#FFFFFF" // rgb: 0, 0, 0 + taste_message = "flour" /datum/reagent/consumable/flour/reaction_turf(turf/T, volume) - if(!istype(T, /turf/space)) + if(!isspaceturf(T)) new /obj/effect/decal/cleanable/flour(T) /datum/reagent/consumable/rice @@ -393,6 +411,7 @@ reagent_state = SOLID nutriment_factor = 3 * REAGENTS_METABOLISM color = "#FFFFFF" // rgb: 0, 0, 0 + taste_message = "rice" /datum/reagent/consumable/cherryjelly name = "Cherry Jelly" @@ -400,6 +419,7 @@ description = "Totally the best. Only to be spread on foods with excellent lateral symmetry." reagent_state = LIQUID color = "#801E28" // rgb: 128, 30, 40 + taste_message = "cherry jelly" /datum/reagent/consumable/bluecherryjelly name = "Blue Cherry Jelly" @@ -407,6 +427,7 @@ description = "Blue and tastier kind of cherry jelly." reagent_state = LIQUID color = "#00F0FF" + taste_message = "cherry jelly" /datum/reagent/consumable/egg name = "Egg" @@ -414,6 +435,7 @@ description = "A runny and viscous mixture of clear and yellow fluids." reagent_state = LIQUID color = "#F0C814" + taste_message = "eggs" /datum/reagent/consumable/egg/on_mob_life(mob/living/M) if(prob(8)) @@ -428,6 +450,7 @@ description = "The powdered starch of maize, derived from the kernel's endosperm. Used as a thickener for gravies and puddings." reagent_state = LIQUID color = "#C8A5DC" + taste_message = "flour" /datum/reagent/consumable/corn_syrup name = "Corn Syrup" @@ -435,6 +458,7 @@ description = "A sweet syrup derived from corn starch that has had its starches converted into maltose and other sugars." reagent_state = LIQUID color = "#C8A5DC" + taste_message = "sweetness" /datum/reagent/consumable/corn_syrup/on_mob_life(mob/living/M) M.reagents.add_reagent("sugar", 1.2) @@ -446,6 +470,7 @@ description = "An incredibly sweet syrup, created from corn syrup treated with enzymes to convert its sugars into fructose." reagent_state = LIQUID color = "#C8A5DC" + taste_message = "diabetes" /datum/reagent/consumable/vhfcs/on_mob_life(mob/living/M) M.reagents.add_reagent("sugar", 2.4) @@ -458,6 +483,7 @@ reagent_state = LIQUID color = "#d3a308" nutriment_factor = 15 * REAGENTS_METABOLISM + taste_message = "sweetness" /datum/reagent/consumable/honey/on_mob_life(mob/living/M) M.reagents.add_reagent("sugar", 3) @@ -466,6 +492,25 @@ M.adjustFireLoss(-1) ..() +/datum/reagent/consumable/onion + name = "Concentrated Onion Juice" + id = "onionjuice" + description = "A strong tasting substance that can induce partial blindness." + color = "#c0c9a0" + taste_message = "bitterness" + +/datum/reagent/consumable/onion/reaction_mob(mob/living/M, method = TOUCH, volume) + if(method == TOUCH) + if(!M.is_mouth_covered() && !M.is_eyes_covered()) + if(!M.get_organ_slot("eyes")) //can't blind somebody with no eyes + to_chat(M, "Your eye sockets feel wet.") + else + if(!M.eye_blurry) + to_chat(M, "Tears well up in your eyes!") + M.EyeBlind(2) + M.EyeBlurry(5) + ..() + /datum/reagent/consumable/chocolate name = "Chocolate" id = "chocolate" @@ -476,13 +521,14 @@ drink_icon = "chocolateglass" drink_name = "Glass of chocolate" drink_desc = "Tasty" + taste_message = "chocolate" /datum/reagent/consumable/chocolate/on_mob_life(mob/living/M) M.reagents.add_reagent("sugar", 0.8) ..() /datum/reagent/consumable/chocolate/reaction_turf(turf/T, volume) - if(volume >= 5 && !istype(T, /turf/space)) + if(volume >= 5 && !isspaceturf(T)) new /obj/item/weapon/reagent_containers/food/snacks/choc_pile(T) /datum/reagent/consumable/mugwort @@ -491,6 +537,7 @@ description = "A rather bitter herb once thought to hold magical protective properties." reagent_state = LIQUID color = "#21170E" + taste_message = "tea" /datum/reagent/consumable/mugwort/on_mob_life(mob/living/M) if(ishuman(M) && M.mind) @@ -509,6 +556,7 @@ color = "#AB5D5D" metabolization_rate = 0.2 overdose_threshold = 133 + taste_message = "bacon" /datum/reagent/consumable/porktonium/overdose_process(mob/living/M, severity) if(prob(15)) @@ -525,6 +573,7 @@ color = "#B4B400" metabolization_rate = 0.2 nutriment_factor = 2 + taste_message = "broth" /datum/reagent/consumable/cheese name = "Cheese" @@ -532,6 +581,7 @@ description = "Some cheese. Pour it out to make it solid." reagent_state = SOLID color = "#FFFF00" + taste_message = "cheese" /datum/reagent/consumable/cheese/on_mob_life(mob/living/M) if(prob(3)) @@ -539,7 +589,7 @@ ..() /datum/reagent/consumable/cheese/reaction_turf(turf/T, volume) - if(volume >= 5 && !istype(T, /turf/space)) + if(volume >= 5 && !isspaceturf(T)) new /obj/item/weapon/reagent_containers/food/snacks/cheesewedge(T) /datum/reagent/consumable/fake_cheese @@ -549,6 +599,7 @@ reagent_state = LIQUID color = "#B2B139" overdose_threshold = 50 + taste_message = "cheese?" /datum/reagent/consumable/fake_cheese/overdose_process(mob/living/M, severity) if(prob(8)) @@ -562,6 +613,7 @@ reagent_state = SOLID color = "#50FF00" addiction_chance = 5 + taste_message = "cheeeeeese...?" /datum/reagent/consumable/weird_cheese/on_mob_life(mob/living/M) if(prob(5)) @@ -569,7 +621,7 @@ ..() /datum/reagent/consumable/weird_cheese/reaction_turf(turf/T, volume) - if(volume >= 5 && !istype(T, /turf/space)) + if(volume >= 5 && !isspaceturf(T)) new /obj/item/weapon/reagent_containers/food/snacks/weirdcheesewedge(T) /datum/reagent/consumable/beans @@ -578,6 +630,7 @@ description = "A dish made of mashed beans cooked with lard." reagent_state = LIQUID color = "#684435" + taste_message = "burritos" /datum/reagent/consumable/beans/on_mob_life(mob/living/M) if(prob(10)) @@ -590,6 +643,7 @@ description = "Bread! Yep, bread." reagent_state = SOLID color = "#9C5013" + taste_message = "bread" /datum/reagent/consumable/soybeanoil name = "Space-soybean oil" @@ -597,6 +651,7 @@ description = "An oil derived from extra-terrestrial soybeans." reagent_state = LIQUID color = "#B1B0B0" + taste_message = "oil" /datum/reagent/consumable/soybeanoil/on_mob_life(mob/living/M) if(prob(10)) @@ -613,6 +668,7 @@ color = "#B1B0B0" metabolization_rate = 0.2 overdose_threshold = 75 + taste_message = "oil" /datum/reagent/consumable/hydrogenated_soybeanoil/on_mob_life(mob/living/M) if(prob(15)) @@ -643,6 +699,7 @@ description = "A paste comprised of highly-processed organic material. Uncomfortably similar to deviled ham spread." reagent_state = LIQUID color = "#EBD7D7" + taste_message = "meat" /datum/reagent/consumable/meatslurry/on_mob_life(mob/living/M) if(prob(4)) @@ -650,7 +707,7 @@ ..() /datum/reagent/consumable/meatslurry/reaction_turf(turf/T, volume) - if(volume >= 5 && prob(10) && !istype(T, /turf/space)) + if(prob(10) && volume >= 5 && !isspaceturf(T)) new /obj/effect/decal/cleanable/blood/gibs/cleangibs(T) playsound(T, 'sound/effects/splat.ogg', 50, 1, -3) @@ -660,6 +717,7 @@ description = "A starchy food paste made from boiled potatoes." reagent_state = SOLID color = "#D6D9C1" + taste_message = "potatoes" /datum/reagent/consumable/gravy name = "Gravy" @@ -667,6 +725,7 @@ description = "A savory sauce made from a simple meat-dripping roux and milk." reagent_state = LIQUID color = "#B4641B" + taste_message = "gravy" /datum/reagent/consumable/beff name = "Beff" @@ -674,6 +733,7 @@ description = "An advanced blend of mechanically-recovered meat and textured synthesized protein product notable for its unusual crystalline grain when sliced." reagent_state = SOLID color = "#AC7E67" + taste_message = "meat" /datum/reagent/consumable/beff/on_mob_life(mob/living/M) if(prob(5)) @@ -691,6 +751,7 @@ description = "An Italian-American variety of salami usually made from beef and pork" reagent_state = SOLID color = "#AC7E67" + taste_message = "pepperoni" /datum/reagent/consumable/pepperoni/reaction_mob(mob/living/M, method=TOUCH, volume) if(method == TOUCH) @@ -722,6 +783,7 @@ description = "A gross and unidentifiable substance." reagent_state = LIQUID color = "#63DE63" + taste_message = "burned food" /datum/reagent/questionmark/reaction_mob(mob/living/M, method=TOUCH, volume) if(method == INGEST) @@ -737,6 +799,7 @@ reagent_state = LIQUID color = "#F5F5F5" metabolization_rate = 0.2 + taste_message = "excellent cuisine" /datum/reagent/msg/on_mob_life(mob/living/M) if(prob(5)) @@ -747,16 +810,13 @@ M.Stun(rand(2,5)) ..() -/datum/reagent/msg/reaction_mob(mob/living/M, method=TOUCH, volume) - if(method == INGEST) - to_chat(M, "That tasted amazing!") - /datum/reagent/cholesterol name = "cholesterol" id = "cholesterol" description = "Pure cholesterol. Probably not very good for you." reagent_state = LIQUID color = "#FFFAC8" + taste_message = "heart attack" /datum/reagent/cholesterol/on_mob_life(mob/living/M) if(volume >= 25 && prob(volume*0.15)) @@ -782,6 +842,7 @@ description = "Scrapings of some unknown fungus found growing on the station walls." reagent_state = LIQUID color = "#C87D28" + taste_message = "mold" /datum/reagent/fungus/reaction_mob(mob/living/M, method=TOUCH, volume) if(method == INGEST) @@ -802,6 +863,7 @@ reagent_state = LIQUID color = "#8EAE7B" process_flags = ORGANIC | SYNTHETIC //Because apparently ghosts in the shell + taste_message = "spooks" /datum/reagent/ectoplasm/on_mob_life(mob/living/M) var/spooky_message = pick("You notice something moving out of the corner of your eye, but nothing is there...", "Your eyes twitch, you feel like something you can't see is here...", "You've got the heebie-jeebies.", "You feel uneasy.", "You shudder as if cold...", "You feel something gliding across your back...") @@ -815,13 +877,13 @@ to_chat(M, "[spooky_eat]") /datum/reagent/ectoplasm/reaction_turf(turf/T, volume) - if(volume >= 10 && !istype(T, /turf/space)) + if(volume >= 10 && !isspaceturf(T)) new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm(T) ///Vomit/// /datum/reagent/consumable/bread/reaction_turf(turf/T, volume) - if(volume >= 5 && !istype(T, /turf/space)) + if(volume >= 5 && !isspaceturf(T)) new /obj/item/weapon/reagent_containers/food/snacks/breadslice(T) /datum/reagent/vomit @@ -830,9 +892,10 @@ description = "Looks like someone lost their lunch. And then collected it. Yuck." reagent_state = LIQUID color = "#FFFF00" + taste_message = "puke" /datum/reagent/vomit/reaction_turf(turf/T, volume) - if(volume >= 5 && !istype(T, /turf/space)) + if(volume >= 5 && !isspaceturf(T)) new /obj/effect/decal/cleanable/vomit(T) playsound(T, 'sound/effects/splat.ogg', 50, 1, -3) @@ -842,9 +905,10 @@ description = "Whoa, that can't be natural. That's horrible." reagent_state = LIQUID color = "#78FF74" + taste_message = "puke" /datum/reagent/greenvomit/reaction_turf(turf/T, volume) - if(volume >= 5 && !istype(T, /turf/space)) + if(volume >= 5 && !isspaceturf(T)) new /obj/effect/decal/cleanable/vomit/green(T) playsound(T, 'sound/effects/splat.ogg', 50, 1, -3) @@ -855,6 +919,7 @@ id = "entpoly" description = "An ichor, derived from a certain mushroom, makes for a bad time." color = "#1d043d" + taste_message = "mold" /datum/reagent/consumable/entpoly/on_mob_life(mob/living/M) if(current_cycle >= 10) @@ -873,6 +938,7 @@ description = "A stimulating ichor which causes luminescent fungi to grow on the skin. " color = "#b5a213" var/light_activated = 0 + taste_message = "mold" /datum/reagent/consumable/tinlux/on_mob_life(mob/living/M) if(!light_activated) @@ -889,6 +955,7 @@ description = "A bubbly paste that heals wounds of the skin." color = "#d3a308" nutriment_factor = 3 * REAGENTS_METABOLISM + taste_message = "sweetness" /datum/reagent/consumable/vitfro/on_mob_life(mob/living/M) if(prob(80)) diff --git a/code/modules/reagents/chemistry/reagents/medicine.dm b/code/modules/reagents/chemistry/reagents/medicine.dm index 452f9f6d2ff..2463201b069 100644 --- a/code/modules/reagents/chemistry/reagents/medicine.dm +++ b/code/modules/reagents/chemistry/reagents/medicine.dm @@ -92,8 +92,7 @@ //Mitocholide is hard enough to get, it's probably fair to make this all internal organs for(var/obj/item/organ/internal/I in H.internal_organs) - if(I.damage > 0) - I.damage = max(I.damage-0.4, 0) + I.take_damage(-0.4) ..() /datum/reagent/medicine/mitocholide/reaction_obj(obj/O, volume) @@ -203,17 +202,19 @@ description = "This saline and glucose solution can help stabilize critically injured patients and cleanse wounds." reagent_state = LIQUID color = "#C8A5DC" - penetrates_skin = 1 + penetrates_skin = TRUE metabolization_rate = 0.15 + taste_message = "salt" /datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/M) if(prob(33)) M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER) M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER) - if(ishuman(M)) + if(ishuman(M) && prob(33)) var/mob/living/carbon/human/H = M - if(!H.species.exotic_blood && !(H.species.flags & NO_BLOOD) && prob(33)) - H.vessel.add_reagent("blood", 1) + if(!(NO_BLOOD in H.species.species_traits))//do not restore blood on things with no blood by nature. + if(H.blood_volume < BLOOD_VOLUME_NORMAL) + H.blood_volume += 1 ..() /datum/reagent/medicine/synthflesh @@ -233,7 +234,7 @@ ..() /datum/reagent/medicine/synthflesh/reaction_turf(turf/T, volume) //let's make a mess! - if(volume >= 5 && !istype(T, /turf/space)) + if(volume >= 5 && !isspaceturf(T)) new /obj/effect/decal/cleanable/blood/gibs/cleangibs(T) playsound(T, 'sound/effects/splat.ogg', 50, 1, -3) @@ -511,7 +512,7 @@ var/mob/living/carbon/human/H = M var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes) if(istype(E)) - E.damage = max(E.damage-1, 0) + E.take_damage(-1) M.AdjustEyeBlurry(-1) M.AdjustEarDamage(-1) if(prob(50)) @@ -721,7 +722,7 @@ id = "stimulants" description = "Increases run speed and eliminates stuns, can heal minor damage. If overdosed it will deal toxin damage and stun." color = "#C8A5DC" - can_synth = 0 + can_synth = FALSE /datum/reagent/medicine/stimulants/on_mob_life(mob/living/M) if(volume > 5) @@ -756,7 +757,7 @@ color = "#C8A5DC" metabolization_rate = 0.5 * REAGENTS_METABOLISM overdose_threshold = 60 - can_synth = 0 + can_synth = FALSE /datum/reagent/medicine/stimulative_agent/on_mob_life(mob/living/M) M.status_flags |= GOTTAGOFAST @@ -869,7 +870,7 @@ description = "Miniature medical robots that swiftly restore bodily damage. May begin to attack their host's cells in high amounts." reagent_state = SOLID color = "#555555" - can_synth = 0 + can_synth = FALSE /datum/reagent/medicine/syndicate_nanites/on_mob_life(mob/living/M) M.adjustBruteLoss(-5*REAGENTS_EFFECT_MULTIPLIER) //A ton of healing - this is a 50 telecrystal investment. diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm index 241370668e0..be541ad7982 100644 --- a/code/modules/reagents/chemistry/reagents/misc.dm +++ b/code/modules/reagents/chemistry/reagents/misc.dm @@ -38,6 +38,7 @@ description = "A colorless, odorless gas." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 + taste_message = null /datum/reagent/nitrogen name = "Nitrogen" @@ -45,7 +46,7 @@ description = "A colorless, odorless, tasteless gas." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 - + taste_message = null /datum/reagent/hydrogen name = "Hydrogen" @@ -53,7 +54,7 @@ description = "A colorless, odorless, nonmetallic, tasteless, highly combustible diatomic gas." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 - + taste_message = null /datum/reagent/potassium name = "Potassium" @@ -61,7 +62,7 @@ description = "A soft, low-melting solid that can easily be cut with a knife. Reacts violently with water." reagent_state = SOLID color = "#A0A0A0" // rgb: 160, 160, 160 - + taste_message = "bad ideas" /datum/reagent/sulfur name = "Sulfur" @@ -69,7 +70,7 @@ description = "A chemical element." reagent_state = SOLID color = "#BF8C00" // rgb: 191, 140, 0 - + taste_message = "impulsive decisions" /datum/reagent/sodium name = "Sodium" @@ -77,7 +78,7 @@ description = "A chemical element." reagent_state = SOLID color = "#808080" // rgb: 128, 128, 128 - + taste_message = "horrible misjudgement" /datum/reagent/phosphorus name = "Phosphorus" @@ -85,7 +86,7 @@ description = "A chemical element." reagent_state = SOLID color = "#832828" // rgb: 131, 40, 40 - + taste_message = "misguided choices" /datum/reagent/carbon name = "Carbon" @@ -93,9 +94,10 @@ description = "A chemical element." reagent_state = SOLID color = "#1C1300" // rgb: 30, 20, 0 + taste_message = "like a pencil or something" /datum/reagent/carbon/reaction_turf(turf/T, volume) - if(!istype(T, /turf/space) && !(locate(/obj/effect/decal/cleanable/dirt) in T)) // Only add one dirt per turf. Was causing people to crash. + if(!(locate(/obj/effect/decal/cleanable/dirt) in T) && !isspaceturf(T)) // Only add one dirt per turf. Was causing people to crash. new /obj/effect/decal/cleanable/dirt(T) /datum/reagent/gold @@ -104,6 +106,7 @@ description = "Gold is a dense, soft, shiny metal and the most malleable and ductile metal known." reagent_state = SOLID color = "#F7C430" // rgb: 247, 196, 48 + taste_message = "bling" /datum/reagent/silver @@ -112,6 +115,7 @@ description = "A lustrous metallic element regarded as one of the precious metals." reagent_state = SOLID color = "#D0D0D0" // rgb: 208, 208, 208 + taste_message = "sub-par bling" /datum/reagent/aluminum @@ -120,6 +124,7 @@ description = "A silvery white and ductile member of the boron group of chemical elements." reagent_state = SOLID color = "#A8A8A8" // rgb: 168, 168, 168 + taste_message = null /datum/reagent/silicon @@ -128,6 +133,7 @@ description = "A tetravalent metalloid, silicon is less reactive than its chemical analog carbon." reagent_state = SOLID color = "#A8A8A8" // rgb: 168, 168, 168 + taste_message = "a CPU" /datum/reagent/copper @@ -135,6 +141,7 @@ id = "copper" description = "A highly ductile metal." color = "#6E3B08" // rgb: 110, 59, 8 + taste_message = "copper" /datum/reagent/iron @@ -143,12 +150,14 @@ description = "Pure iron is a metal." reagent_state = SOLID color = "#C8A5DC" // rgb: 200, 165, 220 + taste_message = "metal" /datum/reagent/iron/on_mob_life(mob/living/M) if(ishuman(M)) var/mob/living/carbon/human/H = M - if(!H.species.exotic_blood && !(H.species.flags & NO_BLOOD)) - H.vessel.add_reagent("blood", 0.8) + if(!H.species.exotic_blood && !(NO_BLOOD in H.species.species_traits)) + if(H.blood_volume < BLOOD_VOLUME_NORMAL) + H.blood_volume += 0.8 ..() //foam @@ -158,6 +167,7 @@ description = "A perfluoronated sulfonic acid that forms a foam when mixed with water." reagent_state = LIQUID color = "#9E6B38" // rgb: 158, 107, 56 + taste_message = null // metal foaming agent // this is lithium hydride. Add other recipies (e.g. LiH + H2O -> LiOH + H2) eventually @@ -167,6 +177,7 @@ description = "A caustic substance commonly used in fertilizer or household cleaners." reagent_state = GAS color = "#404030" // rgb: 64, 64, 48 + taste_message = "floor cleaner" /datum/reagent/diethylamine name = "Diethylamine" @@ -174,6 +185,7 @@ description = "A secondary amine, useful as a plant nutrient and as building block for other compounds." reagent_state = LIQUID color = "#322D00" + taste_message = null /datum/reagent/oil name = "Oil" @@ -181,6 +193,7 @@ description = "A decent lubricant for machines. High in benzene, naptha and other hydrocarbons." reagent_state = LIQUID color = "#3C3C3C" + taste_message = "motor oil" /datum/reagent/iodine name = "Iodine" @@ -188,6 +201,7 @@ description = "A purple gaseous element." reagent_state = GAS color = "#493062" + taste_message = null /datum/reagent/carpet name = "Carpet" @@ -195,6 +209,7 @@ description = "A covering of thick fabric used on floors. This type looks particularly gross." reagent_state = LIQUID color = "#701345" + taste_message = "a carpet...what?" /datum/reagent/carpet/reaction_turf(turf/simulated/T, volume) if(istype(T, /turf/simulated/floor/plating) || istype(T, /turf/simulated/floor/plasteel)) @@ -208,6 +223,7 @@ description = "A red-brown liquid element." reagent_state = LIQUID color = "#4E3A3A" + taste_message = null /datum/reagent/phenol name = "Phenol" @@ -215,6 +231,7 @@ description = "Also known as carbolic acid, this is a useful building block in organic chemistry." reagent_state = LIQUID color = "#525050" + taste_message = null /datum/reagent/ash name = "Ash" @@ -222,6 +239,7 @@ description = "Ashes to ashes, dust to dust." reagent_state = LIQUID color = "#191919" + taste_message = "ash" /datum/reagent/acetone name = "Acetone" @@ -229,6 +247,7 @@ description = "Pure 100% nail polish remover, also works as an industrial solvent." reagent_state = LIQUID color = "#474747" + taste_message = null /datum/reagent/acetone/on_mob_life(mob/living/M) M.adjustToxLoss(1.5) @@ -240,6 +259,7 @@ description = "Volatile." reagent_state = LIQUID color = "#60A584" // rgb: 96, 165, 132 + taste_message = null /datum/reagent/colorful_reagent name = "Colorful Reagent" @@ -247,6 +267,7 @@ description = "It's pure liquid colors. That's a thing now." reagent_state = LIQUID color = "#FFFFFF" + taste_message = "the rainbow" /datum/reagent/colorful_reagent/reaction_mob(mob/living/simple_animal/M, method=TOUCH, volume) if(isanimal(M)) @@ -254,14 +275,10 @@ ..() /datum/reagent/colorful_reagent/reaction_obj(obj/O, volume) - if(O) - O.color = pick(random_color_list) - ..() + O.color = pick(random_color_list) /datum/reagent/colorful_reagent/reaction_turf(turf/T, volume) - if(T) - T.color = pick(random_color_list) - ..() + T.color = pick(random_color_list) /datum/reagent/hair_dye name = "Quantum Hair Dye" @@ -269,6 +286,7 @@ description = "A rather tubular and gnarly way of coloring totally bodacious hair. Duuuudddeee." reagent_state = LIQUID color = "#960096" + taste_message = "the 2559 Autumn release of the Le Jeune Homme catalogue for professional hairdressers" /datum/reagent/hair_dye/reaction_mob(mob/living/M, volume) if(ishuman(M)) @@ -290,7 +308,8 @@ description = "A mysterious chemical purported to help grow hair. Often found on late-night TV infomercials." reagent_state = LIQUID color = "#5DDA5D" - penetrates_skin = 1 + penetrates_skin = TRUE + taste_message = "someone's beard" /datum/reagent/hairgrownium/reaction_mob(mob/living/M, volume) if(ishuman(M)) @@ -308,7 +327,8 @@ description = "A mysterious and powerful chemical purported to cause rapid hair growth." reagent_state = LIQUID color = "#5DD95D" - penetrates_skin = 1 + penetrates_skin = TRUE + taste_message = "multiple beards" /datum/reagent/super_hairgrownium/reaction_mob(mob/living/M, volume) if(ishuman(M)) @@ -341,6 +361,7 @@ description = "Oh god it never ends, IT NEVER STOPS!" reagent_state = GAS color = "#D06E27" + taste_message = "mexican cuisine" /datum/reagent/fartonium/on_mob_life(mob/living/M) if(prob(66)) @@ -364,6 +385,7 @@ description = "Hugs, in liquid form. Yes, the concept of a hug. As a liquid. This makes sense in the future." reagent_state = LIQUID color = "#FF97B9" + taste_message = "hugs" /datum/reagent/love name = "Pure love" @@ -371,10 +393,13 @@ description = "What is this emotion you humans call \"love?\" Oh, it's this? This is it? Huh, well okay then, thanks." reagent_state = LIQUID color = "#FF83A5" + process_flags = ORGANIC | SYNTHETIC // That's the power of love~ + taste_message = "love" /datum/reagent/love/on_mob_life(mob/living/M) - if(M.a_intent == INTENT_HARM) - M.a_intent = INTENT_HELP + if(M.a_intent != INTENT_HELP) + M.a_intent_change(INTENT_HELP) + M.can_change_intents = 0 //Now you have no choice but to be helpful. if(prob(8)) var/lovely_phrase = pick("appreciated", "loved", "pretty good", "really nice", "pretty happy with yourself, even though things haven't always gone as well as they could") @@ -391,14 +416,20 @@ break ..() +/datum/reagent/love/on_mob_delete(mob/living/M) + M.can_change_intents = 1 + ..() + /datum/reagent/love/reaction_mob(mob/living/M, method=TOUCH, volume) to_chat(M, "You feel loved!") + /datum/reagent/royal_bee_jelly name = "royal bee jelly" id = "royal_bee_jelly" description = "Royal Bee Jelly, if injected into a Queen Space Bee said bee will split into two bees." color = "#00ff80" + taste_message = "sweetness" /datum/reagent/royal_bee_jelly/on_mob_life(mob/living/M) if(prob(2)) @@ -411,6 +442,7 @@ description = "A commercial chemical designed to help older men in the bedroom." //not really it just makes you a giant color = "#ff0000"//strong red. rgb 255, 0, 0 var/current_size = 1 + taste_message = "enhancement" /datum/reagent/growthserum/on_mob_life(mob/living/carbon/H) var/newsize = current_size @@ -442,13 +474,15 @@ description = "Finely ground Coffee beans, used to make coffee." reagent_state = SOLID color = "#5B2E0D" // rgb: 91, 46, 13 + taste_message = "bitterness" /datum/reagent/toxin/teapowder name = "Ground Tea Leaves" id = "teapowder" description = "Finely shredded Tea leaves, used for making tea." reagent_state = SOLID - color = "#7F8400" // rgb: 127, 132, 0 + color = "#7F8400" // rgb: 127, 132, 0" + taste_message = "bitterness" //////////////////////////////////Hydroponics stuff/////////////////////////////// @@ -458,6 +492,7 @@ description = "Some kind of nutriment. You can't really tell what it is. You should probably report it, along with how you obtained it." color = "#000000" // RBG: 0, 0, 0 var/tox_prob = 0 + taste_message = "puke" /datum/reagent/plantnutriment/on_mob_life(mob/living/M) if(prob(tox_prob)) @@ -520,4 +555,4 @@ id = "triplepiss" description = "Ewwwwwwwww." reagent_state = LIQUID - color = "#857400" \ No newline at end of file + color = "#857400" diff --git a/code/modules/reagents/chemistry/reagents/paint.dm b/code/modules/reagents/chemistry/reagents/paint.dm index 0ca67259126..f7f622be331 100644 --- a/code/modules/reagents/chemistry/reagents/paint.dm +++ b/code/modules/reagents/chemistry/reagents/paint.dm @@ -4,9 +4,10 @@ description = "Floor paint is used to color floor tiles." reagent_state = LIQUID color = "#808080" + taste_message = "paint" /datum/reagent/paint/reaction_turf(turf/T, volume) - if(!istype(T, /turf/space)) + if(!isspaceturf(T)) T.color = color /datum/reagent/paint/reaction_obj(obj/O, volume) @@ -54,7 +55,8 @@ description = "Paint remover is used to remove floor paint from floor tiles." reagent_state = LIQUID color = "#808080" + taste_message = "alcohol" /datum/reagent/paint_remover/reaction_turf(turf/T, volume) - if(!istype(T, /turf/space)) - T.color = initial(T.color) \ No newline at end of file + if(!isspaceturf(T)) + T.color = initial(T.color) diff --git a/code/modules/reagents/chemistry/reagents/paradise_pop.dm b/code/modules/reagents/chemistry/reagents/paradise_pop.dm index 2dab79627cc..edf633bcacc 100644 --- a/code/modules/reagents/chemistry/reagents/paradise_pop.dm +++ b/code/modules/reagents/chemistry/reagents/paradise_pop.dm @@ -15,6 +15,7 @@ description = "Tastes just how you'd think Paradise would if you could bottle it." reagent_state = LIQUID color = "#cc0044" + taste_message = "paradise" //Apple-pocalypse: Low chance to cause a goonchem vortex that pulls things within a very small radius (2 tiles?) towards the drinker /datum/reagent/consumable/drink/apple_pocalypse @@ -23,6 +24,7 @@ description = "If doomsday came in fruit form, it'd probably be apples." reagent_state = LIQUID color = "#44FF44" + taste_message = "doomsday" /datum/reagent/consumable/drink/apple_pocalypse/on_mob_life(mob/living/M) if(prob(1)) @@ -38,6 +40,7 @@ description = "Reason for ban: Excessive Flavor." reagent_state = LIQUID color = "#FF44FF" + taste_message = "a permaban" /datum/reagent/consumable/drink/berry_banned/on_mob_life(mob/living/M) if(prob(10)) @@ -65,6 +68,7 @@ description = "Reason for ban: Excessive Flavor." reagent_state = LIQUID color = "#FF44FF" + taste_message = "a permaban" /datum/reagent/consumable/drink/berry_banned2/on_mob_life(mob/living/M) if(prob(50)) @@ -85,6 +89,7 @@ description = "Creamy, smooth flavor, just like the bald heads of the masses. Supposedly aged for 30 years." reagent_state = LIQUID color = "#4d2600" + taste_message = "greytide" /datum/reagent/consumable/drink/blackeye_brew/on_mob_life(mob/living/M) if(prob(25)) @@ -107,6 +112,7 @@ description = "Exploding with grape flavor and a favorite among ERT members system-wide." reagent_state = LIQUID color = "#9933ff" + taste_message = "old people" /datum/reagent/consumable/drink/grape_granade/on_mob_life(mob/living/M) if(prob(1)) @@ -125,6 +131,7 @@ description = "Soft drinks have been detected on collision course with your tastebuds." reagent_state = LIQUID color = "#cc9900" + taste_message = "flying space rocks" /datum/reagent/consumable/drink/meteor_malt/on_mob_life(mob/living/M) if(prob(25)) @@ -134,4 +141,4 @@ var/amount = rand(1, 5) var/mineral = pick("copper", "iron", "gold", "carbon", "silver", "aluminum", "silicon", "sodiumchloride", "plasma") M.reagents.add_reagent(mineral, amount) - ..() \ No newline at end of file + ..() diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic.dm index 43e81db402f..e75b904d648 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic.dm @@ -7,6 +7,7 @@ drink_icon = "dr_gibb_glass" drink_name = "Glass of welder fuel" drink_desc = "Unless you are an industrial tool, this is probably not safe for consumption." + taste_message = "mistakes" /datum/reagent/fuel/reaction_mob(mob/living/M, method=TOUCH, volume)//Splashing people with welding fuel to make them easy to ignite! if(method == TOUCH) @@ -20,6 +21,7 @@ description = "The liquid phase of an unusual extraterrestrial compound." reagent_state = LIQUID color = "#7A2B94" + taste_message = "corporate assets going to waste" /datum/reagent/plasma/on_mob_life(mob/living/M) M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER) @@ -43,12 +45,13 @@ reagent_state = SOLID color = "#673910" // rgb: 103, 57, 16 process_flags = ORGANIC | SYNTHETIC + taste_message = "rust" /datum/reagent/thermite/reaction_turf(turf/simulated/wall/W, volume) if(volume >= 5 && istype(W)) W.thermite = 1 W.overlays.Cut() - W.overlays = image('icons/effects/effects.dmi',icon_state = "thermite") + W.overlays = image('icons/effects/effects.dmi', icon_state = "thermite") /datum/reagent/glycerol name = "Glycerol" @@ -56,6 +59,7 @@ description = "Glycerol is a simple polyol compound. Glycerol is sweet-tasting and of low toxicity." reagent_state = LIQUID color = "#808080" // rgb: 128, 128, 128 + taste_message = "sweetness" /datum/reagent/stabilizing_agent name = "Stabilizing Agent" @@ -63,6 +67,7 @@ description = "A chemical that stabilises normally volatile compounds, preventing them from reacting immediately." reagent_state = LIQUID color = "#FFFF00" + taste_message = "long-term stability" /datum/reagent/clf3 name = "Chlorine Trifluoride" @@ -72,6 +77,7 @@ color = "#FF0000" metabolization_rate = 4 process_flags = ORGANIC | SYNTHETIC + taste_message = null /datum/reagent/clf3/on_mob_life(mob/living/M) M.adjust_fire_stacks(2) @@ -80,21 +86,19 @@ ..() /datum/reagent/clf3/reaction_turf(turf/simulated/T, volume) - if(istype(T, /turf/simulated/floor/plating)) + if(prob(1) && istype(T, /turf/simulated/floor/plating)) var/turf/simulated/floor/plating/F = T - if(prob(1)) - F.ChangeTurf(/turf/space) - if(istype(T, /turf/simulated/floor/)) + F.ChangeTurf(/turf/space) + if(istype(T, /turf/simulated/floor)) var/turf/simulated/floor/F = T if(prob(volume/10)) F.make_plating() - if(istype(F, /turf/simulated/floor/)) + if(istype(F, /turf/simulated/floor)) new /obj/effect/hotspot(F) - if(istype(T, /turf/simulated/wall/)) + if(prob(volume/10) && istype(T, /turf/simulated/wall)) var/turf/simulated/wall/W = T - if(prob(volume/10)) - W.ChangeTurf(/turf/simulated/floor) - if(istype(T, /turf/simulated/shuttle/)) + W.ChangeTurf(/turf/simulated/floor) + if(istype(T, /turf/simulated/shuttle)) new /obj/effect/hotspot(T) /datum/reagent/clf3/reaction_mob(mob/living/M, method=TOUCH, volume) @@ -116,6 +120,7 @@ description = "Sucks everything into the detonation point." reagent_state = LIQUID color = "#800080" + taste_message = "the end of the world" /datum/reagent/blackpowder name = "Black Powder" @@ -124,10 +129,11 @@ reagent_state = LIQUID color = "#000000" metabolization_rate = 0.05 - penetrates_skin = 1 + penetrates_skin = TRUE + taste_message = "explosions" /datum/reagent/blackpowder/reaction_turf(turf/T, volume) //oh shit - if(volume >= 5 && !istype(T, /turf/space)) + if(volume >= 5 && !isspaceturf(T)) if(!locate(/obj/effect/decal/cleanable/dirt/blackpowder) in T) //let's not have hundreds of decals of black powder on the same turf new /obj/effect/decal/cleanable/dirt/blackpowder(T) @@ -258,8 +264,7 @@ M.ExtinguishMob() /datum/reagent/firefighting_foam/reaction_obj(obj/O, volume) - if(istype(O)) - O.extinguish() + O.extinguish() /datum/reagent/firefighting_foam/reaction_turf(turf/simulated/T, volume) if(!istype(T)) @@ -279,6 +284,7 @@ id = "plasma_dust" description = "A fine dust of plasma. This chemical has unusual mutagenic properties for viruses and slimes alike." color = "#500064" // rgb: 80, 0, 100 + taste_message = "corporate assets going to waste" /datum/reagent/plasma_dust/on_mob_life(mob/living/M) M.adjustToxLoss(3) diff --git a/code/modules/reagents/chemistry/reagents/toxins.dm b/code/modules/reagents/chemistry/reagents/toxins.dm index 40d9cb1c481..dc99e5e77d9 100644 --- a/code/modules/reagents/chemistry/reagents/toxins.dm +++ b/code/modules/reagents/chemistry/reagents/toxins.dm @@ -38,6 +38,7 @@ description = "Useful for dealing with undesirable customers." reagent_state = LIQUID color = "#CF3600" // rgb: 207, 54, 0 + taste_message = "mint" /datum/reagent/minttoxin/on_mob_life(mob/living/M) if(FAT in M.mutations) @@ -50,6 +51,7 @@ description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL." reagent_state = LIQUID color = "#801E28" // rgb: 128, 30, 40 + taste_message = "slimes" /datum/reagent/slimejelly/on_mob_life(mob/living/M) if(prob(10)) @@ -65,7 +67,8 @@ description = "A corruptive toxin produced by slimes." reagent_state = LIQUID color = "#13BC5E" // rgb: 19, 188, 94 - can_synth = 0 + can_synth = FALSE + taste_message = "shadows" /datum/reagent/slimetoxin/on_mob_life(mob/living/M) if(ishuman(M)) @@ -84,7 +87,7 @@ description = "An advanced corruptive toxin produced by slimes." reagent_state = LIQUID color = "#13BC5E" // rgb: 19, 188, 94 - can_synth = 0 + can_synth = FALSE /datum/reagent/aslimetoxin/reaction_mob(mob/living/M, method=TOUCH, volume) if(method != TOUCH) @@ -98,7 +101,8 @@ reagent_state = LIQUID color = "#484848" // rgb: 72, 72, 72 metabolization_rate = 0.2 - penetrates_skin = 1 + penetrates_skin = TRUE + taste_message = "metal" /datum/reagent/mercury/on_mob_life(mob/living/M) if(prob(70)) @@ -111,8 +115,9 @@ description = "A chemical element." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 - penetrates_skin = 1 + penetrates_skin = TRUE process_flags = ORGANIC | SYNTHETIC + taste_message = "fire" /datum/reagent/chlorine/on_mob_life(mob/living/M) M.adjustFireLoss(1) @@ -124,8 +129,9 @@ description = "A highly-reactive chemical element." reagent_state = GAS color = "#6A6054" - penetrates_skin = 1 + penetrates_skin = TRUE process_flags = ORGANIC | SYNTHETIC + taste_message = "spicy freshness" /datum/reagent/fluorine/on_mob_life(mob/living/M) M.adjustFireLoss(1) @@ -138,7 +144,7 @@ description = "Radium is an alkaline earth metal. It is extremely radioactive." reagent_state = SOLID color = "#C7C7C7" // rgb: 199,199,199 - penetrates_skin = 1 + penetrates_skin = TRUE /datum/reagent/radium/on_mob_life(mob/living/M) if(M.radiation < 80) @@ -146,7 +152,7 @@ ..() /datum/reagent/radium/reaction_turf(turf/T, volume) - if(volume >= 3 && !istype(T, /turf/space)) + if(volume >= 3 && !isspaceturf(T)) new /obj/effect/decal/cleanable/greenglow(T) /datum/reagent/mutagen @@ -182,13 +188,14 @@ description = "A silvery-white metallic chemical element in the actinide series, weakly radioactive." reagent_state = SOLID color = "#B8B8C0" // rgb: 184, 184, 192 + taste_message = null /datum/reagent/uranium/on_mob_life(mob/living/M) M.apply_effect(2, IRRADIATE, negate_armor = 1) ..() /datum/reagent/uranium/reaction_turf(turf/T, volume) - if(volume >= 3 && !istype(T, /turf/space)) + if(volume >= 3 && !isspaceturf(T)) new /obj/effect/decal/cleanable/greenglow(T) @@ -212,6 +219,7 @@ reagent_state = LIQUID color = "#00D72B" process_flags = ORGANIC | SYNTHETIC + taste_message = "ACID" /datum/reagent/sacid/on_mob_life(mob/living/M) M.adjustFireLoss(1) @@ -221,6 +229,8 @@ if(method == TOUCH) if(ishuman(M)) var/mob/living/carbon/human/H = M + if(H.get_species() == "Grey") + return if(volume > 25) @@ -248,8 +258,8 @@ if(ishuman(M)) var/mob/living/carbon/human/H = M - if(volume < 10) - to_chat(M, "The greenish acidic substance stings you, but isn't concentrated enough to harm you!") + if(H.get_species() == "Grey") + return if(volume >=10 && volume <=25) if(!H.unacidable) @@ -322,6 +332,7 @@ drink_icon ="beerglass" drink_name = "Beer glass" drink_desc = "A freezing pint of beer" + taste_message = "beer" /datum/reagent/beer2/on_mob_life(mob/living/M) switch(current_cycle) @@ -339,8 +350,9 @@ reagent_state = LIQUID color = "#CF3600" metabolization_rate = 0.1 - penetrates_skin = 1 - can_synth = 0 + penetrates_skin = TRUE + can_synth = FALSE + taste_message = null /datum/reagent/polonium/on_mob_life(mob/living/M) M.apply_effect(8, IRRADIATE, negate_armor = 1) @@ -354,6 +366,7 @@ color = "#E7C4C4" metabolization_rate = 0.2 overdose_threshold = 40 + taste_message = null /datum/reagent/histamine/reaction_mob(mob/living/M, method=TOUCH, volume) //dumping histamine on someone is VERY mean. if(iscarbon(M)) @@ -425,7 +438,7 @@ description = "Formaldehyde is a common industrial chemical and is used to preserve corpses and medical samples. It is highly toxic and irritating." reagent_state = LIQUID color = "#DED6D0" - penetrates_skin = 1 + penetrates_skin = TRUE /datum/reagent/formaldehyde/on_mob_life(mob/living/M) M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER) @@ -441,7 +454,7 @@ color = "#CF3600" metabolization_rate = 0.2 overdose_threshold = 40 - can_synth = 0 + can_synth = FALSE /datum/reagent/venom/on_mob_life(mob/living/M) if(prob(25)) @@ -509,7 +522,8 @@ reagent_state = LIQUID color = "#CF3600" metabolization_rate = 0.1 - penetrates_skin = 1 + penetrates_skin = TRUE + taste_message = "almonds" /datum/reagent/cyanide/on_mob_life(mob/living/M) M.adjustToxLoss(1.5*REAGENTS_EFFECT_MULTIPLIER) @@ -532,7 +546,7 @@ reagent_state = LIQUID color = "#B0B0B0" metabolization_rate = 0.3 - penetrates_skin = 1 + penetrates_skin = TRUE /datum/reagent/itching_powder/on_mob_life(mob/living/M) if(prob(25)) @@ -566,6 +580,7 @@ reagent_state = LIQUID color = "#4141D2" process_flags = ORGANIC | SYNTHETIC + taste_message = "ACID" /datum/reagent/facid/on_mob_life(mob/living/M) M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER) @@ -628,7 +643,8 @@ description = "A highly potent cardiac poison - can kill within minutes." reagent_state = LIQUID color = "#7F10C0" - can_synth = 0 + can_synth = FALSE + taste_message = null /datum/reagent/initropidril/on_mob_life(mob/living/M) if(prob(33)) @@ -659,6 +675,7 @@ reagent_state = LIQUID color = "#1E4664" metabolization_rate = 0.2 + taste_message = null /datum/reagent/pancuronium/on_mob_life(mob/living/M) switch(current_cycle) @@ -691,7 +708,8 @@ reagent_state = LIQUID color = "#5F8BE1" metabolization_rate = 0.7 - can_synth = 0 + can_synth = FALSE + taste_message = null /datum/reagent/sodium_thiopental/on_mob_life(mob/living/M) switch(current_cycle) @@ -718,8 +736,9 @@ reagent_state = LIQUID color = "#646EA0" metabolization_rate = 0.8 - penetrates_skin = 1 - can_synth = 0 + penetrates_skin = TRUE + can_synth = FALSE + taste_message = null /datum/reagent/ketamine/on_mob_life(mob/living/M) switch(current_cycle) @@ -769,6 +788,7 @@ description = "A toxin produced by certain mushrooms. Very deadly." reagent_state = LIQUID color = "#D9D9D9" + taste_message = null /datum/reagent/amanitin/on_mob_delete(mob/living/M) M.adjustToxLoss(current_cycle*rand(2,4)) @@ -781,6 +801,7 @@ reagent_state = SOLID color = "#D1DED1" metabolization_rate = 0.2 + taste_message = "battery acid" /datum/reagent/lipolicide/on_mob_life(mob/living/M) if(!M.nutrition) @@ -804,7 +825,7 @@ reagent_state = LIQUID color = "#C2D8CD" metabolization_rate = 0.05 - can_synth = 0 + can_synth = FALSE /datum/reagent/coniine/on_mob_life(mob/living/M) M.adjustToxLoss(2) @@ -818,7 +839,7 @@ reagent_state = LIQUID color = "#191919" metabolization_rate = 0.1 - penetrates_skin = 1 + penetrates_skin = TRUE /datum/reagent/curare/on_mob_life(mob/living/M) M.adjustToxLoss(1) @@ -844,6 +865,21 @@ M.AdjustLoseBreath(1) ..() +/datum/reagent/heparin //Based on a real-life anticoagulant. + name = "Heparin" + id = "heparin" + description = "A powerful anticoagulant. Victims will bleed uncontrollably and suffer scaling bruising." + reagent_state = LIQUID + color = "#C8C8C8" //RGB: 200, 200, 200 + metabolization_rate = 0.2 * REAGENTS_METABOLISM + +/datum/reagent/heparin/on_mob_life(mob/living/M) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + H.bleed_rate = min(H.bleed_rate + 2, 8) + H.adjustBruteLoss(1) + ..() + /datum/reagent/sarin name = "Sarin" id = "sarin" @@ -851,8 +887,9 @@ reagent_state = LIQUID color = "#C7C7C7" metabolization_rate = 0.1 - penetrates_skin = 1 + penetrates_skin = TRUE overdose_threshold = 25 + taste_message = null /datum/reagent/sarin/on_mob_life(mob/living/M) switch(current_cycle) @@ -920,13 +957,13 @@ W.visible_message("The fungi are completely dissolved by the solution!") /datum/reagent/glyphosate/reaction_obj(obj/O, volume) - if(istype(O,/obj/structure/alien/weeds/)) + if(istype(O,/obj/structure/alien/weeds)) var/obj/structure/alien/weeds/alien_weeds = O alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast alien_weeds.healthcheck() else if(istype(O, /obj/structure/glowshroom)) //even a small amount is enough to kill it qdel(O) - else if(istype(O,/obj/structure/spacevine)) + else if(istype(O, /obj/structure/spacevine)) var/obj/structure/spacevine/SV = O SV.on_chem_effect(src) @@ -937,7 +974,7 @@ C.adjustToxLoss(lethality) if(ishuman(M)) var/mob/living/carbon/human/H = M - if(H.species.flags & IS_PLANT) //plantmen take a LOT of damage + if(IS_PLANT in H.species.species_traits) //plantmen take a LOT of damage H.adjustToxLoss(50) ..() else if(istype(M, /mob/living/simple_animal/diona)) //plantmen monkeys (diona) take EVEN MORE damage @@ -981,6 +1018,7 @@ reagent_state = LIQUID color = "#60A584" heart_rate_stop = 1 + taste_message = "sweetness" /datum/reagent/capulettium/on_mob_life(mob/living/M) switch(current_cycle) @@ -1004,6 +1042,7 @@ reagent_state = LIQUID color = "#60A584" heart_rate_stop = 1 + taste_message = "sweetness" /datum/reagent/capulettium_plus/on_mob_life(mob/living/M) M.Silence(2) @@ -1062,6 +1101,7 @@ reagent_state = SOLID color = "#993333" process_flags = ORGANIC | SYNTHETIC + taste_message = "ANTS OH GOD" /datum/reagent/ants/on_mob_life(mob/living/M) M.adjustBruteLoss(2) @@ -1083,6 +1123,7 @@ metabolization_rate = 0.2 var/shock_timer = 0 process_flags = ORGANIC | SYNTHETIC + taste_message = "electricity" /datum/reagent/teslium/on_mob_life(mob/living/M) shock_timer++ diff --git a/code/modules/reagents/chemistry/reagents/water.dm b/code/modules/reagents/chemistry/reagents/water.dm index 70d2a9f76c0..c1c3191c5ba 100644 --- a/code/modules/reagents/chemistry/reagents/water.dm +++ b/code/modules/reagents/chemistry/reagents/water.dm @@ -18,12 +18,68 @@ drink_icon = "glass_clear" drink_name = "Glass of Water" drink_desc = "The father of all refreshments." + taste_message = null /datum/reagent/water/reaction_mob(mob/living/M, method=TOUCH, volume) -// Put out fire if(method == TOUCH) + // Put out fire M.adjust_fire_stacks(-(volume / 10)) M.ExtinguishMob() + if(ishuman(M)) + + var/mob/living/carbon/human/H = M + + if(H.get_species() != "Grey") //God this is so gross I hate it. + return + + if(volume > 25) + + if(H.wear_mask) + to_chat(H, "Your mask protects you from the water!") + return + + if(H.head) + to_chat(H, "Your helmet protects you from the water!") + return + + if(!M.unacidable) + if(prob(75)) + var/obj/item/organ/external/affecting = H.get_organ("head") + if(affecting) + affecting.take_damage(5, 10) + H.UpdateDamageIcon() + H.emote("scream") + else + M.take_organ_damage(5,10) + else + M.take_organ_damage(5,10) + + if(method == INGEST) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + + if(H.get_species() != "Grey") + return + + if(volume < 10) + to_chat(M, "The watery solvent substance stings you, but isn't concentrated enough to harm you!") + + if(volume >=10 && volume <=25) + if(!H.unacidable) + M.take_organ_damage(0,min(max(volume-10,2)*2,20)) + M.emote("scream") + + + if(volume > 25) + if(!M.unacidable) + if(prob(75)) + var/obj/item/organ/external/affecting = H.get_organ("head") + if(affecting) + affecting.take_damage(0, 20) + H.UpdateDamageIcon() + H.emote("scream") + else + M.take_organ_damage(0,20) /datum/reagent/water/reaction_turf(turf/simulated/T, volume) if(!istype(T)) @@ -43,8 +99,7 @@ qdel(hotspot) /datum/reagent/water/reaction_obj(obj/O, volume) - if(istype(O)) - O.extinguish() + O.extinguish() if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/monkeycube)) var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/cube = O @@ -61,6 +116,7 @@ description = "Lubricant is a substance introduced between two moving surfaces to reduce the friction and wear between them. giggity." reagent_state = LIQUID color = "#1BB1AB" + taste_message = "oil" /datum/reagent/lube/reaction_turf(turf/simulated/T, volume) if(volume >= 1 && istype(T)) @@ -73,19 +129,18 @@ description = "A compound used to clean things. Now with 50% more sodium hypochlorite!" reagent_state = LIQUID color = "#61C2C2" + taste_message = "floor cleaner" /datum/reagent/space_cleaner/reaction_obj(obj/O, volume) - if(O && !istype(O, /atom/movable/lighting_overlay)) - O.color = initial(O.color) if(istype(O, /obj/effect/decal/cleanable)) qdel(O) - else if(O) + else + O.color = initial(O.color) O.clean_blood() /datum/reagent/space_cleaner/reaction_turf(turf/T, volume) if(volume >= 1) - if(T) - T.color = initial(T.color) + T.color = initial(T.color) T.clean_blood() for(var/obj/effect/decal/cleanable/C in src) qdel(C) @@ -135,13 +190,16 @@ id = "blood" reagent_state = LIQUID color = "#C80000" // rgb: 200, 0, 0 + metabolization_rate = 5 //fast rate so it disappears fast. drink_icon = "glass_red" drink_name = "Glass of Tomato juice" drink_desc = "Are you sure this is tomato juice?" + taste_message = "blood" /datum/reagent/blood/reaction_mob(mob/living/M, method=TOUCH, volume) if(data && data["viruses"]) - for(var/datum/disease/D in data["viruses"]) + for(var/thing in data["viruses"]) + var/datum/disease/D = thing if(D.spread_flags & SPECIAL || D.spread_flags & NON_CONTAGIOUS) continue @@ -151,6 +209,14 @@ else //ingest, patch or inject M.ForceContractDisease(D) + if(method == INGEST && iscarbon(M)) + var/mob/living/carbon/C = M + if(C.get_blood_id() == "blood") + if((!data || !(data["blood_type"] in get_safe_blood(C.dna.b_type)))) + C.reagents.add_reagent("toxin", volume * 0.5) + else + C.blood_volume = min(C.blood_volume + round(volume, 0.1), BLOOD_VOLUME_NORMAL) + /datum/reagent/blood/on_new(list/data) if(istype(data)) SetViruses(src, data) @@ -179,13 +245,13 @@ preserve += D data["viruses"] = preserve - if(mix_data["blood_colour"]) - color = mix_data["blood_colour"] + if(mix_data["blood_color"]) + color = mix_data["blood_color"] return 1 /datum/reagent/blood/on_update(atom/A) - if(data["blood_colour"]) - color = data["blood_colour"] + if(data["blood_color"]) + color = data["blood_color"] return ..() /datum/reagent/blood/reaction_turf(turf/simulated/T, volume)//splash the blood all over the place @@ -199,22 +265,12 @@ blood_prop = new(T) blood_prop.blood_DNA[data["blood_DNA"]] = data["blood_type"] - for(var/datum/disease/D in data["viruses"]) - var/datum/disease/newVirus = D.Copy(1) - blood_prop.viruses += newVirus - newVirus.holder = blood_prop - else if(istype(data["donor"], /mob/living/carbon/alien)) var/obj/effect/decal/cleanable/blood/xeno/blood_prop = locate() in T if(!blood_prop) blood_prop = new(T) blood_prop.blood_DNA["UNKNOWN DNA STRUCTURE"] = "X*" - for(var/datum/disease/D in data["viruses"]) - var/datum/disease/newVirus = D.Copy(1) - blood_prop.viruses += newVirus - newVirus.holder = blood_prop - /datum/reagent/vaccine //data must contain virus type name = "Vaccine" @@ -223,7 +279,8 @@ /datum/reagent/vaccine/reaction_mob(mob/living/M, method=TOUCH, volume) if(islist(data) && (method == INGEST)) - for(var/datum/disease/D in M.viruses) + for(var/thing in M.viruses) + var/datum/disease/D = thing if(D.GetDiseaseID() in data) D.cure() M.resistances |= data @@ -238,6 +295,7 @@ description = "Smelly water from a fish tank. Gross!" reagent_state = LIQUID color = "#757547" + taste_message = "puke" /datum/reagent/fishwater/reaction_mob(mob/living/M, method=TOUCH, volume) if(method == INGEST) @@ -257,6 +315,7 @@ description = "Filthy water scoured from a nasty toilet bowl. Absolutely disgusting." reagent_state = LIQUID color = "#757547" + taste_message = "puke" /datum/reagent/fishwater/toiletwater/reaction_mob(mob/living/M, method=TOUCH, volume) //For shennanigans return @@ -271,6 +330,7 @@ drink_icon = "glass_clear" drink_name = "Glass of Water" drink_desc = "The father of all refreshments." + taste_message = null /datum/reagent/holywater/on_mob_life(mob/living/M) M.AdjustJitter(-5) @@ -346,6 +406,7 @@ description = "Something that shouldn't exist on this plane of existance." process_flags = ORGANIC | SYNTHETIC //ethereal means everything processes it. metabolization_rate = 1 + taste_message = null /datum/reagent/fuel/unholywater/on_mob_life(mob/living/M) if(iscultist(M)) @@ -372,7 +433,8 @@ description = "YOUR FLESH! IT BURNS!" process_flags = ORGANIC | SYNTHETIC //Admin-bus has no brakes! KILL THEM ALL. metabolization_rate = 1 - can_synth = 0 + can_synth = FALSE + taste_message = "admin abuse" /datum/reagent/hellwater/on_mob_life(mob/living/M) M.fire_stacks = min(5, M.fire_stacks + 3) @@ -388,9 +450,10 @@ color = "#FF9966" description = "You don't even want to think about what's in here." reagent_state = LIQUID + taste_message = "meat" /datum/reagent/liquidgibs/reaction_turf(turf/T, volume) //yes i took it from synthflesh... - if(volume >= 5 && !istype(T, /turf/space)) + if(volume >= 5 && !isspaceturf(T)) new /obj/effect/decal/cleanable/blood/gibs/cleangibs(T) playsound(T, 'sound/effects/splat.ogg', 50, 1, -3) @@ -400,6 +463,7 @@ description = "Also known as sodium hydroxide." reagent_state = LIQUID color = "#FFFFD6" // very very light yellow + taste_message = "ACID"//don't drink lye, kids /datum/reagent/drying_agent name = "Drying agent" @@ -416,4 +480,4 @@ if(istype(O, /obj/item/clothing/shoes/galoshes)) var/t_loc = get_turf(O) qdel(O) - new /obj/item/clothing/shoes/galoshes/dry(t_loc) \ No newline at end of file + new /obj/item/clothing/shoes/galoshes/dry(t_loc) diff --git a/code/modules/reagents/chemistry/recipes/toxins.dm b/code/modules/reagents/chemistry/recipes/toxins.dm index 082e209e18b..fb7672d6806 100644 --- a/code/modules/reagents/chemistry/recipes/toxins.dm +++ b/code/modules/reagents/chemistry/recipes/toxins.dm @@ -154,4 +154,13 @@ result = "mutagen" required_reagents = list("radium" = 1, "plasma" = 1, "chlorine" = 1) result_amount = 3 - mix_message = "The substance turns neon green and bubbles unnervingly." \ No newline at end of file + mix_message = "The substance turns neon green and bubbles unnervingly." + +/datum/chemical_reaction/heparin + name = "Heparin" + id = "Heparin" + result = "heparin" + required_reagents = list("formaldehyde" = 1, "sodium" = 1, "chlorine" = 1, "lithium" = 1) + result_amount = 4 + mix_message = "The mixture thins and loses all color." + mix_sound = 'sound/goonstation/misc/drinkfizz.ogg' \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 009828543ce..c379e869768 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -32,7 +32,7 @@ create_reagents(volume) if(spawned_disease) var/datum/disease/F = new spawned_disease(0) - var/list/data = list("viruses" = list(F), "blood_colour" = "#A10808") + var/list/data = list("viruses" = list(F), "blood_color" = "#A10808") reagents.add_reagent("blood", disease_amount, data) if(list_reagents) reagents.add_reagent_list(list_reagents) diff --git a/code/modules/reagents/reagent_containers/glass_containers.dm b/code/modules/reagents/reagent_containers/glass_containers.dm index f60efa3b784..63db086cef8 100644 --- a/code/modules/reagents/reagent_containers/glass_containers.dm +++ b/code/modules/reagents/reagent_containers/glass_containers.dm @@ -40,7 +40,8 @@ /obj/machinery/biogenerator, /obj/machinery/hydroponics, /obj/machinery/constructable_frame, - /obj/machinery/icemachine) + /obj/machinery/icemachine, + /obj/item/weapon/bombcore/chemical) /obj/item/weapon/reagent_containers/glass/New() ..() diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index a6fd792e795..eca60146cc3 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -10,6 +10,7 @@ possible_transfer_amounts = null volume = 50 consume_sound = null + taste = FALSE /obj/item/weapon/reagent_containers/food/pill/New() ..() @@ -108,4 +109,4 @@ name = "Salbutamol pill" desc = "Used to treat respiratory distress." icon_state = "pill8" - list_reagents = list("salbutamol" = 20) \ No newline at end of file + list_reagents = list("salbutamol" = 20) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index ebb13f0830c..e4205ef54d0 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -16,6 +16,7 @@ volume = 15 w_class = WEIGHT_CLASS_TINY sharp = 1 + var/busy = 0 var/mode = SYRINGE_DRAW var/projectile_type = /obj/item/projectile/bullet/dart/syringe @@ -58,13 +59,16 @@ ..() return -/obj/item/weapon/reagent_containers/syringe/afterattack(obj/target, mob/user, proximity) - if(!proximity) return - if(!target.reagents) return +/obj/item/weapon/reagent_containers/syringe/afterattack(atom/target, mob/user , proximity) + if(!proximity) + return + if(!target.reagents) + return + var/mob/living/L if(isliving(target)) - var/mob/living/M = target - if(!M.can_inject(user, 1)) + L = target + if(!L.can_inject(user, 1)) return if(mode == SYRINGE_BROKEN) @@ -75,163 +79,84 @@ if(SYRINGE_DRAW) if(reagents.total_volume >= reagents.maximum_volume) - to_chat(user, "The syringe is full.") + to_chat(user, "The syringe is full.") return - if(ismob(target))//Blood! - if(istype(target, /mob/living/carbon/slime)) - to_chat(user, "You are unable to locate any blood.") - return - if(reagents.has_reagent("blood")) - to_chat(user, "There is already a blood sample in this syringe") - return - if(istype(target, /mob/living/carbon))//maybe just add a blood reagent to all mobs. Then you can suck them dry...With hundreds of syringes. Jolly good idea. - var/mob/living/carbon/T = target - if(!T.dna) - to_chat(usr, "You are unable to locate any blood. (To be specific, your target seems to be missing their DNA datum)") + if(L) //living mob + var/drawn_amount = reagents.maximum_volume - reagents.total_volume + if(target != user) + target.visible_message("[user] is trying to take a blood sample from [target]!", \ + "[user] is trying to take a blood sample from [target]!") + busy = 1 + if(!do_mob(user, target)) + busy = 0 return - if(NOCLONE in T.mutations) //target done been et, no more blood in him - to_chat(user, "You are unable to locate any blood.") + if(reagents.total_volume >= reagents.maximum_volume) return - - - var/time = 30 - if(istype(target,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = T - if(H.species.flags & NO_BLOOD) - to_chat(usr, "You are unable to locate any blood.") - return - if(target == user) - time = 0 - else - for(var/mob/O in viewers(world.view, user)) - O.show_message(text("[] is trying to take a blood sample from []!", user, target), 1) - if(!do_mob(user, target, time)) - return - - var/amount = reagents.maximum_volume - reagents.total_volume - if(amount == 0) - to_chat(usr, "The syringe is full!") - return - - var/datum/reagent/B - if(istype(T,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = T - if(H.species && H.species.exotic_blood && H.vessel.total_volume) - H.vessel.trans_to(src,amount) - else - B = T.take_blood(src,amount) - else - B = T.take_blood(src,amount) - - if(B) - reagents.reagent_list |= B - reagents.update_total() - on_reagent_change() - reagents.handle_reactions() - - to_chat(user, "You take a blood sample from [target]") - for(var/mob/O in viewers(4, user)) - O.show_message("[user] takes a blood sample from [target].", 1) - else - user.visible_message("[user] takes a sample from [target].", "You take a sample from [target].") + busy = 0 + if(L.transfer_blood_to(src, drawn_amount)) + user.visible_message("[user] takes a blood sample from [L].") + else + to_chat(user, "You are unable to draw any blood from [L]!") else //if not mob if(!target.reagents.total_volume) - to_chat(user, "[target] is empty.") + to_chat(user, "[target] is empty!") return if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers) && !istype(target,/obj/item/slime_extract)) - to_chat(user, "You cannot directly remove reagents from this object.") + to_chat(user, "You cannot directly remove reagents from [target]!") return var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) // transfer from, transfer to - who cares? - to_chat(user, "You fill the syringe with [trans] units of the solution.") + to_chat(user, "You fill [src] with [trans] units of the solution.") if(reagents.total_volume >= reagents.maximum_volume) mode=!mode update_icon() if(SYRINGE_INJECT) if(!reagents.total_volume) - to_chat(user, "The Syringe is empty.") - return - if(istype(target, /obj/item/weapon/implantcase/chem)) + to_chat(user, "[src] is empty.") return if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/slime_extract) && !istype(target, /obj/item/clothing/mask/cigarette) && !istype(target, /obj/item/weapon/storage/fancy/cigarettes)) - to_chat(user, "You cannot directly fill this object.") + to_chat(user, "You cannot directly fill [target]!") return - if(istype(target, /obj/item/clothing/mask/cigarette)) - var/obj/item/clothing/mask/cigarette/C = target - if(istype(C.loc, /obj/item/weapon/storage/fancy/cigarettes)) - to_chat(user, "You cannot inject a cigarette while it's still in the pack.") - return if(target.reagents.total_volume >= target.reagents.maximum_volume) - to_chat(user, "[target] is full.") + to_chat(user, "[target] is full.") return - var/mob/living/carbon/human/H = target - if(istype(H)) - var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting) - if(!affected) - to_chat(user, "\The [H] is missing that limb!") - return - /* else if(affected.status & ORGAN_ROBOT) - to_chat(user, "You cannot inject a robotic limb.") - return */ + if(L) //living mob + if(L != user) + L.visible_message("[user] is trying to inject [L]!", \ + "[user] is trying to inject [L]!") + if(!do_mob(user, L)) + return + if(!reagents.total_volume) + return + if(L.reagents.total_volume >= L.reagents.maximum_volume) + return + L.visible_message("[user] injects [L] with the syringe!", \ + "[user] injects [L] with the syringe!") - if(ismob(target) && target != user) - for(var/mob/O in viewers(world.view, user)) - O.show_message(text("[] is trying to inject []!", user, target), 1) + var/list/rinject = list() + for(var/datum/reagent/R in reagents.reagent_list) + rinject += R.name + var/contained = english_list(rinject) - if(!do_mob(user, target, 30)) return - - for(var/mob/O in viewers(world.view, user)) - O.show_message(text("[] injects [] with the syringe!", user, target), 1) - - if(istype(target,/mob/living)) - var/mob/living/M = target - var/list/injected = list() - for(var/datum/reagent/R in reagents.reagent_list) - injected += R.name - var/contained = english_list(injected) - M.create_attack_log("Has been injected with [name] by [key_name(user)]. Reagents: [contained]") - user.create_attack_log("Used the [name] to inject [key_name(M)]. Reagents: [contained]") - if(M.ckey) - msg_admin_attack("[key_name_admin(user)] injected [key_name_admin(M)] with [name]. Reagents: [contained] (INTENT: [uppertext(user.a_intent)])") - if(!iscarbon(user)) - M.LAssailant = null - else - M.LAssailant = user - - reagents.reaction(target, INGEST) - if(ismob(target) && target == user) - reagents.reaction(target, INGEST) - - spawn(5) - var/datum/reagent/blood/B - for(var/datum/reagent/blood/d in reagents.reagent_list) - B = d - break - var/trans - if(B && istype(target,/mob/living/carbon)) - var/mob/living/carbon/C = target - C.inject_blood(src, 5) + if(L != user) + add_logs(user, L, "injected", src, addition="which had [contained]") else - trans = reagents.trans_to(target, amount_per_transfer_from_this) - to_chat(user, "You inject [trans] units of the solution. The syringe now contains [reagents.total_volume] units.") - if(istype(target, /obj/item/weapon/reagent_containers/food/pill/patch)) - var/obj/item/weapon/reagent_containers/food/pill/patch/P = target - if(P.instant_application) - to_chat(user, "You break the medical seal on the [P]!") - P.instant_application = 0 + log_attack("[user.name] ([user.ckey]) injected [L.name] ([L.ckey]) with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)])") - if(reagents.total_volume <= 0 && mode==SYRINGE_INJECT) - mode = SYRINGE_DRAW - update_icon() - - return + var/fraction = min(amount_per_transfer_from_this/reagents.total_volume, 1) + reagents.reaction(L, INGEST, fraction) + reagents.trans_to(target, amount_per_transfer_from_this) + to_chat(user, "You inject [amount_per_transfer_from_this] units of the solution. The syringe now contains [reagents.total_volume] units.") + if (reagents.total_volume <= 0 && mode==SYRINGE_INJECT) + mode = SYRINGE_DRAW + update_icon() /obj/item/weapon/reagent_containers/syringe/update_icon() if(mode == SYRINGE_BROKEN) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 11abc89a343..eb43698d451 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -29,6 +29,7 @@ /obj/structure/reagent_dispensers/proc/boom() visible_message("[src] ruptures!") + chem_splash(loc, 5, list(reagents)) qdel(src) /obj/structure/reagent_dispensers/ex_act(severity) @@ -53,15 +54,6 @@ desc = "A water tank." icon_state = "water" -/obj/structure/reagent_dispensers/watertank/boom() - playsound(loc, 'sound/effects/spray2.ogg', 50, 1, -6) - new /obj/effect/effect/water(loc) - for(var/turf/simulated/T in view(5, loc)) - T.MakeSlippery() - for(var/mob/living/L in T) - L.adjust_fire_stacks(-20) - ..() - /obj/structure/reagent_dispensers/watertank/high name = "high-capacity water tank" desc = "A highly-pressurized water tank made to hold gargantuan amounts of water.." @@ -223,6 +215,34 @@ user.put_in_hands(S) paper_cups-- +/obj/structure/reagent_dispensers/water_cooler/attackby(obj/item/weapon/W, mob/living/user, params) + add_fingerprint(user) + user.changeNext_move(CLICK_CD_MELEE) + if(iswrench(W)) + if(anchored) + playsound(loc, W.usesound, 100, 1) + user.visible_message("[user] starts loosening [src]'s floor casters.", \ + "You start loosening [src]'s floor casters...") + if(do_after(user, 40 * W.toolspeed, target = src)) + if(!loc || !anchored) + return + user.visible_message("[user] loosened [src]'s floor casters.", \ + "You loosen [src]'s floor casters.") + anchored = 0 + else + if(!isfloorturf(loc)) + user.visible_message("A floor must be present to secure [src]!") + return + playsound(loc, W.usesound, 100, 1) + user.visible_message("[user] start securing [src]'s floor casters...", \ + "You start securing [src]'s floor casters...") + if(do_after(user, 40 * W.toolspeed, target = src)) + if(!loc || anchored) + return + user.visible_message("[user] has secured [src]'s floor casters.", \ + "You have secured [src]'s floor casters.") + anchored = 1 + /obj/structure/reagent_dispensers/beerkeg name = "beer keg" desc = "Beer is liquid bread, it's good for you..." @@ -254,4 +274,4 @@ icon_state = "fuel_chem" anchored = 1 density = 0 - accepts_rig = 0 \ No newline at end of file + accepts_rig = 0 diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index fc3baf62556..f0861b2591c 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -377,7 +377,7 @@ found = 1 break if(!found) - to_chat(usr, "\icon[src]The conveyor switch did not detect any linked conveyor belts in range.") + to_chat(usr, "[bicon(src)] The conveyor switch did not detect any linked conveyor belts in range.") return var/obj/machinery/conveyor_switch/NC = new/obj/machinery/conveyor_switch(A, id) transfer_fingerprints_to(NC) diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm index 73fbb455835..e38ea69f345 100644 --- a/code/modules/recycling/disposal-construction.dm +++ b/code/modules/recycling/disposal-construction.dm @@ -98,7 +98,7 @@ /obj/structure/disposalconstruct/AltClick(mob/user) if(user.incapacitated()) - to_chat(user << "You can't do that right now!") + to_chat(user, "You can't do that right now!") return if(!Adjacent(user)) return @@ -195,7 +195,7 @@ playsound(src.loc, I.usesound, 100, 1) update() return - + var/obj/structure/disposalpipe/CP = locate() in T if(ptype>=6 && ptype <= 8) // Disposal or outlet if(CP) // There's something there diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index a3ea37c2d30..c1269def592 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - /*************************************************************** ** Design Datums ** ** All the data for building stuff. ** diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 7f47b68d76a..7c572f759c7 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -1129,6 +1129,15 @@ construction_time = 200 category = list("Misc") +/datum/design/ipc_charger + name = "IPC Charger" + id = "ipc_cahrger" + build_type = MECHFAB + build_path = /obj/item/organ/internal/cyberimp/arm/power_cord + materials = list(MAT_METAL=2000, MAT_GLASS=1000) + construction_time = 200 + category = list("Misc") + /datum/design/ipc_optics name = "IPC Optical Sensor" id = "ipc_optics" diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 66c150f636d..2a791e8c61a 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -260,6 +260,28 @@ build_path = /obj/item/organ/internal/cyberimp/eyes/shield category = list("Misc", "Medical") +/datum/design/cyberimp_breather + name = "Breathing Tube Implant" + desc = "This simple implant adds an internals connector to your back, allowing you to use internals without a mask and protecting you from being choked." + id = "ci-breather" + req_tech = list("materials" = 2, "biotech" = 3) + build_type = PROTOLATHE | MECHFAB + construction_time = 35 + materials = list(MAT_METAL = 600, MAT_GLASS = 250) + build_path = /obj/item/organ/internal/cyberimp/mouth/breathing_tube + category = list("Misc", "Medical") + +/datum/design/cyberimp_toolset + name = "Toolset Arm Implant" + desc = "A stripped-down version of engineering cyborg toolset, designed to be installed on subject's arm." + id = "ci-toolset" + req_tech = list("materials" = 3, "engineering" = 4, "biotech" = 4, "powerstorage" = 4) + build_type = PROTOLATHE | MECHFAB + materials = list (MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500) + construction_time = 200 + build_path = /obj/item/organ/internal/cyberimp/arm/toolset + category = list("Misc", "Medical") + /datum/design/cyberimp_medical_hud name = "Medical HUD implant" desc = "These cybernetic eyes will display a medical HUD over everything you see. Wiggle eyes to control." diff --git a/code/modules/research/designs/stock_parts_designs.dm b/code/modules/research/designs/stock_parts_designs.dm index ab4464a5f27..eb79a54b219 100644 --- a/code/modules/research/designs/stock_parts_designs.dm +++ b/code/modules/research/designs/stock_parts_designs.dm @@ -2,6 +2,8 @@ /////////////Stock Parts//////////////// //////////////////////////////////////// +//Tier 1 Parts + /datum/design/basic_capacitor name = "Basic Capacitor" desc = "A stock part used in the construction of various devices." @@ -11,7 +13,7 @@ materials = list(MAT_METAL = 100, MAT_GLASS = 100) build_path = /obj/item/weapon/stock_parts/capacitor category = list("Stock Parts","Machinery","initial") - lathe_time_factor = 5 + lathe_time_factor = 0.2 /datum/design/basic_sensor name = "Basic Scanning Module" @@ -22,7 +24,7 @@ materials = list(MAT_METAL = 100, MAT_GLASS = 50) build_path = /obj/item/weapon/stock_parts/scanning_module category = list("Stock Parts","Machinery","initial") - lathe_time_factor = 5 + lathe_time_factor = 0.2 /datum/design/micro_mani name = "Micro Manipulator" @@ -33,7 +35,7 @@ materials = list(MAT_METAL = 100) build_path = /obj/item/weapon/stock_parts/manipulator category = list("Stock Parts","Machinery","initial") - lathe_time_factor = 5 + lathe_time_factor = 0.2 /datum/design/basic_micro_laser name = "Basic Micro-Laser" @@ -44,7 +46,7 @@ materials = list(MAT_METAL = 100, MAT_GLASS = 50) build_path = /obj/item/weapon/stock_parts/micro_laser category = list("Stock Parts","Machinery","initial") - lathe_time_factor = 5 + lathe_time_factor = 0.2 /datum/design/basic_matter_bin name = "Basic Matter Bin" @@ -55,7 +57,9 @@ materials = list(MAT_METAL = 100) build_path = /obj/item/weapon/stock_parts/matter_bin category = list("Stock Parts","Machinery","initial") - lathe_time_factor = 5 + lathe_time_factor = 0.2 + +// Tier 2 Parts /datum/design/adv_capacitor name = "Advanced Capacitor" @@ -66,7 +70,7 @@ materials = list(MAT_METAL = 150, MAT_GLASS = 150) build_path = /obj/item/weapon/stock_parts/capacitor/adv category = list("Stock Parts") - lathe_time_factor = 5 + lathe_time_factor = 0.2 /datum/design/adv_sensor name = "Advanced Scanning Module" @@ -77,7 +81,7 @@ materials = list(MAT_METAL = 150, MAT_GLASS = 100) build_path = /obj/item/weapon/stock_parts/scanning_module/adv category = list("Stock Parts") - lathe_time_factor = 5 + lathe_time_factor = 0.2 /datum/design/nano_mani name = "Nano Manipulator" @@ -88,7 +92,7 @@ materials = list(MAT_METAL = 150) build_path = /obj/item/weapon/stock_parts/manipulator/nano category = list("Stock Parts") - lathe_time_factor = 5 + lathe_time_factor = 0.2 /datum/design/high_micro_laser name = "High-Power Micro-Laser" @@ -99,7 +103,7 @@ materials = list(MAT_METAL = 150, MAT_GLASS = 100) build_path = /obj/item/weapon/stock_parts/micro_laser/high category = list("Stock Parts") - lathe_time_factor = 5 + lathe_time_factor = 0.2 /datum/design/adv_matter_bin name = "Advanced Matter Bin" @@ -110,7 +114,9 @@ materials = list(MAT_METAL = 150) build_path = /obj/item/weapon/stock_parts/matter_bin/adv category = list("Stock Parts") - lathe_time_factor = 5 + lathe_time_factor = 0.2 + +// Tier 3 Parts /datum/design/super_capacitor name = "Super Capacitor" @@ -121,7 +127,7 @@ materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_GOLD = 100) build_path = /obj/item/weapon/stock_parts/capacitor/super category = list("Stock Parts") - lathe_time_factor = 5 + lathe_time_factor = 0.2 /datum/design/phasic_sensor name = "Phasic Scanning Module" @@ -132,7 +138,7 @@ materials = list(MAT_METAL = 200, MAT_GLASS = 150, MAT_SILVER = 60) build_path = /obj/item/weapon/stock_parts/scanning_module/phasic category = list("Stock Parts") - lathe_time_factor = 5 + lathe_time_factor = 0.2 /datum/design/pico_mani name = "Pico Manipulator" @@ -143,7 +149,7 @@ materials = list(MAT_METAL = 200) build_path = /obj/item/weapon/stock_parts/manipulator/pico category = list("Stock Parts") - lathe_time_factor = 5 + lathe_time_factor = 0.2 /datum/design/ultra_micro_laser name = "Ultra-High-Power Micro-Laser" @@ -154,7 +160,7 @@ materials = list(MAT_METAL = 200, MAT_GLASS = 150, MAT_URANIUM = 60) build_path = /obj/item/weapon/stock_parts/micro_laser/ultra category = list("Stock Parts") - lathe_time_factor = 5 + lathe_time_factor = 0.2 /datum/design/super_matter_bin name = "Super Matter Bin" @@ -165,7 +171,9 @@ materials = list(MAT_METAL = 200) build_path = /obj/item/weapon/stock_parts/matter_bin/super category = list("Stock Parts") - lathe_time_factor = 5 + lathe_time_factor = 0.2 + +//Tier 4 Parts /datum/design/quadratic_capacitor name = "Quadratic Capacitor" @@ -176,7 +184,7 @@ materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_GOLD = 100, MAT_DIAMOND = 100) build_path = /obj/item/weapon/stock_parts/capacitor/quadratic category = list("Stock Parts") - lathe_time_factor = 5 + lathe_time_factor = 0.2 /datum/design/triphasic_scanning name = "Triphasic Scanning Module" @@ -187,7 +195,7 @@ materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_DIAMOND = 60) build_path = /obj/item/weapon/stock_parts/scanning_module/triphasic category = list("Stock Parts") - lathe_time_factor = 5 + lathe_time_factor = 0.2 /datum/design/femto_mani name = "Femto Manipulator" @@ -198,7 +206,7 @@ materials = list(MAT_METAL = 200, MAT_DIAMOND = 60) build_path = /obj/item/weapon/stock_parts/manipulator/femto category = list("Stock Parts") - lathe_time_factor = 5 + lathe_time_factor = 0.2 /datum/design/quadultra_micro_laser name = "Quad-Ultra Micro-Laser" @@ -209,7 +217,7 @@ materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_URANIUM = 100, MAT_DIAMOND = 60) build_path = /obj/item/weapon/stock_parts/micro_laser/quadultra category = list("Stock Parts") - lathe_time_factor = 5 + lathe_time_factor = 0.2 /datum/design/bluespace_matter_bin name = "Bluespace Matter Bin" @@ -220,7 +228,7 @@ materials = list(MAT_METAL = 250, MAT_DIAMOND = 200) build_path = /obj/item/weapon/stock_parts/matter_bin/bluespace category = list("Stock Parts") - lathe_time_factor = 5 + lathe_time_factor = 0.2 /datum/design/RPED name = "Rapid Part Exchange Device" @@ -242,6 +250,8 @@ build_path = /obj/item/weapon/storage/part_replacer/bluespace category = list("Stock Parts") +//Alien Parts + /datum/design/alienalloy name = "Alien Alloy" desc = "A sheet of reverse-engineered alien alloy." diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 9391af77424..09b17748dfd 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -80,6 +80,36 @@ build_path = /obj/item/weapon/grenade/chem_grenade/large category = list("Weapons") +/datum/design/pyro_grenade + name = "Pyro Grenade" + desc = "An advanced grenade that is able to self ignite its mixture." + id = "pyro_Grenade" + req_tech = list("combat" = 4, "engineering" = 4) + build_type = PROTOLATHE + materials = list(MAT_METAL = 2000, MAT_PLASMA = 500) + build_path = /obj/item/weapon/grenade/chem_grenade/pyro + category = list("Weapons") + +/datum/design/cryo_grenade + name = "Cryo Grenade" + desc = "An advanced grenade that rapidly cools its contents upon detonation." + id = "cryo_Grenade" + req_tech = list("combat" = 3, "materials" = 3) + build_type = PROTOLATHE + materials = list(MAT_METAL = 2000, MAT_SILVER = 500) + build_path = /obj/item/weapon/grenade/chem_grenade/cryo + category = list("Weapons") + +/datum/design/adv_grenade + name = "Advanced Release Grenade" + desc = "An advanced grenade that can be detonated several times, best used with a repeating igniter." + id = "adv_Grenade" + req_tech = list("combat" = 3, "engineering" = 4) + build_type = PROTOLATHE + materials = list(MAT_METAL = 3000, MAT_GLASS = 500) + build_path = /obj/item/weapon/grenade/chem_grenade/adv_release + category = list("Weapons") + /datum/design/tele_shield name = "Telescopic Riot Shield" desc = "An advanced riot shield made of lightweight materials that collapses for easy storage." diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index e8bbbd62db7..90346589829 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - /* Destructive Analyzer @@ -22,7 +20,7 @@ Note: Must be placed within 3 tiles of the R&D Console component_parts += new /obj/item/weapon/stock_parts/manipulator(null) component_parts += new /obj/item/weapon/stock_parts/micro_laser(null) RefreshParts() - + /obj/machinery/r_n_d/destructive_analyzer/upgraded/New() ..() component_parts = list() diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index fc57e16a6e9..790819bd49b 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - /* Research and Development (R&D) Console @@ -425,10 +423,10 @@ won't update every console in existence) but it's more of a hassle to do. Also, message_admins("Protolathe exploit attempted by [key_name(usr, usr.client)]!") if(g2g) //If input is incorrect, nothing happens - var/time_to_construct = PROTOLATHE_CONSTRUCT_DELAY * amount / coeff + var/new_coeff = coeff * being_built.lathe_time_factor + var/time_to_construct = PROTOLATHE_CONSTRUCT_DELAY * new_coeff * amount ** 0.8 var/enough_materials = 1 - time_to_construct /= being_built.lathe_time_factor add_wait_message("Constructing Prototype. Please Wait...", time_to_construct) linked_lathe.busy = 1 flick("protolathe_n",linked_lathe) diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index 3b3fae75f5d..1a6f9020ad0 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - //All devices that link into the R&D console fall into thise type for easy identification and some shared procs. diff --git a/code/modules/research/xenoarchaeology/areas.dm b/code/modules/research/xenoarchaeology/areas.dm deleted file mode 100644 index 9bbbcc6a6f9..00000000000 --- a/code/modules/research/xenoarchaeology/areas.dm +++ /dev/null @@ -1,76 +0,0 @@ - -/area/research_outpost - name = "Research Outpost" - icon_state = "anomaly" - -/area/research_outpost/hallway - name = "Research Outpost Hallway" - icon_state = "hallC" - -/area/research_outpost/gearstore - name = "Expedition Preparation" - icon_state = "anog" - -/area/research_outpost/power - name = "Research Outpost Power" - icon_state = "engine" - -/area/research_outpost/atmos - name = "Research Outpost Atmospherics" - icon_state = "atmos" - -/area/research_outpost/maint - name = "Research Outpost Maintenance" - icon_state = "maintcentral" - -/area/research_outpost/iso1 - name = "Isolation Cell" - icon_state = "iso1" - -/area/research_outpost/iso2 - name = "Isolation Cell" - icon_state = "iso2" - -/area/research_outpost/iso3 - name = "Isolation Cell" - icon_state = "iso3" - -/area/research_outpost/harvesting - name = "Exotic Particles Collection" - icon_state = "anolab" - -/area/research_outpost/sample - name = "Sample Preparation Room" - icon_state = "anosample" - -/area/research_outpost/spectro - name = "Mass Spectrometry Lab" - icon_state = "anospectro" - -/area/research_outpost/anomaly - name = "Anomalous Materials Lab" - icon_state = "anolab" - -/area/research_outpost/med - name = "Research Outpost Medbay" - icon_state = "medbay3" - -/area/research_outpost/entry - name = "Research Outpost Shuttle Dock" - icon_state = "entry" - -/area/research_outpost/longtermstorage - name = "Long-Term Storage" - icon_state = "primarystorage" - -/area/research_outpost/tempstorage - name = "Temporary Storage" - icon_state = "storage" - -/area/research_outpost/maintstore1 - name = "Auxiliary Storage" - icon_state = "auxstorage" - -/area/research_outpost/maintstore2 - name = "Maintenance Storage" - icon_state = "auxstorage" diff --git a/code/modules/research/xenoarchaeology/artifact/artifact.dm b/code/modules/research/xenoarchaeology/artifact/artifact.dm deleted file mode 100644 index 366ce13107b..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/artifact.dm +++ /dev/null @@ -1,118 +0,0 @@ - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Large finds - (Potentially) active alien machinery from the dawn of time - -/datum/artifact_find - var/artifact_id - var/artifact_find_type - var/artifact_detect_range - -/datum/artifact_find/New() - artifact_detect_range = rand(5,300) - - artifact_id = "[pick("kappa","sigma","antaeres","beta","omicron","iota","epsilon","omega","gamma","delta","tau","alpha")]-[rand(100,999)]" - - artifact_find_type = pick(\ - 5;/obj/structure/constructshell,\ - 5;/obj/machinery/wish_granter,\ - 25;/obj/machinery/power/supermatter_shard,\ - 50;/obj/structure/cult/pylon,\ - 100;/obj/machinery/auto_cloner,\ - 100;/obj/machinery/giga_drill,\ - 100;/obj/mecha/working/hoverpod,\ - 100;/obj/machinery/replicator,\ - 150;/obj/structure/crystal,\ - 1000;/obj/machinery/artifact) - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Boulders - sometimes turn up after excavating turf - excavate further to try and find large xenoarch finds - -/obj/structure/boulder - name = "rocky debris" - desc = "Leftover rock from an excavation, it's been partially dug out already but there's still a lot to go." - icon = 'icons/obj/mining.dmi' - icon_state = "boulder1" - density = 1 - opacity = 1 - anchored = 1 - var/excavation_level = 0 - var/datum/geosample/geological_data - var/datum/artifact_find/artifact_find - -/obj/structure/boulder/New() - icon_state = "boulder[rand(1,4)]" - excavation_level = rand(5,50) - -/obj/structure/boulder/Bumped(AM) - . = ..() - if(istype(AM,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = AM - if((istype(H.l_hand,/obj/item/weapon/pickaxe)) && (!H.hand)) - attackby(H.l_hand,H) - else if((istype(H.r_hand,/obj/item/weapon/pickaxe)) && H.hand) - attackby(H.r_hand,H) - - else if(istype(AM,/mob/living/silicon/robot)) - var/mob/living/silicon/robot/R = AM - if(istype(R.module_active,/obj/item/weapon/pickaxe)) - attackby(R.module_active,R) - - else if(istype(AM,/obj/mecha)) - var/obj/mecha/M = AM - if(istype(M.selected,/obj/item/mecha_parts/mecha_equipment/drill)) - M.selected.action(src) - -/obj/structure/boulder/attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if(istype(W, /obj/item/device/core_sampler)) - if(geological_data) - src.geological_data.artifact_distance = rand(-100,100) / 100 - src.geological_data.artifact_id = artifact_find.artifact_id - - var/obj/item/device/core_sampler/C = W - C.sample_item(src, user) - return - - if(istype(W, /obj/item/device/depth_scanner)) - var/obj/item/device/depth_scanner/C = W - C.scan_atom(user, src) - return - - if(istype(W, /obj/item/device/measuring_tape)) - var/obj/item/device/measuring_tape/P = W - user.visible_message("[user] extends [P] towards [src].","You extend [P] towards [src].") - if(do_after(user, 40, target = src)) - to_chat(user, "[bicon(P)] [src] has been excavated to a depth of [2*src.excavation_level]cm.") - return - - if(istype(W, /obj/item/weapon/pickaxe)) - var/obj/item/weapon/pickaxe/P = W - - to_chat(user, "You start [P.drill_verb] [src].") - - if(!do_after(user, P.digspeed, target = src)) - return - - to_chat(user, "You finish [P.drill_verb] [src].") - excavation_level += P.excavation_amount - - if(excavation_level > 100) - //failure - user.visible_message("[src] suddenly crumbles away.",\ - "[src] has disintegrated under your onslaught, any secrets it was holding are long gone.") - qdel(src) - return - - if(prob(excavation_level)) - //success - if(artifact_find) - var/spawn_type = artifact_find.artifact_find_type - var/obj/O = new spawn_type(get_turf(src)) - if(istype(O,/obj/machinery/artifact)) - var/obj/machinery/artifact/X = O - if(X.my_effect) - X.my_effect.artifact_id = artifact_find.artifact_id - src.visible_message("[src] suddenly crumbles away.") - else - user.visible_message("[src] suddenly crumbles away.",\ - "[src] has been whittled away under your careful excavation, but there was nothing of interest inside.") - qdel(src) diff --git a/code/modules/research/xenoarchaeology/artifact/artifact_autocloner.dm b/code/modules/research/xenoarchaeology/artifact/artifact_autocloner.dm deleted file mode 100644 index 410f05a925c..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/artifact_autocloner.dm +++ /dev/null @@ -1,89 +0,0 @@ - -/obj/machinery/auto_cloner - name = "mysterious pod" - desc = "It's full of a viscous liquid, but appears dark and silent." - icon = 'icons/obj/cryogenics.dmi' - icon_state = "cellold0" - var/spawn_type - var/time_spent_spawning = 0 - var/time_per_spawn = 0 - var/last_process= 0 - density = 1 - var/previous_power_state = 0 - - use_power = 1 - active_power_usage = 2000 - idle_power_usage = 1000 - -/obj/machinery/auto_cloner/New() - ..() - - time_per_spawn = rand(1200,3600) - - //33% chance to spawn nasties - if(prob(33)) - spawn_type = pick(\ - /mob/living/simple_animal/hostile/poison/giant_spider/nurse,\ - /mob/living/simple_animal/hostile/alien,\ - /mob/living/simple_animal/hostile/bear,\ - /mob/living/simple_animal/hostile/creature,\ - /mob/living/simple_animal/hostile/panther,\ - /mob/living/simple_animal/hostile/snake\ - ) - else - spawn_type = pick(\ - /mob/living/simple_animal/pet/cat,\ - /mob/living/simple_animal/pet/corgi,\ - /mob/living/simple_animal/pet/corgi/puppy,\ - /mob/living/simple_animal/chicken,\ - /mob/living/simple_animal/cow,\ - /mob/living/simple_animal/parrot,\ - /mob/living/simple_animal/slime,\ - /mob/living/simple_animal/crab,\ - /mob/living/simple_animal/mouse,\ - /mob/living/simple_animal/hostile/retaliate/goat\ - ) - -//todo: how the hell is the asteroid permanently powered? -/obj/machinery/auto_cloner/process() - if(powered(power_channel)) - if(!previous_power_state) - previous_power_state = 1 - icon_state = "cellold1" - src.visible_message("[bicon(src)] [src] suddenly comes to life!") - - //slowly grow a mob - if(prob(5)) - src.visible_message("[bicon(src)] [src] [pick("gloops","glugs","whirrs","whooshes","hisses","purrs","hums","gushes")].") - - //if we've finished growing... - if(time_spent_spawning >= time_per_spawn) - time_spent_spawning = 0 - use_power = 1 - src.visible_message("[bicon(src)] [src] pings!") - icon_state = "cellold1" - desc = "It's full of a bubbling viscous liquid, and is lit by a mysterious glow." - if(spawn_type) - new spawn_type(src.loc) - - //if we're getting close to finished, kick into overdrive power usage - if(time_spent_spawning / time_per_spawn > 0.75) - use_power = 2 - icon_state = "cellold2" - desc = "It's full of a bubbling viscous liquid, and is lit by a mysterious glow. A dark shape appears to be forming inside..." - else - use_power = 1 - icon_state = "cellold1" - desc = "It's full of a bubbling viscous liquid, and is lit by a mysterious glow." - - time_spent_spawning = time_spent_spawning + world.time - last_process - else - if(previous_power_state) - previous_power_state = 0 - icon_state = "cellold0" - src.visible_message("[bicon(src)] [src] suddenly shuts down.") - - //cloned mob slowly breaks down - time_spent_spawning = max(time_spent_spawning + last_process - world.time, 0) - - last_process = world.time diff --git a/code/modules/research/xenoarchaeology/artifact/artifact_crystal.dm b/code/modules/research/xenoarchaeology/artifact/artifact_crystal.dm deleted file mode 100644 index 54bdf4fd961..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/artifact_crystal.dm +++ /dev/null @@ -1,36 +0,0 @@ - -/obj/structure/crystal - name = "large crystal" - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "crystal" - density = 1 - -/obj/structure/crystal/New() - ..() - - icon_state = pick("ano70","ano80") - - desc = pick(\ - "It shines faintly as it catches the light.",\ - "It appears to have a faint inner glow.",\ - "It seems to draw you inward as you look it at.",\ - "Something twinkles faintly as you look at it.",\ - "It's mesmerizing to behold.") - -/obj/structure/crystal/Destroy() - src.visible_message("\The [src] shatters!") - if(prob(75)) - new /obj/item/weapon/shard/plasma(loc) - if(prob(50)) - new /obj/item/weapon/shard/plasma(loc) - if(prob(25)) - new /obj/item/weapon/shard/plasma(loc) - if(prob(75)) - new /obj/item/weapon/shard(loc) - if(prob(50)) - new /obj/item/weapon/shard(loc) - if(prob(25)) - new /obj/item/weapon/shard(loc) - return ..() - -//todo: laser_act diff --git a/code/modules/research/xenoarchaeology/artifact/artifact_gigadrill.dm b/code/modules/research/xenoarchaeology/artifact/artifact_gigadrill.dm deleted file mode 100644 index 96b9f2e2fb4..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/artifact_gigadrill.dm +++ /dev/null @@ -1,35 +0,0 @@ - -/obj/machinery/giga_drill - name = "alien drill" - desc = "A giant, alien drill mounted on long treads." - icon = 'icons/obj/mining.dmi' - icon_state = "gigadrill" - var/active = 0 - var/drill_time = 10 - var/turf/drilling_turf - density = 1 - layer = 3.1 //to go over ores - -/obj/machinery/giga_drill/attack_hand(mob/user as mob) - if(active) - active = 0 - icon_state = "gigadrill" - to_chat(user, "You press a button and [src] slowly spins down.") - else - active = 1 - icon_state = "gigadrill_mov" - to_chat(user, "You press a button and [src] shudders to life.") - -/obj/machinery/giga_drill/Bump(atom/A) - if(active && !drilling_turf) - if(istype(A,/turf/simulated/mineral)) - var/turf/simulated/mineral/M = A - drilling_turf = get_turf(src) - src.visible_message("[src] begins to drill into [M]!") - anchored = 1 - spawn(drill_time) - if(get_turf(src) == drilling_turf && active) - M.gets_drilled() - src.loc = M - drilling_turf = null - anchored = 0 diff --git a/code/modules/research/xenoarchaeology/artifact/artifact_hoverpod.dm b/code/modules/research/xenoarchaeology/artifact/artifact_hoverpod.dm deleted file mode 100644 index 6544deb1d68..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/artifact_hoverpod.dm +++ /dev/null @@ -1,13 +0,0 @@ -/obj/mecha/working/hoverpod - name = "hover pod" - icon_state = "engineering_pod" - desc = "Stubby and round, it has a human sized access hatch on the top." - wreckage = /obj/effect/decal/mecha_wreckage/hoverpod - stepsound = 'sound/machines/hiss.ogg' - -/obj/mecha/working/hoverpod/Process_Spacemove(var/movement_dir = 0) - return 1 // puts the hover in hoverpod - -/obj/effect/decal/mecha_wreckage/hoverpod - name = "Hover pod wreckage" - icon_state = "engineering_pod-broken" diff --git a/code/modules/research/xenoarchaeology/artifact/artifact_replicator.dm b/code/modules/research/xenoarchaeology/artifact/artifact_replicator.dm deleted file mode 100644 index d87c71dbc72..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/artifact_replicator.dm +++ /dev/null @@ -1,153 +0,0 @@ - -/obj/machinery/replicator - name = "alien machine" - desc = "It's some kind of pod with strange wires and gadgets all over it." - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "borgcharger0(old)" - density = 1 - - idle_power_usage = 100 - active_power_usage = 1000 - use_power = 1 - - var/spawn_progress_time = 0 - var/max_spawn_time = 50 - var/last_process_time = 0 - - var/list/construction = list() - var/list/spawning_types = list() - var/list/stored_materials = list() - - var/fail_message - -/obj/machinery/replicator/New() - ..() - - var/list/viables = list(\ - /obj/item/roller,\ - /obj/structure/closet/crate,\ - /obj/structure/closet/acloset,\ - /mob/living/simple_animal/hostile/mimic,\ - /mob/living/simple_animal/hostile/viscerator,\ - /mob/living/simple_animal/hostile/hivebot,\ - /obj/item/device/analyzer,\ - /obj/item/device/camera,\ - /obj/item/device/flash,\ - /obj/item/device/flashlight,\ - /obj/item/device/healthanalyzer,\ - /obj/item/device/multitool,\ - /obj/item/device/paicard,\ - /obj/item/device/radio,\ - /obj/item/device/radio/headset,\ - /obj/item/device/radio/beacon,\ - /obj/item/weapon/autopsy_scanner,\ - /obj/item/weapon/bikehorn,\ - /obj/item/weapon/bonesetter,\ - /obj/item/weapon/kitchen/knife/butcher,\ - /obj/item/weapon/caution,\ - /obj/item/clothing/head/cone,\ - /obj/item/weapon/crowbar,\ - /obj/item/weapon/clipboard,\ - /obj/item/weapon/stock_parts/cell,\ - /obj/item/weapon/circular_saw,\ - /obj/item/weapon/hatchet,\ - /obj/item/weapon/restraints/handcuffs,\ - /obj/item/weapon/hemostat,\ - /obj/item/weapon/kitchen/knife,\ - /obj/item/weapon/lighter,\ - /obj/item/weapon/lighter,\ - /obj/item/weapon/light/bulb,\ - /obj/item/weapon/light/tube,\ - /obj/item/weapon/pickaxe,\ - /obj/item/weapon/shovel,\ - /obj/item/weapon/table_parts,\ - /obj/item/weapon/weldingtool,\ - /obj/item/weapon/wirecutters,\ - /obj/item/weapon/wrench,\ - /obj/item/weapon/screwdriver,\ - /obj/item/weapon/grenade/chem_grenade/cleaner,\ - /obj/item/weapon/grenade/chem_grenade/metalfoam\ - ) - - var/quantity = rand(5,15) - for(var/i=0, i" - -/obj/machinery/replicator/process() - if(spawning_types.len && powered()) - spawn_progress_time += world.time - last_process_time - if(spawn_progress_time > max_spawn_time) - src.visible_message("[bicon(src)] [src] pings!") - - var/obj/source_material = pop(stored_materials) - var/spawn_type = pop(spawning_types) - var/obj/spawned_obj = new spawn_type(src.loc) - if(source_material) - if(lentext(source_material.name) < MAX_MESSAGE_LEN) - spawned_obj.name = "[source_material] " + spawned_obj.name - if(lentext(source_material.desc) < MAX_MESSAGE_LEN * 2) - if(spawned_obj.desc) - spawned_obj.desc += " It is made of [source_material]." - else - spawned_obj.desc = "It is made of [source_material]." - source_material.loc = null - - spawn_progress_time = 0 - max_spawn_time = rand(30,100) - - if(!spawning_types.len || !stored_materials.len) - use_power = 1 - icon_state = "borgcharger0(old)" - - else if(prob(5)) - src.visible_message("[bicon(src)] [src] [pick("clicks","whizzes","whirrs","whooshes","clanks","clongs","clonks","bangs")].") - - last_process_time = world.time - -/obj/machinery/replicator/attack_hand(mob/user as mob) - interact(user) - -/obj/machinery/replicator/interact(mob/user) - var/dat = "The control panel displays an incomprehensible selection of controls, many with unusual markings or text around them.
    " - dat += "
    " - for(var/index=1, index<=construction.len, index++) - dat += "\[[construction[index]]\]
    " - - user << browse(dat, "window=alien_replicator") - -/obj/machinery/replicator/attackby(obj/item/weapon/W as obj, mob/living/user as mob, params) - user.drop_item() - W.loc = src - stored_materials.Add(W) - src.visible_message("[user] inserts [W] into [src].") - -/obj/machinery/replicator/Topic(href, href_list) - - if(href_list["activate"]) - var/index = text2num(href_list["activate"]) - if(index > 0 && index <= construction.len) - if(stored_materials.len > spawning_types.len) - if(spawning_types.len) - src.visible_message("[bicon(src)] a [pick("light","dial","display","meter","pad")] on [src]'s front [pick("blinks","flashes")] [pick("red","yellow","blue","orange","purple","green","white")].") - else - src.visible_message("[bicon(src)] [src]'s front compartment slides shut.") - - spawning_types.Add(construction[construction[index]]) - spawn_progress_time = 0 - use_power = 2 - icon_state = "borgcharger1(old)" - else - src.visible_message(fail_message) diff --git a/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm b/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm deleted file mode 100644 index 894f54dc3bc..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm +++ /dev/null @@ -1,362 +0,0 @@ - -#define EFFECT_TOUCH 0 -#define EFFECT_AURA 1 -#define EFFECT_PULSE 2 -#define MAX_EFFECT 2 - -#define TRIGGER_TOUCH 0 -#define TRIGGER_WATER 1 -#define TRIGGER_ACID 2 -#define TRIGGER_VOLATILE 3 -#define TRIGGER_TOXIN 4 -#define TRIGGER_FORCE 5 -#define TRIGGER_ENERGY 6 -#define TRIGGER_HEAT 7 -#define TRIGGER_COLD 8 -#define TRIGGER_PLASMA 9 -#define TRIGGER_OXY 10 -#define TRIGGER_CO2 11 -#define TRIGGER_NITRO 12 -#define MAX_TRIGGER 12 -/* -//sleeping gas appears to be bugged, currently -var/list/valid_primary_effect_types = list(\ - /datum/artifact_effect/cellcharge,\ - /datum/artifact_effect/celldrain,\ - /datum/artifact_effect/forcefield,\ - /datum/artifact_effect/gasoxy,\ - /datum/artifact_effect/gasplasma,\ -/* /datum/artifact_effect/gassleeping,\*/ - /datum/artifact_effect/heal,\ - /datum/artifact_effect/hurt,\ - /datum/artifact_effect/emp,\ - /datum/artifact_effect/teleport,\ - /datum/artifact_effect/robohurt,\ - /datum/artifact_effect/roboheal) - -var/list/valid_secondary_effect_types = list(\ - /datum/artifact_effect/cold,\ - /datum/artifact_effect/badfeeling,\ - /datum/artifact_effect/cellcharge,\ - /datum/artifact_effect/celldrain,\ - /datum/artifact_effect/dnaswitch,\ - /datum/artifact_effect/emp,\ - /datum/artifact_effect/gasco2,\ - /datum/artifact_effect/gasnitro,\ - /datum/artifact_effect/gasoxy,\ - /datum/artifact_effect/gasplasma,\ -/* /datum/artifact_effect/gassleeping,\*/ - /datum/artifact_effect/goodfeeling,\ - /datum/artifact_effect/heal,\ - /datum/artifact_effect/hurt,\ - /datum/artifact_effect/radiate,\ - /datum/artifact_effect/roboheal,\ - /datum/artifact_effect/robohurt,\ - /datum/artifact_effect/sleepy,\ - /datum/artifact_effect/stun,\ - /datum/artifact_effect/teleport) - */ - -/obj/machinery/artifact - name = "alien artifact" - desc = "A large alien device." - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "ano00" - var/icon_num = 0 - density = 1 - var/datum/artifact_effect/my_effect - var/datum/artifact_effect/secondary_effect - var/being_used = 0 - -/obj/machinery/artifact/New() - ..() - - //setup primary effect - these are the main ones (mixed) - var/effecttype = pick(subtypesof(/datum/artifact_effect)) - my_effect = new effecttype(src) - - //75% chance to have a secondary stealthy (and mostly bad) effect - if(prob(75)) - effecttype = pick(subtypesof(/datum/artifact_effect)) - secondary_effect = new effecttype(src) - if(prob(75)) - secondary_effect.ToggleActivate(0) - - icon_num = rand(0,11) - icon_state = "ano[icon_num]0" - if(icon_num == 7 || icon_num == 8) - name = "large crystal" - desc = pick("It shines faintly as it catches the light.",\ - "It appears to have a faint inner glow.",\ - "It seems to draw you inward as you look it at.",\ - "Something twinkles faintly as you look at it.",\ - "It's mesmerizing to behold.") - if(prob(50)) - my_effect.trigger = TRIGGER_ENERGY - else if(icon_num == 9) - name = "alien computer" - desc = "It is covered in strange markings." - if(prob(75)) - my_effect.trigger = TRIGGER_TOUCH - else if(icon_num == 10) - desc = "A large alien device, there appear to be some kind of vents in the side." - if(prob(50)) - my_effect.trigger = rand(6,12) - else if(icon_num == 11) - name = "sealed alien pod" - desc = "A strange alien device." - if(prob(25)) - my_effect.trigger = rand(1,4) - -#define TRIGGER_PLASMA 9 -#define TRIGGER_OXY 10 -#define TRIGGER_CO2 11 -#define TRIGGER_NITRO 12 - -/obj/machinery/artifact/process() - if(my_effect) - my_effect.process() - if(secondary_effect) - secondary_effect.process() - - if(pulledby) - Bumped(pulledby) - - //if either of our effects rely on environmental factors, work that out - var/trigger_cold = 0 - var/trigger_hot = 0 - var/trigger_plasma = 0 - var/trigger_oxy = 0 - var/trigger_co2 = 0 - var/trigger_nitro = 0 - if( (my_effect.trigger >= TRIGGER_HEAT && my_effect.trigger <= TRIGGER_NITRO) || (my_effect.trigger >= TRIGGER_HEAT && my_effect.trigger <= TRIGGER_NITRO) ) - var/turf/T = get_turf(src) - var/datum/gas_mixture/env = T.return_air() - if(env) - if(env.temperature < 225) - trigger_cold = 1 - else if(env.temperature > 375) - trigger_hot = 1 - - if(env.toxins >= 10) - trigger_plasma = 1 - if(env.oxygen >= 10) - trigger_oxy = 1 - if(env.carbon_dioxide >= 10) - trigger_co2 = 1 - if(env.nitrogen >= 10) - trigger_nitro = 1 - - //COLD ACTIVATION - if(trigger_cold) - if(my_effect.trigger == TRIGGER_COLD && !my_effect.activated) - my_effect.ToggleActivate() - if(secondary_effect && secondary_effect.trigger == TRIGGER_COLD && !secondary_effect.activated) - secondary_effect.ToggleActivate(0) - else - if(my_effect.trigger == TRIGGER_COLD && my_effect.activated) - my_effect.ToggleActivate() - if(secondary_effect && secondary_effect.trigger == TRIGGER_COLD && !secondary_effect.activated) - secondary_effect.ToggleActivate(0) - - //HEAT ACTIVATION - if(trigger_hot) - if(my_effect.trigger == TRIGGER_HEAT && !my_effect.activated) - my_effect.ToggleActivate() - if(secondary_effect && secondary_effect.trigger == TRIGGER_HEAT && !secondary_effect.activated) - secondary_effect.ToggleActivate(0) - else - if(my_effect.trigger == TRIGGER_HEAT && my_effect.activated) - my_effect.ToggleActivate() - if(secondary_effect && secondary_effect.trigger == TRIGGER_HEAT && !secondary_effect.activated) - secondary_effect.ToggleActivate(0) - - //PLASMA GAS ACTIVATION - if(trigger_plasma) - if(my_effect.trigger == TRIGGER_PLASMA && !my_effect.activated) - my_effect.ToggleActivate() - if(secondary_effect && secondary_effect.trigger == TRIGGER_PLASMA && !secondary_effect.activated) - secondary_effect.ToggleActivate(0) - else - if(my_effect.trigger == TRIGGER_PLASMA && my_effect.activated) - my_effect.ToggleActivate() - if(secondary_effect && secondary_effect.trigger == TRIGGER_PLASMA && !secondary_effect.activated) - secondary_effect.ToggleActivate(0) - - //OXYGEN GAS ACTIVATION - if(trigger_oxy) - if(my_effect.trigger == TRIGGER_OXY && !my_effect.activated) - my_effect.ToggleActivate() - if(secondary_effect && secondary_effect.trigger == TRIGGER_OXY && !secondary_effect.activated) - secondary_effect.ToggleActivate(0) - else - if(my_effect.trigger == TRIGGER_OXY && my_effect.activated) - my_effect.ToggleActivate() - if(secondary_effect && secondary_effect.trigger == TRIGGER_OXY && !secondary_effect.activated) - secondary_effect.ToggleActivate(0) - - //CO2 GAS ACTIVATION - if(trigger_co2) - if(my_effect.trigger == TRIGGER_CO2 && !my_effect.activated) - my_effect.ToggleActivate() - if(secondary_effect && secondary_effect.trigger == TRIGGER_CO2 && !secondary_effect.activated) - secondary_effect.ToggleActivate(0) - else - if(my_effect.trigger == TRIGGER_CO2 && my_effect.activated) - my_effect.ToggleActivate() - if(secondary_effect && secondary_effect.trigger == TRIGGER_CO2 && !secondary_effect.activated) - secondary_effect.ToggleActivate(0) - - //NITROGEN GAS ACTIVATION - if(trigger_nitro) - if(my_effect.trigger == TRIGGER_NITRO && !my_effect.activated) - my_effect.ToggleActivate() - if(secondary_effect && secondary_effect.trigger == TRIGGER_NITRO && !secondary_effect.activated) - secondary_effect.ToggleActivate(0) - else - if(my_effect.trigger == TRIGGER_NITRO && my_effect.activated) - my_effect.ToggleActivate() - if(secondary_effect && secondary_effect.trigger == TRIGGER_NITRO && !secondary_effect.activated) - secondary_effect.ToggleActivate(0) - -/obj/machinery/artifact/attack_hand(var/mob/user as mob) - if(get_dist(user, src) > 1) - to_chat(user, "You can't reach [src] from here.") - return - if(ishuman(user) && user:gloves) - to_chat(user, "You touch [src] with your gloved hands, [pick("but nothing of note happens","but nothing happens","but nothing interesting happens","but you notice nothing different","but nothing seems to have happened")].") - return - - src.add_fingerprint(user) - - if(my_effect.trigger == TRIGGER_TOUCH) - to_chat(user, "You touch [src].") - my_effect.ToggleActivate() - else - to_chat(user, "You touch [src], [pick("but nothing of note happens","but nothing happens","but nothing interesting happens","but you notice nothing different","but nothing seems to have happened")].") - - if(prob(25) && secondary_effect && secondary_effect.trigger == TRIGGER_TOUCH) - secondary_effect.ToggleActivate(0) - - if(my_effect.effect == EFFECT_TOUCH) - my_effect.DoEffectTouch(user) - - if(secondary_effect && secondary_effect.effect == EFFECT_TOUCH && secondary_effect.activated) - secondary_effect.DoEffectTouch(user) - -/obj/machinery/artifact/attackby(obj/item/weapon/W as obj, mob/living/user as mob, params) - - if(istype(W, /obj/item/weapon/reagent_containers/)) - if(W.reagents.has_reagent("hydrogen", 1) || W.reagents.has_reagent("water", 1)) - if(my_effect.trigger == TRIGGER_WATER) - my_effect.ToggleActivate() - if(secondary_effect && secondary_effect.trigger == TRIGGER_WATER && prob(25)) - secondary_effect.ToggleActivate(0) - else if(W.reagents.has_reagent("acid", 1) || W.reagents.has_reagent("facid", 1) || W.reagents.has_reagent("diethylamine", 1)) - if(my_effect.trigger == TRIGGER_ACID) - my_effect.ToggleActivate() - if(secondary_effect && secondary_effect.trigger == TRIGGER_ACID && prob(25)) - secondary_effect.ToggleActivate(0) - else if(W.reagents.has_reagent("plasma", 1) || W.reagents.has_reagent("thermite", 1)) - if(my_effect.trigger == TRIGGER_VOLATILE) - my_effect.ToggleActivate() - if(secondary_effect && secondary_effect.trigger == TRIGGER_VOLATILE && prob(25)) - secondary_effect.ToggleActivate(0) - else if(W.reagents.has_reagent("toxin", 1) || W.reagents.has_reagent("cyanide", 1) || W.reagents.has_reagent("amanitin", 1) || W.reagents.has_reagent("neurotoxin", 1)) - if(my_effect.trigger == TRIGGER_TOXIN) - my_effect.ToggleActivate() - if(secondary_effect && secondary_effect.trigger == TRIGGER_TOXIN && prob(25)) - secondary_effect.ToggleActivate(0) - else if(istype(W,/obj/item/weapon/melee/baton) && W:status ||\ - istype(W,/obj/item/weapon/melee/energy) ||\ - istype(W,/obj/item/weapon/melee/cultblade) ||\ - istype(W,/obj/item/weapon/card/emag) ||\ - istype(W,/obj/item/device/multitool)) - if(my_effect.trigger == TRIGGER_ENERGY) - my_effect.ToggleActivate() - if(secondary_effect && secondary_effect.trigger == TRIGGER_ENERGY && prob(25)) - secondary_effect.ToggleActivate(0) - - else if(istype(W,/obj/item/weapon/match) && W:lit ||\ - istype(W,/obj/item/weapon/weldingtool) && W:welding ||\ - istype(W,/obj/item/weapon/lighter) && W:lit) - if(my_effect.trigger == TRIGGER_HEAT) - my_effect.ToggleActivate() - if(secondary_effect && secondary_effect.trigger == TRIGGER_HEAT && prob(25)) - secondary_effect.ToggleActivate(0) - else - ..() - if(my_effect.trigger == TRIGGER_FORCE && W.force >= 10) - my_effect.ToggleActivate() - if(secondary_effect && secondary_effect.trigger == TRIGGER_FORCE && prob(25)) - secondary_effect.ToggleActivate(0) - -/obj/machinery/artifact/Bumped(M as mob|obj) - ..() - if(istype(M,/obj)) - if(M:throwforce >= 10) - if(my_effect.trigger == TRIGGER_FORCE) - my_effect.ToggleActivate() - if(secondary_effect && secondary_effect.trigger == TRIGGER_FORCE && prob(25)) - secondary_effect.ToggleActivate(0) - else if(ishuman(M) && !istype(M:gloves,/obj/item/clothing/gloves)) - var/warn = 0 - - if(my_effect.trigger == TRIGGER_TOUCH && prob(50)) - my_effect.ToggleActivate() - warn = 1 - if(secondary_effect && secondary_effect.trigger == TRIGGER_TOUCH && prob(25)) - secondary_effect.ToggleActivate(0) - warn = 1 - - if(my_effect.effect == EFFECT_TOUCH && prob(50)) - my_effect.DoEffectTouch(M) - warn = 1 - if(secondary_effect && secondary_effect.effect == EFFECT_TOUCH && secondary_effect.activated && prob(50)) - secondary_effect.DoEffectTouch(M) - warn = 1 - - if(warn) - to_chat(M, "You accidentally touch [src].") - ..() - -/obj/machinery/artifact/bullet_act(var/obj/item/projectile/P) - if(istype(P,/obj/item/projectile/bullet) ||\ - istype(P,/obj/item/projectile/hivebotbullet)) - if(my_effect.trigger == TRIGGER_FORCE) - my_effect.ToggleActivate() - if(secondary_effect && secondary_effect.trigger == TRIGGER_FORCE && prob(25)) - secondary_effect.ToggleActivate(0) - - else if(istype(P,/obj/item/projectile/beam) ||\ - istype(P,/obj/item/projectile/ion) ||\ - istype(P,/obj/item/projectile/energy)) - if(my_effect.trigger == TRIGGER_ENERGY) - my_effect.ToggleActivate() - if(secondary_effect && secondary_effect.trigger == TRIGGER_ENERGY && prob(25)) - secondary_effect.ToggleActivate(0) - -/obj/machinery/artifact/ex_act(severity) - switch(severity) - if(1.0) qdel(src) - if(2.0) - if(prob(50)) - qdel(src) - else - if(my_effect.trigger == TRIGGER_FORCE || my_effect.trigger == TRIGGER_HEAT) - my_effect.ToggleActivate() - if(secondary_effect && (secondary_effect.trigger == TRIGGER_FORCE || secondary_effect.trigger == TRIGGER_HEAT) && prob(25)) - secondary_effect.ToggleActivate(0) - if(3.0) - if(my_effect.trigger == TRIGGER_FORCE || my_effect.trigger == TRIGGER_HEAT) - my_effect.ToggleActivate() - if(secondary_effect && (secondary_effect.trigger == TRIGGER_FORCE || secondary_effect.trigger == TRIGGER_HEAT) && prob(25)) - secondary_effect.ToggleActivate(0) - return - -/obj/machinery/artifact/Move() - ..() - if(my_effect) - my_effect.UpdateMove() - if(secondary_effect) - secondary_effect.UpdateMove() diff --git a/code/modules/research/xenoarchaeology/artifact/effect.dm b/code/modules/research/xenoarchaeology/artifact/effect.dm deleted file mode 100644 index 981cea4156d..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/effect.dm +++ /dev/null @@ -1,110 +0,0 @@ - -//override procs in children as necessary -/datum/artifact_effect - var/effecttype = "unknown" //purely used for admin checks ingame, not needed any more - var/effect = EFFECT_TOUCH - var/effectrange = 4 - var/trigger = TRIGGER_TOUCH - var/atom/holder - var/activated = 0 - var/chargelevel = 0 - var/chargelevelmax = 10 - var/artifact_id = "" - var/effect_type = 0 - -//0 = Unknown / none detectable -//1 = Concentrated energy -//2 = Intermittent psionic wavefront -//3 = Electromagnetic energy -//4 = Particle field -//5 = Organically reactive exotic particles -//6 = Interdimensional/bluespace? phasing -//7 = Atomic synthesis - -/datum/artifact_effect/New(var/atom/location) - ..() - holder = location - effect = rand(0,MAX_EFFECT) - trigger = rand(0,MAX_TRIGGER) - - //this will be replaced by the excavation code later, but it's here just in case - artifact_id = "[pick("kappa","sigma","antaeres","beta","omicron","iota","epsilon","omega","gamma","delta","tau","alpha")]-[rand(100,999)]" - - //random charge time and distance - switch(pick(100;1, 50;2, 25;3)) - if(1) - //short range, short charge time - chargelevelmax = rand(3, 20) - effectrange = rand(1, 3) - if(2) - //medium range, medium charge time - chargelevelmax = rand(15, 40) - effectrange = rand(5, 15) - if(3) - //large range, long charge time - chargelevelmax = rand(20, 120) - effectrange = rand(20, 200) - -/datum/artifact_effect/proc/ToggleActivate(var/reveal_toggle = 1) - //so that other stuff happens first - spawn(0) - if(activated) - activated = 0 - else - activated = 1 - if(reveal_toggle && holder) - if(istype(holder, /obj/machinery/artifact)) - var/obj/machinery/artifact/A = holder - A.icon_state = "ano[A.icon_num][activated]" - var/display_msg - if(activated) - display_msg = pick("momentarily glows brightly!","distorts slightly for a moment!","flickers slightly!","vibrates!","shimmers slightly for a moment!") - else - display_msg = pick("grows dull!","fades in intensity!","suddenly becomes very still!","suddenly becomes very quiet!") - var/atom/toplevelholder = holder - while(!istype(toplevelholder.loc, /turf)) - toplevelholder = toplevelholder.loc - toplevelholder.visible_message("[bicon(toplevelholder)] [toplevelholder] [display_msg]") - -/datum/artifact_effect/proc/DoEffectTouch(var/mob/user) -/datum/artifact_effect/proc/DoEffectAura(var/atom/holder) -/datum/artifact_effect/proc/DoEffectPulse(var/atom/holder) -/datum/artifact_effect/proc/UpdateMove() - -/datum/artifact_effect/proc/process() - if(chargelevel < chargelevelmax) - chargelevel++ - - if(activated) - if(effect == EFFECT_AURA) - DoEffectAura() - else if(effect == EFFECT_PULSE && chargelevel >= chargelevelmax) - chargelevel = 0 - DoEffectPulse() - -//returns 0..1, with 1 being no protection and 0 being fully protected -proc/GetAnomalySusceptibility(var/mob/living/carbon/human/H) - if(!H || !istype(H)) - return 1 - - var/protected = 0 - - //anomaly suits give best protection, but excavation suits are almost as good - if(istype(H.wear_suit,/obj/item/clothing/suit/bio_suit/anomaly)) - protected += 0.6 - else if(istype(H.wear_suit,/obj/item/clothing/suit/space/eva/anomaly)) - protected += 0.5 - - if(istype(H.head,/obj/item/clothing/head/bio_hood/anomaly)) - protected += 0.3 - else if(istype(H.head,/obj/item/clothing/head/helmet/space/eva/anomaly)) - protected += 0.2 - - //latex gloves and science goggles also give a bit of bonus protection - if(istype(H.gloves,/obj/item/clothing/gloves/color/latex)) - protected += 0.1 - - if(istype(H.glasses,/obj/item/clothing/glasses/science)) - protected += 0.1 - - return 1 - protected diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_affect_cold.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_affect_cold.dm deleted file mode 100644 index 16862948644..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_affect_cold.dm +++ /dev/null @@ -1,24 +0,0 @@ - -//inverse of /datum/artifact_effect/heat, the two effects split up for neatness' sake -/datum/artifact_effect/cold - effecttype = "cold" - var/target_temp - -/datum/artifact_effect/cold/New() - ..() - target_temp = rand(0, 250) - effect = pick(EFFECT_TOUCH, EFFECT_AURA) - effect_type = pick(5,6,7) - -/datum/artifact_effect/cold/DoEffectTouch(var/mob/user) - if(holder) - to_chat(user, "A chill passes up your spine!") - var/datum/gas_mixture/env = holder.loc.return_air() - if(env) - env.temperature = max(env.temperature - rand(5,50), 0) - -/datum/artifact_effect/cold/DoEffectAura() - if(holder) - var/datum/gas_mixture/env = holder.loc.return_air() - if(env && env.temperature > target_temp) - env.temperature -= pick(0, 0, 1) diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_badfeeling.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_badfeeling.dm deleted file mode 100644 index 0e83e5812c3..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_badfeeling.dm +++ /dev/null @@ -1,70 +0,0 @@ - -/datum/artifact_effect/badfeeling - effecttype = "badfeeling" - effect_type = 2 - var/list/messages = list("You feel worried.",\ - "Something doesn't feel right.",\ - "You get a strange feeling in your gut.",\ - "Your instincts are trying to warn you about something.",\ - "Someone just walked over your grave.",\ - "There's a strange feeling in the air.",\ - "There's a strange smell in the air.",\ - "The tips of your fingers feel tingly.",\ - "You feel witchy.",\ - "You have a terrible sense of foreboding.",\ - "You've got a bad feeling about this.",\ - "Your scalp prickles.",\ - "The light seems to flicker.",\ - "The shadows seem to lengthen.",\ - "The walls are getting closer.",\ - "Something is wrong") - - var/list/drastic_messages = list("You've got to get out of here!",\ - "Someone's trying to kill you!",\ - "There's something out there!",\ - "What's happening to you?",\ - "OH GOD!",\ - "HELP ME!") - -/datum/artifact_effect/badfeeling/DoEffectTouch(var/mob/user) - if(user) - if(istype(user, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = user - if(prob(50)) - if(prob(75)) - to_chat(H, "[pick(drastic_messages)]") - else - to_chat(H, "[pick(messages)]") - - if(prob(50)) - H.AdjustDizzy(rand(3,5)) - -/datum/artifact_effect/badfeeling/DoEffectAura() - if(holder) - var/turf/T = get_turf(holder) - for(var/mob/living/carbon/human/H in range(src.effectrange,T)) - if(prob(5)) - if(prob(75)) - to_chat(H, "[pick(messages)]") - else - to_chat(H, "[pick(drastic_messages)]") - - if(prob(10)) - H.AdjustDizzy(rand(3,5)) - return 1 - -/datum/artifact_effect/badfeeling/DoEffectPulse() - if(holder) - var/turf/T = get_turf(holder) - for(var/mob/living/carbon/human/H in range(src.effectrange,T)) - if(prob(50)) - if(prob(95)) - to_chat(H, "[pick(drastic_messages)]") - else - to_chat(H, "[pick(messages)]") - - if(prob(50)) - H.AdjustDizzy(rand(3,5)) - else if(prob(25)) - H.AdjustDizzy(rand(5,15)) - return 1 diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_cellcharge.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_cellcharge.dm deleted file mode 100644 index 8d6735e3a31..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_cellcharge.dm +++ /dev/null @@ -1,42 +0,0 @@ - -//todo -/datum/artifact_effect/cellcharge - effecttype = "cellcharge" - effect_type = 3 - -/datum/artifact_effect/cellcharge/DoEffectTouch(var/mob/user) - if(user) - if(istype(user, /mob/living/silicon/robot)) - var/mob/living/silicon/robot/R = user - for(var/obj/item/weapon/stock_parts/cell/D in R.contents) - D.charge += rand() * 100 + 50 - to_chat(R, "SYSTEM ALERT: Large energy boost detected!") - return 1 - -/datum/artifact_effect/cellcharge/DoEffectAura() - if(holder) - var/turf/T = get_turf(holder) - for(var/obj/machinery/power/apc/C in range(200, T)) - for(var/obj/item/weapon/stock_parts/cell/B in C.contents) - B.charge += 25 - for(var/obj/machinery/power/smes/S in range (src.effectrange,src)) - S.charge += 25 - for(var/mob/living/silicon/robot/M in mob_list) - for(var/obj/item/weapon/stock_parts/cell/D in M.contents) - D.charge += 25 - to_chat(M, "SYSTEM ALERT: Energy boost detected!") - return 1 - -/datum/artifact_effect/cellcharge/DoEffectPulse() - if(holder) - var/turf/T = get_turf(holder) - for(var/obj/machinery/power/apc/C in range(200, T)) - for(var/obj/item/weapon/stock_parts/cell/B in C.contents) - B.charge += rand() * 100 - for(var/obj/machinery/power/smes/S in range (src.effectrange,src)) - S.charge += 250 - for(var/mob/living/silicon/robot/M in mob_list) - for(var/obj/item/weapon/stock_parts/cell/D in M.contents) - D.charge += rand() * 100 - to_chat(M, "SYSTEM ALERT: Energy boost detected!") - return 1 diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_celldrain.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_celldrain.dm deleted file mode 100644 index 44be592e7fa..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_celldrain.dm +++ /dev/null @@ -1,44 +0,0 @@ - -//todo -/datum/artifact_effect/celldrain - effecttype = "celldrain" - effect_type = 3 - -/datum/artifact_effect/celldrain/DoEffectTouch(var/mob/user) - if(user) - if(istype(user, /mob/living/silicon/robot)) - var/mob/living/silicon/robot/R = user - for(var/obj/item/weapon/stock_parts/cell/D in R.contents) - D.charge = max(D.charge - rand() * 100, 0) - to_chat(R, "SYSTEM ALERT: Energy drain detected!") - return 1 - - return 1 - -/datum/artifact_effect/celldrain/DoEffectAura() - if(holder) - var/turf/T = get_turf(holder) - for(var/obj/machinery/power/apc/C in range(200, T)) - for(var/obj/item/weapon/stock_parts/cell/B in C.contents) - B.charge = max(B.charge - 50,0) - for(var/obj/machinery/power/smes/S in range (src.effectrange,src)) - S.charge = max(S.charge - 100,0) - for(var/mob/living/silicon/robot/M in mob_list) - for(var/obj/item/weapon/stock_parts/cell/D in M.contents) - D.charge = max(D.charge - 50,0) - to_chat(M, "SYSTEM ALERT: Energy drain detected!") - return 1 - -/datum/artifact_effect/celldrain/DoEffectPulse() - if(holder) - var/turf/T = get_turf(holder) - for(var/obj/machinery/power/apc/C in range(200, T)) - for(var/obj/item/weapon/stock_parts/cell/B in C.contents) - B.charge = max(B.charge - rand() * 150,0) - for(var/obj/machinery/power/smes/S in range (src.effectrange,src)) - S.charge = max(S.charge - 250,0) - for(var/mob/living/silicon/robot/M in mob_list) - for(var/obj/item/weapon/stock_parts/cell/D in M.contents) - D.charge = max(D.charge - rand() * 150,0) - to_chat(M, "SYSTEM ALERT: Energy drain detected!") - return 1 diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_dnaswitch.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_dnaswitch.dm deleted file mode 100644 index f31788602ad..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_dnaswitch.dm +++ /dev/null @@ -1,68 +0,0 @@ - -//todo -/datum/artifact_effect/dnaswitch - effecttype = "dnaswitch" - effect_type = 5 - var/severity - -/datum/artifact_effect/dnaswitch/New() - ..() - if(effect == EFFECT_AURA) - severity = rand(5,30) - else - severity = rand(25,95) - -/datum/artifact_effect/dnaswitch/DoEffectTouch(var/mob/toucher) - var/weakness = GetAnomalySusceptibility(toucher) - if(ishuman(toucher) && prob(weakness * 100)) - to_chat(toucher, pick("You feel a little different.", - "You feel very strange.", - "Your stomach churns.", - "Your skin feels loose.", - "You feel a stabbing pain in your head.", - "You feel a tingling sensation in your chest.", - "Your entire body vibrates.")) - if(prob(75)) - scramble(1, toucher, weakness * severity) - else - scramble(0, toucher, weakness * severity) - return 1 - -/datum/artifact_effect/dnaswitch/DoEffectAura() - if(holder) - var/turf/T = get_turf(holder) - for(var/mob/living/carbon/human/H in range(src.effectrange,T)) - var/weakness = GetAnomalySusceptibility(H) - if(prob(weakness * 100)) - if(prob(30)) - to_chat(H, pick("You feel a little different.", - "You feel very strange.", - "Your stomach churns.", - "Your skin feels loose.", - "You feel a stabbing pain in your head.", - "You feel a tingling sensation in your chest.", - "Your entire body vibrates.")) - if(prob(50)) - scramble(1, H, weakness * severity) - else - scramble(0, H, weakness * severity) - -/datum/artifact_effect/dnaswitch/DoEffectPulse() - if(holder) - var/turf/T = get_turf(holder) - for(var/mob/living/carbon/human/H in range(200, T)) - var/weakness = GetAnomalySusceptibility(H) - if(prob(weakness * 100)) - if(prob(75)) - to_chat(H, pick("You feel a little different.", - "You feel very strange.", - "Your stomach churns.", - "Your skin feels loose.", - "You feel a stabbing pain in your head.", - "You feel a tingling sensation in your chest.", - "Your entire body vibrates.")) - if(prob(25)) - if(prob(75)) - scramble(1, H, weakness * severity) - else - scramble(0, H, weakness * severity) diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_emp.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_emp.dm deleted file mode 100644 index 18165cf0d41..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_emp.dm +++ /dev/null @@ -1,14 +0,0 @@ - -/datum/artifact_effect/emp - effecttype = "emp" - effect_type = 3 - -/datum/artifact_effect/emp/New() - ..() - effect = EFFECT_PULSE - -/datum/artifact_effect/emp/DoEffectPulse() - if(holder) - var/turf/T = get_turf(holder) - empulse(T, effectrange/2, effectrange) - return 1 diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasco2.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasco2.dm deleted file mode 100644 index df7fa75c848..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasco2.dm +++ /dev/null @@ -1,26 +0,0 @@ - -/datum/artifact_effect/gasco2 - effecttype = "gasco2" - var/max_pressure - var/target_percentage - -/datum/artifact_effect/heat/New() - ..() - effect_type = pick(6,7) - -/datum/artifact_effect/gasco2/New() - ..() - effect = pick(EFFECT_TOUCH, EFFECT_AURA) - max_pressure = rand(115,1000) - -/datum/artifact_effect/gasco2/DoEffectTouch(var/mob/user) - if(holder) - var/datum/gas_mixture/env = holder.loc.return_air() - if(env) - env.carbon_dioxide += rand(2,15) - -/datum/artifact_effect/gasco2/DoEffectAura() - if(holder) - var/datum/gas_mixture/env = holder.loc.return_air() - if(env && env.total_moles() < max_pressure) - env.carbon_dioxide += pick(0, 0, 0.1, rand()) diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasnitro.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasnitro.dm deleted file mode 100644 index 55e667e5264..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasnitro.dm +++ /dev/null @@ -1,23 +0,0 @@ - -/datum/artifact_effect/gasnitro - effecttype = "gasnitro" - var/max_pressure - var/target_percentage - -/datum/artifact_effect/gasnitro/New() - ..() - effect = pick(EFFECT_TOUCH, EFFECT_AURA) - effect_type = pick(6,7) - max_pressure = rand(115,1000) - -/datum/artifact_effect/gasnitro/DoEffectTouch(var/mob/user) - if(holder) - var/datum/gas_mixture/env = holder.loc.return_air() - if(env) - env.nitrogen += rand(2,15) - -/datum/artifact_effect/gasnitro/DoEffectAura() - if(holder) - var/datum/gas_mixture/env = holder.loc.return_air() - if(env && env.total_moles() < max_pressure) - env.nitrogen += pick(0, 0, 0.1, rand()) diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasoxy.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasoxy.dm deleted file mode 100644 index e4c30bd0cbd..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasoxy.dm +++ /dev/null @@ -1,23 +0,0 @@ - -/datum/artifact_effect/gasoxy - effecttype = "gasoxy" - var/max_pressure - -/datum/artifact_effect/gasoxy/New() - ..() - effect = pick(EFFECT_TOUCH, EFFECT_AURA) - max_pressure = rand(115,1000) - effect_type = pick(6,7) - - -/datum/artifact_effect/gasoxy/DoEffectTouch(var/mob/user) - if(holder) - var/datum/gas_mixture/env = holder.loc.return_air() - if(env) - env.oxygen += rand(2,15) - -/datum/artifact_effect/gasoxy/DoEffectAura() - if(holder) - var/datum/gas_mixture/env = holder.loc.return_air() - if(env && env.total_moles() < max_pressure) - env.oxygen += pick(0, 0, 0.1, rand()) diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasplasma.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasplasma.dm deleted file mode 100644 index 68719264f02..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasplasma.dm +++ /dev/null @@ -1,23 +0,0 @@ - -/datum/artifact_effect/gasplasma - effecttype = "gasplasma" - var/max_pressure - var/target_percentage - -/datum/artifact_effect/gasplasma/New() - ..() - effect = pick(EFFECT_TOUCH, EFFECT_AURA) - max_pressure = rand(115,1000) - effect_type = pick(6,7) - -/datum/artifact_effect/gasplasma/DoEffectTouch(var/mob/user) - if(holder) - var/datum/gas_mixture/env = holder.loc.return_air() - if(env) - env.toxins += rand(2,15) - -/datum/artifact_effect/gasplasma/DoEffectAura() - if(holder) - var/datum/gas_mixture/env = holder.loc.return_air() - if(env && env.total_moles() < max_pressure) - env.toxins += pick(0, 0, 0.1, rand()) diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gassleeping.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gassleeping.dm deleted file mode 100644 index 76cd29069f0..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gassleeping.dm +++ /dev/null @@ -1,31 +0,0 @@ - -/datum/artifact_effect/gassleeping - effecttype = "gassleeping" - var/max_pressure - var/target_percentage - -/datum/artifact_effect/gassleeping/New() - ..() - effect = pick(EFFECT_TOUCH, EFFECT_AURA) - max_pressure = rand(115,1000) - effect_type = pick(6,7) - -/datum/artifact_effect/gassleeping/DoEffectTouch(var/mob/user) - if(holder) - var/datum/gas_mixture/env = holder.loc.return_air() - if(env) - var/datum/gas/sleeping_agent/trace_gas = new - env.trace_gases += trace_gas - trace_gas.moles = rand(2,15) - env.update_values() - - -/datum/artifact_effect/gassleeping/DoEffectAura() - if(holder) - var/datum/gas_mixture/env = holder.loc.return_air() - if(env && env.total_moles() < max_pressure) - var/datum/gas/sleeping_agent/trace_gas = new - env.trace_gases += trace_gas - trace_gas.moles = pick(0, 0, 0.1, rand()) - env.update_values() - diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_goodfeeling.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_goodfeeling.dm deleted file mode 100644 index dd42c44204c..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_goodfeeling.dm +++ /dev/null @@ -1,68 +0,0 @@ - -/datum/artifact_effect/goodfeeling - effecttype = "goodfeeling" - effect_type = 2 - var/list/messages = list("You feel good.",\ - "Everything seems to be going alright",\ - "You've got a good feeling about this",\ - "Your instincts tell you everything is going to be getting better.",\ - "There's a good feeling in the air.",\ - "Something smells... good.",\ - "The tips of your fingers feel tingly.",\ - "You've got a good feeling about this.",\ - "You feel happy.",\ - "You fight the urge to smile.",\ - "Your scalp prickles.",\ - "All the colours seem a bit more vibrant.",\ - "Everything seems a little lighter.",\ - "The troubles of the world seem to fade away.") - - var/list/drastic_messages = list("You want to hug everyone you meet!",\ - "Everything is going so well!",\ - "You feel euphoric.",\ - "You feel giddy.",\ - "You're so happy suddenly, you almost want to dance and sing.",\ - "You feel like the world is out to help you.") - -/datum/artifact_effect/goodfeeling/DoEffectTouch(var/mob/user) - if(user) - if(istype(user, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = user - if(prob(50)) - if(prob(75)) - to_chat(H, "[pick(drastic_messages)]") - else - to_chat(H, "[pick(messages)]") - - if(prob(50)) - H.AdjustDizzy(rand(3,5)) - -/datum/artifact_effect/goodfeeling/DoEffectAura() - if(holder) - var/turf/T = get_turf(holder) - for(var/mob/living/carbon/human/H in range(src.effectrange,T)) - if(prob(5)) - if(prob(75)) - to_chat(H, "[pick(messages)]") - else - to_chat(H, "[pick(drastic_messages)]") - - if(prob(5)) - H.AdjustDizzy(rand(3,5)) - return 1 - -/datum/artifact_effect/goodfeeling/DoEffectPulse() - if(holder) - var/turf/T = get_turf(holder) - for(var/mob/living/carbon/human/H in range(src.effectrange,T)) - if(prob(50)) - if(prob(95)) - to_chat(H, "[pick(drastic_messages)]") - else - to_chat(H, "[pick(messages)]") - - if(prob(50)) - H.AdjustDizzy(rand(3,5)) - else if(prob(25)) - H.AdjustDizzy(rand(5,15)) - return 1 diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heal.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heal.dm deleted file mode 100644 index b1071222b17..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heal.dm +++ /dev/null @@ -1,66 +0,0 @@ - -/datum/artifact_effect/heal - effecttype = "heal" - effect_type = 5 - -/datum/artifact_effect/heal/DoEffectTouch(var/mob/toucher) - //todo: check over this properly - if(toucher && iscarbon(toucher)) - var/weakness = GetAnomalySusceptibility(toucher) - if(prob(weakness * 100)) - var/mob/living/carbon/C = toucher - to_chat(C, "You feel a soothing energy invigorate you.") - - if(ishuman(toucher)) - var/mob/living/carbon/human/H = toucher - for(var/obj/item/organ/external/affecting in H.bodyparts) - if(affecting && istype(affecting)) - affecting.heal_damage(25 * weakness, 25 * weakness) - //H:heal_organ_damage(25, 25) - H.vessel.add_reagent("blood",5) - H.nutrition += 50 * weakness - H.adjustBrainLoss(-25 * weakness) - var/radiation = min(H.radiation, 25 * weakness) - H.apply_effect(-radiation,IRRADIATE,0) - H.bodytemperature = initial(H.bodytemperature) - spawn(1) - H.fixblood() - // - C.adjustOxyLoss(-25 * weakness) - C.adjustToxLoss(-25 * weakness) - C.adjustBruteLoss(-25 * weakness) - C.adjustFireLoss(-25 * weakness) - // - C.regenerate_icons() - return 1 - -/datum/artifact_effect/heal/DoEffectAura() - //todo: check over this properly - if(holder) - var/turf/T = get_turf(holder) - for(var/mob/living/carbon/C in range(src.effectrange,T)) - var/weakness = GetAnomalySusceptibility(C) - if(prob(weakness * 100)) - if(prob(10)) - to_chat(C, "You feel a soothing energy radiating from something nearby.") - C.adjustBruteLoss(-1 * weakness) - C.adjustFireLoss(-1 * weakness) - C.adjustToxLoss(-1 * weakness) - C.adjustOxyLoss(-1 * weakness) - C.adjustBrainLoss(-1 * weakness) - C.updatehealth() - -/datum/artifact_effect/heal/DoEffectPulse() - //todo: check over this properly - if(holder) - var/turf/T = get_turf(holder) - for(var/mob/living/carbon/C in range(src.effectrange,T)) - var/weakness = GetAnomalySusceptibility(C) - if(prob(weakness * 100)) - to_chat(C, "A wave of energy invigorates you.") - C.adjustBruteLoss(-5 * weakness) - C.adjustFireLoss(-5 * weakness) - C.adjustToxLoss(-5 * weakness) - C.adjustOxyLoss(-5 * weakness) - C.adjustBrainLoss(-5 * weakness) - C.updatehealth() diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heat.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heat.dm deleted file mode 100644 index fb1f9645735..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heat.dm +++ /dev/null @@ -1,27 +0,0 @@ - -//inverse of /datum/artifact_effect/cold, the two effects split up for neatness' sake -/datum/artifact_effect/heat - effecttype = "heat" - var/target_temp - -/datum/artifact_effect/heat/New() - ..() - effect_type = pick(5,6,7) - -/datum/artifact_effect/heat/New() - ..() - target_temp = rand(300,600) - effect = pick(EFFECT_TOUCH, EFFECT_AURA) - -/datum/artifact_effect/heat/DoEffectTouch(var/mob/user) - if(holder) - to_chat(user, "You feel a wave of heat travel up your spine!") - var/datum/gas_mixture/env = holder.loc.return_air() - if(env) - env.temperature += rand(5,50) - -/datum/artifact_effect/heat/DoEffectAura() - if(holder) - var/datum/gas_mixture/env = holder.loc.return_air() - if(env && env.temperature < target_temp) - env.temperature += pick(0, 0, 1) diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_hurt.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_hurt.dm deleted file mode 100644 index f9e3803ff9f..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_hurt.dm +++ /dev/null @@ -1,49 +0,0 @@ - -/datum/artifact_effect/hurt - effecttype = "harm" - effect_type = 5 - -/datum/artifact_effect/hurt/DoEffectTouch(var/mob/toucher) - if(toucher) - var/weakness = GetAnomalySusceptibility(toucher) - if(iscarbon(toucher) && prob(weakness * 100)) - var/mob/living/carbon/C = toucher - to_chat(C, "A painful discharge of energy strikes you!") - C.adjustOxyLoss(rand(5,25) * weakness) - C.adjustToxLoss(rand(5,25) * weakness) - C.adjustBruteLoss(rand(5,25) * weakness) - C.adjustFireLoss(rand(5,25) * weakness) - C.adjustBrainLoss(rand(5,25) * weakness) - C.apply_effect(25 * weakness,IRRADIATE,0) - C.nutrition -= min(50 * weakness, C.nutrition) - C.Dizzy(6 * weakness) - C.AdjustWeakened(6 * weakness) - -/datum/artifact_effect/hurt/DoEffectAura() - if(holder) - var/turf/T = get_turf(holder) - for(var/mob/living/carbon/C in range(src.effectrange,T)) - var/weakness = GetAnomalySusceptibility(C) - if(prob(weakness * 100)) - if(prob(10)) - to_chat(C, "You feel a painful force radiating from something nearby.") - C.adjustBruteLoss(1 * weakness) - C.adjustFireLoss(1 * weakness) - C.adjustToxLoss(1 * weakness) - C.adjustOxyLoss(1 * weakness) - C.adjustBrainLoss(1 * weakness) - C.updatehealth() - -/datum/artifact_effect/hurt/DoEffectPulse() - if(holder) - var/turf/T = get_turf(holder) - for(var/mob/living/carbon/C in range(effectrange, T)) - var/weakness = GetAnomalySusceptibility(C) - if(prob(weakness * 100)) - to_chat(C, "A wave of painful energy strikes you!") - C.adjustBruteLoss(3 * weakness) - C.adjustFireLoss(3 * weakness) - C.adjustToxLoss(3 * weakness) - C.adjustOxyLoss(3 * weakness) - C.adjustBrainLoss(3 * weakness) - C.updatehealth() diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_radiate.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_radiate.dm deleted file mode 100644 index f27a4f4219b..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_radiate.dm +++ /dev/null @@ -1,31 +0,0 @@ - -/datum/artifact_effect/radiate - effecttype = "radiate" - var/radiation_amount - -/datum/artifact_effect/radiate/New() - ..() - radiation_amount = rand(1, 10) - effect_type = pick(4,5) - -/datum/artifact_effect/radiate/DoEffectTouch(var/mob/living/user) - if(user) - user.apply_effect(radiation_amount * 5,IRRADIATE,0) - user.updatehealth() - return 1 - -/datum/artifact_effect/radiate/DoEffectAura() - if(holder) - var/turf/T = get_turf(holder) - for(var/mob/living/M in range(src.effectrange,T)) - M.apply_effect(radiation_amount,IRRADIATE,0) - M.updatehealth() - return 1 - -/datum/artifact_effect/radiate/DoEffectPulse() - if(holder) - var/turf/T = get_turf(holder) - for(var/mob/living/M in range(src.effectrange,T)) - M.apply_effect(radiation_amount * 25,IRRADIATE,0) - M.updatehealth() - return 1 diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_roboheal.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_roboheal.dm deleted file mode 100644 index 191c0beb3fe..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_roboheal.dm +++ /dev/null @@ -1,37 +0,0 @@ - -/datum/artifact_effect/roboheal - effecttype = "roboheal" - -/datum/artifact_effect/roboheal/New() - ..() - effect_type = pick(3,4) - -/datum/artifact_effect/roboheal/DoEffectTouch(var/mob/user) - if(user) - if(istype(user, /mob/living/silicon/robot)) - var/mob/living/silicon/robot/R = user - to_chat(R, "Your systems report damaged components mending by themselves!") - R.adjustBruteLoss(rand(-10,-30)) - R.adjustFireLoss(rand(-10,-30)) - return 1 - -/datum/artifact_effect/roboheal/DoEffectAura() - if(holder) - var/turf/T = get_turf(holder) - for(var/mob/living/silicon/robot/M in range(src.effectrange,T)) - if(prob(10)) - to_chat(M, "SYSTEM ALERT: Beneficial energy field detected!") - M.adjustBruteLoss(-1) - M.adjustFireLoss(-1) - M.updatehealth() - return 1 - -/datum/artifact_effect/roboheal/DoEffectPulse() - if(holder) - var/turf/T = get_turf(holder) - for(var/mob/living/silicon/robot/M in range(src.effectrange,T)) - to_chat(M, "SYSTEM ALERT: Structural damage has been repaired by energy pulse!") - M.adjustBruteLoss(-10) - M.adjustFireLoss(-10) - M.updatehealth() - return 1 diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_robohurt.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_robohurt.dm deleted file mode 100644 index 43f49a6ee36..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_robohurt.dm +++ /dev/null @@ -1,37 +0,0 @@ - -/datum/artifact_effect/robohurt - effecttype = "robohurt" - -/datum/artifact_effect/robohurt/New() - ..() - effect_type = pick(3,4) - -/datum/artifact_effect/robohurt/DoEffectTouch(var/mob/user) - if(user) - if(istype(user, /mob/living/silicon/robot)) - var/mob/living/silicon/robot/R = user - to_chat(R, "Your systems report severe damage has been inflicted!") - R.adjustBruteLoss(rand(10,50)) - R.adjustFireLoss(rand(10,50)) - return 1 - -/datum/artifact_effect/robohurt/DoEffectAura() - if(holder) - var/turf/T = get_turf(holder) - for(var/mob/living/silicon/robot/M in range(src.effectrange,T)) - if(prob(10)) - to_chat(M, "SYSTEM ALERT: Harmful energy field detected!") - M.adjustBruteLoss(1) - M.adjustFireLoss(1) - M.updatehealth() - return 1 - -/datum/artifact_effect/robohurt/DoEffectPulse() - if(holder) - var/turf/T = get_turf(holder) - for(var/mob/living/silicon/robot/M in range(src.effectrange,T)) - to_chat(M, "SYSTEM ALERT: Structural damage inflicted by energy pulse!") - M.adjustBruteLoss(10) - M.adjustFireLoss(10) - M.updatehealth() - return 1 diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_sleepy.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_sleepy.dm deleted file mode 100644 index ec3c5ced009..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_sleepy.dm +++ /dev/null @@ -1,48 +0,0 @@ - -//todo -/datum/artifact_effect/sleepy - effecttype = "sleepy" - -/datum/artifact_effect/sleepy/New() - ..() - effect_type = pick(5,2) - -/datum/artifact_effect/sleepy/DoEffectTouch(var/mob/toucher) - if(toucher) - var/weakness = GetAnomalySusceptibility(toucher) - if(ishuman(toucher) && prob(weakness * 100)) - var/mob/living/carbon/human/H = toucher - to_chat(H, pick("You feel like taking a nap.","You feel a yawn coming on.","You feel a little tired.")) - H.AdjustDrowsy(rand(5,25) * weakness, bound_lower = 0, bound_upper = 50 * weakness) - H.AdjustEyeBlurry(rand(1,3) * weakness, bound_lower = 0, bound_upper = 50 * weakness) - return 1 - else if(isrobot(toucher)) - to_chat(toucher, "SYSTEM ALERT: CPU cycles slowing down.") - return 1 - -/datum/artifact_effect/sleepy/DoEffectAura() - if(holder) - var/turf/T = get_turf(holder) - for(var/mob/living/carbon/human/H in range(src.effectrange,T)) - var/weakness = GetAnomalySusceptibility(H) - if(prob(weakness * 100)) - if(prob(10)) - to_chat(H, pick("You feel like taking a nap.","You feel a yawn coming on.","You feel a little tired.")) - H.AdjustDrowsy(1 * weakness, bound_lower = 0, bound_upper = 25 * weakness) - H.AdjustEyeBlurry(1 * weakness, bound_lower = 0, bound_upper = 25 * weakness) - for(var/mob/living/silicon/robot/R in range(src.effectrange,holder)) - to_chat(R, "SYSTEM ALERT: CPU cycles slowing down.") - return 1 - -/datum/artifact_effect/sleepy/DoEffectPulse() - if(holder) - var/turf/T = get_turf(holder) - for(var/mob/living/carbon/human/H in range(src.effectrange, T)) - var/weakness = GetAnomalySusceptibility(H) - if(prob(weakness * 100)) - to_chat(H, pick("You feel like taking a nap.","You feel a yawn coming on.","You feel a little tired.")) - H.AdjustDrowsy(rand(5,15) * weakness, bound_lower = 0, bound_upper = 50 * weakness) - H.AdjustEyeBlurry(rand(5,15) * weakness, bound_lower = 0, bound_upper = 50 * weakness) - for(var/mob/living/silicon/robot/R in range(src.effectrange,holder)) - to_chat(R, "SYSTEM ALERT: CPU cycles slowing down.") - return 1 diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_stun.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_stun.dm deleted file mode 100644 index bc2aa655e34..00000000000 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_stun.dm +++ /dev/null @@ -1,43 +0,0 @@ - -/datum/artifact_effect/stun - effecttype = "stun" - -/datum/artifact_effect/stun/New() - ..() - effect_type = pick(2,5) - -/datum/artifact_effect/stun/DoEffectTouch(var/mob/toucher) - if(toucher && iscarbon(toucher)) - var/mob/living/carbon/C = toucher - var/susceptibility = GetAnomalySusceptibility(C) - if(prob(susceptibility * 100)) - to_chat(C, "A powerful force overwhelms your consciousness.") - C.Weaken(rand(1,10) * susceptibility) - C.stuttering += 30 * susceptibility - C.Stun(rand(1,10) * susceptibility) - -/datum/artifact_effect/stun/DoEffectAura() - if(holder) - var/turf/T = get_turf(holder) - for(var/mob/living/carbon/C in range(src.effectrange,T)) - var/susceptibility = GetAnomalySusceptibility(C) - if(prob(10 * susceptibility)) - to_chat(C, "Your body goes numb for a moment.") - C.Weaken(2) - C.stuttering += 2 - if(prob(10)) - C.Stun(1) - else if(prob(10)) - to_chat(C, "You feel numb.") - -/datum/artifact_effect/stun/DoEffectPulse() - if(holder) - var/turf/T = get_turf(holder) - for(var/mob/living/carbon/C in range(src.effectrange,T)) - var/susceptibility = GetAnomalySusceptibility(C) - if(prob(100 * susceptibility)) - to_chat(C, "A wave of energy overwhelms your senses!") - C.SetWeakened(4 * susceptibility) - C.stuttering = 4 * susceptibility - if(prob(10)) - C.SetStunned(1 * susceptibility) diff --git a/code/modules/research/xenoarchaeology/chemistry.dm b/code/modules/research/xenoarchaeology/chemistry.dm deleted file mode 100644 index 7094f2d00f4..00000000000 --- a/code/modules/research/xenoarchaeology/chemistry.dm +++ /dev/null @@ -1,54 +0,0 @@ -/obj/item/weapon/reagent_containers/glass/solution_tray - name = "solution tray" - desc = "A small, open-topped glass container for delicate research samples. It sports a re-useable strip for labelling with a pen." - icon = 'icons/obj/device.dmi' - icon_state = "solution_tray" - materials = list(MAT_GLASS=5) - w_class = WEIGHT_CLASS_TINY - amount_per_transfer_from_this = 1 - possible_transfer_amounts = list(1, 2) - volume = 2 - flags = OPENCONTAINER - -obj/item/weapon/reagent_containers/glass/solution_tray/attackby(obj/item/weapon/W as obj, mob/living/user as mob, params) - if(istype(W, /obj/item/weapon/pen)) - var/new_label = input("What should the new label be?","Label solution tray") - if(new_label) - name = "solution tray ([new_label])" - to_chat(user, "You write on the label of the solution tray.") - else - ..(W, user) - -/obj/item/weapon/storage/box/solution_trays - name = "solution tray box" - icon_state = "solution_trays" - - New() - ..() - new /obj/item/weapon/reagent_containers/glass/solution_tray( src ) - new /obj/item/weapon/reagent_containers/glass/solution_tray( src ) - new /obj/item/weapon/reagent_containers/glass/solution_tray( src ) - new /obj/item/weapon/reagent_containers/glass/solution_tray( src ) - new /obj/item/weapon/reagent_containers/glass/solution_tray( src ) - new /obj/item/weapon/reagent_containers/glass/solution_tray( src ) - new /obj/item/weapon/reagent_containers/glass/solution_tray( src ) - -/obj/item/weapon/reagent_containers/glass/beaker/oxygen - name = "beaker 'oxygen'" - list_reagents = list("oxygen" = 50) - -/obj/item/weapon/reagent_containers/glass/beaker/sodium - name = "beaker 'sodium'" - list_reagents = list("sodium" = 50) - -/obj/item/weapon/reagent_containers/glass/beaker/lithium - name = "beaker 'lithium'" - list_reagents = list("lithium" = 50) - -/obj/item/weapon/reagent_containers/glass/beaker/water - name = "beaker 'water'" - list_reagents = list("water" = 50) - -/obj/item/weapon/reagent_containers/glass/beaker/fuel - name = "beaker 'fuel'" - list_reagents = list("fuel" = 50) diff --git a/code/modules/research/xenoarchaeology/finds/finds.dm b/code/modules/research/xenoarchaeology/finds/finds.dm deleted file mode 100644 index 1b1788eb1a1..00000000000 --- a/code/modules/research/xenoarchaeology/finds/finds.dm +++ /dev/null @@ -1,554 +0,0 @@ -//original code and idea from Alfie275 (luna era) and ISaidNo (goonservers) - with thanks - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Xenoarchaeological finds - -/datum/find - var/find_type = 0 //random according to the digsite type - var/excavation_required = 0 //random 5-95% - var/view_range = 20 //how close excavation has to come to show an overlay on the turf - var/clearance_range = 3 //how close excavation has to come to extract the item - //if excavation hits var/excavation_required exactly, it's contained find is extracted cleanly without the ore - var/prob_delicate = 90 //probability it requires an active suspension field to not insta-crumble - var/dissonance_spread = 1 //proportion of the tile that is affected by this find - //used in conjunction with analysis machines to determine correct suspension field type - -/datum/find/New(var/digsite, var/exc_req) - excavation_required = exc_req - find_type = get_random_find_type(digsite) - clearance_range = rand(2,6) - dissonance_spread = rand(1500,2500) / 100 - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Strange rocks - -//have all strange rocks be cleared away using welders for now -/obj/item/weapon/ore/strangerock - name = "Strange rock" - desc = "Seems to have some unusal strata evident throughout it." - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "strange" - var/obj/item/weapon/inside - var/method = 0// 0 = fire, 1 = brush, 2 = pick - origin_tech = "materials=5" - -/obj/item/weapon/ore/strangerock/New(loc, var/inside_item_type = 0) - ..(loc) - - //method = rand(0,2) - if(inside_item_type) - inside = new/obj/item/weapon/archaeological_find(src, new_item_type = inside_item_type) - if(!inside) - inside = locate() in contents - -/*/obj/item/weapon/ore/strangerock/ex_act(var/severity) - if(severity && prob(30)) - src.visible_message("The [src] crumbles away, leaving some dust and gravel behind.")*/ - -/obj/item/weapon/ore/strangerock/attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if(istype(W,/obj/item/weapon/weldingtool/)) - var/obj/item/weapon/weldingtool/w = W - if(w.isOn()) - if(w.get_fuel() >= 4 && !src.method) - if(inside) - inside.loc = get_turf(src) - for(var/mob/M in viewers(world.view, user)) - M.show_message("[src] burns away revealing [inside].",1) - else - for(var/mob/M in viewers(world.view, user)) - M.show_message("[src] burns away into nothing.",1) - qdel(src) - w.remove_fuel(4) - else - for(var/mob/M in viewers(world.view, user)) - M.show_message("A few sparks fly off [src], but nothing else happens.",1) - w.remove_fuel(1) - return - - else if(istype(W,/obj/item/device/core_sampler/)) - var/obj/item/device/core_sampler/S = W - S.sample_item(src, user) - return - - ..() - if(prob(33)) - src.visible_message("[src] crumbles away, leaving some dust and gravel behind.") - qdel(src) - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Archaeological finds - -/obj/item/weapon/archaeological_find - name = "object" - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "ano01" - var/find_type = 0 - -/obj/item/weapon/archaeological_find/New(loc, var/new_item_type) - if(new_item_type) - find_type = new_item_type - else - find_type = rand(1,33) //update this when you add new find types - - var/item_type = "object" - icon_state = "unknown[rand(1,4)]" - var/additional_desc = "" - var/obj/item/weapon/new_item - var/source_material = "" - var/apply_material_decorations = 1 - var/apply_image_decorations = 0 - var/material_descriptor = "" - var/apply_prefix = 1 - if(prob(40)) - material_descriptor = pick("rusted ","dusty ","archaic ","fragile ") - source_material = pick("cordite","quadrinium","steel","titanium","aluminium","ferritic-alloy","plasteel","duranium") - - var/talkative = 0 - if(prob(5)) - talkative = 1 - - //for all items here: - //icon_state - //item_state - switch(find_type) - if(1) - item_type = "bowl" - if(prob(33)) - new_item = new /obj/item/weapon/reagent_containers/glass/replenishing(src.loc) - else - new_item = new /obj/item/weapon/reagent_containers/glass/beaker(src.loc) - new_item.icon = 'icons/obj/xenoarchaeology.dmi' - new_item.icon_state = "bowl" - apply_image_decorations = 1 - if(prob(20)) - additional_desc = "There appear to be [pick("dark","faintly glowing","pungent","bright")] [pick("red","purple","green","blue")] stains inside." - if(2) - item_type = "urn" - if(prob(33)) - new_item = new /obj/item/weapon/reagent_containers/glass/replenishing(src.loc) - else - new_item = new /obj/item/weapon/reagent_containers/glass/beaker(src.loc) - new_item.icon = 'icons/obj/xenoarchaeology.dmi' - new_item.icon_state = "urn" - apply_image_decorations = 1 - if(prob(20)) - additional_desc = "It [pick("whispers faintly","makes a quiet roaring sound","whistles softly","thrums quietly","throbs")] if you put it to your ear." - if(3) - item_type = "[pick("fork","spoon","knife")]" - if(prob(25)) - new_item = new /obj/item/weapon/kitchen/utensil/fork(src.loc) - else if(prob(50)) - new_item = new /obj/item/weapon/kitchen/knife(src.loc) - else - new_item = new /obj/item/weapon/kitchen/utensil/spoon(src.loc) - additional_desc = "[pick("It's like no [item_type] you've ever seen before",\ - "It's a mystery how anyone is supposed to eat with this",\ - "You wonder what the creator's mouth was shaped like")]." - if(4) - name = "statuette" - item_type = "statuette" - icon_state = "statuette" - additional_desc = "It depicts a [pick("small","ferocious","wild","pleasing","hulking")] \ - [pick("alien figure","rodent-like creature","reptilian alien","primate","unidentifiable object")] \ - [pick("performing unspeakable acts","posing heroically","in a fetal position","cheering","sobbing","making a plaintive gesture","making a rude gesture")]." - if(prob(25)) - new_item = new /obj/item/weapon/vampiric(src.loc) - if(5) - item_type = "instrument" - icon_state = "instrument" - if(prob(30)) - apply_image_decorations = 1 - additional_desc = "[pick("You're not sure how anyone could have played this",\ - "You wonder how many mouths the creator had",\ - "You wonder what it sounds like",\ - "You wonder what kind of music was made with it")]." - if(6) - item_type = "[pick("bladed knife","serrated blade","sharp cutting implement")]" - new_item = new /obj/item/weapon/kitchen/knife(src.loc) - additional_desc = "[pick("It doesn't look safe.",\ - "It looks wickedly jagged",\ - "There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains along the edges")]." - if(7) - //assuming there are 10 types of coins - var/chance = 10 - for(var/type in typesof(/obj/item/weapon/coin)) - if(prob(chance)) - new_item = new type(src.loc) - break - chance += 10 - - item_type = new_item.name - apply_prefix = 0 - apply_material_decorations = 0 - apply_image_decorations = 1 - if(8) - item_type = "handcuffs" - new_item = new /obj/item/weapon/restraints/handcuffs(src.loc) - additional_desc = "[pick("They appear to be for securing two things together","Looks kinky","Doesn't seem like a children's toy")]." - if(9) - item_type = "[pick("wicked","evil","byzantine","dangerous")] looking [pick("device","contraption","thing","trap")]" - apply_prefix = 0 - new_item = new /obj/item/weapon/restraints/legcuffs/beartrap(src.loc) - additional_desc = "[pick("It looks like it could take a limb off",\ - "Could be some kind of animal trap",\ - "There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains along part of it")]." - if(10) - item_type = "[pick("cylinder","tank","chamber")]" - new_item = new /obj/item/weapon/lighter(src.loc) - additional_desc = "There is a tiny device attached." - if(prob(30)) - apply_image_decorations = 1 - if(11) - item_type = "box" - new_item = new /obj/item/weapon/storage/box(src.loc) - new_item.icon = 'icons/obj/xenoarchaeology.dmi' - new_item.icon_state = "box" - var/obj/item/weapon/storage/box/new_box = new_item - new_box.max_w_class = pick(1,2,2,3,3,3,4,4) - new_box.max_combined_w_class = rand(new_box.max_w_class, new_box.max_w_class * 10) - if(prob(30)) - apply_image_decorations = 1 - if(12) - item_type = "[pick("cylinder","tank","chamber")]" - if(prob(25)) - new_item = new /obj/item/weapon/tank/air(src.loc) - else if(prob(50)) - new_item = new /obj/item/weapon/tank/anesthetic(src.loc) - else - new_item = new /obj/item/weapon/tank/plasma(src.loc) - icon_state = pick("oxygen","oxygen_fr","oxygen_f","plasma","anesthetic") - additional_desc = "It [pick("gloops","sloshes")] slightly when you shake it." - if(13) - item_type = "tool" - if(prob(25)) - new_item = new /obj/item/weapon/wrench(src.loc) - else if(prob(25)) - new_item = new /obj/item/weapon/crowbar(src.loc) - else - new_item = new /obj/item/weapon/screwdriver(src.loc) - additional_desc = "[pick("It doesn't look safe.",\ - "You wonder what it was used for",\ - "There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains on it")]." - if(14) - apply_material_decorations = 0 - var/list/possible_spawns = list() - possible_spawns += /obj/item/stack/sheet/metal - possible_spawns += /obj/item/stack/sheet/plasteel - possible_spawns += /obj/item/stack/sheet/glass - possible_spawns += /obj/item/stack/sheet/rglass - possible_spawns += /obj/item/stack/sheet/mineral/plasma - possible_spawns += /obj/item/stack/sheet/mineral/gold - possible_spawns += /obj/item/stack/sheet/mineral/silver - possible_spawns += /obj/item/stack/sheet/mineral/enruranium - possible_spawns += /obj/item/stack/sheet/mineral/sandstone - possible_spawns += /obj/item/stack/sheet/mineral/silver - - var/new_type = pick(possible_spawns) - new_item = new new_type(src.loc) - new_item:amount = rand(5,45) - if(15) - if(prob(75)) - new_item = new /obj/item/weapon/pen(src.loc) - else - new_item = new /obj/item/weapon/pen/sleepy(src.loc) - if(prob(30)) - apply_image_decorations = 1 - if(16) - apply_prefix = 0 - if(prob(25)) - item_type = "smooth green crystal" - icon_state = "Green lump" - else if(prob(33)) - item_type = "irregular purple crystal" - icon_state = "Phazon" - else if(prob(50)) - item_type = "rough red crystal" - icon_state = "changerock" - else - item_type = "smooth red crystal" - icon_state = "ore" - additional_desc = pick("It shines faintly as it catches the light.","It appears to have a faint inner glow.","It seems to draw you inward as you look it at.","Something twinkles faintly as you look at it.","It's mesmerizing to behold.") - - apply_material_decorations = 0 - if(prob(10)) - apply_image_decorations = 1 - if(prob(25)) - new_item = new /obj/item/device/soulstone(src.loc) - new_item.icon = 'icons/obj/xenoarchaeology.dmi' - new_item.icon_state = icon_state - if(17) - //cultblade - apply_prefix = 0 - new_item = new /obj/item/weapon/melee/cultblade(src.loc) - apply_material_decorations = 0 - apply_image_decorations = 0 - if(18) - new_item = new /obj/item/device/radio/beacon(src.loc) - talkative = 0 - new_item.icon_state = "unknown[rand(1,4)]" - new_item.icon = 'icons/obj/xenoarchaeology.dmi' - new_item.desc = "" - if(19) - apply_prefix = 0 - new_item = new /obj/item/weapon/claymore(src.loc) - new_item.force = 10 - item_type = new_item.name - if(20) - //arcane clothing - apply_prefix = 0 - var/list/possible_spawns = list(/obj/item/clothing/head/magus, - /obj/item/clothing/head/helmet/space/cult) - - var/new_type = pick(possible_spawns) - new_item = new new_type(src.loc) - if(21) - //soulstone - apply_prefix = 0 - new_item = new /obj/item/device/soulstone(src.loc) - item_type = new_item.name - apply_material_decorations = 0 - if(22) - if(prob(50)) - new_item = new /obj/item/weapon/shard(loc) - else - new_item = new /obj/item/weapon/shard/plasma(loc) - - apply_prefix = 0 - apply_image_decorations = 0 - apply_material_decorations = 0 - if(23) - apply_prefix = 0 - new_item = new /obj/item/stack/rods(src.loc) - apply_image_decorations = 0 - apply_material_decorations = 0 - if(24) - var/list/possible_spawns = subtypesof(/obj/item/weapon/stock_parts) - possible_spawns -= /obj/item/weapon/stock_parts/subspace - - var/new_type = pick(possible_spawns) - new_item = new new_type(src.loc) - item_type = new_item.name - apply_material_decorations = 0 - if(25) - apply_prefix = 0 - new_item = new /obj/item/weapon/katana(src.loc) - new_item.force = 10 - item_type = new_item.name - if(26) - //energy gun - var/spawn_type = pick(\ - /obj/item/weapon/gun/energy/laser/practice,\ - /obj/item/weapon/gun/energy/laser,\ - /obj/item/weapon/gun/energy/xray,\ - /obj/item/weapon/gun/energy/laser/captain) - if(spawn_type) - var/obj/item/weapon/gun/energy/new_gun = new spawn_type(src.loc) - new_item = new_gun - new_item.icon_state = pick("laser","retro","laser","caplaser","xray","energy","laser") - new_gun.desc = "This is an antique energy weapon, you're not sure if it will fire or not." - - //5% chance to explode when first fired - //10% chance to have an unchargeable cell - //15% chance to gain a random amount of starting energy, otherwise start with an empty cell - if(prob(5)) - new_gun.power_supply.rigged = 1 - if(prob(10)) - new_gun.power_supply.maxcharge = 0 - if(prob(15)) - new_gun.power_supply.charge = rand(0, new_gun.power_supply.maxcharge) - else - new_gun.power_supply.charge = 0 - - item_type = "gun" -/* if(27) - //revolver - var/obj/item/weapon/gun/projectile/revolver/new_gun = new /obj/item/weapon/gun/projectile/revolver(src.loc) - new_item = new_gun - new_item.icon_state = "gun[rand(1,4)]" - new_item.icon = 'icons/obj/xenoarchaeology.dmi' - - //33% chance to be able to reload the gun with human ammunition - if(prob(66)) - new_gun.caliber = "999" - - //33% chance to fill it with a random amount of bullets - new_gun.max_shells = rand(1,12) - if(prob(33)) - var/num_bullets = rand(1,new_gun.max_shells) - if(num_bullets < new_gun.loaded.len) - new_gun.loaded.Cut() - for(var/i = 1, i <= num_bullets, i++) - var/A = text2path(new_gun.ammo_type) - new_gun.loaded += new A(new_gun) - else - for(var/obj/item/I in new_gun) - if(new_gun.loaded.len > num_bullets) - if(I in new_gun.loaded) - new_gun.loaded.Remove(I) - I.loc = null - else - break - else - for(var/obj/item/I in new_gun) - if(I in new_gun.loaded) - new_gun.loaded.Remove(I) - I.loc = null - - item_type = "gun"*/ - if(28) - //completely unknown alien device - if(prob(50)) - apply_image_decorations = 0 - if(29) - //fossil bone/skull - //new_item = new /obj/item/weapon/fossil/base(src.loc) - - //the replacement item propogation isn't working, and it's messy code anyway so just do it here - var/list/candidates = list("/obj/item/weapon/fossil/bone"=9,"/obj/item/weapon/fossil/skull"=3, - "/obj/item/weapon/fossil/skull/horned"=2) - var/spawn_type = pickweight(candidates) - new_item = new spawn_type(src.loc) - - apply_prefix = 0 - additional_desc = "A fossilised part of an alien, long dead." - apply_image_decorations = 0 - apply_material_decorations = 0 - if(30) - //fossil shell - new_item = new /obj/item/weapon/fossil/shell(src.loc) - apply_prefix = 0 - additional_desc = "A fossilised, pre-Stygian alien crustacean." - apply_image_decorations = 0 - apply_material_decorations = 0 - if(prob(10)) - apply_image_decorations = 1 - if(31) - //fossil plant - new_item = new /obj/item/weapon/fossil/plant(src.loc) - item_type = new_item.name - additional_desc = "A fossilised shred of alien plant matter." - apply_image_decorations = 0 - apply_material_decorations = 0 - apply_prefix = 0 - if(32) - //humanoid remains - apply_prefix = 0 - item_type = "humanoid [pick("remains","skeleton")]" - icon = 'icons/effects/blood.dmi' - icon_state = "remains" - additional_desc = pick("They appear almost human.",\ - "They are contorted in a most gruesome way.",\ - "They look almost peaceful.",\ - "The bones are yellowing and old, but remarkably well preserved.",\ - "The bones are scored by numerous burns and partially melted.",\ - "The are battered and broken, in some cases less than splinters are left.",\ - "The mouth is wide open in a death rictus, the victim would appear to have died screaming.") - apply_image_decorations = 0 - apply_material_decorations = 0 - if(33) - //robot remains - apply_prefix = 0 - item_type = "[pick("mechanical","robotic","cyborg")] [pick("remains","chassis","debris")]" - icon = 'icons/effects/blood.dmi' - icon_state = "remainsrobot" - additional_desc = pick("Almost mistakeable for the remains of a modern cyborg.",\ - "They are barely recognisable as anything other than a pile of waste metals.",\ - "It looks like the battered remains of an ancient robot chassis.",\ - "The chassis is rusting and old, but remarkably well preserved.",\ - "The chassis is scored by numerous burns and partially melted.",\ - "The chassis is battered and broken, in some cases only chunks of metal are left.",\ - "A pile of wires and crap metal that looks vaguely robotic.") - apply_image_decorations = 0 - apply_material_decorations = 0 - if(27) - //xenos remains - apply_prefix = 0 - item_type = "alien [pick("remains","skeleton")]" - icon = 'icons/effects/blood.dmi' - icon_state = "remainsxeno" - additional_desc = pick("It looks vaguely reptilian, but with more teeth.",\ - "They are faintly unsettling.",\ - "There is a faint aura of unease about them.",\ - "The bones are yellowing and old, but remarkably well preserved.",\ - "The bones are scored by numerous burns and partially melted.",\ - "The are battered and broken, in some cases less than splinters are left.",\ - "This creature would have been twisted and monstrous when it was alive.",\ - "It doesn't look human.") - apply_image_decorations = 0 - apply_material_decorations = 0 - if(35) - //gas mask - if(prob(25)) - new_item = new /obj/item/clothing/mask/gas/poltergeist(src.loc) - else - new_item = new /obj/item/clothing/mask/gas(src.loc) - var/decorations = "" - if(apply_material_decorations) - source_material = pick("cordite","quadrinium","steel","titanium","aluminium","ferritic-alloy","plasteel","duranium") - desc = "A [material_descriptor ? "[material_descriptor] " : ""][item_type] made of [source_material], all craftsmanship is of [pick("the lowest","low","average","high","the highest")] quality." - - var/list/descriptors = list() - if(prob(30)) - descriptors.Add("is encrusted with [pick("","synthetic ","multi-faceted ","uncut ","sparkling ") + pick("rubies","emeralds","diamonds","opals","lapiz lazuli")]") - if(prob(30)) - descriptors.Add("is studded with [pick("gold","silver","aluminium","titanium")]") - if(prob(30)) - descriptors.Add("is encircled with bands of [pick("quadrinium","cordite","ferritic-alloy","plasteel","duranium")]") - if(prob(30)) - descriptors.Add("menaces with spikes of [pick("solid plasma","uranium","white pearl","black steel")]") - if(descriptors.len > 0) - decorations = "It " - for(var/index=1, index <= descriptors.len, index++) - if(index > 1) - if(index == descriptors.len) - decorations += " and " - else - decorations += ", " - decorations += descriptors[index] - decorations += "." - if(decorations) - desc += " " + decorations - - var/engravings = "" - if(apply_image_decorations) - engravings = "[pick("Engraved","Carved","Etched")] on the item is [pick("an image of","a frieze of","a depiction of")] \ - [pick("an alien humanoid","an amorphic blob","a short, hairy being","a rodent-like creature","a robot","a primate","a reptilian alien","an unidentifiable object","a statue","a starship","unusual devices","a structure")] \ - [pick("surrounded by","being held aloft by","being struck by","being examined by","communicating with")] \ - [pick("alien humanoids","amorphic blobs","short, hairy beings","rodent-like creatures","robots","primates","reptilian aliens")]" - if(prob(50)) - engravings += ", [pick("they seem to be enjoying themselves","they seem extremely angry","they look pensive","they are making gestures of supplication","the scene is one of subtle horror","the scene conveys a sense of desperation","the scene is completely bizarre")]" - engravings += "." - - if(desc) - desc += " " - desc += engravings - - if(apply_prefix) - name = "[pick("Strange","Ancient","Alien","")] [item_type]" - else - name = item_type - - if(desc) - desc += " " - desc += additional_desc - if(!desc) - desc = "This item is completely [pick("alien","bizarre")]." - - //icon and icon_state should have already been set - if(new_item) - new_item.name = name - new_item.desc = src.desc - - if(talkative) - new_item.talking_atom = new() - if(talking_atom) - talking_atom.holder_atom = new_item - talking_atom.init() - - qdel(src) - - else if(talkative) - src.talking_atom = new() - if(talking_atom) - talking_atom.holder_atom = src - talking_atom.init() diff --git a/code/modules/research/xenoarchaeology/finds/finds_defines.dm b/code/modules/research/xenoarchaeology/finds/finds_defines.dm deleted file mode 100644 index 2c6337ec0fa..00000000000 --- a/code/modules/research/xenoarchaeology/finds/finds_defines.dm +++ /dev/null @@ -1,281 +0,0 @@ - -#define ARCHAEO_BOWL 1 -#define ARCHAEO_URN 2 -#define ARCHAEO_CUTLERY 3 -#define ARCHAEO_STATUETTE 4 -#define ARCHAEO_INSTRUMENT 5 -#define ARCHAEO_KNIFE 6 -#define ARCHAEO_COIN 7 -#define ARCHAEO_HANDCUFFS 8 -#define ARCHAEO_BEARTRAP 9 -#define ARCHAEO_LIGHTER 10 -#define ARCHAEO_BOX 11 -#define ARCHAEO_GASTANK 12 -#define ARCHAEO_TOOL 13 -#define ARCHAEO_METAL 14 -#define ARCHAEO_PEN 15 -#define ARCHAEO_CRYSTAL 16 -#define ARCHAEO_CULTBLADE 17 -#define ARCHAEO_TELEBEACON 18 -#define ARCHAEO_CLAYMORE 19 -#define ARCHAEO_CULTROBES 20 -#define ARCHAEO_SOULSTONE 21 -#define ARCHAEO_SHARD 22 -#define ARCHAEO_RODS 23 -#define ARCHAEO_STOCKPARTS 24 -#define ARCHAEO_KATANA 25 -#define ARCHAEO_LASER 26 -#define ARCHAEO_GUN 27 -#define ARCHAEO_UNKNOWN 28 -#define ARCHAEO_FOSSIL 29 -#define ARCHAEO_SHELL 30 -#define ARCHAEO_PLANT 31 -#define ARCHAEO_REMAINS_HUMANOID 32 -#define ARCHAEO_REMAINS_ROBOT 33 -#define ARCHAEO_REMAINS_XENO 34 -#define ARCHAEO_GASMASK 35 -#define MAX_ARCHAEO 35 -//eggs -//droppings -//footprints -//alien clothing - -//DNA sampling from fossils, or a new archaeo type specifically for it? - -//descending order of likeliness to spawn -#define DIGSITE_GARDEN 1 -#define DIGSITE_ANIMAL 2 -#define DIGSITE_HOUSE 3 -#define DIGSITE_TECHNICAL 4 -#define DIGSITE_TEMPLE 5 -#define DIGSITE_WAR 6 - -/proc/get_responsive_reagent(var/find_type) - switch(find_type) - if(ARCHAEO_BOWL) - return "mercury" - if(ARCHAEO_URN) - return "mercury" - if(ARCHAEO_CUTLERY) - return "mercury" - if(ARCHAEO_STATUETTE) - return "mercury" - if(ARCHAEO_INSTRUMENT) - return "mercury" - if(ARCHAEO_COIN) - return "iron" - if(ARCHAEO_KNIFE) - return "iron" - if(ARCHAEO_HANDCUFFS) - return "mercury" - if(ARCHAEO_BEARTRAP) - return "mercury" - if(ARCHAEO_LIGHTER) - return "mercury" - if(ARCHAEO_BOX) - return "mercury" - if(ARCHAEO_GASTANK) - return "mercury" - if(ARCHAEO_TOOL) - return "iron" - if(ARCHAEO_METAL) - return "iron" - if(ARCHAEO_PEN) - return "mercury" - if(ARCHAEO_CRYSTAL) - return "nitrogen" - if(ARCHAEO_CULTBLADE) - return "potassium" - if(ARCHAEO_TELEBEACON) - return "potassium" - if(ARCHAEO_CLAYMORE) - return "iron" - if(ARCHAEO_CULTROBES) - return "potassium" - if(ARCHAEO_SOULSTONE) - return "nitrogen" - if(ARCHAEO_SHARD) - return "nitrogen" - if(ARCHAEO_RODS) - return "iron" - if(ARCHAEO_STOCKPARTS) - return "potassium" - if(ARCHAEO_KATANA) - return "iron" - if(ARCHAEO_LASER) - return "iron" - if(ARCHAEO_GUN) - return "iron" - if(ARCHAEO_UNKNOWN) - return "mercury" - if(ARCHAEO_FOSSIL) - return "carbon" - if(ARCHAEO_SHELL) - return "carbon" - if(ARCHAEO_PLANT) - return "carbon" - if(ARCHAEO_REMAINS_HUMANOID) - return "carbon" - if(ARCHAEO_REMAINS_ROBOT) - return "carbon" - if(ARCHAEO_REMAINS_XENO) - return "carbon" - if(ARCHAEO_GASMASK) - return "carbon" - return "plasma" - -//see /turf/simulated/mineral/New() in code/modules/mining/mine_turfs.dm -/proc/get_random_digsite_type() - return pick(100;DIGSITE_GARDEN,95;DIGSITE_ANIMAL,90;DIGSITE_HOUSE,85;DIGSITE_TECHNICAL,80;DIGSITE_TEMPLE,75;DIGSITE_WAR) - -/proc/get_random_find_type(var/digsite) - - var/find_type = 0 - switch(digsite) - if(DIGSITE_GARDEN) - find_type = pick(\ - 100;ARCHAEO_PLANT,\ - 25;ARCHAEO_SHELL,\ - 25;ARCHAEO_FOSSIL,\ - 5;ARCHAEO_BEARTRAP\ - ) - if(DIGSITE_ANIMAL) - find_type = pick(\ - 100;ARCHAEO_FOSSIL,\ - 50;ARCHAEO_SHELL,\ - 50;ARCHAEO_PLANT,\ - 25;ARCHAEO_BEARTRAP\ - ) - if(DIGSITE_HOUSE) - find_type = pick(\ - 100;ARCHAEO_BOWL,\ - 100;ARCHAEO_URN,\ - 100;ARCHAEO_CUTLERY,\ - 100;ARCHAEO_STATUETTE,\ - 100;ARCHAEO_INSTRUMENT,\ - 100;ARCHAEO_PEN,\ - 100;ARCHAEO_LIGHTER,\ - 100;ARCHAEO_BOX,\ - 75;ARCHAEO_GASMASK,\ - 75;ARCHAEO_COIN,\ - 75;ARCHAEO_UNKNOWN,\ - 50;ARCHAEO_SHARD,\ - 50;ARCHAEO_RODS,\ - 25;ARCHAEO_METAL\ - ) - if(DIGSITE_TECHNICAL) - find_type = pick(\ - 125;ARCHAEO_GASMASK,\ - 100;ARCHAEO_METAL,\ - 100;ARCHAEO_GASTANK,\ - 100;ARCHAEO_TELEBEACON,\ - 100;ARCHAEO_TOOL,\ - 100;ARCHAEO_STOCKPARTS,\ - 75;ARCHAEO_SHARD,\ - 75;ARCHAEO_RODS,\ - 75;ARCHAEO_UNKNOWN,\ - 50;ARCHAEO_HANDCUFFS,\ - 50;ARCHAEO_BEARTRAP,\ - ) - if(DIGSITE_TEMPLE) - find_type = pick(\ - 200;ARCHAEO_CULTROBES,\ - 200;ARCHAEO_STATUETTE,\ - 100;ARCHAEO_URN,\ - 100;ARCHAEO_BOWL,\ - 100;ARCHAEO_KNIFE,\ - 100;ARCHAEO_CRYSTAL,\ - 75;ARCHAEO_CULTBLADE,\ - 50;ARCHAEO_SOULSTONE,\ - 50;ARCHAEO_UNKNOWN,\ - 25;ARCHAEO_HANDCUFFS,\ - 25;ARCHAEO_BEARTRAP,\ - 10;ARCHAEO_KATANA,\ - 10;ARCHAEO_CLAYMORE,\ - 10;ARCHAEO_SHARD,\ - 10;ARCHAEO_RODS,\ - 10;ARCHAEO_METAL,\ - 10;ARCHAEO_GASMASK,\ - ) - if(DIGSITE_WAR) - find_type = pick(\ - 100;ARCHAEO_GUN,\ - 100;ARCHAEO_KNIFE,\ - 75;ARCHAEO_LASER,\ - 75;ARCHAEO_KATANA,\ - 75;ARCHAEO_CLAYMORE,\ - 50;ARCHAEO_UNKNOWN,\ - 50;ARCHAEO_CULTROBES,\ - 50;ARCHAEO_CULTBLADE,\ - 50;ARCHAEO_GASMASK,\ - 25;ARCHAEO_HANDCUFFS,\ - 25;ARCHAEO_BEARTRAP,\ - 25;ARCHAEO_TOOL\ - ) - return find_type - -var/list/responsive_carriers = list( \ - "carbon", \ - "potassium", \ - "hydrogen", \ - "nitrogen", \ - "mercury", \ - "iron", \ - "chlorine", \ - "phosphorus", \ - "plasma") - -var/list/finds_as_strings = list( \ - "Trace organic cells", \ - "Long exposure particles", \ - "Trace water particles", \ - "Crystalline structures", \ - "Metallic derivative", \ - "Metallic composite", \ - "Metamorphic/igneous rock composite", \ - "Metamorphic/sedimentary rock composite", \ - "Anomalous material" ) - -#undef ARCHAEO_BOWL -#undef ARCHAEO_URN -#undef ARCHAEO_CUTLERY -#undef ARCHAEO_STATUETTE -#undef ARCHAEO_INSTRUMENT -#undef ARCHAEO_KNIFE -#undef ARCHAEO_COIN -#undef ARCHAEO_HANDCUFFS -#undef ARCHAEO_BEARTRAP -#undef ARCHAEO_LIGHTER -#undef ARCHAEO_BOX -#undef ARCHAEO_GASTANK -#undef ARCHAEO_TOOL -#undef ARCHAEO_METAL -#undef ARCHAEO_PEN -#undef ARCHAEO_CRYSTAL -#undef ARCHAEO_CULTBLADE -#undef ARCHAEO_TELEBEACON -#undef ARCHAEO_CLAYMORE -#undef ARCHAEO_CULTROBES -#undef ARCHAEO_SOULSTONE -#undef ARCHAEO_SHARD -#undef ARCHAEO_RODS -#undef ARCHAEO_STOCKPARTS -#undef ARCHAEO_KATANA -#undef ARCHAEO_LASER -#undef ARCHAEO_GUN -#undef ARCHAEO_UNKNOWN -#undef ARCHAEO_FOSSIL -#undef ARCHAEO_SHELL -#undef ARCHAEO_PLANT -#undef ARCHAEO_REMAINS_HUMANOID -#undef ARCHAEO_REMAINS_ROBOT -#undef ARCHAEO_REMAINS_XENO -#undef ARCHAEO_GASMASK -#undef MAX_ARCHAEO - -#undef DIGSITE_GARDEN -#undef DIGSITE_ANIMAL -#undef DIGSITE_HOUSE -#undef DIGSITE_TECHNICAL -#undef DIGSITE_TEMPLE -#undef DIGSITE_WAR diff --git a/code/modules/research/xenoarchaeology/finds/finds_fossils.dm b/code/modules/research/xenoarchaeology/finds/finds_fossils.dm deleted file mode 100644 index be176c114f4..00000000000 --- a/code/modules/research/xenoarchaeology/finds/finds_fossils.dm +++ /dev/null @@ -1,104 +0,0 @@ - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// fossils - -/obj/item/weapon/fossil - name = "Fossil" - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "bone" - desc = "It's a fossil." - var/animal = 1 - -/obj/item/weapon/fossil/base/New() - var/list/l = list("/obj/item/weapon/fossil/bone"=9,"/obj/item/weapon/fossil/skull"=3, - "/obj/item/weapon/fossil/skull/horned"=2) - var/t = pickweight(l) - var/obj/item/weapon/W = new t(src.loc) - var/turf/T = get_turf(src) - if(istype(T, /turf/simulated/mineral)) - T:last_find = W - qdel(src) - -/obj/item/weapon/fossil/bone - name = "Fossilised bone" - icon_state = "bone" - desc = "It's a fossilised bone." - -/obj/item/weapon/fossil/skull - name = "Fossilised skull" - icon_state = "skull" - desc = "It's a fossilised skull." - -/obj/item/weapon/fossil/skull/horned - icon_state = "hskull" - desc = "It's a fossilised, horned skull." - -/obj/item/weapon/fossil/skull/attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if(istype(W,/obj/item/weapon/fossil/bone)) - var/obj/o = new /obj/skeleton(get_turf(src)) - var/a = new /obj/item/weapon/fossil/bone - var/b = new src.type - o.contents.Add(a) - o.contents.Add(b) - qdel(W) - qdel(src) - -/obj/skeleton - name = "Incomplete skeleton" - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "uskel" - desc = "Incomplete skeleton." - var/bnum = 1 - var/breq - var/bstate = 0 - var/plaque_contents = "Unnamed alien creature" - -/obj/skeleton/New() - src.breq = rand(6)+3 - src.desc = "An incomplete skeleton, looks like it could use [src.breq-src.bnum] more bones." - -/obj/skeleton/attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if(istype(W,/obj/item/weapon/fossil/bone)) - if(!bstate) - bnum++ - src.contents.Add(new/obj/item/weapon/fossil/bone) - qdel(W) - if(bnum==breq) - usr = user - icon_state = "skel" - src.bstate = 1 - src.density = 1 - src.name = "alien skeleton display" - if(src.contents.Find(/obj/item/weapon/fossil/skull/horned)) - src.desc = "A creature made of [src.contents.len-1] assorted bones and a horned skull. The plaque reads \'[plaque_contents]\'." - else - src.desc = "A creature made of [src.contents.len-1] assorted bones and a skull. The plaque reads \'[plaque_contents]\'." - else - src.desc = "Incomplete skeleton, looks like it could use [src.breq-src.bnum] more bones." - to_chat(user, "Looks like it could use [src.breq-src.bnum] more bones.") - else - ..() - else if(istype(W,/obj/item/weapon/pen)) - plaque_contents = input("What would you like to write on the plaque:","Skeleton plaque","") - user.visible_message("[user] writes something on the base of [src].","You relabel the plaque on the base of [bicon(src)] [src].") - if(src.contents.Find(/obj/item/weapon/fossil/skull/horned)) - src.desc = "A creature made of [src.contents.len-1] assorted bones and a horned skull. The plaque reads \'[plaque_contents]\'." - else - src.desc = "A creature made of [src.contents.len-1] assorted bones and a skull. The plaque reads \'[plaque_contents]\'." - else - ..() - -//shells and plants do not make skeletons -/obj/item/weapon/fossil/shell - name = "Fossilised shell" - icon_state = "shell" - desc = "It's a fossilised shell." - -/obj/item/weapon/fossil/plant - name = "Fossilised plant" - icon_state = "plant1" - desc = "It's fossilised plant remains." - animal = 0 - -/obj/item/weapon/fossil/plant/New() - icon_state = "plant[rand(1,4)]" diff --git a/code/modules/research/xenoarchaeology/finds/finds_misc.dm b/code/modules/research/xenoarchaeology/finds/finds_misc.dm deleted file mode 100644 index 0c4f8e8369d..00000000000 --- a/code/modules/research/xenoarchaeology/finds/finds_misc.dm +++ /dev/null @@ -1,73 +0,0 @@ - -/obj/item/weapon/shard/plasma - name = "plasma shard" - desc = "A shard of plasma glass. Considerably tougher then normal glass shards. Apparently not tough enough to be a window." - force = 8.0 - throwforce = 15.0 - icon_state = "plasmalarge" - sharp = 1 - edge = 1 - -/obj/item/weapon/shard/plasma/New() - - src.icon_state = pick("plasmalarge", "plasmamedium", "plasmasmall") - switch(src.icon_state) - if("plasmasmall") - src.pixel_x = rand(-12, 12) - src.pixel_y = rand(-12, 12) - if("plasmamedium") - src.pixel_x = rand(-8, 8) - src.pixel_y = rand(-8, 8) - if("plasmalarge") - src.pixel_x = rand(-5, 5) - src.pixel_y = rand(-5, 5) - else - return - -/obj/item/weapon/shard/plasma/attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if( istype(W, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = W - if(WT.remove_fuel(0, user)) - var/obj/item/stack/sheet/plasmaglass/NG = new (user.loc) - for(var/obj/item/stack/sheet/plasmaglass/G in user.loc) - if(G==NG) - continue - if(G.amount>=G.max_amount) - continue - G.attackby(NG, user, params) - to_chat(usr, "You add the newly-formed plasma glass to the stack. It now contains [NG.amount] sheets.") - //SN src = null - qdel(src) - return - return ..() - -//legacy crystal -/obj/machinery/crystal - name = "Crystal" - icon = 'icons/obj/mining.dmi' - icon_state = "crystal" - -/obj/machinery/crystal/New() - if(prob(50)) - icon_state = "crystal2" - -//large finds - /* - /obj/machinery/syndicate_beacon - /obj/machinery/wish_granter - if(18) - item_type = "jagged green crystal" - additional_desc = pick("It shines faintly as it catches the light.","It appears to have a faint inner glow.","It seems to draw you inward as you look it at.","Something twinkles faintly as you look at it.","It's mesmerizing to behold.") - icon_state = "crystal" - apply_material_decorations = 0 - if(prob(10)) - apply_image_decorations = 1 - if(19) - item_type = "jagged pink crystal" - additional_desc = pick("It shines faintly as it catches the light.","It appears to have a faint inner glow.","It seems to draw you inward as you look it at.","Something twinkles faintly as you look at it.","It's mesmerizing to behold.") - icon_state = "crystal2" - apply_material_decorations = 0 - if(prob(10)) - apply_image_decorations = 1 - */ - //machinery type artifacts? diff --git a/code/modules/research/xenoarchaeology/finds/finds_special.dm b/code/modules/research/xenoarchaeology/finds/finds_special.dm deleted file mode 100644 index 5fd432a7a6f..00000000000 --- a/code/modules/research/xenoarchaeology/finds/finds_special.dm +++ /dev/null @@ -1,203 +0,0 @@ - - - -//endless reagents! -/obj/item/weapon/reagent_containers/glass/replenishing - var/spawning_id - -/obj/item/weapon/reagent_containers/glass/replenishing/New() - ..() - processing_objects.Add(src) - spawning_id = pick("blood","holywater","lube","morphine","ethanol","ice","glycerol","fuel","cleaner") - -/obj/item/weapon/reagent_containers/glass/replenishing/process() - reagents.add_reagent(spawning_id, 0.3) - - - -//a talking gas mask! -/obj/item/clothing/mask/gas/poltergeist - var/list/heard_talk = list() - var/last_twitch = 0 - var/max_stored_messages = 100 - -/obj/item/clothing/mask/gas/poltergeist/New() - processing_objects.Add(src) - -/obj/item/clothing/mask/gas/poltergeist/process() - if(heard_talk.len && istype(src.loc, /mob/living) && prob(10)) - var/mob/living/M = src.loc - M.say(pick(heard_talk)) - -/obj/item/clothing/mask/gas/poltergeist/hear_talk(mob/M as mob, text) - ..() - if(heard_talk.len > max_stored_messages) - heard_talk.Remove(pick(heard_talk)) - heard_talk.Add(text) - if(istype(src.loc, /mob/living) && world.time - last_twitch > 50) - last_twitch = world.time - - - -//a vampiric statuette -//todo: cult integration -/obj/item/weapon/vampiric - name = "statuette" - icon_state = "statuette" - icon = 'icons/obj/xenoarchaeology.dmi' - var/charges = 0 - var/list/nearby_mobs = list() - var/last_bloodcall = 0 - var/bloodcall_interval = 50 - var/last_eat = 0 - var/eat_interval = 100 - var/wight_check_index = 1 - var/list/shadow_wights = list() - -/obj/item/weapon/vampiric/New() - ..() - processing_objects.Add(src) - -/obj/item/weapon/vampiric/process() - //see if we've identified anyone nearby - if(world.time - last_bloodcall > bloodcall_interval && nearby_mobs.len) - var/mob/living/carbon/human/M = pop(nearby_mobs) - if(M in view(7,src) && M.health > 20) - if(prob(50)) - bloodcall(M) - nearby_mobs.Add(M) - - //suck up some blood to gain power - if(world.time - last_eat > eat_interval) - var/obj/effect/decal/cleanable/blood/B = locate() in range(2,src) - if(B) - last_eat = world.time - B.loc = null - if(istype(B, /obj/effect/decal/cleanable/blood/drip)) - charges += 0.25 - else - charges += 1 - playsound(src.loc, 'sound/effects/splat.ogg', 50, 1, -3) - - //use up stored charges - if(charges >= 10) - charges -= 10 - new /obj/structure/spider/eggcluster(pick(view(1,src))) - - if(charges >= 3) - if(prob(5)) - charges -= 1 - var/spawn_type = pick(/mob/living/simple_animal/hostile/creature) - new spawn_type(pick(view(1,src))) - playsound(src.loc, pick('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg'), 50, 1, -3) - - if(charges >= 1) - if(shadow_wights.len < 5 && prob(5)) - shadow_wights.Add(new /obj/effect/shadow_wight(src.loc)) - playsound(src.loc, 'sound/effects/ghost.ogg', 50, 1, -3) - charges -= 0.1 - - if(charges >= 0.1) - if(prob(5)) - src.visible_message("[bicon(src)] [src]'s eyes glow ruby red for a moment!") - charges -= 0.1 - - //check on our shadow wights - if(shadow_wights.len) - wight_check_index++ - if(wight_check_index > shadow_wights.len) - wight_check_index = 1 - - var/obj/effect/shadow_wight/W = shadow_wights[wight_check_index] - if(isnull(W)) - shadow_wights.Remove(wight_check_index) - else if(isnull(W.loc)) - shadow_wights.Remove(wight_check_index) - else if(get_dist(W, src) > 10) - shadow_wights.Remove(wight_check_index) - -/obj/item/weapon/vampiric/hear_talk(mob/M as mob, text) - ..() - if(world.time - last_bloodcall >= bloodcall_interval && M in view(7, src)) - bloodcall(M) - -/obj/item/weapon/vampiric/proc/bloodcall(var/mob/living/carbon/human/M) - last_bloodcall = world.time - if(istype(M)) - playsound(src.loc, pick('sound/hallucinations/wail.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/far_noise.ogg'), 50, 1, -3) - nearby_mobs.Add(M) - - var/target = pick("chest","groin","head","l_arm","r_arm","r_leg","l_leg","l_hand","r_hand","l_foot","r_foot") - M.apply_damage(rand(5, 10), BRUTE, target) - to_chat(M, "The skin on your [parse_zone(target)] feels like it's ripping apart, and a stream of blood flies out.") - var/obj/effect/decal/cleanable/blood/splatter/animated/B = new(M.loc) - B.target_turf = pick(range(1, src)) - B.blood_DNA = list() - B.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type - M.vessel.remove_reagent("blood",rand(25,50)) - -//animated blood 2 SPOOKY -/obj/effect/decal/cleanable/blood/splatter/animated - var/turf/target_turf - var/loc_last_process - -/obj/effect/decal/cleanable/blood/splatter/animated/New() - ..() - processing_objects.Add(src) - loc_last_process = src.loc - -/obj/effect/decal/cleanable/blood/splatter/animated/process() - if(target_turf && src.loc != target_turf) - step_towards(src,target_turf) - if(src.loc == loc_last_process) - target_turf = null - loc_last_process = src.loc - - //leave some drips behind - if(prob(50)) - var/obj/effect/decal/cleanable/blood/drip/D = new(src.loc) - D.blood_DNA = src.blood_DNA.Copy() - if(prob(50)) - D = new(src.loc) - D.blood_DNA = src.blood_DNA.Copy() - if(prob(50)) - D = new(src.loc) - D.blood_DNA = src.blood_DNA.Copy() - else - ..() - -/obj/effect/shadow_wight - name = "shadow wight" - icon = 'icons/mob/mob.dmi' - icon_state = "shade" - density = 1 - -/obj/effect/shadow_wight/New() - processing_objects.Add(src) - -/obj/effect/shadow_wight/process() - if(src.loc) - src.loc = get_turf(pick(orange(1,src))) - var/mob/living/carbon/M = locate() in src.loc - if(M) - playsound(src.loc, pick('sound/hallucinations/behind_you1.ogg',\ - 'sound/hallucinations/behind_you2.ogg',\ - 'sound/hallucinations/i_see_you1.ogg',\ - 'sound/hallucinations/i_see_you2.ogg',\ - 'sound/hallucinations/im_here1.ogg',\ - 'sound/hallucinations/im_here2.ogg',\ - 'sound/hallucinations/look_up1.ogg',\ - 'sound/hallucinations/look_up2.ogg',\ - 'sound/hallucinations/over_here1.ogg',\ - 'sound/hallucinations/over_here2.ogg',\ - 'sound/hallucinations/over_here3.ogg',\ - 'sound/hallucinations/turn_around1.ogg',\ - 'sound/hallucinations/turn_around2.ogg',\ - ), 50, 1, -3) - M.Sleeping(rand(5,10)) - src.loc = null - else - processing_objects.Remove(src) - -/obj/effect/shadow_wight/Bump(var/atom/obstacle) - to_chat(obstacle, "You feel a chill run down your spine!") diff --git a/code/modules/research/xenoarchaeology/finds/finds_talkingitem.dm b/code/modules/research/xenoarchaeology/finds/finds_talkingitem.dm deleted file mode 100644 index 178e0600ff7..00000000000 --- a/code/modules/research/xenoarchaeology/finds/finds_talkingitem.dm +++ /dev/null @@ -1,125 +0,0 @@ - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Formerly talking crystals - these procs are now modular so that you can make any /obj/item/weapon 'parrot' player speech back to them -// This could be extended to atoms, but it's bad enough as is -// I genuinely tried to Add and Remove them from var and proc lists, but just couldn't get it working - -//for easy reference -/obj/var/datum/talking_atom/talking_atom - -/datum/talking_atom - var/list/heard_words = list() - var/last_talk_time = 0 - var/atom/holder_atom - var/talk_interval = 50 - var/talk_chance = 10 - -/datum/talking_atom/proc/init() - if(holder_atom) - processing_objects.Add(src) - -/datum/talking_atom/proc/process() - if(!holder_atom) - processing_objects.Remove(src) - - else if(heard_words.len >= 1 && world.time > last_talk_time + talk_interval && prob(talk_chance)) - SaySomething() - -/datum/talking_atom/proc/catchMessage(var/msg, var/mob/source) - if(!holder_atom) - return - - var/list/seperate = list() - if(findtext(msg,"((")) - return - else if(findtext(msg,"))")) - return - else if(findtext(msg," ")==0) - return - else - /*var/l = lentext(msg) - if(findtext(msg," ",l,l+1)==0) - msg+=" "*/ - seperate = splittext(msg, " ") - - for(var/Xa = 1,Xa 20 + rand(10,20)) - heard_words.Remove(heard_words[1]) - if(!heard_words["[lowertext(seperate[Xa])]"]) - heard_words["[lowertext(seperate[Xa])]"] = list() - var/list/w = heard_words["[lowertext(seperate[Xa])]"] - if(w) - w.Add("[lowertext(seperate[next])]") -// to_chat(world, "Adding [lowertext(seperate[next])] to [lowertext(seperate[Xa])]") - - if(prob(30)) - var/list/options = list("[holder_atom] seems to be listening intently to [source]...",\ - "[holder_atom] seems to be focussing on [source]...",\ - "[holder_atom] seems to turn it's attention to [source]...") - holder_atom.loc.visible_message("[bicon(holder_atom)] [pick(options)]") - - if(prob(20)) - spawn(2) - SaySomething(pick(seperate)) - -/*/obj/item/weapon/talkingcrystal/proc/debug() - //set src in view() - for(var/v in heard_words) - to_chat(world, "[uppertext(v)]") - var/list/d = heard_words["[v]"] - for(var/X in d) - to_chat(world, "[X]")*/ - -/datum/talking_atom/proc/SaySomething(var/word = null) - if(!holder_atom) - return - - var/msg - var/limit = rand(max(5,heard_words.len/2))+3 - var/text - if(!word) - text = "[pick(heard_words)]" - else - text = pick(splittext(word, " ")) - if(lentext(text)==1) - text=uppertext(text) - else - var/cap = copytext(text,1,2) - cap = uppertext(cap) - cap += copytext(text,2,lentext(text)+1) - text=cap - var/q = 0 - msg+=text - if(msg=="What" | msg == "Who" | msg == "How" | msg == "Why" | msg == "Are") - q=1 - - text=lowertext(text) - for(var/ya,ya <= limit,ya++) - - if(heard_words.Find("[text]")) - var/list/w = heard_words["[text]"] - text=pick(w) - else - text = "[pick(heard_words)]" - msg+=" [text]" - if(q) - msg+="?" - else - if(rand(0,10)) - msg+="." - else - msg+="!" - - var/list/listening = viewers(holder_atom) - for(var/mob/M in mob_list) - if(!M.client) - continue //skip monkeys and leavers - if(istype(M, /mob/new_player)) - continue - if(M.stat == DEAD && M.get_preference(CHAT_GHOSTEARS)) - listening|=M - - for(var/mob/M in listening) - to_chat(M, "[bicon(holder_atom)] [holder_atom] reverberates, \"[msg]\"") - last_talk_time = world.time diff --git a/code/modules/research/xenoarchaeology/genetics/prehistoric_animals.dm b/code/modules/research/xenoarchaeology/genetics/prehistoric_animals.dm deleted file mode 100644 index 654b1a9ccde..00000000000 --- a/code/modules/research/xenoarchaeology/genetics/prehistoric_animals.dm +++ /dev/null @@ -1,77 +0,0 @@ -/mob/living/simple_animal/hostile/samak - name = "samak" - desc = "A fast, armoured predator accustomed to hiding and ambushing in cold terrain." - faction = list("samak") - icon_state = "samak" - icon_living = "samak" - icon_dead = "samak_dead" - move_to_delay = 2 - maxHealth = 125 - health = 125 - speed = 2 - melee_damage_lower = 5 - melee_damage_upper = 15 - attacktext = "mauls" - cold_damage_per_tick = 0 - speak_chance = 5 - speak = list("Hruuugh!","Hrunnph") - emote_see = list("paws the ground","shakes its mane","stomps") - emote_hear = list("snuffles") - gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE - -/mob/living/simple_animal/hostile/diyaab - name = "diyaab" - desc = "A small pack animal. Although omnivorous, it will hunt meat on occasion." - faction = list("diyaab") - icon_state = "diyaab" - icon_living = "diyaab" - icon_dead = "diyaab_dead" - move_to_delay = 1 - maxHealth = 25 - health = 25 - speed = 1 - melee_damage_lower = 1 - melee_damage_upper = 8 - attacktext = "gouges" - cold_damage_per_tick = 0 - speak_chance = 5 - speak = list("Awrr?","Aowrl!","Worrl") - emote_see = list("sniffs the air cautiously","looks around") - emote_hear = list("snuffles") - gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE - -/mob/living/simple_animal/hostile/shantak - name = "shantak" - desc = "A piglike creature with a bright iridiscent mane that sparkles as though lit by an inner light. Don't be fooled by its beauty though." - faction = list("shantak") - icon_state = "shantak" - icon_living = "shantak" - icon_dead = "shantak_dead" - move_to_delay = 1 - maxHealth = 75 - health = 75 - speed = 1 - melee_damage_lower = 3 - melee_damage_upper = 12 - attacktext = "gouges" - cold_damage_per_tick = 0 - speak_chance = 5 - speak = list("Shuhn","Shrunnph?","Shunpf") - emote_see = list("scratches the ground","shakes out it's mane","tinkles gently") - gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE - -/mob/living/simple_animal/yithian - name = "yithian" - desc = "A friendly creature vaguely resembling an oversized snail without a shell." - icon_state = "yithian" - icon_living = "yithian" - icon_dead = "yithian_dead" - gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY - -/mob/living/simple_animal/tindalos - name = "tindalos" - desc = "It looks like a large, flightless grasshopper." - icon_state = "tindalos" - icon_living = "tindalos" - icon_dead = "tindalos_dead" - gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY diff --git a/code/modules/research/xenoarchaeology/genetics/prehistoric_plants.dm b/code/modules/research/xenoarchaeology/genetics/prehistoric_plants.dm deleted file mode 100644 index 997993898cb..00000000000 --- a/code/modules/research/xenoarchaeology/genetics/prehistoric_plants.dm +++ /dev/null @@ -1,80 +0,0 @@ -/obj/item/weapon/reagent_containers/food/snacks/grown/telriis_clump - name = "telriis grass" - desc = "A clump of telriis grass, not recommended for consumption by sentients." - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "telriisclump" - New(var/loc, var/potency) - ..() - reagents.add_reagent("pwine", potency * 5) - reagents.add_reagent("nutriment", potency) - bitesize = 1+round(reagents.total_volume / 2, 1) - -/obj/item/weapon/reagent_containers/food/snacks/grown/thaadrabloom - name = "thaa'dra bloom" - desc = "Looks chewy, might be good to eat." - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "thaadrabloom" - New(var/loc, var/potency) - ..() - reagents.add_reagent("frostoil", potency * 1.5 + 5) - reagents.add_reagent("nutriment", potency) - bitesize = 1+round(reagents.total_volume / 2, 1) - -/obj/item/weapon/reagent_containers/food/snacks/grown/jurlmah - name = "jurl'mah pod" - desc = "Bulbous and veiny, it appears to pulse slightly as you look at it." - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "jurlmahpod" - New(var/loc, var/potency) - ..() - reagents.add_reagent("serotrotium", potency) - reagents.add_reagent("nutriment", potency) - bitesize = 1+round(reagents.total_volume / 2, 1) - -/obj/item/weapon/reagent_containers/food/snacks/grown/amauri - name = "amauri fruit" - desc = "It is small, round and hard. Its skin is a thick dark purple." - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "amaurifruit" - New(var/loc, var/potency) - ..() - reagents.add_reagent("condensedcapsaicin", potency * 5) - reagents.add_reagent("nutriment", potency) - bitesize = 1+round(reagents.total_volume / 2, 1) - -/obj/item/weapon/reagent_containers/food/snacks/grown/gelthi - name = "gelthi berries" - desc = "They feel fluffy and slightly warm to the touch." - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "gelthiberries" - New(var/loc, var/potency) - ..() - //this may prove a little strong - reagents.add_reagent("morphine", (potency * potency) / 5) - reagents.add_reagent("capsaicin", (potency * potency) / 5) - reagents.add_reagent("nutriment", potency) - bitesize = 1+round(reagents.total_volume / 2, 1) - -/obj/item/weapon/reagent_containers/food/snacks/grown/vale - name = "vale leaves" - desc = "Small, curly leaves covered in a soft pale fur." - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "valeleaves" - New(var/loc, var/potency) - ..() - reagents.add_reagent("sal_acid", potency * 5) - reagents.add_reagent("salbutamol", potency * 2) - reagents.add_reagent("nutriment", potency) - bitesize = 1+round(reagents.total_volume / 2, 1) - -/obj/item/weapon/reagent_containers/food/snacks/grown/surik - name = "surik fruit" - desc = "Multiple layers of blue skin peeling away to reveal a spongey core, vaguely resembling an ear." - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "surikfruit" - New(var/loc, var/potency) - ..() - reagents.add_reagent("haloperidol", potency * 3) - reagents.add_reagent("synaptizine", potency * 2) - reagents.add_reagent("nutriment", potency) - bitesize = 1+round(reagents.total_volume / 2, 1) \ No newline at end of file diff --git a/code/modules/research/xenoarchaeology/genetics/prehistoric_seeds.dm b/code/modules/research/xenoarchaeology/genetics/prehistoric_seeds.dm deleted file mode 100644 index 5597d275322..00000000000 --- a/code/modules/research/xenoarchaeology/genetics/prehistoric_seeds.dm +++ /dev/null @@ -1,139 +0,0 @@ -/datum/seed/telriis - - name = "telriis" - seed_name = "telriis" - display_name = "telriis grass" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/telriis_clump) - packet_icon = "seed-alien1" - plant_icon = "telriis" - - lifespan = 50 - endurance = 50 - maturation = 5 - production = 5 - yield = 4 - potency = 5 - growth_stages = 4 - -/datum/seed/thaadra - - name = "thaadra" - seed_name = "thaa'dra" - display_name = "thaa'dra lichen" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/thaadrabloom) - packet_icon = "seed-alien3" - plant_icon = "thaadra" - - lifespan = 20 - endurance = 10 - maturation = 5 - production = 9 - yield = 2 - potency = 5 - growth_stages = 4 - -/datum/seed/jurlmah - - name = "jurlmah" - seed_name = "jurl'mah" - display_name = "jurl'mah reeds" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/jurlmah) - packet_icon = "seed-alien3" - plant_icon = "jurlmah" - - lifespan = 20 - endurance = 12 - maturation = 8 - production = 9 - yield = 3 - potency = 10 - growth_stages = 5 - -/datum/seed/amauri - - name = "amauri" - seed_name = "amauri" - display_name = "amauri plant" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/amauri) - packet_icon = "seed-alien3" - plant_icon = "amauri" - - lifespan = 30 - endurance = 10 - maturation = 8 - production = 9 - yield = 4 - potency = 10 - growth_stages = 3 - -/datum/seed/gelthi - - name = "gelthi" - seed_name = "gelthi" - display_name = "gelthi plant" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/gelthi) - packet_icon = "seed-alien2" - plant_icon = "gelthi" - - lifespan = 20 - endurance = 15 - maturation = 6 - production = 6 - yield = 2 - potency = 1 - growth_stages = 3 - -/datum/seed/vale - - name = "vale" - seed_name = "vale" - display_name = "vale bush" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/vale) - packet_icon = "seed-alien2" - plant_icon = "vale" - - lifespan = 25 - endurance = 15 - maturation = 8 - production = 10 - yield = 3 - potency = 3 - growth_stages = 4 - -/datum/seed/surik - - name = "surik" - seed_name = "surik" - display_name = "surik vine" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/surik) - packet_icon = "seed-alien3" - plant_icon = "surik" - - lifespan = 30 - endurance = 18 - maturation = 7 - production = 7 - yield = 3 - potency = 3 - growth_stages = 4 - -/obj/item/seeds/jurlmah - seed_type = "jurlmah" - -/obj/item/seeds/amauri - seed_type = "amauri" - -/obj/item/seeds/gelthi - seed_type = "gelthi" - -/obj/item/seeds/vale - seed_type = "vale" - -/obj/item/seeds/surik - seed_type = "surik" - -/obj/item/seeds/telriis - seed_type = "telriis" - -/obj/item/seeds/thaadra - seed_type = "thaadra" \ No newline at end of file diff --git a/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm b/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm deleted file mode 100644 index a4a52b3ea5f..00000000000 --- a/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm +++ /dev/null @@ -1,319 +0,0 @@ -//gene sequence datum -datum/genesequence - var/spawned_type - var/spawned_type_text - var/list/full_genome_sequence = list() - - - -#define SCANFOSSIL_RETVAL_WRONGTYPE 1 -#define SCANFOSSIL_RETVAL_NOMOREGENESEQ 2 -#define SCANFOSSIL_RETVAL_SUCCESS 4 - -/obj/machinery/computer/reconstitutor - name = "flora reconstitution console" - icon = 'icons/obj/computer.dmi' - icon_keyboard = "med_key" - icon_screen = "dna" - circuit = /obj/item/weapon/circuitboard/reconstitutor - req_access = list(access_heads) //Only used for record deletion right now. - var/obj/machinery/clonepod/pod1 = 1 //Linked cloning pod. - var/temp = "" - var/menu = 1 //Which menu screen to display - var/list/records = list() - var/datum/dna2/record/active_record = null - var/obj/item/weapon/disk/data/diskette = null //Mostly so the geneticist can steal everything. - var/loading = 0 // Nice loading text - var/list/undiscovered_genesequences = null - var/list/discovered_genesequences = list() - var/list/completed_genesequences = list() - var/list/undiscovered_genomes = list() - var/list/manually_placed_genomes = list() - var/list/discovered_genomes = list("! Clear !") - var/list/accepted_fossil_types = list(/obj/item/weapon/fossil/plant) - - -/obj/machinery/computer/reconstitutor/initialize() - if(!undiscovered_genesequences) - undiscovered_genesequences = master_controller.all_plant_genesequences.Copy() - ..() - -/obj/machinery/computer/reconstitutor/animal - name = "fauna reconstitution console" - accepted_fossil_types = list(/obj/item/weapon/fossil/bone,/obj/item/weapon/fossil/shell,/obj/item/weapon/fossil/skull) - pod1 = null - circuit = /obj/item/weapon/circuitboard/reconstitutor/animal - -/obj/machinery/computer/reconstitutor/animal/initialize() - undiscovered_genesequences = master_controller.all_animal_genesequences.Copy() - ..() - -/obj/machinery/computer/reconstitutor/attackby(obj/item/W, mob/user, params) - if(istype(W,/obj/item/weapon/fossil)) - user.drop_item() - W.loc = src.loc - switch(scan_fossil(W)) - if(1) - src.visible_message("[bicon(src)] [src] scans the fossil and rejects it.") - if(2) - visible_message("[bicon(src)] [src] can not extract any more genetic data from new fossils.") - if(4) - src.visible_message("[bicon(src)] [user] inserts [W] into [src], the fossil is consumed as [src] extracts genetic data from it.") - qdel(W) - updateDialog() - else if(istype(W, /obj/item/weapon/storage)) - var/obj/item/weapon/storage/S = W - S.hide_from(usr) - var/numaccepted = 0 - var/numrejected = 0 - var/full = 0 - for(var/obj/item/weapon/fossil/F in S.contents) - switch(scan_fossil(F)) - if(SCANFOSSIL_RETVAL_WRONGTYPE) - numrejected += 1 - if(SCANFOSSIL_RETVAL_NOMOREGENESEQ) - full = 1 - if(SCANFOSSIL_RETVAL_SUCCESS) - numaccepted += 1 - S.remove_from_storage(F, src) //This will move the item to this item's contents - qdel(F) - updateDialog() - var/outmsg = "You empty all the fossils from [S] into [src]." - if(numaccepted) - outmsg += " [numaccepted] fossils were accepted and consumed as [src] extracts genetic data from them." - if(numrejected) - outmsg += " [numrejected] fossils were rejected." - if(full) - outmsg += " [src] can not extract any more genetic data from new fossils." - visible_message(outmsg) - - else - ..() - -/obj/machinery/computer/reconstitutor/attack_hand(var/mob/user as mob) - src.add_fingerprint(user) - interact(user) - -/obj/machinery/computer/reconstitutor/interact(mob/user) - if(stat & (NOPOWER|BROKEN) || get_dist(src, user) > 1) - user.unset_machine(src) - return - - var/dat = "Garland Corp genetic reconstitutor
    " - dat += "
    " - if(!pod1) - pod1 = locate() in orange(1, src) - - if(!pod1) - dat += "Unable to locate cloning pod.
    " - else if(istype(pod1)) - dat += "Cloning pod connected.
    " - - dat += "
    " - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - - //WIP gene sequences - for(var/sequence_num = 1, sequence_num <= discovered_genesequences.len, sequence_num += 1) - var/datum/genesequence/cur_genesequence = discovered_genesequences[sequence_num] - dat += "" - var/num_correct = 0 - for(var/curindex = 1, curindex <= 7, curindex++) - var/bgcolour = "#ffffff"//white ffffff, red ff0000 - - //background colour hints at correct positioning - if(manually_placed_genomes[sequence_num][curindex]) - //green background if slot is correctly filled - if(manually_placed_genomes[sequence_num][curindex] == cur_genesequence.full_genome_sequence[curindex]) - bgcolour = "#008000" - num_correct += 1 - if(num_correct == 7) - discovered_genesequences -= cur_genesequence - completed_genesequences += cur_genesequence - manually_placed_genomes[sequence_num] = new/list(7) - interact(user) - return - //yellow background if adjacent to correct slot - if(curindex > 1 && manually_placed_genomes[sequence_num][curindex] == cur_genesequence.full_genome_sequence[curindex - 1]) - bgcolour = "#ffff00" - else if(curindex < 7 && manually_placed_genomes[sequence_num][curindex] == cur_genesequence.full_genome_sequence[curindex + 1]) - bgcolour = "#ffff00" - - var/this_genome_slot = manually_placed_genomes[sequence_num][curindex] - if(!this_genome_slot) - this_genome_slot = "- - - - -" - dat += "" - dat += "" - //dat += "" - dat += "" - - //completed gene sequences - for(var/sequence_num = 1, sequence_num <= completed_genesequences.len, sequence_num += 1) - var/datum/genesequence/cur_genesequence = completed_genesequences[sequence_num] - dat += "" - for(var/curindex = 1, curindex <= 7, curindex++) - var/this_genome_slot = cur_genesequence.full_genome_sequence[curindex] - dat += "" - dat += "" - dat += "" - dat += "" - - dat += "
    GENE1GENE2GENE3GENE4GENE5GENE6GENE7
    [this_genome_slot]ResetClone
    [this_genome_slot]WipeClone
    " - - dat += "
    " - dat += "
    " - dat += "Close" - user << browse(dat, "window=reconstitutor;size=600x500") - user.set_machine(src) - onclose(user, "reconstitutor") - -/obj/machinery/computer/reconstitutor/animal/Topic(href, href_list) - if(href_list["clone"]) - var/sequence_num = text2num(href_list["sequence_num"]) - var/datum/genesequence/cloned_genesequence = completed_genesequences[sequence_num] - if(pod1) - if(pod1.occupant) - visible_message("[bicon(src)] The cloning pod is currently occupied.") - else if(pod1.biomass < CLONE_BIOMASS) - visible_message("[bicon(src)] Not enough biomass in the cloning pod.") - else if(pod1.mess) - visible_message("[bicon(src)] Error: clonepod malfunction.") - else - visible_message("[bicon(src)] [src] clones something from a reconstituted gene sequence!") - playsound(src.loc, 'sound/effects/screech.ogg', 50, 1, -3) - pod1.occupant = new cloned_genesequence.spawned_type(pod1) - pod1.icon_state = "pod_1" - //pod1.occupant.name = "[pod1.occupant.name] ([rand(0,999)])" - pod1.biomass -= CLONE_BIOMASS - else - to_chat(usr, "[bicon(src)] Unable to locate cloning pod!") - else - ..() - -/obj/machinery/computer/reconstitutor/Topic(href, href_list) - if(href_list["insertpos"]) -// to_chat(world, "inserting gene for genesequence [href_list["insertgenome"]] at pos [text2num(href_list["insertpos"])]") - var/sequence_num = text2num(href_list["sequence_num"]) - var/insertpos = text2num(href_list["insertpos"]) - - var/old_genome = manually_placed_genomes[sequence_num][insertpos] - discovered_genomes = sortList(discovered_genomes) - var/new_genome = input(usr, "Which genome do you want to insert here?") as null|anything in discovered_genomes - if(new_genome == "! Clear !") - manually_placed_genomes[sequence_num][insertpos] = null - else if(new_genome) - manually_placed_genomes[sequence_num][insertpos] = new_genome - discovered_genomes.Remove(new_genome) - if(old_genome) - discovered_genomes.Add(old_genome) - updateDialog() - - else if(href_list["reset"]) - var/sequence_num = text2num(href_list["sequence_num"]) - for(var/curindex = 1, curindex <= 7, curindex++) - var/old_genome = manually_placed_genomes[sequence_num][curindex] - manually_placed_genomes[sequence_num][curindex] = null - if(old_genome) - discovered_genomes.Add(old_genome) - updateDialog() - - else if(href_list["wipe"]) - var/sequence_num = text2num(href_list["sequence_num"]) - var/datum/genesequence/wiped_genesequence = completed_genesequences[sequence_num] - completed_genesequences.Remove(wiped_genesequence) - discovered_genesequences.Add(wiped_genesequence) - - discovered_genomes.Add(wiped_genesequence.full_genome_sequence) - discovered_genomes = sortList(discovered_genomes) - updateDialog() - - else if(href_list["clone"]) - var/sequence_num = text2num(href_list["sequence_num"]) - var/datum/genesequence/cloned_genesequence = completed_genesequences[sequence_num] - visible_message("[bicon(src)] [src] clones a packet of seeds from a reconstituted gene sequence!") - playsound(src.loc, 'sound/effects/screech.ogg', 50, 1, -3) - new cloned_genesequence.spawned_type(src.loc) - - else if(href_list["close"]) - usr.unset_machine(src) - usr << browse(null, "window=reconstitutor") - - else - ..() - -/obj/machinery/computer/reconstitutor/proc/scan_fossil(var/obj/item/weapon/fossil/scan_fossil) - //see whether we accept these kind of fossils - if(accepted_fossil_types.len && !accepted_fossil_types.Find(scan_fossil.type)) - return SCANFOSSIL_RETVAL_WRONGTYPE - - //see whether we are going to discover a new sequence, new genome for existing sequence or nothing - var/new_genome_prob = discovered_genesequences.len * 50 - - if( (new_genome_prob >= 100 || prob(new_genome_prob)) && undiscovered_genomes.len) - //create a new genome for an existing gene sequence - var/newly_discovered_genome = pick(undiscovered_genomes) - undiscovered_genomes -= newly_discovered_genome - discovered_genomes.Add(newly_discovered_genome) - - //chance to discover a second genome - if(prob(75)) - newly_discovered_genome = pick(undiscovered_genomes) - undiscovered_genomes -= newly_discovered_genome - discovered_genomes.Add(newly_discovered_genome) - //chance to discover a third genome - if(prob(50)) - newly_discovered_genome = pick(undiscovered_genomes) - undiscovered_genomes -= newly_discovered_genome - discovered_genomes.Add(newly_discovered_genome) - - else if(undiscovered_genesequences.len) - //discover new gene sequence - var/datum/genesequence/newly_discovered_genesequence = pick(undiscovered_genesequences) - undiscovered_genesequences -= newly_discovered_genesequence - discovered_genesequences += newly_discovered_genesequence - //add genomes for new gene sequence to pool of discoverable genomes - undiscovered_genomes.Add(newly_discovered_genesequence.full_genome_sequence) - manually_placed_genomes.Add(null) - manually_placed_genomes[manually_placed_genomes.len] = new/list(7) - - else - //there's no point scanning any more fossils, we've already discovered everything - return SCANFOSSIL_RETVAL_NOMOREGENESEQ - - return SCANFOSSIL_RETVAL_SUCCESS - -#undef SCANFOSSIL_RETVAL_WRONGTYPE -#undef SCANFOSSIL_RETVAL_NOMOREGENESEQ -#undef SCANFOSSIL_RETVAL_SUCCESS - - -/obj/item/weapon/circuitboard/reconstitutor - name = "Circuit board (Flora Reconstitution Console)" - build_path = "/obj/machinery/computer/reconstitutor" - origin_tech = "programming=2;biotech=3;materials=4" - frame_desc = "Requires 2 Advanced Scanning Module, 1 Nano Manipulator, 1 Matter Bin and 1 Advanced Capacitor." - req_components = list( - "/obj/item/weapon/stock_parts/scanning_module/adv" = 2, - "/obj/item/weapon/stock_parts/manipulator/nano" = 1, - "/obj/item/weapon/stock_parts/matter_bin" = 1, - "/obj/item/weapon/stock_parts/capacitor/adv" = 1) - -/obj/item/weapon/circuitboard/reconstitutor/animal - name = "Circuit board (Fauna Reconstitution Console)" - build_path = "/obj/machinery/computer/reconstitutor/animal" - origin_tech = "programming=2;biotech=4;materials=6" - frame_desc = "Requires 2 Advanced Scanning Module, 1 Nano Manipulator, 1 Matter Bin and 1 Advanced Capacitor." - req_components = list( - "/obj/item/weapon/stock_parts/scanning_module/adv" = 2, - "/obj/item/weapon/stock_parts/manipulator/nano" = 1, - "/obj/item/weapon/stock_parts/matter_bin" = 1, - "/obj/item/weapon/stock_parts/capacitor/adv" = 1) diff --git a/code/modules/research/xenoarchaeology/geosample.dm b/code/modules/research/xenoarchaeology/geosample.dm deleted file mode 100644 index 6d32b4e0ca9..00000000000 --- a/code/modules/research/xenoarchaeology/geosample.dm +++ /dev/null @@ -1,157 +0,0 @@ -/* -#define FIND_PLANT 1 -#define FIND_BIO 2 -#define FIND_METEORIC 3 -#define FIND_ICE 4 -#define FIND_CRYSTALLINE 5 -#define FIND_METALLIC 6 -#define FIND_IGNEOUS 7 -#define FIND_METAMORPHIC 8 -#define FIND_SEDIMENTARY 9 -#define FIND_NOTHING 10 -*/ - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Rock sliver - -/obj/item/weapon/rocksliver - name = "rock sliver" - desc = "It looks extremely delicate." - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "sliver1" //0-4 - w_class = WEIGHT_CLASS_TINY - sharp = 1 - //item_state = "electronic" - var/source_rock = "/turf/simulated/mineral/" - var/datum/geosample/geological_data - -/obj/item/weapon/rocksliver/New() - icon_state = "sliver[rand(1,3)]" - pixel_x = rand(0,16)-8 - pixel_y = rand(0,8)-8 - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Geosample datum - -/datum/geosample - var/age = 0 //age can correspond to different archaeological finds - var/age_thousand = 0 - var/age_million = 0 - var/age_billion = 0 - var/artifact_id = "" //id of a nearby artifact, if there is one - var/artifact_distance = -1 //proportional to distance - var/source_mineral = "chlorine" //machines will pop up a warning telling players that the sample may be confused - // - //var/source_mineral - //all potential finds are initialised to null, so nullcheck before you access them - var/list/find_presence = list() - -/datum/geosample/New(var/turf/simulated/mineral/container) - - UpdateTurf(container) - -//this should only need to be called once -/datum/geosample/proc/UpdateTurf(var/turf/simulated/mineral/container) - set background = 1 - if(!container || !istype(container)) - return - - age = rand(1,999) - - if(container.mineralName) - switch(container.mineralName) - if("Uranium") - age_million = rand(1, 704) - age_thousand = rand(1,999) - find_presence["potassium"] = rand(1,1000) / 100 - source_mineral = "potassium" - if("Iron") - age_thousand = rand(1, 999) - age_million = rand(1, 999) - find_presence["iron"] = rand(1,1000) / 100 - source_mineral = "iron" - if("Diamond") - age_thousand = rand(1,999) - age_million = rand(1,999) - find_presence["nitrogen"] = rand(1,1000) / 100 - source_mineral = "nitrogen" - if("Gold") - age_thousand = rand(1,999) - age_million = rand(1,999) - age_billion = rand(3,4) - find_presence["iron"] = rand(1,1000) / 100 - source_mineral = "iron" - if("Silver") - age_thousand = rand(1,999) - age_million = rand(1,999) - find_presence["iron"] = rand(1,1000) / 100 - source_mineral = "iron" - if("Plasma") - age_thousand = rand(1,999) - age_million = rand(1,999) - age_billion = rand(10, 13) - find_presence["plasma"] = rand(1,1000) / 100 - source_mineral = "plasma" - if("Clown") - age = rand(-1,-999) //thats the joke - age_thousand = rand(-1,-999) - find_presence["plasma"] = rand(1,1000) / 100 - source_mineral = "plasma" - if("Bluespace crystal") - age_thousand = rand(1,999) - find_presence["plasma"] = rand(1,1000) / 100 - if("Gibtonite") - age_thousand = rand(1, 50) - find_presence["plasma"] = rand(1,1000) / 100 - - if(prob(75)) - find_presence["phosphorus"] = rand(1,500) / 100 - if(prob(25)) - find_presence["mercury"] = rand(1,500) / 100 - find_presence["chlorine"] = rand(500,2500) / 100 - - //loop over finds, grab any relevant stuff - for(var/datum/find/F in container.finds) - var/responsive_reagent = get_responsive_reagent(F.find_type) - find_presence[responsive_reagent] = F.dissonance_spread - - //loop over again to reset values to percentages - var/total_presence = 0 - for(var/carrier in find_presence) - total_presence += find_presence[carrier] - for(var/carrier in find_presence) - find_presence[carrier] = find_presence[carrier] / total_presence - - /*for(var/entry in find_presence) - total_spread += find_presence[entry]*/ - -//have this separate from UpdateTurf() so that we dont have a billion turfs being updated (redundantly) every time an artifact spawns -/datum/geosample/proc/UpdateNearbyArtifactInfo(var/turf/simulated/mineral/container) - if(!container || !istype(container)) - return - - if(container.artifact_find) - artifact_distance = rand() - artifact_id = container.artifact_find.artifact_id - else - for(var/turf/simulated/mineral/T in master_controller.artifact_spawning_turfs) - if(T.artifact_find) - var/cur_dist = get_dist(container, T) * 2 - if( (artifact_distance < 0 || cur_dist < artifact_distance) && cur_dist <= T.artifact_find.artifact_detect_range ) - artifact_distance = cur_dist + rand() * 2 - 1 - artifact_id = T.artifact_find.artifact_id - else - master_controller.artifact_spawning_turfs.Remove(T) - -/* -#undef FIND_PLANT -#undef FIND_BIO -#undef FIND_METEORIC -#undef FIND_ICE -#undef FIND_CRYSTALLINE -#undef FIND_METALLIC -#undef FIND_IGNEOUS -#undef FIND_METAMORPHIC -#undef FIND_SEDIMENTARY -#undef FIND_NOTHING -*/ diff --git a/code/modules/research/xenoarchaeology/machinery/artifact_analyser.dm b/code/modules/research/xenoarchaeology/machinery/artifact_analyser.dm deleted file mode 100644 index 83c3551bde4..00000000000 --- a/code/modules/research/xenoarchaeology/machinery/artifact_analyser.dm +++ /dev/null @@ -1,250 +0,0 @@ - -/obj/machinery/artifact_analyser - name = "anomaly analyser" - desc = "Studies the emissions of anomalous materials to discover their uses." - icon = 'icons/obj/virology.dmi' - icon_state = "isolator" - anchored = 1 - density = 1 - var/scan_in_progress = 0 - var/scan_num = 0 - var/obj/scanned_obj - var/obj/machinery/artifact_scanpad/owned_scanner = null - var/scan_completion_time = 0 - var/scan_duration = 120 - var/obj/scanned_object - var/report_num = 0 - -/obj/machinery/artifact_analyser/New() - ..() - reconnect_scanner() - -/obj/machinery/artifact_analyser/proc/reconnect_scanner() - //connect to a nearby scanner pad - owned_scanner = locate(/obj/machinery/artifact_scanpad) in get_step(src, dir) - if(!owned_scanner) - owned_scanner = locate(/obj/machinery/artifact_scanpad) in orange(1, src) - -/obj/machinery/artifact_analyser/attack_hand(var/mob/user as mob) - src.add_fingerprint(user) - interact(user) - -/obj/machinery/artifact_analyser/interact(mob/user) - if(stat & (NOPOWER|BROKEN) || get_dist(src, user) > 1) - user.unset_machine(src) - return - - var/dat = "Anomalous material analyser
    " - dat += "
    " - if(!owned_scanner) - owned_scanner = locate() in orange(1, src) - - if(!owned_scanner) - dat += "Unable to locate analysis pad.
    " - else if(scan_in_progress) - dat += "Please wait. Analysis in progress.
    " - dat += "Halt scanning.
    " - else - dat += "Scanner is ready.
    " - dat += "Begin scanning.
    " - - dat += "
    " - dat += "
    " - dat += "Refresh Close" - user << browse(dat, "window=artanalyser;size=450x500") - user.set_machine(src) - onclose(user, "artanalyser") - -/obj/machinery/artifact_analyser/process() - if(scan_in_progress && world.time > scan_completion_time) - //finish scanning - scan_in_progress = 0 - updateDialog() - - //print results - var/results = "" - if(!owned_scanner) - reconnect_scanner() - if(!owned_scanner) - results = "Error communicating with scanner." - else if(!scanned_object || scanned_object.loc != owned_scanner.loc) - results = "Unable to locate scanned object. Ensure it was not moved in the process." - else - results = get_scan_info(scanned_object) - - src.visible_message("[name] states, \"Scanning complete.\"") - playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, 1) - var/obj/item/weapon/paper/P = new(src.loc) - P.name = "[src] report #[++report_num]" - P.info = "[src] analysis report #[report_num]
    " - P.info += "
    " - P.info += "[bicon(scanned_object)] [results]" - P.stamped = list(/obj/item/weapon/stamp) - P.overlays = list("paper_stamped") - - if(scanned_object && istype(scanned_object, /obj/machinery/artifact)) - var/obj/machinery/artifact/A = scanned_object - A.anchored = 0 - A.being_used = 0 - -/obj/machinery/artifact_analyser/Topic(href, href_list) - if(href_list["begin_scan"]) - if(!owned_scanner) - reconnect_scanner() - if(owned_scanner) - var/artifact_in_use = 0 - scanned_object = null - for(var/obj/O in owned_scanner.loc) - if(O == owned_scanner) - continue - if(O.invisibility) - continue - if(istype(O, /obj/machinery/artifact)) - var/obj/machinery/artifact/A = O - if(A.being_used) - artifact_in_use = 1 - else - A.anchored = 1 - A.being_used = 1 - - if(artifact_in_use) - src.visible_message("[name] states, \"Cannot harvest. Too much interference.\"") - else - scanned_object = O - scan_in_progress = 1 - scan_completion_time = world.time + scan_duration - src.visible_message("[name] states, \"Scanning begun.\"") - break - if(!scanned_object) - src.visible_message("[name] states, \"Unable to isolate scan target.\"") - if(href_list["halt_scan"]) - scan_in_progress = 0 - src.visible_message("[name] states, \"Scanning halted.\"") - - if(href_list["close"]) - usr.unset_machine(src) - usr << browse(null, "window=artanalyser") - - ..() - updateDialog() - -//hardcoded responses, oh well -/obj/machinery/artifact_analyser/proc/get_scan_info(var/obj/scanned_obj) - switch(scanned_obj.type) - if(/obj/machinery/auto_cloner) - return "Automated cloning pod - appears to rely on organic nanomachines with a self perpetuating \ - ecosystem involving self cannibalism and a symbiotic relationship with the contained liquid.

    \ - Structure is composed of a carbo-titanium alloy with interlaced reinforcing energy fields, and the contained liquid \ - resembles proto-plasmic residue supportive of single cellular developmental conditions." - if(/obj/machinery/power/supermatter_shard) - return "Super dense plasma clump - Appears to have been shaped or hewn, structure is composed of matter 2000% denser than ordinary carbon matter residue.\ - Potential application as unrefined plasma source." - if(/obj/structure/constructshell) - return "Tribal idol - Item resembles statues/emblems built by superstitious pre-warp civilisations to honour their gods. Material appears to be a \ - rock/plastcrete composite." - if(/obj/machinery/giga_drill) - return "Automated mining drill - structure composed of titanium-carbide alloy, with tip and drill lines edged in an alloy of diamond and plasma." - if(/obj/structure/cult/pylon) - return "Tribal pylon - Item resembles statues/emblems built by cargo cult civilisations to honour energy systems from post-warp civilisations." - if(/obj/mecha/working/hoverpod) - return "Vacuum capable repair pod - Item is a remarkably intact single man repair craft capable of flight in a vacuum. Outer shell composed of primarily \ - post-warp hull alloys, with internal wiring and circuitry consistent with modern electronics and engineering." - if(/obj/machinery/replicator) - return "Automated construction unit - Item appears to be able to synthesize synthetic items, some with simple internal circuitry. Method unknown, \ - phasing suggested?" - if(/obj/structure/crystal) - return "Crystal formation - Pseudo organic crystalline matrix, unlikely to have formed naturally. No known technology exists to synthesize this exact composition." - if(/obj/machinery/artifact) - //the fun one - var/obj/machinery/artifact/A = scanned_obj - var/out = "Anomalous alien device - Composed of an unknown alloy, " - - //primary effect - if(A.my_effect) - //what kind of effect the artifact has - switch(A.my_effect.effect_type) - if(1) - out += "concentrated energy emissions" - if(2) - out += "intermittent psionic wavefront" - if(3) - out += "electromagnetic energy" - if(4) - out += "high frequency particles" - if(5) - out += "organically reactive exotic particles" - if(6) - out += "interdimensional/bluespace? phasing" - if(7) - out += "atomic synthesis" - else - out += "low level energy emissions" - out += " have been detected " - - //how the artifact does it's effect - switch(A.my_effect.effect_type) - if(1) - out += " emitting in an ambient energy field." - if(2) - out += " emitting in periodic bursts." - else - out += " interspersed throughout substructure and shell." - - if(A.my_effect.trigger >= 0 && A.my_effect.trigger <= 4) - out += " Activation index involves physical interaction with artifact surface." - else if(A.my_effect.trigger >= 5 && A.my_effect.trigger <= 8) - out += " Activation index involves energetic interaction with artifact surface." - else if(A.my_effect.trigger >= 9 && A.my_effect.trigger <= 12) - out += " Activation index involves precise local atmospheric conditions." - else - out += " Unable to determine any data about activation trigger." - - //secondary: - if(A.secondary_effect && A.secondary_effect.activated) - //sciencey words go! - out += "

    Warning, internal scans indicate ongoing [pick("subluminous","subcutaneous","superstructural")] activity operating \ - independantly from primary systems. Auxiliary activity involves " - - //what kind of effect the artifact has - switch(A.secondary_effect.effect_type) - if(1) - out += "concentrated energy emissions" - if(2) - out += "intermittent psionic wavefront" - if(3) - out += "electromagnetic energy" - if(4) - out += "high frequency particles" - if(5) - out += "organically reactive exotic particles" - if(6) - out += "interdimensional/bluespace? phasing" - if(7) - out += "atomic synthesis" - else - out += "low level radiation" - - //how the artifact does it's effect - switch(A.secondary_effect.effect_type) - if(1) - out += " emitting in an ambient energy field." - if(2) - out += " emitting in periodic bursts." - else - out += " interspersed throughout substructure and shell." - - if(A.secondary_effect.trigger >= 0 && A.secondary_effect.trigger <= 4) - out += " Activation index involves physical interaction with artifact surface, but subsystems indicate \ - anomalous interference with standard attempts at triggering." - else if(A.secondary_effect.trigger >= 5 && A.secondary_effect.trigger <= 8) - out += " Activation index involves energetic interaction with artifact surface, but subsystems indicate \ - anomalous interference with standard attempts at triggering." - else if(A.secondary_effect.trigger >= 9 && A.secondary_effect.trigger <= 12) - out += " Activation index involves precise local atmospheric conditions, but subsystems indicate \ - anomalous interference with standard attempts at triggering." - else - out += " Unable to determine any data about activation trigger." - return out - else - //it was an ordinary item - return "[scanned_obj.name] - Mundane application, composed of carbo-ferritic alloy composite." diff --git a/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm b/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm deleted file mode 100644 index 38eaa00c6a2..00000000000 --- a/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm +++ /dev/null @@ -1,254 +0,0 @@ - -/obj/machinery/artifact_harvester - name = "exotic particle harvester" - icon = 'icons/obj/virology.dmi' - icon_state = "incubator" //incubator_on - anchored = 1 - density = 1 - idle_power_usage = 50 - active_power_usage = 750 - use_power = 1 - var/harvesting = 0 - var/obj/item/weapon/anobattery/inserted_battery - var/obj/machinery/artifact/cur_artifact - var/obj/machinery/artifact_scanpad/owned_scanner = null - var/last_process = 0 - -/obj/machinery/artifact_harvester/New() - ..() - //connect to a nearby scanner pad - owned_scanner = locate(/obj/machinery/artifact_scanpad) in get_step(src, dir) - if(!owned_scanner) - owned_scanner = locate(/obj/machinery/artifact_scanpad) in orange(1, src) - -/obj/machinery/artifact_harvester/attackby(var/obj/I as obj, var/mob/user as mob, params) - if(istype(I,/obj/item/weapon/anobattery)) - if(!inserted_battery) - to_chat(user, "You insert [I] into [src].") - user.drop_item() - I.loc = src - src.inserted_battery = I - updateDialog() - else - to_chat(user, "There is already a battery in [src].") - else - return..() - -/obj/machinery/artifact_harvester/attack_hand(var/mob/user as mob) - src.add_fingerprint(user) - interact(user) - -/obj/machinery/artifact_harvester/interact(var/mob/user as mob) - if(stat & (NOPOWER|BROKEN)) - return - user.set_machine(src) - var/dat = "Artifact Power Harvester
    " - dat += "

    " - // - if(owned_scanner) - if(harvesting) - if(harvesting > 0) - dat += "Please wait. Harvesting in progress ([round((inserted_battery.stored_charge/inserted_battery.capacity)*100)]%).
    " - else - dat += "Please wait. Energy dump in progress ([round((inserted_battery.stored_charge/inserted_battery.capacity)*100)]%).
    " - dat += "Halt early
    " - else - if(inserted_battery) - dat += "[inserted_battery.name] inserted, charge level: [inserted_battery.stored_charge]/[inserted_battery.capacity] ([(inserted_battery.stored_charge/inserted_battery.capacity)*100]%)
    " - dat += "Energy signature ID:[inserted_battery.battery_effect ? (inserted_battery.battery_effect.artifact_id == "" ? "???" : "[inserted_battery.battery_effect.artifact_id]") : "NA"]
    " - dat += "Eject battery
    " - dat += "Drain battery of all charge
    " - dat += "Begin harvesting
    " - - else - dat += "No battery inserted.
    " - else - dat += "Unable to locate analysis pad.
    " - // - dat += "
    " - dat += "Refresh Close
    " - user << browse(dat, "window=artharvester;size=450x500") - onclose(user, "artharvester") - -/obj/machinery/artifact_harvester/process() - if(stat & (NOPOWER|BROKEN)) - return - - if(harvesting > 0) - //charge at 33% consumption rate - inserted_battery.stored_charge += (world.time - last_process) / 3 - last_process = world.time - - //check if we've finished - if(inserted_battery.stored_charge >= inserted_battery.capacity) - use_power = 1 - harvesting = 0 - cur_artifact.anchored = 0 - cur_artifact.being_used = 0 - cur_artifact = null - src.visible_message("[name] states, \"Battery is full.\"") - icon_state = "incubator" - - else if(harvesting < 0) - //dump some charge - inserted_battery.stored_charge -= (world.time - last_process) / 3 - - //do the effect - if(inserted_battery.battery_effect) - inserted_battery.battery_effect.process() - - //if the effect works by touch, activate it on anyone viewing the console - if(inserted_battery.battery_effect.effect == EFFECT_TOUCH) - var/list/nearby = viewers(1, src) - for(var/mob/M in nearby) - if(M.machine == src) - inserted_battery.battery_effect.DoEffectTouch(M) - - //if there's no charge left, finish - if(inserted_battery.stored_charge <= 0) - use_power = 1 - inserted_battery.stored_charge = 0 - harvesting = 0 - if(inserted_battery.battery_effect && inserted_battery.battery_effect.activated) - inserted_battery.battery_effect.ToggleActivate() - src.visible_message("[name] states, \"Battery dump completed.\"") - icon_state = "incubator" - -/obj/machinery/artifact_harvester/Topic(href, href_list) - - if(href_list["harvest"]) - if(!inserted_battery) - src.visible_message("[src] states, \"Cannot harvest. No battery inserted.\"") - - else if(inserted_battery.stored_charge >= inserted_battery.capacity) - src.visible_message("[src] states, \"Cannot harvest. battery is full.\"") - - else - - //locate artifact on analysis pad - cur_artifact = null - var/articount = 0 - var/obj/machinery/artifact/analysed - for(var/obj/machinery/artifact/A in get_turf(owned_scanner)) - analysed = A - articount++ - - if(articount <= 0) - var/message = "[src] states, \"Cannot harvest. No noteworthy energy signature isolated.\"" - src.visible_message(message) - - else if(analysed && analysed.being_used) - src.visible_message("[src] states, \"Cannot harvest. Source already being harvested.\"") - - else - if(articount > 1) - atom_say("Cannot harvest. Too many artifacts on the pad.") - else if(analysed) - cur_artifact = analysed - - //if both effects are active, we can't harvest either - if(cur_artifact.my_effect && cur_artifact.my_effect.activated && cur_artifact.secondary_effect.activated) - src.visible_message("[src] states, \"Cannot harvest. Source is emitting conflicting energy signatures.\"") - else if(!cur_artifact.my_effect.activated && !cur_artifact.secondary_effect.activated) - src.visible_message("[src] states, \"Cannot harvest. No energy emitting from source.\"") - - else - //see if we can clear out an old effect - //delete it when the ids match to account for duplicate ids having different effects - if(inserted_battery.battery_effect && inserted_battery.stored_charge <= 0) - qdel(inserted_battery.battery_effect) - - // - var/datum/artifact_effect/source_effect - - //if we already have charge in the battery, we can only recharge it from the source artifact - if(inserted_battery.stored_charge > 0) - var/battery_matches_primary_id = 0 - if(inserted_battery.battery_effect && inserted_battery.battery_effect.artifact_id == cur_artifact.my_effect.artifact_id) - battery_matches_primary_id = 1 - if(battery_matches_primary_id && cur_artifact.my_effect.activated) - //we're good to recharge the primary effect! - source_effect = cur_artifact.my_effect - - var/battery_matches_secondary_id = 0 - if(inserted_battery.battery_effect && inserted_battery.battery_effect.artifact_id == cur_artifact.secondary_effect.artifact_id) - battery_matches_secondary_id = 1 - if(battery_matches_secondary_id && cur_artifact.secondary_effect.activated) - //we're good to recharge the secondary effect! - source_effect = cur_artifact.secondary_effect - - if(!source_effect) - src.visible_message("[src] states, \"Cannot harvest. Battery is charged with a different energy signature.\"") - else - //we're good to charge either - if(cur_artifact.my_effect.activated) - //charge the primary effect - source_effect = cur_artifact.my_effect - - else if(cur_artifact.secondary_effect.activated) - //charge the secondary effect - source_effect = cur_artifact.secondary_effect - - - if(source_effect) - harvesting = 1 - use_power = 2 - cur_artifact.anchored = 1 - cur_artifact.being_used = 1 - icon_state = "incubator_on" - var/message = "[src] states, \"Beginning energy harvesting.\"" - src.visible_message(message) - last_process = world.time - - //duplicate the artifact's effect datum - if(!inserted_battery.battery_effect) - var/effecttype = source_effect.type - var/datum/artifact_effect/E = new effecttype(inserted_battery) - - //duplicate it's unique settings - for(var/varname in list("chargelevelmax","artifact_id","effect","effectrange","trigger")) - E.vars[varname] = source_effect.vars[varname] - - //copy the new datum into the battery - inserted_battery.battery_effect = E - inserted_battery.stored_charge = 0 - - if(href_list["stopharvest"]) - if(harvesting) - if(harvesting < 0 && inserted_battery.battery_effect && inserted_battery.battery_effect.activated) - inserted_battery.battery_effect.ToggleActivate() - harvesting = 0 - cur_artifact.anchored = 0 - cur_artifact.being_used = 0 - cur_artifact = null - src.visible_message("[name] states, \"Energy harvesting interrupted.\"") - icon_state = "incubator" - - if(href_list["ejectbattery"]) - src.inserted_battery.loc = src.loc - src.inserted_battery = null - - if(href_list["drainbattery"]) - if(inserted_battery) - if(inserted_battery.battery_effect && inserted_battery.stored_charge > 0) - if(alert("This action will dump all charge, safety gear is recommended before proceeding","Warning","Continue","Cancel")) - if(!inserted_battery.battery_effect.activated) - inserted_battery.battery_effect.ToggleActivate(1) - last_process = world.time - harvesting = -1 - use_power = 2 - icon_state = "incubator_on" - var/message = "[src] states, \"Warning, battery charge dump commencing.\"" - src.visible_message(message) - else - var/message = "[src] states, \"Cannot dump energy. Battery is drained of charge already.\"" - src.visible_message(message) - else - var/message = "[src] states, \"Cannot dump energy. No battery inserted.\"" - src.visible_message(message) - - if(href_list["close"]) - usr << browse(null, "window=artharvester") - usr.unset_machine(src) - - updateDialog() diff --git a/code/modules/research/xenoarchaeology/machinery/artifact_scanner.dm b/code/modules/research/xenoarchaeology/machinery/artifact_scanner.dm deleted file mode 100644 index a93c92a176e..00000000000 --- a/code/modules/research/xenoarchaeology/machinery/artifact_scanner.dm +++ /dev/null @@ -1,8 +0,0 @@ - -/obj/machinery/artifact_scanpad - name = "anomaly scanner pad" - desc = "Place things here for scanning." - icon = 'icons/obj/stationobjs.dmi' - icon_state = "tele0" - anchored = 1 - density = 0 diff --git a/code/modules/research/xenoarchaeology/machinery/coolant.dm b/code/modules/research/xenoarchaeology/machinery/coolant.dm deleted file mode 100644 index ffbf02c23bc..00000000000 --- a/code/modules/research/xenoarchaeology/machinery/coolant.dm +++ /dev/null @@ -1,13 +0,0 @@ - -/datum/reagent/coolant - name = "Coolant" - id = "coolant" - description = "Industrial cooling substance." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - -/obj/structure/reagent_dispensers/coolanttank - name = "coolant tank" - desc = "A tank of industrial coolant" - icon_state = "coolanttank" - reagent_id = "coolant" \ No newline at end of file diff --git a/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm b/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm deleted file mode 100644 index 7bbd7408173..00000000000 --- a/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm +++ /dev/null @@ -1,356 +0,0 @@ - -/obj/machinery/radiocarbon_spectrometer - name = "Radiocarbon spectrometer" - desc = "A specialised, complex scanner for gleaning information on all manner of small things." - anchored = 1 - density = 1 - icon = 'icons/obj/virology.dmi' - icon_state = "analyser" - - use_power = 1 //1 = idle, 2 = active - idle_power_usage = 20 - active_power_usage = 300 - - //var/obj/item/weapon/reagent_containers/glass/coolant_container - var/scanning = 0 - var/report_num = 0 - // - var/obj/item/scanned_item - var/last_scan_data = "No scans on record." - // - var/last_process_worldtime = 0 - // - var/scanner_progress = 0 - var/scanner_rate = 1.25 //80 seconds per scan - var/scanner_rpm = 0 - var/scanner_rpm_dir = 1 - var/scanner_temperature = 0 - var/scanner_seal_integrity = 100 - // - var/coolant_usage_rate = 0 //measured in u/microsec - var/fresh_coolant = 0 - var/coolant_purity = 0 - var/datum/reagents/coolant_reagents - var/used_coolant = 0 - var/list/coolant_reagents_purity = list() - // - var/maser_wavelength = 0 - var/optimal_wavelength = 0 - var/optimal_wavelength_target = 0 - var/tleft_retarget_optimal_wavelength = 0 - var/maser_efficiency = 0 - // - var/radiation = 0 //0-100 mSv - var/t_left_radspike = 0 - var/rad_shield = 0 - -/obj/machinery/radiocarbon_spectrometer/New() - ..() - create_reagents(500) - coolant_reagents_purity["water"] = 0.5 - coolant_reagents_purity["icecoffee"] = 0.6 - coolant_reagents_purity["icetea"] = 0.6 - coolant_reagents_purity["milkshake"] = 0.6 - coolant_reagents_purity["teporone"] = 0.7 - coolant_reagents_purity["sterilizine"] = 0.7 - coolant_reagents_purity["cryoxadone"] = 0.9 - coolant_reagents_purity["coolant"] = 1 - coolant_reagents_purity["adminordrazine"] = 2 - -/obj/machinery/radiocarbon_spectrometer/attack_hand(var/mob/user as mob) - ui_interact(user) - -/obj/machinery/radiocarbon_spectrometer/attackby(var/obj/I as obj, var/mob/user as mob, params) - if(scanning) - to_chat(user, "You can't do that while [src] is scanning!") - else - if(istype(I, /obj/item/stack/nanopaste)) - var/choice = alert("What do you want to do with the nanopaste?","Radiometric Scanner","Scan nanopaste","Fix seal integrity") - if(choice == "Fix seal integrity") - var/obj/item/stack/nanopaste/N = I - var/amount_used = min(N.amount, 10 - scanner_seal_integrity / 10) - N.use(amount_used) - scanner_seal_integrity = round(scanner_seal_integrity + amount_used * 10) - return - if(istype(I, /obj/item/weapon/reagent_containers/glass)) - var/choice = alert("What do you want to do with the container?","Radiometric Scanner","Add coolant","Empty coolant","Scan container") - if(choice == "Add coolant") - var/obj/item/weapon/reagent_containers/glass/G = I - var/amount_transferred = min(src.reagents.maximum_volume - src.reagents.total_volume, G.reagents.total_volume) - G.reagents.trans_to(src, amount_transferred) - to_chat(user, "You empty [amount_transferred]u of coolant into [src].") - update_coolant() - return - else if(choice == "Empty coolant") - var/obj/item/weapon/reagent_containers/glass/G = I - var/amount_transferred = min(G.reagents.maximum_volume - G.reagents.total_volume, src.reagents.total_volume) - src.reagents.trans_to(G, amount_transferred) - to_chat(user, "You remove [amount_transferred]u of coolant from [src].") - update_coolant() - return - user.drop_item() - I.loc = src - scanned_item = I - -/obj/machinery/radiocarbon_spectrometer/proc/update_coolant() - var/total_purity = 0 - fresh_coolant = 0 - coolant_purity = 0 - var/num_reagent_types = 0 - for(var/datum/reagent/current_reagent in src.reagents.reagent_list) - if(!current_reagent) - continue - var/cur_purity = coolant_reagents_purity[current_reagent.id] - if(!cur_purity) - cur_purity = 0.1 - else if(cur_purity > 1) - cur_purity = 1 - total_purity += cur_purity * current_reagent.volume - fresh_coolant += current_reagent.volume - num_reagent_types += 1 - if(total_purity && fresh_coolant) - coolant_purity = total_purity / fresh_coolant - -/obj/machinery/radiocarbon_spectrometer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) - if(user.stat) - return - - // update the ui if it exists, returns null if no ui is passed/found - ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open) - 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, "geoscanner.tmpl", "High Res Radiocarbon Spectrometer", 900, 825) - // open the new ui window - ui.open() - // auto update every Master Controller tick - ui.set_auto_update(1) - -/obj/machinery/radiocarbon_spectrometer/ui_data(mob/user, ui_key = "main", datum/topic_state/state = default_state) - var/data[0] - data["scanned_item"] = (scanned_item ? scanned_item.name : "") - data["scanned_item_desc"] = (scanned_item ? (scanned_item.desc ? scanned_item.desc : "No information on record.") : "") - data["last_scan_data"] = last_scan_data - // - data["scan_progress"] = round(scanner_progress) - data["scanning"] = scanning - // - data["scanner_seal_integrity"] = round(scanner_seal_integrity) - data["scanner_rpm"] = round(scanner_rpm) - data["scanner_temperature"] = round(scanner_temperature) - // - data["coolant_usage_rate"] = "[coolant_usage_rate]" - data["unused_coolant_abs"] = round(fresh_coolant) - data["unused_coolant_per"] = round(fresh_coolant / reagents.maximum_volume * 100) - data["coolant_purity"] = "[coolant_purity * 100]" - // - data["optimal_wavelength"] = round(optimal_wavelength) - data["maser_wavelength"] = round(maser_wavelength) - data["maser_efficiency"] = round(maser_efficiency * 100) - // - data["radiation"] = round(radiation) - data["t_left_radspike"] = round(t_left_radspike) - data["rad_shield_on"] = rad_shield - return data - -/obj/machinery/radiocarbon_spectrometer/process() - if(scanning) - if(!scanned_item || scanned_item.loc != src) - scanned_item = null - stop_scanning() - else if(scanner_progress >= 100) - complete_scan() - else - //calculate time difference - var/deltaT = (world.time - last_process_worldtime) * 0.1 - - //modify the RPM over time - //i want 1u to last for 10 sec at 500 RPM, scaling linearly - scanner_rpm += scanner_rpm_dir * 50 * deltaT - if(scanner_rpm > 1000) - scanner_rpm = 1000 - scanner_rpm_dir = -1 * pick(0.5, 2.5, 5.5) - else if(scanner_rpm < 1) - scanner_rpm = 1 - scanner_rpm_dir = 1 * pick(0.5, 2.5, 5.5) - - //heat up according to RPM - //each unit of coolant - scanner_temperature += scanner_rpm * deltaT * 0.05 - - //radiation - t_left_radspike -= deltaT - if(t_left_radspike > 0) - //ordinary radiation - radiation = rand() * 15 - else - //radspike - if(t_left_radspike > -5) - radiation = rand() * 15 + 85 - if(!rad_shield) - //irradiate nearby mobs - for(var/mob/living/M in view(7,src)) - M.apply_effect(radiation / 25, IRRADIATE, 0) - else - t_left_radspike = pick(10,15,25) - - //use some coolant to cool down - if(coolant_usage_rate > 0) - var/coolant_used = min(fresh_coolant, coolant_usage_rate * deltaT) - if(coolant_used > 0) - fresh_coolant -= coolant_used - used_coolant += coolant_used - scanner_temperature = max(scanner_temperature - coolant_used * coolant_purity * 20, 0) - - //modify the optimal wavelength - tleft_retarget_optimal_wavelength -= deltaT - if(tleft_retarget_optimal_wavelength <= 0) - tleft_retarget_optimal_wavelength = pick(4,8,15) - optimal_wavelength_target = rand() * 9900 + 100 - // - if(optimal_wavelength < optimal_wavelength_target) - optimal_wavelength = min(optimal_wavelength + 700 * deltaT, optimal_wavelength_target) - else if(optimal_wavelength > optimal_wavelength_target) - optimal_wavelength = max(optimal_wavelength - 700 * deltaT, optimal_wavelength_target) - // - maser_efficiency = 1 - max(min(10000, abs(optimal_wavelength - maser_wavelength) * 3), 1) / 10000 - - //make some scan progress - if(!rad_shield) - scanner_progress = min(100, scanner_progress + scanner_rate * maser_efficiency * deltaT) - - //degrade the seal over time according to temperature - //i want temperature of 50K to degrade at 1%/sec - scanner_seal_integrity -= (max(scanner_temperature, 1) / 1000) * deltaT - - //emergency stop if seal integrity reaches 0 - if(scanner_seal_integrity <= 0 || (scanner_temperature >= 1273 && !rad_shield)) - stop_scanning() - src.visible_message("[bicon(src)] buzzes unhappily. It has failed mid-scan!", 2) - - if(prob(5)) - src.visible_message("[bicon(src)] [pick("whirrs","chuffs","clicks")][pick(" excitedly"," energetically"," busily")].", 2) - else - //gradually cool down over time - if(scanner_temperature > 0) - scanner_temperature = max(scanner_temperature - 5 - 10 * rand(), 0) - if(prob(0.75)) - src.visible_message("[bicon(src)] [pick("plinks","hisses")][pick(" quietly"," softly"," sadly"," plaintively")].", 2) - last_process_worldtime = world.time - -/obj/machinery/radiocarbon_spectrometer/proc/stop_scanning() - scanning = 0 - scanner_rpm_dir = 1 - scanner_rpm = 0 - optimal_wavelength = 0 - maser_efficiency = 0 - maser_wavelength = 0 - coolant_usage_rate = 0 - radiation = 0 - t_left_radspike = 0 - if(used_coolant) - src.reagents.remove_any(used_coolant) - used_coolant = 0 - -/obj/machinery/radiocarbon_spectrometer/proc/complete_scan() - src.visible_message("[bicon(src)] makes an insistent chime.", 2) - - if(scanned_item) - //create report - playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, 1) - var/obj/item/weapon/paper/P = new(src) - P.name = "[src] report #[++report_num]: [scanned_item.name]" - P.stamped = list(/obj/item/weapon/stamp) - P.overlays = list("paper_stamped") - - //work out data - var/data = " - Mundane object: [scanned_item.desc ? scanned_item.desc : "No information on record."]
    " - var/datum/geosample/G - switch(scanned_item.type) - if(/obj/item/weapon/ore) - var/obj/item/weapon/ore/O = scanned_item - if(O.geologic_data) - G = O.geologic_data - - if(/obj/item/weapon/rocksliver) - var/obj/item/weapon/rocksliver/O = scanned_item - if(O.geological_data) - G = O.geological_data - - if(/obj/item/weapon/archaeological_find) - data = " - Mundane object (archaic xenos origins)
    " - - var/obj/item/weapon/archaeological_find/A = scanned_item - if(A.talking_atom) - data = " - Exhibits properties consistent with sonic reproduction and audio capture technologies.
    " - - var/anom_found = 0 - if(G) - data = " - Spectometric analysis on mineral sample has determined type [finds_as_strings[responsive_carriers.Find(G.source_mineral)]]
    " - if(G.age_billion > 0) - data += " - Radiometric dating shows age of [G.age_billion].[G.age_million] billion years
    " - else if(G.age_million > 0) - data += " - Radiometric dating shows age of [G.age_million].[G.age_thousand] million years
    " - else - data += " - Radiometric dating shows age of [G.age_thousand * 1000 + G.age] years
    " - data += " - Chromatographic analysis shows the following materials present:
    " - for(var/carrier in G.find_presence) - if(G.find_presence[carrier]) - var/index = responsive_carriers.Find(carrier) - if(index > 0 && index <= finds_as_strings.len) - data += " > [100 * G.find_presence[carrier]]% [finds_as_strings[index]]
    " - - if(G.artifact_id && G.artifact_distance >= 0) - anom_found = 1 - data += " - Hyperspectral imaging reveals exotic energy wavelength detected with ID: [G.artifact_id]
    " - data += " - Fourier transform analysis on anomalous energy absorption indicates energy source located inside emission radius of [G.artifact_distance]m
    " - - if(!anom_found) - data += " - No anomalous data
    " - - P.info = "[src] analysis report #[report_num]
    " - P.info += "Scanned item: [scanned_item.name]

    " + data - last_scan_data = P.info - P.loc = src.loc - - scanned_item.loc = src.loc - scanned_item = null - -/obj/machinery/radiocarbon_spectrometer/Topic(href, href_list) - if(stat & (NOPOWER|BROKEN)) - return 0 // don't update UIs attached to this object - - if(href_list["scanItem"]) - if(scanning) - stop_scanning() - else - if(scanned_item) - if(scanner_seal_integrity > 0) - scanner_progress = 0 - scanning = 1 - t_left_radspike = pick(5,10,15) - to_chat(usr, "Scan initiated.") - else - to_chat(usr, "Could not initiate scan, seal requires replacing.") - else - to_chat(usr, "Insert an item to scan.") - - if(href_list["maserWavelength"]) - maser_wavelength = max(min(maser_wavelength + 1000 * text2num(href_list["maserWavelength"]), 10000), 1) - - if(href_list["coolantRate"]) - coolant_usage_rate = max(min(coolant_usage_rate + text2num(href_list["coolantRate"]), 10000), 0) - - if(href_list["toggle_rad_shield"]) - if(rad_shield) - rad_shield = 0 - else - rad_shield = 1 - - if(href_list["ejectItem"]) - if(scanned_item) - scanned_item.loc = src.loc - scanned_item = null - - add_fingerprint(usr) - return 1 // update UIs attached to this object diff --git a/code/modules/research/xenoarchaeology/manuals.dm b/code/modules/research/xenoarchaeology/manuals.dm deleted file mode 100644 index 99be3a6849c..00000000000 --- a/code/modules/research/xenoarchaeology/manuals.dm +++ /dev/null @@ -1,370 +0,0 @@ - -/obj/item/weapon/book/manual/excavation - name = "Out on the dig" - icon_state = "excavation" - author = "Professor Patrick Mason, Curator of the Antiquities Museum on Ichar VII" - title = "Out on the dig" - dat = {" - - - - - -

    Contents

    -
      -
    1. Prepping the expedition
    2. -
    3. Knowing your tools
    4. -
    5. Finding the dig
    6. -
    7. Analysing deposits
    8. -
    9. Extracting your first find
    10. -
    -
    - -

    Prepping the expedition

    - Every digsite I've been to, someone has forgotten something and I've never yet been to a dig that hasn't had me hiking to get to it - so gather your gear - and get it to the site the first time. You learn quick that time is money, when you've got a shipful of bandits searching for you the next valley over, - but don't be afraid to clear some space if there are any inconvenient boulders in the way.
    - -
  • Floodlights (if it's dark)
  • -
  • Wooden trestle tables (for holding tools and finds)
  • -
  • Suspension field generator
  • -
  • Load bearing servitors (such as a mulebot, or hover-tray)
  • -
  • Spare energy packs
  • -

    - Contents - -

    Knowing your tools

    - Every archaeologist has a plethora of tools at their disposal, but here's the important ones:
    - -
  • Picks, pickaxes and brushes - don't underestimate the the smallest or largest in your arsenal, each one clears a different amount - of the rockface so each one has a use.
  • -
  • Measuring tape - don't leave home without it, you can use it to measure the depth a rock face has been excavated to.
  • -
  • GPS locater - knowing where you are is the first step to not be lost.
  • -
  • Core sampler - use this to take core samples from rock faces, which you can then run to the lab for analysis.
  • -
  • Depth scanner - uses x-ray diffraction to locate anomalous densities in rock, indicating archaeological deposits or mineral veins. - Comes with a handy reference log containing co-ordinates and time of each scan.
  • -
  • Alden-Saraspova counter - uses a patented application of Fourier Transform analysis to determine the difference between background and - exotic radiation. Use it to determine how far you are from anomalous energy sources.
  • -
  • Radio beacon locater - leave a beacon at an item of interest, then track it down later with this handy gadget. Watch for interference from other - devices though.
  • -
  • Flashlight or portable light source - Self explanatory, I hope.
  • -
  • Environmental safety gear - This one's dependant on the environment you're working in, but enclosed footwear and pack of internals - could save your life.
  • -
  • Anomaly safety gear - A biosealed and catalysis-resistant suit along with eye shielding, tinted hood and non-reactive disposable gloves are - the best kind of protection you can hope for from the errors our forbears may have unleashed.
  • -
  • Personal defence weapon - Never know what you'll find on the dig: pirates, natives, ancient guardians, carnivorous wildlife... - it pays in blood to be prepared.
  • -

    - Contents - -

    Finding the dig

    - Wouldn't be an archaeologist without their dig, but everyone has to start somewhere. Here's a basic procedure I go through when cataloguing a new planet:
    - -
  • Get in touch with the locals (in particular geologists, miners and farmers) - Never know what's been turned up by accident, then left to - gather dust on a shelf.
  • -
  • Check the obvious areas first - even if you're pressed for time, these ones are the generally easiest to search, and the most likely targets - of your rivals.
  • -
  • Do some prospecting - the earth mother isn't in the habit of displaying her secrets to the world (although sometimes you get lucky). - Drop a shaft and clear away a bit of surface rock here and there, you never know what might be lurking below the surface.
  • -
  • Tips on unearthing a deposit - How do you know when you're golden? Look for telltale white strata that looks strange or out of place, or if - something has broken under your pick while you're digging. Your depth scanner is your best friend, but even it can't distinguish between - ordinary minerals and ancient leavings, if in doubt then err on the side of caution.
  • -

    - Contents - -

    Analysing the contents of a dig

    - You've found some unusual strata, but it's not all peaches from here. No archaeologist ever managed to pull a bone from the earth without doing thorough - chemical analysis on every two meters of rock face nearby.
    - -
  • Take core samples - Grab a rock core for every 4m^2.
  • -
  • Clear around any potential finds - Clear away ordinary rock, leaving your prizes reachable in a clearly marked area.
  • -
  • Haul off excess rock - It's easy for a dig to get cluttered, and a neat archaeologist is a successful archaeologist.
  • -
  • Don't be afraid to be cautious - It's slower sometimes, but the extra time will be worth the payoff when you find an Exolitic relic.
  • -
  • Chemical analysis - I won't go into detail here, but the labwork is essential to any successful extraction. Marshal your core samples, and - send them off to the labcoated geniuses
  • -

    - Contents - -

    Extracting your first find

    - -
  • Scan the rock - Use a depth scanner to determine the find's depth and clearance. DON'T FORGET THESE.
  • -
  • Choose stasis field - Chemical analysis on a core sample from the rock face will tell you which field is necessary to extract the find safely
  • -
  • Setup field gen - Bolt it down, choose the field, check the charge and activate it. If you forget it, you'll wish you hadn't when that priceless - Uryom vase crumbles as it sees the light of day.
  • -
  • FUNCTIONAL AND SAFE digging - Dig into the rock until you've cleared away a depth equal to (the anomaly depth MINUS the clearance range). The find - should come loose on it's own, but it will be in the midst of a chunk of rock. Use a welder or miniature excavation tool to clear away the excess.
  • -
  • FANCY AND SPEEDY digging - Dig into the rock until you've cleared away a depth equal to the anomaly depth, but without any of your strokes - entering the clearance range.
  • -
  • The Big Find - Sometimes, you'll chance upon something big, both literally and figuratively. Giant statues and functioning remnants of Precursor - technology are just as exciting, to the right buyers. If your digging leaves a large boulder behind, dig into it normally and see if anything's hidden - inside.
  • -

    - Contents - - - - "} - -/obj/item/weapon/book/manual/mass_spectrometry - name = "High power mass spectrometry, a comprehensive guide" - icon_state = "analysis" - author = "Winton Rice, Chief Mass Spectrometry Technician at the Institute of Applied Sciences on Arcadia" - title = "High powered mass spectrometry, a comprehensive guide" - dat = {" - - - - - -

    Contents

    -
      -
    1. A note on terms
    2. -
    3. Analysis progression
    4. -
    5. Heat management
    6. -
    7. Ambient radiation
    8. -
    - -
    -

    A note on terms

    - -
  • Mass spectrometry - MS is the procedure used used to measure and quantify the components of matter. The most prized tool in the field of - 'Materials analysis'
  • -
  • Radiometric dating - MS applied using the right carrier reagents can be used to accurately determine the age of a sample.
  • -
  • Dissonance ratio - This is a pseudoarbitrary value indicating the overal presence of a particular element in a greater composite. - It takes into account volume, density, molecular excitation and isotope spread.
  • -
  • Vacuum seal integrity - A reference to how close an airtight seal is to failure.
  • -

    - Contents - -

    Analysis progression

    - Modern mass spectrometry requires constant attention from the diligant researcher in order to be successul. There are many different elements to juggle, - and later chapters will delve into them. For the spectrometry assistant, the first thing you need to know is that the scanner wavelength is automatically - calculated for you. Just tweak the settings and try to match it with the actual wavelength as closely as possible.
    -
    - Contents - -

    Seal integrity

    - In order to maintain sterile and environmentally static procedures, a special chamber is setup inside the spectrometer. It's protected by a proprietary vacuum seal - produced by top tier industrial science. It will only last for a certain number of scans before failing outright, but it can be resealed through use of nanite paste. - Unfortunately, it's susceptible to malforming under heat stress so exposing it to higher temperatures will cause it's operation life to drop significantly.
    -
    - Contents - -

    Heat management

    - The scanner relies on a gyro-rotational system that varies in speed and intensity. Over the course of an ordinary scan, the RPMs can change dramatically. Higher RPMs - means greater heat generation, but is necessary for the ongoing continuation of the scan. To offset heat production, spectrometers have an inbuilt cooling system. - Researchers can modify the flow rate of coolant to aid in dropping temperature as necessary, but are advised that frequent coolant replacements may be necessary - depending on coolant purity. Water and substances such as cryoxadone are viable substitutes, but nowhere near as effective as pure coolant itself.
    -
    - Contents - -

    Ambient radiation

    - Researchers are warned that while operational, mass spectrometers emit period bursts of radiation and are thus advised to wear protective gear. In the event of - radiation spikes, there is also a special shield that can be lowered to block emissions. Lowering this, however, will have the effect of blocking the scanner - so use it sparingly.
    -
    - Contents - - - - "} - -/obj/item/weapon/book/manual/anomaly_spectroscopy - name = "Spectroscopy: Analysing the anomalies of the cosmos" - icon_state = "anomaly" - author = "Doctor Martin Boyle, Director Research at the Lower Hydrolian Sector Listening Array" - title = "Spectroscopy: Analysing the anomalies of the cosmos" - dat = {" - - - - - - It's perhaps one of the most exciting times to be alive, with the recent breakthroughs in understanding and categorisation of things we may one day no longer call - 'anomalies,' but rather 'infrequent or rare occurrences of certain celestial weather or phenomena.' Perhaps a little more long winded, but no less eloquent all the - same! Why, look at the strides we're making in piercing the walls of bluespace or our steadily improving ability to clarify and stabilise subspace emissions; it's - certainly an exciting time to be alive. For the moment the Hydrolian hasn't seen two spatial anomalies alike but the day will come and it is soon, I can feel it. - "} - -/obj/item/weapon/book/manual/materials_chemistry_analysis - name = "Materials analysis and the chemical implications" - icon_state = "chemistry" - author = "Jasper Pascal, Senior Lecturer in Materials Analysis at the University of Jol'Nar" - title = "Materials analysis and the chemical implications" - dat = {" - - - - - - In today's high tech research fields, leaps and bounds are being made every day. Whether it's great strides forward in our understanding of the physical universe - or the operation of some fancy new piece of equipment, it seems like all the cool fields are producing new toys to play with leaving doddery old fields such as - materials analysis and chemistry relegated to the previous few centuries, when we were still learning the makeup and structure of the elements.
    -
    - Well, when you're out there building the next gryo-whatsitron or isotope mobility thingummy, remember how the field of archaeology experienced a massive new rebirth - following the excavations at Paranol IV and consider how all of the scientific greats will come crawling back to basic paradigms of natural philosophy when they discover - a new element that defies classification. I defy you to classify it without reviving this once great field! - "} - -/obj/item/weapon/book/manual/anomaly_testing - name = "Anomalous materials and energies" - icon_state = "triangulate" - author = "Norman York, formerly of the Tyrolion Institute on Titan" - title = "Anomalous materials and energies" - dat = {" - - - - - -

    Contents

    -
      -
    1. Forward: Modern attitude towards anomalies
    2. -
    3. Triangulating anomalous energy readings
    4. -
    5. Harvesting and utilising anomalous energy signatures
    6. -
    -
    -

    Modern attitude towards anomalies

    - It's only when confronted with things we don't know, that we may push back our knowledge of the world around us. Nowhere is this more obvious than the - vast and inscrutable mysterious of the cosmos that scholars from such august institutions as the Elysian Institute of the Sciences present - formulas and hypotheses for every few decades.
    -
    - Using our vast telescopic array installations and deep space satellite networks, we are able to detect anomalous energy fields and formations in deep space, - but are limited to those that are large enough to output energy that will stretch across light years worth of distance between stars.
    -
    - While some sectors (such as the Hydrolian Rift and Keppel's Run) are replete with inexplicable energetic activity and unique phenomena found nowhere else in - the galaxy, the majority of space is dry, barren and cold - and if past experience has told us anything, it is that there are always more things we are - unable to explain.
    -
    - Indeed, a great source of knowledge and technology has always been those who come before us, in the form of the multitudinous ancient alien precursors that - have left scattered remnants of their great past all over settled (and unexplored) space.
    -
    - It is from xenoarchaeologists, high energy materials researchers and technology reconstruction authorities that we are able to theorise on the gifts these - species have left behind, and in some cases even reverse engineer or rebuild the technology in question. My colleague Doctor Raymond Ward of the - Tyrolian Institute on Titan has made great breakthroughs in a related field through his pioneering development of universally reflective materials capable - of harvesting and 'bottling' up virtually any energy emissions yet encountered by spacefaring civilisations.
    -
    - And yet, there are some amongst us who do not see the benefits of those who have come before us - indeed, some among them profess the opinion that there - is no species that could possibly match humanity in it's achievements and knowledge, or simply that employing non-human technology is dangerous and unethical. - Folly, say I. If it is their desire to throw onto the wayside the greatest achievements in the history of the galaxy, simply for preferment of the - greatest achievements in the history of mankind, then they have no business in the establishment of science.
    - Contents - -

    Triangulating anomalous energy readings

    - Strong energy emissions, when remaining constant from any one fixed location for millenia, can leave an 'imprint' or distinctive energy signature on other - matter composites that are spatially fixed relative to the source.
    -
    - By taking samples of such 'fixed' matter, we can apply complex analytics such as the modified Fourier Transform Procedure to reverse engineer the path of the - energy, and determine the approximate distance and direction that the energy source is, relative to the sample's point in space. Modern portable devices can do - all this purely by taking readings of local radiation.
    -
    - A canny researcher can thusly analyse radiationat pre-chosen points strategically scattered around an area, and if there are any anomalous energy - emissions in range of those points, combined the researcher can triangulate the source.
    - Contents - -

    Harvesting and utilising anomalous energy signatures

    - As mentioned in the forward, my colleague from the Tyrolian Institute on Saturn's moon of Titan, in the Sol System, Doctor Raymond Ward has made great strides - in the area of harvesting and application of the energy emitted by anomalous phenomena from around the galaxy (although I profess I have not yet seen him - venture further from his birthplace on Earth than the comfortable distance of the Sol Cis-Oort Satellite Sphere).
    -
    - By employing a patented semi-phased alloy with unique and fascinating bluespace interaction properties, Ward's contraption is able to 'harvest' energy, store - it and redirect it later at will (with appropriate electronic mechanisms, of course). Although he professes to see or desire no commercial or material gain - for the application and use of said energy once it is harvested, there are no doubt myriad ways we can come to benefit from such things beyond mere research, - such as the reconstruction of torn cartiligenous tissue that a peculiar radiation from an amphibious species on Brachis IV was found to emit.
    - Contents - - - - "} - -/obj/item/weapon/book/manual/stasis - name = "Cellular suspension, the new Cryogenics?" - icon_state = "stasis" - author = "Elvin Schmidt" - title = "Cellular suspension, the new Cryogenics?" - dat = {" - - - - - -

    Contents

    -
      -
    1. Forward: A replacement for cryosleep?
    2. -
    3. The breakthrough
    4. -
    5. Applying this new principle
    6. -
    -
    -

    Forward: A replacement for cryosleep?

    - The development of rudimentary cryofreezing in the 20th and 21st centuries was hailed as a crank science by some, but many early visionaries recognised the - potential it had to change the way we approach so many fields, such as medicine, therapeutics and space travel. It was breakthroughs in the field in the 22nd and - later centures that turned the procedure from science fiction to science fact, however. Since then, cryogenics has become a hallmark of modern science, and - regarded as one of the great achievements of our era. As with all sciences however, they have their time and are superseded by newer technological miracles when - it is over.
    - Contents - -

    The breakthrough

    - It was in examining the effects of decellerated, blue-space high energy particles when transphased through bluespace that the effects where primarily noticed. - Due to exigent properties of that dimension, transphasing those particles capable of existing in bluespace with high stability levels has the effect of bringing - some of those effects into realspace. Examining the Hoffman emissions in particular, it was discovered that they exhibited a-entropic behaviour, and in what is - now termed the 'Effete Hoffman Principle,' it was found that metastabilising the Hoffman radiation resulted in the effect being applied across other physical - interactions, in particular forces and reactions.
    - Contents - -

    Applying this new principle

    - When combined with an appropriate energy-effect replicate for cryogenics (slowing down biological activity, thus stabilising the organics), the effect is - effectively identical to cryogenics, and while it consumes vastly more power and requires extremely complex equipment, it's (for all intents and purposes) superior - to cryogenics, all that remains is to 'commercialise' the process by enabling cheaper development and mass production.
    - The Effete Hoffman Principle can be tweak-combined with other effects however, for different purposes. A division of PMC Research initially developed the application - in prisons as a literal 'suspension field' where convincts are held immobile in the air, and the use quickly spread to numerous other areas.
    -
    - By examining the material resonance properties of certain strong waveforms when combined with Hoffman radiation, an effect was produced able to reverse energy - transferral through matter, and to slow the effects of gravity. When combined with energy repulse technology, the triple effects compound themselves into a much - stronger field, although all three componenets do slightly different things. High energy researchers assure me of the following key points:
    -
      -
    1. The energy repulsion factor provides a 'shell' capable of weak suspension.
    2. -
    3. The Hoffman emissions nullify energy transferral and other kinetic activity, maintaining stability inside the field.
    4. -
    5. The resonant waveform combines the effects of the above two points, and applies it magnified onto it's synched 'resonance' materials.
    6. -
    - As an interesting aside, a carbon waveform was chosen for the field in prison suspension fields, due to it's resonance with organic matter.
    - Contents - - - - "} diff --git a/code/modules/research/xenoarchaeology/master_controller.dm b/code/modules/research/xenoarchaeology/master_controller.dm deleted file mode 100644 index f64f8c32362..00000000000 --- a/code/modules/research/xenoarchaeology/master_controller.dm +++ /dev/null @@ -1,145 +0,0 @@ - -/datum/controller/game_controller - var/list/all_animal_genesequences = list() - var/list/all_plant_genesequences = list() - var/list/genome_prefixes = null - var/list/artifact_spawning_turfs = list() - var/list/digsite_spawning_turfs = list() - - var/list/spawn_types_animal = list("/mob/living/carbon/slime",\ - "/mob/living/simple_animal/hostile/alien",\ - "/mob/living/simple_animal/hostile/alien/drone",\ - "/mob/living/simple_animal/hostile/alien/sentinel",\ - "/mob/living/simple_animal/hostile/poison/giant_spider",\ - "/mob/living/simple_animal/hostile/poison/giant_spider/hunter",\ - "/mob/living/simple_animal/hostile/poison/giant_spider/nurse",\ - "/mob/living/simple_animal/hostile/creature",\ - "/mob/living/simple_animal/hostile/samak",\ - "/mob/living/simple_animal/hostile/diyaab",\ - "/mob/living/simple_animal/hostile/shantak",\ - "/mob/living/simple_animal/tindalos",\ - "/mob/living/simple_animal/yithian") - - var/list/spawn_types_plant = list("/obj/item/seeds/walkingmushroommycelium",\ - "/obj/item/seeds/killertomatoseed",\ - "/obj/item/seeds/comfreyseed", - "/obj/item/seeds/aloeseed", - "/obj/item/seeds/thaadra",\ - "/obj/item/seeds/telriis",\ - "/obj/item/seeds/jurlmah",\ - "/obj/item/seeds/amauri",\ - "/obj/item/seeds/gelthi",\ - "/obj/item/seeds/vale",\ - "/obj/item/seeds/surik") - -#define XENOARCH_SPAWN_CHANCE 0.5 -#define DIGSITESIZE_LOWER 4 -#define DIGSITESIZE_UPPER 12 -#define ARTIFACTSPAWNNUM_LOWER 6 -#define ARTIFACTSPAWNNUM_UPPER 12 - -datum/controller/game_controller/proc/SetupXenoarch() - //create digsites - for(var/turf/simulated/mineral/M in block(locate(1,1,1), locate(world.maxx, world.maxy, world.maxz))) - if(isnull(M.geologic_data)) - M.geologic_data = new/datum/geosample(M) - - if(!prob(XENOARCH_SPAWN_CHANCE)) - continue - - digsite_spawning_turfs.Add(M) - var/digsite = get_random_digsite_type() - var/target_digsite_size = rand(DIGSITESIZE_LOWER, DIGSITESIZE_UPPER) - var/list/processed_turfs = list() - var/list/turfs_to_process = list(M) - while(turfs_to_process.len) - var/turf/simulated/mineral/archeo_turf = pop(turfs_to_process) - - if(target_digsite_size > 1) - var/list/viable_adjacent_turfs = orange(1, archeo_turf) - for(var/turf/simulated/mineral/T in orange(1, archeo_turf)) - if(T.finds) - continue - if(T in processed_turfs) - continue - viable_adjacent_turfs.Add(T) - - for(var/turf/simulated/mineral/T in viable_adjacent_turfs) - if(prob(target_digsite_size/viable_adjacent_turfs.len)) - turfs_to_process.Add(T) - target_digsite_size -= 1 - if(target_digsite_size <= 0) - break - - processed_turfs.Add(archeo_turf) - if(isnull(archeo_turf.finds)) - archeo_turf.finds = list() - if(prob(50)) - archeo_turf.finds.Add(new /datum/find(digsite, rand(5,95))) - else if(prob(75)) - archeo_turf.finds.Add(new /datum/find(digsite, rand(5,45))) - archeo_turf.finds.Add(new /datum/find(digsite, rand(55,95))) - else - archeo_turf.finds.Add(new /datum/find(digsite, rand(5,30))) - archeo_turf.finds.Add(new /datum/find(digsite, rand(35,75))) - archeo_turf.finds.Add(new /datum/find(digsite, rand(75,95))) - - //sometimes a find will be close enough to the surface to show - var/datum/find/F = archeo_turf.finds[1] - if(F.excavation_required <= F.view_range) - archeo_turf.archaeo_overlay = "overlay_archaeo[rand(1,3)]" - archeo_turf.overlays += archeo_turf.archaeo_overlay - - //have a chance for an artifact to spawn here, but not in animal or plant digsites - if(isnull(M.artifact_find) && digsite != 1 && digsite != 2) - artifact_spawning_turfs.Add(archeo_turf) - - //create artifact machinery - var/num_artifacts_spawn = rand(ARTIFACTSPAWNNUM_LOWER, ARTIFACTSPAWNNUM_UPPER) - while(artifact_spawning_turfs.len > num_artifacts_spawn) - pick_n_take(artifact_spawning_turfs) - - var/list/artifacts_spawnturf_temp = artifact_spawning_turfs.Copy() - while(artifacts_spawnturf_temp.len > 0) - var/turf/simulated/mineral/artifact_turf = pop(artifacts_spawnturf_temp) - artifact_turf.artifact_find = new() - - //make sure we have some prefixes for the gene sequences - if(!genome_prefixes) - genome_prefixes = alphabet_uppercase.Copy() - if(!genome_prefixes.len) - qdel(genome_prefixes) - genome_prefixes = alphabet_uppercase.Copy() - - //create animal gene sequences - while(spawn_types_animal.len && genome_prefixes.len) - var/datum/genesequence/new_sequence = new/datum/genesequence() - new_sequence.spawned_type_text = pick(spawn_types_animal) - new_sequence.spawned_type = text2path(new_sequence.spawned_type_text) - spawn_types_animal -= new_sequence.spawned_type_text - - var/prefixletter = pick(genome_prefixes) - genome_prefixes -= prefixletter - while(new_sequence.full_genome_sequence.len < 7) - new_sequence.full_genome_sequence.Add("[prefixletter][pick(alphabet_uppercase)][pick(alphabet_uppercase)][pick(1,2,3,4,5,6,7,8,9,0)][pick(1,2,3,4,5,6,7,8,9,0)]") - - all_animal_genesequences.Add(new_sequence) - - //create plant gene sequences - while(spawn_types_plant.len && genome_prefixes.len) - var/datum/genesequence/new_sequence = new/datum/genesequence() - new_sequence.spawned_type = pick(spawn_types_plant) - spawn_types_plant -= new_sequence.spawned_type_text - - var/prefixletter = pick(genome_prefixes) - genome_prefixes -= prefixletter - while(new_sequence.full_genome_sequence.len < 7) - new_sequence.full_genome_sequence.Add("[prefixletter][pick(1,2,3,4,5,6,7,8,9,0)][pick(1,2,3,4,5,6,7,8,9,0)][pick(alphabet_uppercase)][pick(alphabet_uppercase)]") - - all_plant_genesequences.Add(new_sequence) - -#undef XENOARCH_SPAWN_CHANCE -#undef DIGSITESIZE_LOWER -#undef DIGSITESIZE_UPPER -#undef ARTIFACTSPAWNNUM_LOWER -#undef ARTIFACTSPAWNNUM_UPPER diff --git a/code/modules/research/xenoarchaeology/misc.dm b/code/modules/research/xenoarchaeology/misc.dm deleted file mode 100644 index 06f466ec72a..00000000000 --- a/code/modules/research/xenoarchaeology/misc.dm +++ /dev/null @@ -1,109 +0,0 @@ -//---- Noticeboard - -/obj/structure/noticeboard/anomaly - notices = 5 - icon_state = "nboard05" - -/obj/structure/noticeboard/anomaly/New() - var/obj/item/weapon/stamp/rd/stamp = new - //add some memos - var/obj/item/weapon/paper/P = new() - P.name = "Memo RE: proper analysis procedure" - P.info = "
    We keep test dummies in pens here for a reason, so standard procedure should be to activate newfound alien artifacts and place the two in close proximity. Promising items I might even approve monkey testing on." - P.stamp(stamp) - src.contents += P - - P = new() - P.name = "Memo RE: materials gathering" - P.info = "Corasang,
    the hands-on approach to gathering our samples may very well be slow at times, but it's safer than allowing the blundering miners to roll willy-nilly over our dig sites in their mechs, destroying everything in the process. And don't forget the escavation tools on your way out there!
    - R.W" - P.stamp(stamp) - src.contents += P - - P = new() - P.name = "Memo RE: ethical quandaries" - P.info = "Darion-

    I don't care what his rank is, our business is that of science and knowledge - questions of moral application do not come into this. Sure, so there are those who would employ the energy-wave particles my modified device has managed to abscond for their own personal gain, but I can hardly see the practical benefits of some of these artifacts our benefactors left behind. Ward--" - P.stamp(stamp) - src.contents += P - - P = new() - P.name = "READ ME! Before you people destroy any more samples" - P.info = "how many times do i have to tell you people, these xeno-arch samples are del-i-cate, and should be handled so! careful application of a focussed, concentrated heat or some corrosive liquids should clear away the extraneous carbon matter, while application of an energy beam will most decidedly destroy it entirely - like someone did to the chemical dispenser! W, the one who signs your paychecks" - P.stamp(stamp) - src.contents += P - - P = new() - P.name = "Reminder regarding the anomalous material suits" - P.info = "Do you people think the anomaly suits are cheap to come by? I'm about a hair trigger away from instituting a log book for the damn things. Only wear them if you're going out for a dig, and for god's sake don't go tramping around in them unless you're field testing something, R" - P.stamp(stamp) - src.contents += P - - qdel(stamp) - -//---- Bookcase - -/obj/structure/bookcase/manuals/xenoarchaeology - name = "Xenoarchaeology Manuals bookcase" - - New() - ..() - new /obj/item/weapon/book/manual/excavation(src) - new /obj/item/weapon/book/manual/mass_spectrometry(src) - new /obj/item/weapon/book/manual/materials_chemistry_analysis(src) - new /obj/item/weapon/book/manual/anomaly_testing(src) - new /obj/item/weapon/book/manual/anomaly_spectroscopy(src) - new /obj/item/weapon/book/manual/stasis(src) - update_icon() - -//---- Lockers and closets - -/obj/structure/closet/secure_closet/xenoarchaeologist - name = "xenoarchaeologist locker" - req_access = list(access_tox_storage) - icon_state = "secureres1" - icon_closed = "secureres" - icon_locked = "secureres1" - icon_opened = "secureresopen" - icon_broken = "secureresbroken" - icon_off = "secureresoff" - - New() - ..() - sleep(2) - new /obj/item/clothing/under/rank/scientist(src) - new /obj/item/clothing/suit/storage/labcoat(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/glasses/science(src) - new /obj/item/device/radio/headset/headset_sci(src) - new /obj/item/weapon/storage/belt/archaeology(src) - new /obj/item/weapon/storage/box/excavation(src) - return - -/obj/structure/closet/excavation - name = "excavation tools closet" - icon_state = "toolcloset" - icon_closed = "toolcloset" - icon_opened = "toolclosetopen" - - New() - ..() - sleep(2) - new /obj/item/weapon/storage/belt/archaeology(src) - new /obj/item/weapon/storage/box/excavation(src) - new /obj/item/device/flashlight/lantern(src) - new /obj/item/device/depth_scanner(src) - new /obj/item/device/core_sampler(src) - new /obj/item/device/gps(src) - new /obj/item/device/beacon_locator(src) - new /obj/item/device/radio/beacon(src) - new /obj/item/clothing/glasses/meson(src) - new /obj/item/weapon/pickaxe(src) - new /obj/item/device/measuring_tape(src) - new /obj/item/weapon/pickaxe/hand(src) - new /obj/item/weapon/storage/bag/fossils(src) - return - -//---- Isolation room air alarms - -/obj/machinery/alarm/isolation - name = "Isolation room air control" - req_access = list(access_research) diff --git a/code/modules/research/xenoarchaeology/readme.dm b/code/modules/research/xenoarchaeology/readme.dm deleted file mode 100644 index 2eecadc690a..00000000000 --- a/code/modules/research/xenoarchaeology/readme.dm +++ /dev/null @@ -1,5 +0,0 @@ - -//coming soon -//there'll probably be some stuff on the wiki at some point - -//original code from alfie275 / lunacode, artifacts are from isaidno \ No newline at end of file diff --git a/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm b/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm deleted file mode 100644 index 23ba3eb39a8..00000000000 --- a/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm +++ /dev/null @@ -1,215 +0,0 @@ - -/obj/item/weapon/anobattery - name = "Anomaly power battery" - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "anobattery0" - var/datum/artifact_effect/battery_effect - var/capacity = 300 - var/stored_charge = 0 - var/effect_id = "" - -/obj/item/weapon/anobattery/New() - battery_effect = new() - -/obj/item/weapon/anobattery/proc/UpdateSprite() - var/p = (stored_charge/capacity)*100 - p = min(p, 100) - icon_state = "anobattery[round(p,25)]" - -/obj/item/weapon/anobattery/proc/use_power(var/amount) - stored_charge = max(0, stored_charge - amount) - -/obj/item/weapon/anodevice - name = "Anomaly power utilizer" - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "anodev" - var/activated = 0 - var/duration = 0 - var/interval = 0 - var/time_end = 0 - var/last_activation = 0 - var/last_process = 0 - var/obj/item/weapon/anobattery/inserted_battery - var/turf/archived_loc - var/energy_consumed_on_touch = 100 - -/obj/item/weapon/anodevice/New() - ..() - processing_objects.Add(src) - -/obj/item/weapon/anodevice/attackby(var/obj/I as obj, var/mob/user as mob, params) - if(istype(I, /obj/item/weapon/anobattery)) - if(!inserted_battery) - to_chat(user, "You insert the battery.") - user.drop_item() - I.loc = src - inserted_battery = I - UpdateSprite() - else - return ..() - -/obj/item/weapon/anodevice/attack_self(var/mob/user as mob) - return src.interact(user) - -/obj/item/weapon/anodevice/interact(var/mob/user) - var/dat = "Anomalous Materials Energy Utiliser
    " - if(inserted_battery) - if(activated) - dat += "Device active.
    " - - dat += "[inserted_battery] inserted, anomaly ID: [inserted_battery.battery_effect.artifact_id ? inserted_battery.battery_effect.artifact_id : "NA"]
    " - dat += "Charge: [inserted_battery.stored_charge] / [inserted_battery.capacity]
    " - dat += "Time left activated: [round(max((time_end - last_process) / 10, 0))]
    " - if(activated) - dat += "Shutdown
    " - else - dat += "Start
    " - dat += "
    " - - dat += "Activate duration (sec): -- - [duration/10] + ++
    " - dat += "Activate interval (sec): -- - [interval/10] + ++
    " - dat += "
    " - dat += "Eject battery
    " - else - dat += "Please insert battery
    " - - dat += "
    " - dat += "Refresh Close" - - user << browse(dat, "window=anodevice;size=400x500") - onclose(user, "anodevice") - -/obj/item/weapon/anodevice/process() - if(activated) - if(inserted_battery && inserted_battery.battery_effect && (inserted_battery.stored_charge > 0) ) - //make sure the effect is active - if(!inserted_battery.battery_effect.activated) - inserted_battery.battery_effect.ToggleActivate(1) - - //update the effect loc - var/turf/T = get_turf(src) - if(T != archived_loc) - archived_loc = T - inserted_battery.battery_effect.UpdateMove() - - //if someone is holding the device, do the effect on them - var/mob/holder - if(ismob(src.loc)) - holder = src.loc - - //handle charge - if(world.time - last_activation > interval) - if(inserted_battery.battery_effect.effect == EFFECT_TOUCH) - if(interval > 0) - //apply the touch effect to the holder - if(holder) - to_chat(holder, "the [bicon(src)] [src] held by [holder] shudders in your grasp.") - else - src.loc.visible_message("the [bicon(src)] [src] shudders.") - inserted_battery.battery_effect.DoEffectTouch(holder) - - //consume power - inserted_battery.use_power(energy_consumed_on_touch) - else - //consume power equal to time passed - inserted_battery.use_power(world.time - last_process) - - else if(inserted_battery.battery_effect.effect == EFFECT_PULSE) - inserted_battery.battery_effect.chargelevel = inserted_battery.battery_effect.chargelevelmax - - //consume power relative to the time the artifact takes to charge and the effect range - inserted_battery.use_power(inserted_battery.battery_effect.effectrange * inserted_battery.battery_effect.effectrange * inserted_battery.battery_effect.chargelevelmax) - - else - //consume power equal to time passed - inserted_battery.use_power(world.time - last_process) - - last_activation = world.time - - //process the effect - inserted_battery.battery_effect.process() - - //work out if we need to shutdown - if(inserted_battery.stored_charge <= 0) - src.loc.visible_message("[bicon(src)] [src] buzzes.", "[bicon(src)] You hear something buzz.") - shutdown_emission() - else if(world.time > time_end) - src.loc.visible_message("[bicon(src)] [src] chimes.", "[bicon(src)] You hear something chime.") - shutdown_emission() - else - src.visible_message("[bicon(src)] [src] buzzes.", "[bicon(src)] You hear something buzz.") - shutdown_emission() - last_process = world.time - -/obj/item/weapon/anodevice/proc/shutdown_emission() - if(activated) - activated = 0 - if(inserted_battery.battery_effect.activated) - inserted_battery.battery_effect.ToggleActivate(1) - -/obj/item/weapon/anodevice/Topic(href, href_list) - - if(href_list["changetime"]) - var/timedif = text2num(href_list["changetime"]) - if(href_list["duration"]) - duration += timedif - //max 30 sec duration - duration = min(max(duration, 0), 300) - if(activated) - time_end += timedif - else if(href_list["interval"]) - interval += timedif - //max 10 sec interval - interval = min(max(interval, 0), 100) - if(href_list["startup"]) - if(inserted_battery && inserted_battery.battery_effect && (inserted_battery.stored_charge > 0) ) - activated = 1 - src.visible_message("[bicon(src)] [src] whirrs.", "[bicon(src)] You hear something whirr.") - if(!inserted_battery.battery_effect.activated) - inserted_battery.battery_effect.ToggleActivate(1) - time_end = world.time + duration - if(href_list["shutdown"]) - activated = 0 - if(href_list["ejectbattery"]) - shutdown_emission() - inserted_battery.loc = get_turf(src) - inserted_battery = null - UpdateSprite() - if(href_list["close"]) - usr << browse(null, "window=anodevice") - else if(ismob(src.loc)) - var/mob/M = src.loc - src.interact(M) - ..() - -/obj/item/weapon/anodevice/proc/UpdateSprite() - if(!inserted_battery) - icon_state = "anodev" - return - var/p = (inserted_battery.stored_charge/inserted_battery.capacity)*100 - p = min(p, 100) - icon_state = "anodev[round(p,25)]" - -/obj/item/weapon/anodevice/Destroy() - processing_objects.Remove(src) - return ..() - -/obj/item/weapon/anodevice/attack(mob/living/M as mob, mob/living/user as mob, def_zone) - if(!istype(M)) - return - - if(activated && inserted_battery.battery_effect.effect == EFFECT_TOUCH && !isnull(inserted_battery)) - inserted_battery.battery_effect.DoEffectTouch(M) - inserted_battery.use_power(energy_consumed_on_touch) - user.visible_message("[user] taps [M] with [src], and it shudders on contact.") - else - user.visible_message("[user] taps [M] with [src], but nothing happens.") - - //admin logging - user.lastattacked = M - M.lastattacker = user - - if(inserted_battery.battery_effect) - user.create_attack_log(" Tapped [key_name(M)] with [name] (EFFECT: [inserted_battery.battery_effect.effecttype])") - M.create_attack_log(" Tapped by [key_name(user)] with [name] (EFFECT: [inserted_battery.battery_effect.effecttype])") - msg_admin_attack("[key_name_admin(user)] tapped [key_name_admin(M)] with [name] (EFFECT: [inserted_battery.battery_effect.effecttype])" ) diff --git a/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm b/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm deleted file mode 100644 index c3e29fe8638..00000000000 --- a/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm +++ /dev/null @@ -1,38 +0,0 @@ - -//changes: rad protection up to 100 from 20/50 respectively -/obj/item/clothing/suit/bio_suit/anomaly - name = "Anomaly suit" - desc = "A sealed bio suit capable of insulating against exotic alien energies" - icon_state = "engspace_suit" - item_state = "engspace_suit" - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 100) - species_fit = null - sprite_sheets = null - -/obj/item/clothing/head/bio_hood/anomaly - name = "Anomaly hood" - desc = "A sealed bio hood capable of insulating against exotic alien energies." - icon_state = "engspace_helmet" - item_state = "engspace_helmet" - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 100) - -/obj/item/clothing/suit/space/eva/anomaly - name = "Excavation suit" - desc = "A pressure resistant excavation suit partially capable of insulating against exotic alien energies." - icon_state = "cespace_suit" - item_state = "cespace_suit" - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 100) - allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank) - species_fit = null - sprite_sheets = null - sprite_sheets_obj = null - -/obj/item/clothing/head/helmet/space/eva/anomaly - name = "Excavation hood" - desc = "A pressure resistant excavation hood partially capable of insulating against exotic alien energies." - icon_state = "cespace_helmet" - item_state = "cespace_helmet" - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 100) - species_fit = null - sprite_sheets = null - sprite_sheets_obj = null diff --git a/code/modules/research/xenoarchaeology/tools/bunsen_burner.dm b/code/modules/research/xenoarchaeology/tools/bunsen_burner.dm deleted file mode 100644 index a75378b0a26..00000000000 --- a/code/modules/research/xenoarchaeology/tools/bunsen_burner.dm +++ /dev/null @@ -1,57 +0,0 @@ - -/obj/machinery/bunsen_burner - name = "bunsen burner" - desc = "A flat, self-heating device designed for bringing chemical mixtures to boil." - icon = 'icons/obj/device.dmi' - icon_state = "bunsen0" - var/heating = 0 //whether the bunsen is turned on - var/heated = 0 //whether the bunsen has been on long enough to let stuff react - var/obj/item/weapon/reagent_containers/held_container - var/heat_time = 50 - -/obj/machinery/bunsen_burner/attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if(istype(W, /obj/item/weapon/reagent_containers)) - if(held_container) - to_chat(user, "You must remove the [held_container] first.") - else - user.drop_item(src) - held_container = W - held_container.loc = src - to_chat(user, "You put the [held_container] onto the [src].") - var/image/I = image("icon"=W, "layer"=FLOAT_LAYER) - underlays += I - if(heating) - spawn(heat_time) - try_heating() - else - to_chat(user, "You can't put the [W] onto the [src].") - -/obj/machinery/bunsen_burner/attack_hand(mob/user as mob) - if(held_container) - underlays = null - to_chat(user, "You remove the [held_container] from the [src].") - held_container.loc = src.loc - held_container.attack_hand(user) - held_container = null - else - to_chat(user, "There is nothing on the [src].") - -/obj/machinery/bunsen_burner/proc/try_heating() - src.visible_message("[bicon(src)] [src] hisses.") - if(held_container && heating) - heated = 1 - held_container.reagents.handle_reactions() - heated = 0 - spawn(heat_time) - try_heating() - -/obj/machinery/bunsen_burner/verb/toggle() - set src in view(1) - set name = "Toggle bunsen burner" - set category = "IC" - - heating = !heating - icon_state = "bunsen[heating]" - if(heating) - spawn(heat_time) - try_heating() diff --git a/code/modules/research/xenoarchaeology/tools/gearbelt.dm b/code/modules/research/xenoarchaeology/tools/gearbelt.dm deleted file mode 100644 index 8912e9248c8..00000000000 --- a/code/modules/research/xenoarchaeology/tools/gearbelt.dm +++ /dev/null @@ -1,28 +0,0 @@ - -/obj/item/weapon/storage/belt/archaeology - name = "excavation gear-belt" - desc = "Can hold various excavation gear." - icon_state = "gearbelt" - item_state = "utility" - can_hold = list( - /obj/item/weapon/storage/box/samplebags, - /obj/item/device/core_sampler, - /obj/item/device/beacon_locator, - /obj/item/device/radio/beacon, - /obj/item/device/gps, - /obj/item/device/measuring_tape, - /obj/item/device/flashlight, - /obj/item/weapon/pickaxe, - /obj/item/device/depth_scanner, - /obj/item/device/camera, - /obj/item/weapon/paper, - /obj/item/weapon/photo, - /obj/item/weapon/folder, - /obj/item/weapon/pen, - /obj/item/weapon/folder, - /obj/item/weapon/clipboard, - /obj/item/weapon/anodevice, - /obj/item/clothing/glasses, - /obj/item/weapon/wrench, - /obj/item/weapon/storage/box/excavation, - /obj/item/weapon/anobattery) diff --git a/code/modules/research/xenoarchaeology/tools/suspension_generator.dm b/code/modules/research/xenoarchaeology/tools/suspension_generator.dm deleted file mode 100644 index 775a4e25c98..00000000000 --- a/code/modules/research/xenoarchaeology/tools/suspension_generator.dm +++ /dev/null @@ -1,350 +0,0 @@ -/obj/machinery/suspension_gen - name = "suspension field generator" - desc = "It has stubby legs bolted up against it's body for stabilising." - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "suspension2" - density = 1 - req_access = list(access_research) - var/obj/item/weapon/stock_parts/cell/cell - var/obj/item/weapon/card/id/auth_card - var/locked = 1 - var/open = 0 - var/screwed = 1 - var/field_type = "" - var/power_use = 25 - var/obj/effect/suspension_field/suspension_field - var/list/secured_mobs = list() - -/obj/machinery/suspension_gen/New() - src.cell = new/obj/item/weapon/stock_parts/cell/high(src) - ..() - -/obj/machinery/suspension_gen/process() - //set background = 1 - - if(suspension_field) - cell.charge -= power_use - - var/turf/T = get_turf(suspension_field) - if(field_type == "carbon") - for(var/mob/living/carbon/M in T) - M.Weaken(3) - cell.charge -= power_use - if(prob(5)) - to_chat(M, "[pick("You feel tingly.","You feel like floating.","It is hard to speak.","You can barely move.")]") - - if(field_type == "iron") - for(var/mob/living/silicon/M in T) - M.Weaken(3) - cell.charge -= power_use - if(prob(5)) - to_chat(M, "[pick("You feel tingly.","You feel like floating.","It is hard to speak.","You can barely move.")]") - - for(var/obj/item/I in T) - if(!suspension_field.contents.len) - suspension_field.icon_state = "energynet" - suspension_field.overlays += "shield2" - I.loc = suspension_field - - for(var/mob/living/simple_animal/M in T) - M.Weaken(3) - cell.charge -= power_use - if(prob(5)) - to_chat(M, "[pick("You feel tingly.","You feel like floating.","It is hard to speak.","You can barely move.")]") - - if(cell.charge <= 0) - deactivate() - -/obj/machinery/suspension_gen/interact(mob/user as mob) - var/dat = "Multi-phase mobile suspension field generator MK II \"Steadfast\"
    " - if(cell) - var/colour = "red" - if(cell.charge / cell.maxcharge > 0.66) - colour = "green" - else if(cell.charge / cell.maxcharge > 0.33) - colour = "orange" - dat += "Energy cell: [100 * cell.charge / cell.maxcharge]%
    " - else - dat += "Energy cell: None
    " - if(auth_card) - dat += "\[[auth_card]\]
    " - if(!locked) - dat += "
    [suspension_field ? "Disable" : "Enable"] field
    " - else - dat += "
    " - else - dat += "\[------\]
    " - if(!locked) - dat += "
    [suspension_field ? "Disable" : "Enable"] field
    " - else - dat += "Enter your ID to begin.
    " - - dat += "
    " - if(!locked) - dat += "Select field mode
    " - dat += "[field_type=="carbon"?"":"" ]Diffracted carbon dioxide laser
    " - dat += "[field_type=="nitrogen"?"":"" ]Nitrogen tracer field
    " - dat += "[field_type=="potassium"?"":"" ]Potassium refrigerant cloud
    " - dat += "[field_type=="mercury"?"":"" ]Mercury dispersion wave
    " - dat += "[field_type=="iron"?"":"" ]Iron wafer conduction field
    " - dat += "[field_type=="calcium"?"":"" ]Calcium binary deoxidiser
    " - dat += "[field_type=="plasma"?"":"" ]Chlorine diffusion emissions
    " - dat += "[field_type=="plasma"?"":"" ]Plasma saturated field
    " - else - dat += "
    " - dat += "
    " - dat += "
    " - dat += "
    " - dat += "
    " - dat += "
    " - dat += "
    " - dat += "
    " - dat += "
    " - dat += "Always wear safety gear and consult a field manual before operation.
    " - if(!locked) - dat += "Lock console
    " - else - dat += "
    " - dat += "Refresh console
    " - dat += "Close console" - user << browse(dat, "window=suspension;size=500x400") - onclose(user, "suspension") - -/obj/machinery/suspension_gen/Topic(href, href_list) - ..() - usr.set_machine(src) - - if(href_list["toggle_field"]) - if(!suspension_field) - if(cell.charge > 0) - if(anchored) - activate() - else - to_chat(usr, "You are unable to activate [src] until it is properly secured on the ground.") - else - deactivate() - if(href_list["select_field"]) - field_type = href_list["select_field"] - else if(href_list["insertcard"]) - if(istype(usr, /mob/living/silicon)) - locked = 0 - else - var/obj/item/I = usr.get_active_hand() - if(istype(I, /obj/item/weapon/card)) - usr.drop_item() - I.loc = src - auth_card = I - if(attempt_unlock(I)) - to_chat(usr, "You insert [I], the console flashes \'Access granted.\'") - else - to_chat(usr, "You insert [I], the console flashes \'Access denied.\'") - else if(href_list["ejectcard"]) - if(auth_card) - if(ishuman(usr)) - auth_card.loc = usr.loc - if(!usr.get_active_hand()) - usr.put_in_hands(auth_card) - auth_card = null - else - auth_card.loc = loc - auth_card = null - else if(href_list["lock"]) - locked = 1 - else if(href_list["close"]) - usr.unset_machine() - usr << browse(null, "window=suspension") - - updateUsrDialog() - -/obj/machinery/suspension_gen/attack_hand(mob/user as mob) - if(!open) - interact(user) - else if(cell) - cell.loc = loc - cell.add_fingerprint(user) - cell.updateicon() - - icon_state = "suspension0" - cell = null - to_chat(user, "You remove the power cell") - -/obj/machinery/suspension_gen/attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if(istype(W, /obj/item/weapon/screwdriver)) - if(!open) - if(screwed) - screwed = 0 - else - screwed = 1 - to_chat(user, "You [screwed ? "screw" : "unscrew"] the battery panel.") - else if(istype(W, /obj/item/weapon/crowbar)) - if(!locked) - if(!screwed) - if(!suspension_field) - if(open) - open = 0 - else - open = 1 - to_chat(user, "You crowbar the battery panel [open ? "open" : "in place"].") - icon_state = "suspension[open ? (cell ? "1" : "0") : "2"]" - else - to_chat(user, "[src]'s safety locks are engaged, shut it down first.") - else - to_chat(user, "Unscrew [src]'s battery panel first.") - else - to_chat(user, "[src]'s security locks are engaged.") - else if(istype(W, /obj/item/weapon/wrench)) - if(!suspension_field) - if(anchored) - anchored = 0 - else - anchored = 1 - to_chat(user, "You wrench the stabilising legs [anchored ? "into place" : "up against the body"].") - if(anchored) - desc = "It is resting securely on four stubby legs." - else - desc = "It has stubby legs bolted up against it's body for stabilising." - else - to_chat(user, "You are unable to secure [src] while it is active!") - else if(istype(W, /obj/item/weapon/stock_parts/cell)) - if(open) - if(cell) - to_chat(user, "There is a power cell already installed.") - else - user.drop_item() - W.loc = src - cell = W - to_chat(user, "You insert the power cell.") - icon_state = "suspension1" - else if(istype(W, /obj/item/weapon/card)) - var/obj/item/weapon/card/I = W - if(!auth_card) - if(attempt_unlock(I)) - to_chat(user, "You swipe [I], the console flashes \'Access granted.\'") - else - to_chat(user, "You swipe [I], console flashes \'Access denied.\'") - else - to_chat(user, "Remove [auth_card] first.") - -/obj/machinery/suspension_gen/proc/attempt_unlock(var/obj/item/weapon/card/C) - if(!open) - if(istype(C, /obj/item/weapon/card/emag) && cell.charge > 0) - //put sparks here - if(prob(95)) - locked = 0 - else if(istype(C, /obj/item/weapon/card/id) && check_access(C)) - locked = 0 - - if(!locked) - return 1 - -//checks for whether the machine can be activated or not should already have occurred by this point -/obj/machinery/suspension_gen/proc/activate() - //depending on the field type, we might pickup certain items - var/turf/T = get_turf(get_step(src,dir)) - var/success = 0 - var/collected = 0 - switch(field_type) - if("carbon") - success = 1 - for(var/mob/living/carbon/C in T) - C.AdjustWeakened(5) - C.visible_message("[bicon(C)] [C] begins to float in the air!","You feel tingly and light, but it is difficult to move.") - if("nitrogen") - success = 1 - // - if("mercury") - success = 1 - // - if("chlorine") - success = 1 - // - if("potassium") - success = 1 - // - if("plasma") - success = 1 - // - if("calcium") - success = 1 - // - if("iron") - success = 1 - for(var/mob/living/silicon/R in T) - R.AdjustWeakened(5) - R.visible_message("[bicon(R)] [R] begins to float in the air!","You feel tingly and light, but it is difficult to move.") - // - //in case we have a bad field type - if(!success) - return - - for(var/mob/living/simple_animal/C in T) - C.visible_message("[bicon(C)] [C] begins to float in the air!","You feel tingly and light, but it is difficult to move.") - C.AdjustWeakened(5) - - suspension_field = new(T) - suspension_field.field_type = field_type - src.visible_message("[bicon(src)] [src] activates with a low hum.") - icon_state = "suspension3" - - for(var/obj/item/I in T) - I.loc = suspension_field - collected++ - - if(collected) - suspension_field.icon_state = "energynet" - suspension_field.overlays += "shield2" - src.visible_message("[bicon(suspension_field)] [suspension_field] gently absconds [collected > 1 ? "something" : "several things"].") - else - if(istype(T,/turf/simulated/mineral) || istype(T,/turf/simulated/wall)) - suspension_field.icon_state = "shieldsparkles" - else - suspension_field.icon_state = "shield2" - -/obj/machinery/suspension_gen/proc/deactivate() - //drop anything we picked up - var/turf/T = get_turf(suspension_field) - - for(var/mob/M in T) - to_chat(M, "You no longer feel like floating.") - M.SetWeakened(min(M.weakened, 3)) - - src.visible_message("[bicon(src)] [src] deactivates with a gentle shudder.") - qdel(suspension_field) - icon_state = "suspension2" - -/obj/machinery/suspension_gen/Destroy() - //safety checks: clear the field and drop anything it's holding - deactivate() - return ..() - -/obj/machinery/suspension_gen/verb/rotate_ccw() - set src in view(1) - set name = "Rotate suspension gen (counter-clockwise)" - set category = "Object" - - if(anchored) - to_chat(usr, "You cannot rotate [src], it has been firmly fixed to the floor.") - else - dir = turn(dir, 90) - -/obj/machinery/suspension_gen/verb/rotate_cw() - set src in view(1) - set name = "Rotate suspension gen (clockwise)" - set category = "Object" - - if(anchored) - to_chat(usr, "You cannot rotate [src], it has been firmly fixed to the floor.") - else - dir = turn(dir, -90) - -/obj/effect/suspension_field - name = "energy field" - icon = 'icons/effects/effects.dmi' - anchored = 1 - density = 1 - var/field_type = "chlorine" - -/obj/effect/suspension_field/Destroy() - for(var/obj/I in src) - I.loc = src.loc - return ..() diff --git a/code/modules/research/xenoarchaeology/tools/tools.dm b/code/modules/research/xenoarchaeology/tools/tools.dm deleted file mode 100644 index b17569da383..00000000000 --- a/code/modules/research/xenoarchaeology/tools/tools.dm +++ /dev/null @@ -1,24 +0,0 @@ - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Miscellaneous xenoarchaeology tools - -/obj/item/device/measuring_tape - name = "measuring tape" - desc = "A coiled metallic tape used to check dimensions and lengths." - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "measuring" - w_class = WEIGHT_CLASS_SMALL - -//todo: dig site tape - -/obj/item/weapon/storage/bag/fossils - name = "Fossil Satchel" - desc = "Transports delicate fossils in suspension so they don't break during transit." - icon = 'icons/obj/mining.dmi' - icon_state = "satchel" - slot_flags = SLOT_BELT | SLOT_POCKET - w_class = WEIGHT_CLASS_NORMAL - storage_slots = 50 - max_combined_w_class = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * ore.w_class - max_w_class = WEIGHT_CLASS_NORMAL - can_hold = list(/obj/item/weapon/fossil) diff --git a/code/modules/research/xenoarchaeology/tools/tools_anoscanner.dm b/code/modules/research/xenoarchaeology/tools/tools_anoscanner.dm deleted file mode 100644 index 4edf8f69d9a..00000000000 --- a/code/modules/research/xenoarchaeology/tools/tools_anoscanner.dm +++ /dev/null @@ -1,49 +0,0 @@ -/obj/item/device/ano_scanner - name = "Alden-Saraspova counter" - desc = "Aids in triangulation of exotic particles." - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "flashgun" - item_state = "lampgreen" - w_class = WEIGHT_CLASS_TINY - slot_flags = SLOT_BELT - var/nearest_artifact_id = "unknown" - var/nearest_artifact_distance = -1 - var/last_scan_time = 0 - var/scan_delay = 25 - -/obj/item/device/ano_scanner/initialize() - scan() - -/obj/item/device/ano_scanner/attack_self(var/mob/user as mob) - return src.interact(user) - -/obj/item/device/ano_scanner/interact(var/mob/user as mob) - var/message = "Background radiation levels detected." - if(world.time - last_scan_time >= scan_delay) - scan() - if(nearest_artifact_distance >= 0) - message = "Exotic energy detected on wavelength '[nearest_artifact_id]' in a radius of [nearest_artifact_distance]m" - else - message = "Scanning array is recharging." - - to_chat(user, "[message]") - -/obj/item/device/ano_scanner/proc/scan() - last_scan_time = world.time - nearest_artifact_distance = -1 - - var/turf/cur_turf = get_turf(src) - - if(master_controller) //Sanity check due to runtimes ~Z - for(var/turf/simulated/mineral/T in master_controller.artifact_spawning_turfs) - if(T.artifact_find) - if(T.z == cur_turf.z) - var/cur_dist = get_dist(cur_turf, T) * 2 - - if((nearest_artifact_distance < 0 || cur_dist < nearest_artifact_distance) && cur_dist <= T.artifact_find.artifact_detect_range) - nearest_artifact_distance = cur_dist + rand() * 2 - 1 - nearest_artifact_id = T.artifact_find.artifact_id - else - master_controller.artifact_spawning_turfs.Remove(T) - - cur_turf.visible_message("[src] clicks.") diff --git a/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm b/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm deleted file mode 100644 index 8c4ec23004c..00000000000 --- a/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm +++ /dev/null @@ -1,94 +0,0 @@ -//device to take core samples from mineral turfs - used for various types of analysis - -/obj/item/weapon/storage/box/samplebags - name = "sample bag box" - desc = "A box claiming to contain sample bags." - New() - for(var/i=0, i<7, i++) - var/obj/item/weapon/evidencebag/S = new(src) - S.name = "sample bag" - S.desc = "a bag for holding research samples." - ..() - return - -////////////////////////////////////////////////////////////////// - -/obj/item/device/core_sampler - name = "core sampler" - desc = "Used to extract geological core samples." - icon = 'icons/obj/device.dmi' - icon_state = "sampler0" - item_state = "screwdriver_brown" - w_class = WEIGHT_CLASS_TINY - //slot_flags = SLOT_BELT - var/sampled_turf = "" - var/num_stored_bags = 10 - var/obj/item/weapon/evidencebag/filled_bag - -/obj/item/device/core_sampler/examine(mob/user) - if(..(user, 2)) - to_chat(user, "Used to extract geological core samples - this one is [sampled_turf ? "full" : "empty"], and has [num_stored_bags] bag[num_stored_bags != 1 ? "s" : ""] remaining.") - -/obj/item/device/core_sampler/attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if(istype(W,/obj/item/weapon/evidencebag)) - if(num_stored_bags < 10) - qdel(W) - num_stored_bags += 1 - to_chat(user, "You insert the [W] into the core sampler.") - else - to_chat(user, "The core sampler can not fit any more bags!") - else - return ..() - -/obj/item/device/core_sampler/proc/sample_item(var/item_to_sample, var/mob/user as mob) - var/datum/geosample/geo_data - if(istype(item_to_sample, /turf/simulated/mineral)) - var/turf/simulated/mineral/T = item_to_sample - T.geologic_data.UpdateNearbyArtifactInfo(T) - geo_data = T.geologic_data - else if(istype(item_to_sample, /obj/item/weapon/ore)) - var/obj/item/weapon/ore/O = item_to_sample - geo_data = O.geologic_data - - if(geo_data) - if(filled_bag) - to_chat(user, "The core sampler is full!") - else if(num_stored_bags < 1) - to_chat(user, "The core sampler is out of sample bags!") - else - //create a new sample bag which we'll fill with rock samples - filled_bag = new /obj/item/weapon/evidencebag(src) - filled_bag.name = "sample bag" - filled_bag.desc = "a bag for holding research samples." - - icon_state = "sampler1" - num_stored_bags-- - - //put in a rock sliver - var/obj/item/weapon/rocksliver/R = new() - R.geological_data = geo_data - R.loc = filled_bag - - //update the sample bag - filled_bag.icon_state = "evidence" - var/image/I = image("icon"=R, "layer"=FLOAT_LAYER) - filled_bag.underlays += I - filled_bag.w_class = WEIGHT_CLASS_TINY - - to_chat(user, "You take a core sample of the [item_to_sample].") - else - to_chat(user, "You are unable to take a sample of [item_to_sample].") - -/obj/item/device/core_sampler/attack_self() - if(filled_bag) - to_chat(usr, "You eject the full sample bag.") - var/success = 0 - if(istype(src.loc, /mob)) - var/mob/M = src.loc - success = M.put_in_inactive_hand(filled_bag) - if(!success) - filled_bag.loc = get_turf(src) - filled_bag = null - icon_state = "sampler0" - else - to_chat(usr, "The core sampler is empty.") diff --git a/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm b/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm deleted file mode 100644 index ad195a0a141..00000000000 --- a/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm +++ /dev/null @@ -1,130 +0,0 @@ - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Depth scanner - scans rock turfs / boulders and tells players if there is anything interesting inside, logs all finds + coordinates + times - -//also known as the x-ray diffractor -/obj/item/device/depth_scanner - name = "depth analysis scanner" - desc = "Used to check spatial depth and density of rock outcroppings." - icon = 'icons/obj/pda.dmi' - icon_state = "crap" - item_state = "analyzer" - w_class = WEIGHT_CLASS_TINY - slot_flags = SLOT_BELT - var/list/positive_locations = list() - var/datum/depth_scan/current - -/datum/depth_scan - var/time = "" - var/coords = "" - var/depth = 0 - var/clearance = 0 - var/record_index = 1 - var/dissonance_spread = 1 - var/material = "unknown" - -/obj/item/device/depth_scanner/proc/scan_atom(var/mob/user, var/atom/A) - user.visible_message("[user] scans [A], the air around them humming gently.") - if(istype(A,/turf/simulated/mineral)) - var/turf/simulated/mineral/M = A - if((M.finds && M.finds.len) || M.artifact_find) - - //create a new scanlog entry - var/datum/depth_scan/D = new() - D.coords = "[M.x].[rand(0,9)]:[M.y].[rand(0,9)]:[10 * M.z].[rand(0,9)]" - D.time = worldtime2text() - D.record_index = positive_locations.len + 1 - D.material = M.mineralName ? M.mineralName : "Rock" - - //find the first artifact and store it - if(M.finds.len) - var/datum/find/F = M.finds[1] - D.depth = F.excavation_required * 2 //0-100% and 0-200cm - D.clearance = F.clearance_range * 2 - D.material = get_responsive_reagent(F.find_type) - - positive_locations.Add(D) - - for(var/mob/L in range(src, 1)) - to_chat(L, "[bicon(src)] [src] pings.") - - else if(istype(A,/obj/structure/boulder)) - var/obj/structure/boulder/B = A - if(B.artifact_find) - //create a new scanlog entry - var/datum/depth_scan/D = new() - D.coords = "[10 * B.x].[rand(0,9)]:[10 * B.y].[rand(0,9)]:[10 * B.z].[rand(0,9)]" - D.time = worldtime2text() - D.record_index = positive_locations.len + 1 - - //these values are arbitrary - D.depth = rand(75,100) - D.clearance = rand(5,25) - D.dissonance_spread = rand(750,2500) / 100 - - positive_locations.Add(D) - - for(var/mob/L in range(src, 1)) - to_chat(L, "[bicon(src)] [src] pings [pick("madly","wildly","excitedly","crazily")]!.") - -/obj/item/device/depth_scanner/attack_self(var/mob/user as mob) - return src.interact(user) - -/obj/item/device/depth_scanner/interact(var/mob/user as mob) - var/dat = "Co-ordinates with positive matches
    " - dat += "== Clear all ==
    " - if(current) - dat += "Time: [current.time]
    " - dat += "Coords: [current.coords]
    " - dat += "Anomaly depth: [current.depth] cm
    " - dat += "Clearance above anomaly depth: [current.clearance] cm
    " - dat += "Dissonance spread: [current.dissonance_spread]
    " - var/index = responsive_carriers.Find(current.material) - if(index > 0 && index <= finds_as_strings.len) - dat += "Anomaly material: [finds_as_strings[index]]
    " - else - dat += "Anomaly material: Unknown
    " - dat += "clear entry
    " - else - dat += "Select an entry from the list
    " - dat += "
    " - dat += "
    " - dat += "
    " - dat += "
    " - dat += "
    " - if(positive_locations.len) - for(var/index=1, index<=positive_locations.len, index++) - var/datum/depth_scan/D = positive_locations[index] - dat += "[D.time], coords: [D.coords]
    " - else - dat += "No entries recorded." - dat += "
    " - dat += "Refresh
    " - dat += "Close
    " - user << browse(dat,"window=depth_scanner;size=300x500") - onclose(user, "depth_scanner") - -/obj/item/device/depth_scanner/Topic(href, href_list) - ..() - usr.set_machine(src) - - if(href_list["select"]) - var/index = text2num(href_list["select"]) - if(index && index <= positive_locations.len) - current = positive_locations[index] - else if(href_list["clear"]) - var/index = text2num(href_list["clear"]) - if(index) - if(index <= positive_locations.len) - var/datum/depth_scan/D = positive_locations[index] - positive_locations.Remove(D) - qdel(D) - else - //GC will hopefully pick them up before too long - positive_locations = list() - qdel(current) - else if(href_list["close"]) - usr.unset_machine() - usr << browse(null, "window=depth_scanner") - - updateSelfDialog() diff --git a/code/modules/research/xenoarchaeology/tools/tools_locater.dm b/code/modules/research/xenoarchaeology/tools/tools_locater.dm deleted file mode 100644 index ee985f232eb..00000000000 --- a/code/modules/research/xenoarchaeology/tools/tools_locater.dm +++ /dev/null @@ -1,97 +0,0 @@ - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// GPS Locater - locks into a radio frequency and tracks it - -/obj/item/device/beacon_locator - name = "locater device" - desc = "Used to scan and locate signals on a particular frequency according ." - icon = 'icons/obj/device.dmi' - icon_state = "pinoff" //pinonfar, pinonmedium, pinonclose, pinondirect, pinonnull - item_state = "electronic" - var/frequency = 1459 - var/scan_ticks = 0 - var/obj/item/device/radio/target_radio - -/obj/item/device/beacon_locator/New() - ..() - processing_objects.Add(src) - -/obj/item/device/beacon_locator/Destroy() - processing_objects.Remove(src) - return ..() - -/obj/item/device/beacon_locator/process() - if(target_radio) - dir = get_dir(src,target_radio) - switch(get_dist(src,target_radio)) - if(0 to 3) - icon_state = "pinondirect" - if(4 to 10) - icon_state = "pinonclose" - if(11 to 30) - icon_state = "pinonmedium" - if(31 to INFINITY) - icon_state = "pinonfar" - else - if(scan_ticks) - icon_state = "pinonnull" - scan_ticks++ - if(prob(scan_ticks * 10)) - spawn(0) - //set background = 1 - if(processing_objects.Find(src)) - //scan radios in the world to try and find one - var/cur_dist = 999 - for(var/obj/item/device/radio/beacon/R in world) - if(R.z == src.z && R.frequency == src.frequency) - var/check_dist = get_dist(src,R) - if(check_dist < cur_dist) - cur_dist = check_dist - target_radio = R - - scan_ticks = 0 - var/turf/T = get_turf(src) - if(target_radio) - T.visible_message("[bicon(src)] [src] [pick("chirps","chirrups","cheeps")] happily.") - else - T.visible_message("[bicon(src)] [src] [pick("chirps","chirrups","cheeps")] sadly.") - else - icon_state = "pinoff" - -/obj/item/device/beacon_locator/attack_self(var/mob/user as mob) - return src.interact(user) - -/obj/item/device/beacon_locator/interact(var/mob/user as mob) - var/dat = "Radio frequency tracker
    " - dat += {" - Reset tracker
    - Frequency: - - - - - [format_frequency(frequency)] - + - +
    - "} - - dat += "Close
    " - user << browse(dat,"window=locater;size=300x150") - onclose(user, "locater") - -/obj/item/device/beacon_locator/Topic(href, href_list) - ..() - usr.set_machine(src) - - if(href_list["reset_tracking"]) - scan_ticks = 1 - target_radio = null - else if(href_list["freq"]) - var/new_frequency = (frequency + text2num(href_list["freq"])) - if(frequency < RADIO_LOW_FREQ || frequency > RADIO_HIGH_FREQ) - new_frequency = sanitize_frequency(new_frequency, 1499) - frequency = new_frequency - - else if(href_list["close"]) - usr.unset_machine() - usr << browse(null, "window=locater") - - updateSelfDialog() diff --git a/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm b/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm deleted file mode 100644 index ec00023ab29..00000000000 --- a/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm +++ /dev/null @@ -1,148 +0,0 @@ - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Excavation pickaxes - sorted in order of delicacy. Players will have to choose the right one for each part of excavation. - -/obj/item/weapon/pickaxe/brush - name = "brush" - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "pick_brush" - item_state = "syringe_0" - digspeed = 20 - desc = "Thick metallic wires for clearing away dust and loose scree (1 centimetre excavation depth)." - excavation_amount = 0.5 - digsound = list('sound/weapons/thudswoosh.ogg') - drill_verb = "brushing" - w_class = WEIGHT_CLASS_SMALL - -/obj/item/weapon/pickaxe/one_pick - name = "1/6 pick" - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "pick1" - item_state = "syringe_0" - digspeed = 20 - desc = "A miniature excavation tool for precise digging (2 centimetre excavation depth)." - excavation_amount = 1 - digsound = list('sound/items/Screwdriver.ogg') - drill_verb = "delicately picking" - w_class = WEIGHT_CLASS_SMALL - -/obj/item/weapon/pickaxe/two_pick - name = "1/3 pick" - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "pick2" - item_state = "syringe_0" - digspeed = 20 - desc = "A miniature excavation tool for precise digging (4 centimetre excavation depth)." - excavation_amount = 2 - digsound = list('sound/items/Screwdriver.ogg') - drill_verb = "delicately picking" - w_class = WEIGHT_CLASS_SMALL - -/obj/item/weapon/pickaxe/three_pick - name = "1/2 pick" - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "pick3" - item_state = "syringe_0" - digspeed = 20 - desc = "A miniature excavation tool for precise digging (6 centimetre excavation depth)." - excavation_amount = 3 - digsound = list('sound/items/Screwdriver.ogg') - drill_verb = "delicately picking" - w_class = WEIGHT_CLASS_SMALL - -/obj/item/weapon/pickaxe/four_pick - name = "2/3 pick" - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "pick4" - item_state = "syringe_0" - digspeed = 20 - desc = "A miniature excavation tool for precise digging (8 centimetre excavation depth)." - excavation_amount = 4 - digsound = list('sound/items/Screwdriver.ogg') - drill_verb = "delicately picking" - w_class = WEIGHT_CLASS_SMALL - -/obj/item/weapon/pickaxe/five_pick - name = "5/6 pick" - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "pick5" - item_state = "syringe_0" - digspeed = 20 - desc = "A miniature excavation tool for precise digging (10 centimetre excavation depth)." - excavation_amount = 5 - digsound = list('sound/items/Screwdriver.ogg') - drill_verb = "delicately picking" - w_class = WEIGHT_CLASS_SMALL - -/obj/item/weapon/pickaxe/six_pick - name = "1/1 pick" - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "pick6" - item_state = "syringe_0" - digspeed = 20 - desc = "A miniature excavation tool for precise digging (12 centimetre excavation depth)." - excavation_amount = 6 - digsound = list('sound/items/Screwdriver.ogg') - drill_verb = "delicately picking" - w_class = WEIGHT_CLASS_SMALL - -/obj/item/weapon/pickaxe/hand - name = "hand pickaxe" - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "pick_hand" - item_state = "syringe_0" - digspeed = 30 - desc = "A smaller, more precise version of the pickaxe (30 centimetre excavation depth)." - excavation_amount = 15 - digsound = list('sound/items/Crowbar.ogg') - drill_verb = "clearing" - w_class = WEIGHT_CLASS_NORMAL - -/obj/item/weapon/pickaxe/robotic - name = "robotic pickaxe" - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "pick_robotic" - item_state = "syringe_0" - digspeed = 30 - desc = "An adjustable pickaxe designed to be resized internally as a robotic module.." - excavation_amount = 15 - var/possible_excavation_amounts = list(1, 2, 4, 6, 8, 10, 12, 30) - - attack_self(var/mob/user as mob) - var/N = input("Excavation amount (in centimeters):", "[src]") as null|anything in possible_excavation_amounts - - if(N) - excavation_amount = N / 2 - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Pack for holding pickaxes - -/obj/item/weapon/storage/box/excavation - name = "excavation pick set" - icon = 'icons/obj/storage.dmi' - icon_state = "excavation" - desc = "A set of picks for excavation." - item_state = "syringe_kit" - foldable = /obj/item/stack/sheet/cardboard //BubbleWrap - storage_slots = 7 - w_class = WEIGHT_CLASS_SMALL - can_hold = list(/obj/item/weapon/pickaxe/brush,\ - /obj/item/weapon/pickaxe/one_pick,\ - /obj/item/weapon/pickaxe/two_pick,\ - /obj/item/weapon/pickaxe/three_pick,\ - /obj/item/weapon/pickaxe/four_pick,\ - /obj/item/weapon/pickaxe/five_pick,\ - /obj/item/weapon/pickaxe/six_pick) - max_combined_w_class = 17 - max_w_class = WEIGHT_CLASS_BULKY - use_to_pickup = 1 // for picking up broken bulbs, not that most people will try - -/obj/item/weapon/storage/box/excavation/New() - ..() - new /obj/item/weapon/pickaxe/brush(src) - new /obj/item/weapon/pickaxe/one_pick(src) - new /obj/item/weapon/pickaxe/two_pick(src) - new /obj/item/weapon/pickaxe/three_pick(src) - new /obj/item/weapon/pickaxe/four_pick(src) - new /obj/item/weapon/pickaxe/five_pick(src) - new /obj/item/weapon/pickaxe/six_pick(src) diff --git a/code/modules/scripting/AST/Operators/Binary Operators.dm b/code/modules/scripting/AST/Operators/Binary Operators.dm index ccbccc53323..8781b6dd416 100644 --- a/code/modules/scripting/AST/Operators/Binary Operators.dm +++ b/code/modules/scripting/AST/Operators/Binary Operators.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - /* File: Binary Operators */ diff --git a/code/modules/scripting/Implementations/Telecomms.dm b/code/modules/scripting/Implementations/Telecomms.dm index 2cc7cae3512..0a6432e6d48 100644 --- a/code/modules/scripting/Implementations/Telecomms.dm +++ b/code/modules/scripting/Implementations/Telecomms.dm @@ -1,6 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - - /* --- Traffic Control Scripting Language --- */ // Nanotrasen TCS Language - Made by Doohl diff --git a/code/modules/scripting/Parser/Keywords.dm b/code/modules/scripting/Parser/Keywords.dm index 4c186160838..cef9a065213 100644 --- a/code/modules/scripting/Parser/Keywords.dm +++ b/code/modules/scripting/Parser/Keywords.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - /* File: Keywords */ diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 3d459dd08a4..a9b44fbffb3 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -264,7 +264,7 @@ priority_announcement.Announce("The Emergency Shuttle has left the station. Estimate [timeLeft(600)] minutes until the shuttle docks at Central Command.") for(var/mob/M in player_list) if(!isnewplayer(M) && !M.client.karma_spent && !(M.client.ckey in karma_spenders) && !M.get_preference(DISABLE_KARMA_REMINDER)) - to_chat(M, "You have not yet spent your karma for the round; was there a player worthy of receiving your reward? Look under OOC tab, Award Karma.") + to_chat(M, "You have not yet spent your karma for the round; was there a player worthy of receiving your reward? Look under Special Verbs tab, Award Karma.") if(SHUTTLE_ESCAPE) if(time_left <= 0) diff --git a/code/modules/space_management/level_check.dm b/code/modules/space_management/level_check.dm index 391f5968c22..a9abdaa5472 100644 --- a/code/modules/space_management/level_check.dm +++ b/code/modules/space_management/level_check.dm @@ -4,4 +4,4 @@ // For expansion later /proc/atoms_share_level(atom/A, atom/B) - return A.z == B.z + return A && B && A.z == B.z diff --git a/code/modules/spacepods/spacepod.dm b/code/modules/spacepods/spacepod.dm index c5dcf75c69a..e2a21f507fa 100644 --- a/code/modules/spacepods/spacepod.dm +++ b/code/modules/spacepods/spacepod.dm @@ -284,7 +284,7 @@ return var/sound/S = sound(mysound) S.wait = 0 //No queue - S.channel = 0 //Any channel + S.channel = open_sound_channel() S.volume = 50 for(var/mob/M in passengers | pilot) M << S @@ -377,8 +377,7 @@ user.visible_message(user, "[user] is drilling through the [src]'s lock!", "You start drilling through the [src]'s lock!") if(do_after(user, 100 * W.toolspeed, target = src)) - qdel(equipment_system.lock_system) - equipment_system.lock_system = null + QDEL_NULL(equipment_system.lock_system) user.visible_message(user, "[user] has destroyed the [src]'s lock!", "You destroy the [src]'s lock!") else diff --git a/code/modules/store/items.dm b/code/modules/store/items.dm index 4eefa2847a1..f660efc0d16 100644 --- a/code/modules/store/items.dm +++ b/code/modules/store/items.dm @@ -96,14 +96,20 @@ /datum/storeitem/violin name = "space violin" desc = "A wooden musical instrument with four strings and a bow. \"The devil went down to space, he was looking for an assistant to grief.\"" - typepath = /obj/item/device/violin + typepath = /obj/item/device/instrument/violin cost = 500 /datum/storeitem/guitar name = "guitar" desc = "It's made of wood and has bronze strings." - typepath = /obj/item/device/guitar - cost = 700 + typepath = /obj/item/device/instrument/guitar + cost = 500 + +/datum/storeitem/eguitar + name = "electric guitar" + desc = "Makes all your shredding needs possible." + typepath = /obj/item/device/instrument/eguitar + cost = 500 /datum/storeitem/baby name = "Toddler" diff --git a/code/modules/surgery/bones.dm b/code/modules/surgery/bones.dm index 74fd2c7c3d4..a7aaa538eed 100644 --- a/code/modules/surgery/bones.dm +++ b/code/modules/surgery/bones.dm @@ -101,7 +101,7 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message(" [user]'s hand slips, damaging the bone in [target]'s [affected.name] with \the [tool]!" , \ " Your hand slips, damaging the bone in [target]'s [affected.name] with \the [tool]!") - affected.createwound(BRUISE, 5) + affected.take_damage(5) return 0 /datum/surgery_step/mend_skull @@ -135,7 +135,7 @@ user.visible_message("[user]'s hand slips, damaging [target]'s face with \the [tool]!" , \ "Your hand slips, damaging [target]'s face with \the [tool]!") var/obj/item/organ/external/head/h = affected - h.createwound(BRUISE, 10) + h.take_damage(10) h.disfigured = 1 return 0 diff --git a/code/modules/surgery/implant.dm b/code/modules/surgery/cavity_implant.dm similarity index 52% rename from code/modules/surgery/implant.dm rename to code/modules/surgery/cavity_implant.dm index 498976c4635..9f5c2649980 100644 --- a/code/modules/surgery/implant.dm +++ b/code/modules/surgery/cavity_implant.dm @@ -1,10 +1,3 @@ -//Procedures in this file: Putting items in body cavity. Implant removal. Items removal. - - -////////////////////////////////////////////////////////////////// -// ITEM PLACEMENT SURGERY // -////////////////////////////////////////////////////////////////// - /datum/surgery/cavity_implant name = "Cavity Implant/Removal" steps = list(/datum/surgery_step/generic/cut_open,/datum/surgery_step/generic/clamp_bleeders, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/open_encased/saw, @@ -68,7 +61,7 @@ var/obj/item/organ/external/chest/affected = target.get_organ(target_zone) user.visible_message(" [user]'s hand slips, scraping around inside [target]'s [affected.name] with \the [tool]!", \ " Your hand slips, scraping around inside [target]'s [affected.name] with \the [tool]!") - affected.createwound(CUT, 20) + affected.take_damage(20) /datum/surgery_step/cavity/make_space name = "make cavity space" @@ -195,202 +188,18 @@ " You put \the [tool] inside [target]'s [get_cavity(affected)] cavity." ) if((tool.w_class > get_max_wclass(affected)/2 && prob(50) && !(affected.status & ORGAN_ROBOT))) to_chat(user, " You tear some vessels trying to fit the object in the cavity.") - var/datum/wound/internal_bleeding/I = new () - affected.wounds += I + affected.internal_bleeding = TRUE affected.owner.custom_pain("You feel something rip in your [affected.name]!", 1) user.drop_item() - target.internal_organs += tool + affected.hidden = tool tool.forceMove(affected) return 1 else if(IC) user.visible_message("[user] pulls [IC] out of [target]'s [target_zone]!", "You pull [IC] out of [target]'s [target_zone].") user.put_in_hands(IC) - target.internal_organs -= IC + affected.hidden = null return 1 else to_chat(user, "You don't find anything in [target]'s [target_zone].") - return 0 - - -////////////////////////////////////////////////////////////////// -// IMPLANT/ITEM REMOVAL SURGERY // -////////////////////////////////////////////////////////////////// - -/datum/surgery/cavity_implant_rem - name = "Implant Removal" - steps = list(/datum/surgery_step/generic/cut_open, /datum/surgery_step/generic/clamp_bleeders, /datum/surgery_step/generic/retract_skin,/datum/surgery_step/cavity/implant_removal,/datum/surgery_step/cavity/close_space,/datum/surgery_step/generic/cauterize/) - possible_locs = list("chest")//head is for borers..i can put it elsewhere - -/datum/surgery/cavity_implant_rem/synth - name = "Implant Removal" - steps = list(/datum/surgery_step/robotics/external/unscrew_hatch,/datum/surgery_step/robotics/external/open_hatch,/datum/surgery_step/cavity/implant_removal,/datum/surgery_step/robotics/external/close_hatch) - possible_locs = list("chest")//head is for borers..i can put it elsewhere - -/datum/surgery/cavity_implant_rem/can_start(mob/user, mob/living/carbon/human/target) - if(!istype(target)) - return 0 - var/obj/item/organ/external/affected = target.get_organ(user.zone_sel.selecting) - if(!affected) - return 0 - if(affected.status & ORGAN_ROBOT) - return 0 - return 1 - -/datum/surgery/cavity_implant_rem/synth/can_start(mob/user, mob/living/carbon/human/target) - if(!istype(target)) - return 0 - var/obj/item/organ/external/affected = target.get_organ(user.zone_sel.selecting) - if(!affected) - return 0 - if(!(affected.status & ORGAN_ROBOT)) - return 0 - - return 1 - -/datum/surgery_step/cavity/implant_removal - name = "extract implant" - allowed_tools = list( - /obj/item/weapon/hemostat = 100, \ - /obj/item/weapon/wirecutters = 75, \ - /obj/item/weapon/kitchen/utensil/fork = 20 - ) - var/obj/item/weapon/implant/I = null - time = 64 - -/datum/surgery_step/cavity/implant_removal/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) - var/obj/item/organ/external/affected = target.get_organ(target_zone) - I = locate(/obj/item/weapon/implant) in target - user.visible_message("[user] starts poking around inside [target]'s [affected.name] with \the [tool].", \ - "You start poking around inside [target]'s [affected.name] with \the [tool]." ) - target.custom_pain("The pain in your [affected.name] is living hell!",1) - ..() - -/datum/surgery_step/cavity/implant_removal/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) - var/obj/item/organ/external/affected = target.get_organ(target_zone) - I = locate(/obj/item/weapon/implant) in target - if(I && (target_zone == "chest")) //implant removal only works on the chest. - user.visible_message("[user] takes something out of [target]'s [affected.name] with \the [tool].", \ - "You take [I] out of [target]'s [affected.name]s with \the [tool]." ) - - I.removed(target) - - var/obj/item/weapon/implantcase/case - - if(istype(user.get_item_by_slot(slot_l_hand), /obj/item/weapon/implantcase)) - case = user.get_item_by_slot(slot_l_hand) - else if(istype(user.get_item_by_slot(slot_r_hand), /obj/item/weapon/implantcase)) - case = user.get_item_by_slot(slot_r_hand) - else - case = locate(/obj/item/weapon/implantcase) in get_turf(target) - - if(case && !case.imp) - case.imp = I - I.loc = case - case.update_icon() - user.visible_message("[user] places [I] into [case]!", "You place [I] into [case].") - else - qdel(I) - return 1 - else - user.visible_message(" [user] could not find anything inside [target]'s [affected.name], and pulls \the [tool] out.", \ - "You could not find anything inside [target]'s [affected.name].") - return 1 - -/datum/surgery_step/cavity/implant_removal/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) - ..() - var/obj/item/organ/external/chest/affected = target.get_organ(target_zone) - if(affected.implants.len) - var/fail_prob = 10 - fail_prob += 100 - tool_quality(tool) - if(prob(fail_prob)) - var/obj/item/weapon/implant/imp = affected.implants[1] - user.visible_message(" Something beeps inside [target]'s [affected.name]!") - playsound(imp.loc, 'sound/items/countdown.ogg', 75, 1, -3) - spawn(25) - imp.activate() - return 0 - - -////////////////////////////////////////////////////////////////// -// EMBEDDED ITEM REOMOVAL // -////////////////////////////////////////////////////////////////// - -/datum/surgery/embedded_removal - name = "Removal of Embedded Objects" - steps = list(/datum/surgery_step/generic/cut_open, /datum/surgery_step/generic/clamp_bleeders, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/remove_object, /datum/surgery_step/generic/cauterize) - possible_locs = list("r_arm","l_arm","r_leg","l_leg","r_hand","r_foot","l_hand","l_foot","groin","chest","head") - -/datum/surgery/embedded_removal/synth - steps = list(/datum/surgery_step/robotics/external/unscrew_hatch,/datum/surgery_step/robotics/external/open_hatch, /datum/surgery_step/remove_object, /datum/surgery_step/robotics/external/close_hatch) - possible_locs = list("r_arm","l_arm","r_leg","l_leg","r_hand","r_foot","l_hand","l_foot","groin","chest","head") - - -/datum/surgery/embedded_removal/can_start(mob/user, mob/living/carbon/human/target) - if(!istype(target)) - return 0 - var/obj/item/organ/external/affected = target.get_organ(user.zone_sel.selecting) - if(!affected) - return 0 - if(affected.status & ORGAN_ROBOT) - return 0 - return 1 - -/datum/surgery/embedded_removal/synth/can_start(mob/user, mob/living/carbon/human/target) - if(!istype(target)) - return 0 - var/obj/item/organ/external/affected = target.get_organ(user.zone_sel.selecting) - if(!affected) - return 0 - if(!(affected.status & ORGAN_ROBOT)) - return 0 - return 1 - -/datum/surgery_step/remove_object - name = "remove embedded objects" - time = 32 - allowed_tools = list( - /obj/item/weapon/scalpel/laser/manager = 100, \ - /obj/item/weapon/hemostat = 100, \ - /obj/item/stack/cable_coil = 75, \ - /obj/item/device/assembly/mousetrap = 20 - ) - var/obj/item/organ/external/L = null - - -/datum/surgery_step/remove_object/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) - L = target.get_organ(target_zone) - if(L) - user.visible_message("[user] looks for objects embedded in [target]'s [target_zone].", "You look for objects embedded in [target]'s [target_zone]...") - else - user.visible_message("[user] looks for [target]'s [target_zone].", "You look for [target]'s [target_zone]...") - - -/datum/surgery_step/remove_object/end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) - if(L) - if(ishuman(target)) - var/mob/living/carbon/human/H = target - var/objects = 0 - for(var/obj/item/I in L.implants) - if(!istype(I,/obj/item/weapon/implant)) - objects++ - I.forceMove(get_turf(H)) - L.implants -= I - - //Handle possessive brain borers. - if(H.has_brain_worms() && target_zone == "head")//remove worms outside the loop - var/mob/living/simple_animal/borer/worm = H.has_brain_worms() - if(worm.controlling) - target.release_control() - worm.detach() - worm.leave_host() - user.visible_message("a slug like creature wiggles out of [H]'s [target_zone]!") - - if(objects > 0) - user.visible_message("[user] sucessfully removes [objects] objects from [H]'s [L.limb_name]!", "You sucessfully remove [objects] objects from [H]'s [L.limb_name].") - else - to_chat(user, "You find no objects embedded in [H]'s [L.limb_name]!") - else - to_chat(user, "You can't find [target]'s [target_zone], let alone any objects embedded in it!") - - return 1 + return 0 \ No newline at end of file diff --git a/code/modules/surgery/encased.dm b/code/modules/surgery/encased.dm index fbcd9a21c69..4d46bb69d75 100644 --- a/code/modules/surgery/encased.dm +++ b/code/modules/surgery/encased.dm @@ -61,7 +61,7 @@ user.visible_message(" [user]'s hand slips, cracking [target]'s [affected.encased] with \the [tool]!" , \ " Your hand slips, cracking [target]'s [affected.encased] with \the [tool]!" ) - affected.createwound(CUT, 20) + affected.take_damage(20) affected.fracture() return 0 @@ -113,7 +113,7 @@ var/self_msg = " Your hand slips, cracking [target]'s [affected.encased]!" user.visible_message(msg, self_msg) - affected.createwound(BRUISE, 20) + affected.take_damage(20) affected.fracture() return 0 @@ -164,7 +164,7 @@ var/self_msg = " Your hand slips, bending [target]'s [affected.encased] the wrong way!" user.visible_message(msg, self_msg) - affected.createwound(BRUISE, 20) + affected.take_damage(20) affected.fracture() return 0 diff --git a/code/modules/surgery/face.dm b/code/modules/surgery/face.dm index c17f318e748..b5c2bfa013c 100644 --- a/code/modules/surgery/face.dm +++ b/code/modules/surgery/face.dm @@ -50,7 +50,7 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message(" [user]'s hand slips, slicing [target]'s throat wth \the [tool]!" , \ " Your hand slips, slicing [target]'s throat wth \the [tool]!" ) - affected.createwound(CUT, 60) + affected.take_damage(60) target.AdjustLoseBreath(4) return 0 @@ -106,7 +106,7 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message(" [user]'s hand slips, tearing skin on [target]'s face with \the [tool]!", \ " Your hand slips, tearing skin on [target]'s face with \the [tool]!") - target.apply_damage(10, BRUTE, affected, sharp=1, edge=1) + target.apply_damage(10, BRUTE, affected, sharp = 1) return 0 /datum/surgery_step/face/cauterize @@ -131,7 +131,6 @@ user.visible_message(" [user] cauterizes the incision on [target]'s face and neck with \the [tool].", \ " You cauterize the incision on [target]'s face and neck with \the [tool].") affected.open = 0 - affected.status &= ~ORGAN_BLEEDING var/obj/item/organ/external/head/h = affected h.disfigured = 0 h.update_icon() diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index 300f6a88918..52c2c89ff0a 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -12,8 +12,6 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) if(affected == null) return 0 - if(affected.status & ORGAN_DESTROYED) - return 0 if(affected.status & ORGAN_ROBOT) return 0 return 1 @@ -47,14 +45,13 @@ user.visible_message(" [user] has made an incision on [target]'s [affected.name] with \the [tool].", \ " You have made an incision on [target]'s [affected.name] with \the [tool].",) affected.open = 1 - affected.status |= ORGAN_BLEEDING return 1 /datum/surgery_step/generic/cut_open/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message(" [user]'s hand slips, slicing open [target]'s [affected.name] in a wrong spot with \the [tool]!", \ " Your hand slips, slicing open [target]'s [affected.name] in a wrong spot with \the [tool]!") - affected.createwound(CUT, 10) + affected.take_damage(10) return 0 /datum/surgery_step/generic/clamp_bleeders @@ -81,7 +78,6 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message(" [user] clamps bleeders in [target]'s [affected.name] with \the [tool].", \ " You clamp bleeders in [target]'s [affected.name] with \the [tool].") - affected.clamp() spread_germs_to_organ(affected, user, tool) return 1 @@ -89,7 +85,7 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message(" [user]'s hand slips, tearing blood vessals and causing massive bleeding in [target]'s [affected.name] with \the [tool]!", \ " Your hand slips, tearing blood vessels and causing massive bleeding in [target]'s [affected.name] with \the [tool]!",) - affected.createwound(CUT, 10) + affected.take_damage(10) return 0 /datum/surgery_step/generic/retract_skin @@ -143,7 +139,7 @@ msg = " [user]'s hand slips, damaging several organs [target]'s lower abdomen with \the [tool]" self_msg = " Your hand slips, damaging several organs [target]'s lower abdomen with \the [tool]!" user.visible_message(msg, self_msg) - target.apply_damage(12, BRUTE, affected, sharp=1) + target.apply_damage(12, BRUTE, affected, sharp = 1) return 0 /datum/surgery_step/generic/cauterize @@ -173,7 +169,6 @@ " You cauterize the incision on [target]'s [affected.name] with \the [tool].") affected.open = 0 affected.germ_level = 0 - affected.status &= ~ORGAN_BLEEDING return 1 /datum/surgery_step/generic/cauterize/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) @@ -218,8 +213,6 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) if(affected == null) return 0 - if(affected.status & ORGAN_DESTROYED) - return 0 return !affected.cannot_amputate /datum/surgery_step/generic/amputate/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) @@ -236,7 +229,7 @@ add_logs(user, target, "surgically removed [affected.name] from", addition="INTENT: [uppertext(user.a_intent)]")//log it - var/atom/movable/thing = affected.droplimb(1,DROPLIMB_EDGE) + var/atom/movable/thing = affected.droplimb(1,DROPLIMB_SHARP) if(istype(thing,/obj/item)) user.put_in_hands(thing) return 1 @@ -245,6 +238,6 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message(" [user]'s hand slips, sawing through the bone in [target]'s [affected.name] with \the [tool]!", \ " Your hand slips, sawwing through the bone in [target]'s [affected.name] with \the [tool]!") - affected.createwound(CUT, 30) + affected.take_damage(30) affected.fracture() return 0 diff --git a/code/modules/surgery/helpers.dm b/code/modules/surgery/helpers.dm index 1991ce8ec21..afa0429bdc0 100644 --- a/code/modules/surgery/helpers.dm +++ b/code/modules/surgery/helpers.dm @@ -73,7 +73,6 @@ if(affecting) affecting.open = 0 affecting.germ_level = 0 - affecting.status &= ~ORGAN_BLEEDING qdel(current_surgery) else if(current_surgery.can_cancel) to_chat(user, "You need to hold a cautery in inactive hand to stop [M]'s surgery!") diff --git a/code/modules/surgery/implant_removal.dm b/code/modules/surgery/implant_removal.dm new file mode 100644 index 00000000000..7b04be81e1d --- /dev/null +++ b/code/modules/surgery/implant_removal.dm @@ -0,0 +1,78 @@ +////////////////////////////////////////////////////////////////// +// IMPLANT REMOVAL SURGERY // +////////////////////////////////////////////////////////////////// + +/datum/surgery/implant_removal + name = "Implant Removal" + steps = list(/datum/surgery_step/generic/cut_open, /datum/surgery_step/generic/clamp_bleeders, /datum/surgery_step/generic/retract_skin,/datum/surgery_step/extract_implant,/datum/surgery_step/generic/cauterize) + possible_locs = list("chest") + +/datum/surgery/implant_removal/synth + name = "Implant Removal" + steps = list(/datum/surgery_step/robotics/external/unscrew_hatch,/datum/surgery_step/robotics/external/open_hatch,/datum/surgery_step/extract_implant,/datum/surgery_step/robotics/external/close_hatch) + possible_locs = list("chest") + +/datum/surgery/implant_removal/can_start(mob/user, mob/living/carbon/human/target) + if(!istype(target)) + return 0 + var/obj/item/organ/external/affected = target.get_organ(user.zone_sel.selecting) + if(!affected) + return 0 + if(affected.status & ORGAN_ROBOT) + return 0 + return 1 + +/datum/surgery/implant_removal/synth/can_start(mob/user, mob/living/carbon/human/target) + if(!istype(target)) + return 0 + var/obj/item/organ/external/affected = target.get_organ(user.zone_sel.selecting) + if(!affected) + return 0 + if(!(affected.status & ORGAN_ROBOT)) + return 0 + + return 1 + +/datum/surgery_step/extract_implant + name = "extract implant" + allowed_tools = list(/obj/item/weapon/hemostat = 100, /obj/item/weapon/crowbar = 65) + time = 64 + var/obj/item/weapon/implant/I = null + +/datum/surgery_step/extract_implant/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) + var/obj/item/organ/external/affected = target.get_organ(target_zone) + I = locate(/obj/item/weapon/implant) in target + user.visible_message("[user] starts poking around inside [target]'s [affected.name] with \the [tool].", \ + "You start poking around inside [target]'s [affected.name] with \the [tool]." ) + target.custom_pain("The pain in your [affected.name] is living hell!",1) + ..() + +/datum/surgery_step/extract_implant/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) + var/obj/item/organ/external/affected = target.get_organ(target_zone) + I = locate(/obj/item/weapon/implant) in target + if(I && (target_zone == "chest")) //implant removal only works on the chest. + user.visible_message("[user] takes something out of [target]'s [affected.name] with \the [tool].", \ + "You take [I] out of [target]'s [affected.name]s with \the [tool]." ) + + I.removed(target) + + var/obj/item/weapon/implantcase/case + + if(istype(user.get_item_by_slot(slot_l_hand), /obj/item/weapon/implantcase)) + case = user.get_item_by_slot(slot_l_hand) + else if(istype(user.get_item_by_slot(slot_r_hand), /obj/item/weapon/implantcase)) + case = user.get_item_by_slot(slot_r_hand) + else + case = locate(/obj/item/weapon/implantcase) in get_turf(target) + + if(case && !case.imp) + case.imp = I + I.forceMove(case) + case.update_icon() + user.visible_message("[user] places [I] into [case]!", "You place [I] into [case].") + else + qdel(I) + else + user.visible_message(" [user] could not find anything inside [target]'s [affected.name], and pulls \the [tool] out.", \ + "You could not find anything inside [target]'s [affected.name].") + return 1 \ No newline at end of file diff --git a/code/modules/surgery/limb_augmentation.dm b/code/modules/surgery/limb_augmentation.dm new file mode 100644 index 00000000000..9674f4aec49 --- /dev/null +++ b/code/modules/surgery/limb_augmentation.dm @@ -0,0 +1,57 @@ +/datum/surgery/limb_augmentation + name = "Augment Limb" + steps = list(/datum/surgery_step/generic/cut_open, /datum/surgery_step/generic/clamp_bleeders, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/augment) + possible_locs = list("chest","l_arm","r_arm","r_leg","l_leg") + +/datum/surgery/limb_augmentation/can_start(mob/user, mob/living/carbon/target) + if(ishuman(target)) + var/mob/living/carbon/human/H = target + var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting) + if(!affected) + return 0 + if(affected.status & ORGAN_BROKEN) //The arm has to be in prime condition to augment it. + return 0 + if(affected.status & ORGAN_ROBOT) + return 0 + return 1 + +/datum/surgery_step/augment + name = "augment limb with robotic part" + allowed_tools = list(/obj/item/robot_parts = 100) + time = 32 + +/datum/surgery_step/augment/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/obj/item/robot_parts/p = tool + if(p.part) + if(!(target_zone in p.part)) + to_chat(user, "[tool] cannot be used to augment this limb!") + return 0 + return 1 + +/datum/surgery_step/augment/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/obj/item/organ/external/affected = target.get_organ(target_zone) + user.visible_message("[user] starts augmenting [affected] with [tool].", "You start augmenting [affected] with [tool].") + +/datum/surgery_step/augment/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/obj/item/robot_parts/L = tool + var/obj/item/organ/external/affected = target.get_organ(target_zone) + user.visible_message("[user] has finished augmenting [affected] with [tool].", \ + "You augment [affected] with [tool].") + + if(L.part) + for(var/part_name in L.part) + if(!target.get_organ(part_name)) + continue + affected.robotize(L.model_info, make_tough = 1, convert_all = 0) + if(L.sabotaged) + affected.sabotaged = 1 + break + target.update_body() + target.updatehealth() + target.UpdateDamageIcon() + + qdel(tool) + + affected.open = 0 + affected.germ_level = 0 + return 1 \ No newline at end of file diff --git a/code/modules/surgery/limb_reattach.dm b/code/modules/surgery/limb_reattach.dm index 667f5c02a96..a24145055f0 100644 --- a/code/modules/surgery/limb_reattach.dm +++ b/code/modules/surgery/limb_reattach.dm @@ -126,7 +126,7 @@ var/obj/item/organ/external/E = tool user.visible_message("[user]'s hand slips, damaging [target]'s [E.amputation_point]!", \ "Your hand slips, damaging [target]'s [E.amputation_point]!") - target.apply_damage(10, BRUTE, null, sharp=1) + target.apply_damage(10, BRUTE, null, sharp = 1) return 0 @@ -165,10 +165,6 @@ H.h_style = "Bald" H.f_style = "Shaved" target.m_styles["head"] = "None" - E.status &= ~ORGAN_DESTROYED - if(E.children) - for(var/obj/item/organ/external/C in E.children) - C.status &= ~ORGAN_DESTROYED /datum/surgery_step/limb/connect @@ -197,13 +193,6 @@ var/obj/item/organ/external/E = target.get_organ(target_zone) user.visible_message("[user] has connected tendons and muscles in [target]'s [E.amputation_point] with [tool].", \ "You have connected tendons and muscles in [target]'s [E.amputation_point] with [tool].") - E.status &= ~ORGAN_DESTROYED - var/obj/item/organ/external/stump = target.bodyparts_by_name["limb stump"] - if(stump) - stump.remove(target) - if(E.children) - for(var/obj/item/organ/external/C in E.children) - C.status &= ~ORGAN_DESTROYED target.update_body() target.updatehealth() target.UpdateDamageIcon() @@ -213,7 +202,7 @@ var/obj/item/organ/external/E = target.get_organ(target_zone) user.visible_message("[user]'s hand slips, damaging [target]'s [E.amputation_point]!", \ "Your hand slips, damaging [target]'s [E.amputation_point]!") - target.apply_damage(10, BRUTE, null, sharp=1) + target.apply_damage(10, BRUTE, null, sharp = 1) return 0 /datum/surgery_step/limb/mechanize @@ -254,10 +243,6 @@ var/new_limb_type = organ_data["path"] var/obj/item/organ/external/new_limb = new new_limb_type(target) new_limb.robotize(L.model_info) - new_limb.status &= ~ORGAN_DESTROYED - if(new_limb.children) - for(var/obj/item/organ/external/C in new_limb.children) - C.status &= ~ORGAN_DESTROYED if(L.sabotaged) new_limb.sabotaged = 1 target.update_body() @@ -271,5 +256,5 @@ /datum/surgery_step/limb/mechanize/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("[user]'s hand slips, damaging [target]'s flesh!", \ "Your hand slips, damaging [target]'s flesh!") - target.apply_damage(10, BRUTE, null, sharp=1) + target.apply_damage(10, BRUTE, null, sharp = 1) return 0 diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm new file mode 100644 index 00000000000..4b62e42cb8a --- /dev/null +++ b/code/modules/surgery/organs/augments_arms.dm @@ -0,0 +1,315 @@ +/obj/item/organ/internal/cyberimp/arm + name = "arm-mounted implant" + desc = "You shouldn't see this! Adminhelp and report this as an issue on github!" + parent_organ = "r_arm" + slot = "r_arm_device" + icon_state = "implant-toolkit" + w_class = WEIGHT_CLASS_NORMAL + actions_types = list(/datum/action/item_action/organ_action/toggle) + + var/list/items_list = list() + // Used to store a list of all items inside, for multi-item implants. + // I would use contents, but they shuffle on every activation/deactivation leading to interface inconsistencies. + + var/obj/item/holder = null + // You can use this var for item path, it would be converted into an item on New() + +/obj/item/organ/internal/cyberimp/arm/New() + ..() + if(ispath(holder)) + holder = new holder(src) + + update_icon() + slot = parent_organ + "_device" + items_list = contents.Copy() + +/obj/item/organ/internal/cyberimp/arm/update_icon() + if(parent_organ == "r_arm") + transform = null + else // Mirroring the icon + transform = matrix(-1, 0, 0, 0, 1, 0) + +/obj/item/organ/internal/cyberimp/arm/examine(mob/user) + ..() + to_chat(user, "[src] is assembled in the [parent_organ == "r_arm" ? "right" : "left"] arm configuration. You can use a screwdriver to reassemble it.") + +/obj/item/organ/internal/cyberimp/arm/attackby(obj/item/weapon/W, mob/user, params) + ..() + if(isscrewdriver(W)) + if(parent_organ == "r_arm") + parent_organ = "l_arm" + else + parent_organ = "r_arm" + slot = parent_organ + "_device" + to_chat(user, "You modify [src] to be installed on the [parent_organ == "r_arm" ? "right" : "left"] arm.") + update_icon() + else if(istype(W, /obj/item/weapon/card/emag)) + emag_act() + +/obj/item/organ/internal/cyberimp/arm/remove(mob/living/carbon/M, special = 0) + Retract() + . = ..() + +/obj/item/organ/internal/cyberimp/arm/emag_act() + return 0 + +/obj/item/organ/internal/cyberimp/arm/gun/emp_act(severity) + if(prob(15/severity) && owner) + to_chat(owner, "[src] is hit by EMP!") + // give the owner an idea about why his implant is glitching + Retract() + ..() + +/obj/item/organ/internal/cyberimp/arm/proc/Retract() + if(!holder || (holder in src)) + return + + owner.visible_message("[owner] retracts [holder] back into \his [parent_organ == "r_arm" ? "right" : "left"] arm.", + "[holder] snaps back into your [parent_organ == "r_arm" ? "right" : "left"] arm.", + "You hear a short mechanical noise.") + + if(istype(holder, /obj/item/device/flash/armimplant)) + var/obj/item/device/flash/F = holder + F.set_light(0) + + owner.unEquip(holder, 1) + holder.forceMove(src) + holder = null + playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, 1) + +/obj/item/organ/internal/cyberimp/arm/proc/Extend(var/obj/item/item) + if(!(item in src)) + return + + + holder = item + + holder.flags |= NODROP + holder.unacidable = 1 + holder.slot_flags = null + holder.w_class = WEIGHT_CLASS_HUGE + holder.materials = null + + if(istype(holder, /obj/item/device/flash/armimplant)) + var/obj/item/device/flash/F = holder + F.set_light(7) + + var/arm_slot = (parent_organ == "r_arm" ? slot_r_hand : slot_l_hand) + var/obj/item/arm_item = owner.get_item_by_slot(arm_slot) + + if(arm_item) + if(!owner.unEquip(arm_item)) + to_chat(owner, "Your [arm_item] interferes with [src]!") + return + else + to_chat(owner, "You drop [arm_item] to activate [src]!") + + if(parent_organ == "r_arm" ? !owner.put_in_r_hand(holder) : !owner.put_in_l_hand(holder)) + to_chat(owner, "Your [src] fails to activate!") + return + + // Activate the hand that now holds our item. + if(parent_organ == "r_arm" ? owner.hand : !owner.hand) + owner.swap_hand() + + owner.visible_message("[owner] extends [holder] from \his [parent_organ == "r_arm" ? "right" : "left"] arm.", + "You extend [holder] from your [parent_organ == "r_arm" ? "right" : "left"] arm.", + "You hear a short mechanical noise.") + playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, 1) + +/obj/item/organ/internal/cyberimp/arm/ui_action_click() + if(crit_fail || (!holder && !contents.len)) + to_chat(owner, "The implant doesn't respond. It seems to be broken...") + return + + // You can emag the arm-mounted implant by activating it while holding emag in it's hand. + var/arm_slot = (parent_organ == "r_arm" ? slot_r_hand : slot_l_hand) + if(istype(owner.get_item_by_slot(arm_slot), /obj/item/weapon/card/emag) && emag_act()) + return + + if(!holder || (holder in src)) + holder = null + if(contents.len == 1) + Extend(contents[1]) + else // TODO: make it similar to borg's storage-like module selection + var/obj/item/choise = input("Activate which item?", "Arm Implant", null, null) as null|anything in items_list + if(owner && owner == usr && owner.stat != DEAD && (src in owner.internal_organs) && !holder && istype(choise) && (choise in contents)) + // This monster sanity check is a nice example of how bad input() is. + Extend(choise) + else + Retract() + + +/obj/item/organ/internal/cyberimp/arm/gun/emp_act(severity) + if(prob(30/severity) && owner && !crit_fail) + Retract() + owner.visible_message("A loud bang comes from [owner]\'s [parent_organ == "r_arm" ? "right" : "left"] arm!") + playsound(get_turf(owner), 'sound/weapons/flashbang.ogg', 100, 1) + to_chat(owner, "You feel an explosion erupt inside your [parent_organ == "r_arm" ? "right" : "left"] arm as your implant breaks!") + owner.adjust_fire_stacks(20) + owner.IgniteMob() + owner.adjustFireLoss(25) + crit_fail = 1 + else // The gun will still discharge anyway. + ..() + + +/obj/item/organ/internal/cyberimp/arm/gun/laser + name = "arm-mounted laser implant" + desc = "A variant of the arm cannon implant that fires lethal laser beams. The cannon emerges from the subject's arm and remains inside when not in use." + icon_state = "arm_laser" + origin_tech = "materials=4;combat=4;biotech=4;powerstorage=4;syndicate=3" + contents = newlist(/obj/item/weapon/gun/energy/laser/mounted) + +/obj/item/organ/internal/cyberimp/arm/gun/laser/l + parent_organ = "l_arm" + + +/obj/item/organ/internal/cyberimp/arm/gun/taser + name = "arm-mounted taser implant" + desc = "A variant of the arm cannon implant that fires electrodes and disabler shots. The cannon emerges from the subject's arm and remains inside when not in use." + icon_state = "arm_taser" + origin_tech = "materials=5;combat=5;biotech=4;powerstorage=4" + contents = newlist(/obj/item/weapon/gun/energy/gun/advtaser/mounted) + +/obj/item/organ/internal/cyberimp/arm/gun/taser/l + parent_organ = "l_arm" + + +/obj/item/organ/internal/cyberimp/arm/toolset + name = "integrated toolset implant" + desc = "A stripped-down version of engineering cyborg toolset, designed to be installed on subject's arm. Contains all neccessary tools." + origin_tech = "materials=3;engineering=4;biotech=3;powerstorage=4" + contents = newlist(/obj/item/weapon/screwdriver/cyborg, /obj/item/weapon/wrench/cyborg, /obj/item/weapon/weldingtool/largetank/cyborg, + /obj/item/weapon/crowbar/cyborg, /obj/item/weapon/wirecutters/cyborg, /obj/item/device/multitool/cyborg) + +/obj/item/organ/internal/cyberimp/arm/toolset/l + parent_organ = "l_arm" + +/obj/item/organ/internal/cyberimp/arm/toolset/emag_act() + if(!(locate(/obj/item/weapon/kitchen/knife/combat/cyborg) in items_list)) + to_chat(usr, "You unlock [src]'s integrated knife!") + items_list += new /obj/item/weapon/kitchen/knife/combat/cyborg(src) + return 1 + return 0 + +/obj/item/organ/internal/cyberimp/arm/esword + name = "arm-mounted energy blade" + desc = "An illegal, and highly dangerous cybernetic implant that can project a deadly blade of concentrated enregy." + contents = newlist(/obj/item/weapon/melee/energy/blade/hardlight) + origin_tech = "materials=4;combat=5;biotech=3;powerstorage=2;syndicate=5" + +/obj/item/organ/internal/cyberimp/arm/medibeam + name = "integrated medical beamgun" + desc = "A cybernetic implant that allows the user to project a healing beam from their hand." + contents = newlist(/obj/item/weapon/gun/medbeam) + origin_tech = "materials=5;combat=2;biotech=5;powerstorage=4;syndicate=1" + +/obj/item/organ/internal/cyberimp/arm/flash + name = "integrated high-intensity photon projector" //Why not + desc = "An integrated projector mounted onto a user's arm, that is able to be used as a powerful flash." + contents = newlist(/obj/item/device/flash/armimplant) + origin_tech = "materials=4;combat=3;biotech=4;magnets=4;powerstorage=3" + +/obj/item/organ/internal/cyberimp/arm/flash/New() + ..() + if(locate(/obj/item/device/flash/armimplant) in items_list) + var/obj/item/device/flash/armimplant/F = locate(/obj/item/device/flash/armimplant) in items_list + F.I = src + +/obj/item/organ/internal/cyberimp/arm/baton + name = "arm electrification implant" + desc = "An illegal combat implant that allows the user to administer disabling shocks from their arm." + contents = newlist(/obj/item/borg/stun) + origin_tech = "materials=3;combat=5;biotech=4;powerstorage=4;syndicate=3" + +/obj/item/organ/internal/cyberimp/arm/combat + name = "combat cybernetics implant" + desc = "A powerful cybernetic implant that contains combat modules built into the user's arm" + contents = newlist(/obj/item/weapon/melee/energy/blade/hardlight, /obj/item/weapon/gun/medbeam, /obj/item/borg/stun, /obj/item/device/flash/armimplant) + origin_tech = "materials=5;combat=7;biotech=5;powerstorage=5;syndicate=6;programming=5" + +/obj/item/organ/internal/cyberimp/arm/combat/New() + ..() + if(locate(/obj/item/device/flash/armimplant) in items_list) + var/obj/item/device/flash/armimplant/F = locate(/obj/item/device/flash/armimplant) in items_list + F.I = src + +/obj/item/organ/internal/cyberimp/arm/surgery + name = "surgical toolset implant" + desc = "A set of surgical tools hidden behind a concealed panel on the user's arm" + contents = newlist(/obj/item/weapon/retractor, /obj/item/weapon/hemostat, /obj/item/weapon/cautery, /obj/item/weapon/surgicaldrill, /obj/item/weapon/scalpel, /obj/item/weapon/circular_saw, /obj/item/weapon/bonegel, /obj/item/weapon/FixOVein, /obj/item/weapon/bonesetter) + origin_tech = "materials=3;engineering=3;biotech=3;programming=2;magnets=3" + +// lets make IPCs even *more* vulnerable to EMPs! +/obj/item/organ/internal/cyberimp/arm/power_cord + name = "APC-compatible power adapter implant" + desc = "An implant commonly installed inside IPCs in order to allow them to easily collect energy from their environment" + origin_tech = "materials=3;biotech=2;powerstorage=3" + contents = newlist(/obj/item/apc_powercord) + +/obj/item/organ/internal/cyberimp/arm/power_cord/emp_act(severity) + // To allow repair via nanopaste/screwdriver + // also so IPCs don't also catch on fire and fall even more apart upon EMP + damage = 1 + crit_fail = TRUE + +/obj/item/organ/internal/cyberimp/arm/power_cord/surgeryize() + if(crit_fail && owner) + to_chat(owner, "Your [src] feels functional again.") + crit_fail = FALSE + + +/obj/item/apc_powercord + name = "power cable" + desc = "Insert into a nearby APC to draw power from it." + icon = 'icons/obj/power.dmi' + icon_state = "wire1" + flags = NOBLUDGEON + +/obj/item/apc_powercord/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + if(!istype(target, /obj/machinery/power/apc) || !ishuman(user) || !proximity_flag) + return ..() + user.changeNext_move(CLICK_CD_MELEE) + var/obj/machinery/power/apc/A = target + var/mob/living/carbon/human/H = user + if(H.get_int_organ(/obj/item/organ/internal/cell)) + if(A.emagged || A.stat & BROKEN) + var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + s.set_up(3, 1, A) + s.start() + to_chat(H, "The APC power currents surge erratically, damaging your chassis!") + H.adjustFireLoss(10,0) + else if(A.cell && A.cell.charge > 0) + if(H.nutrition >= NUTRITION_LEVEL_WELL_FED) + to_chat(user, "You are already fully charged!") + else + addtimer(src, "powerdraw_loop", 0, TRUE, A, H) + else + to_chat(user, "There is no charge to draw from that APC.") + else + to_chat(user, "You lack a cell in which to store charge!") + +/obj/item/apc_powercord/proc/powerdraw_loop(obj/machinery/power/apc/A, mob/living/carbon/human/H) + H.visible_message("[H] inserts a power connector into \the [A].", "You begin to draw power from \the [A].") + while(do_after(H, 10, target = A)) + if(loc != H) + to_chat(H, "You must keep your connector out while charging!") + break + if(A.cell.charge == 0) + to_chat(H, "\The [A] has no more charge.") + break + A.charging = 1 + if(A.cell.charge >= 500) + H.nutrition += 50 + A.cell.charge -= 500 + to_chat(H, "You siphon off some of the stored charge for your own use.") + else + H.nutrition += A.cell.charge/10 + A.cell.charge = 0 + to_chat(H, "You siphon off the last of \the [A]'s charge.") + break + if(H.nutrition > NUTRITION_LEVEL_WELL_FED) + to_chat(H, "You are now fully charged.") + break + H.visible_message("[H] unplugs from \the [A].", "You unplug from \the [A].") \ No newline at end of file diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm index 4a7aa2554fc..7d5e03ea046 100644 --- a/code/modules/surgery/organs/augments_internal.dm +++ b/code/modules/surgery/organs/augments_internal.dm @@ -6,8 +6,8 @@ status = ORGAN_ROBOT var/implant_color = "#FFFFFF" var/implant_overlay - tough = 1 //not easyly broken by combat damage - sterile = 1 //not very germy + tough = TRUE // Immune to damage + sterile = TRUE // Doesn't accumulate germs robotic = 2 // these are cybernetic after all /obj/item/organ/internal/cyberimp/New(var/mob/M = null) @@ -144,6 +144,24 @@ spawn(90 / severity) crit_fail = 0 + +//[[[[MOUTH]]]] +/obj/item/organ/internal/cyberimp/mouth + parent_organ = "mouth" + +/obj/item/organ/internal/cyberimp/mouth/breathing_tube + name = "breathing tube implant" + desc = "This simple implant adds an internals connector to your back, allowing you to use internals without a mask and protecting you from being choked." + icon_state = "implant_mask" + slot = "breathing_tube" + w_class = WEIGHT_CLASS_TINY + origin_tech = "materials=2;biotech=3" + +/obj/item/organ/internal/cyberimp/mouth/breathing_tube/emp_act(severity) + if(prob(60/severity) && owner) + to_chat(owner, "Your breathing tube suddenly closes!") + owner.AdjustLoseBreath(2) + /obj/item/organ/internal/cyberimp/brain/clown_voice name = "Comical implant" desc = "Uh oh." @@ -255,175 +273,6 @@ if(H.stat == CONSCIOUS) to_chat(H, "You feel your heart beating again!") -//ARM...THAT GO IN THE CHEST -/obj/item/organ/internal/cyberimp/chest/arm_mod//dummy parent item for making arm-mod implants. works best with nodrop items that are sent to nullspace upon being dropped. - name = "Arm-mounted item implant" - desc = "You shouldn't see this! Adminhelp and report this as an issue on github!" - icon_state = "chest_implant" - implant_color = "#007ACC" - slot = "shoulders" - origin_tech = "materials=5;biotech=4;powerstorage=4" - actions_types = list(/datum/action/item_action/organ_action/toggle) - var/obj/holder//is defined as the retractable item itself. ensure this is defined somewhere! - var/out = 0//determines if the item is in the owner's hand or not - var/overloaded = 0//is set to 1 when owner gets EMPed. if set to 1, implant doesn't work. - var/lasthand = null - -/obj/item/organ/internal/cyberimp/chest/arm_mod/ui_action_click() - toggle_item() - -/obj/item/organ/internal/cyberimp/chest/arm_mod/proc/toggle_item() - if(overloaded)//ensure the implant isn't broken - to_chat(owner, "The implant doesn't respond. It seems to be broken...") - return - owner.changeNext_move(CLICK_CD_MELEE) - if(owner.next_move < world.time) - return // No spam - if(out)//check if the owner has the item out already - owner.unEquip(holder, 1)//if he does, take it away. then, - holder.loc = null//stash it in nullspace - out = 0//and set this to clarify the item isn't out. - owner.visible_message("[owner] retracts [holder].","You retract [holder].") - playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, 1) - else//if he doesn't have the item out - if(owner.put_in_hands(holder))//put it in his hands. - lasthand = owner.get_active_hand() - out = 1 - owner.visible_message("[owner] extends [holder]!","You extend [holder]!") - playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, 1) - else//if this fails to put the item in his hands, - holder.loc = null//keep it in nullspace - to_chat(owner, "You can't extend [holder] if you can't use your hands!") - -/obj/item/organ/internal/cyberimp/chest/arm_mod/emp_act(severity)//if the implant gets EMPed... - if(!owner || overloaded)//ensure that it's in an owner and that it's not already EMPed, then... - return - if(out)//check if he has the item out... - owner.unEquip(holder, 1)//if he does, take it away. - holder.loc = null - out = 0 - owner.visible_message("[holder] forcibly retracts into [owner]'s arm.") - overload() // Make sure this doesn't happen again - -/obj/item/organ/internal/cyberimp/chest/arm_mod/proc/overload() - owner.visible_message("A loud bang comes from [owner]...") - playsound(get_turf(owner), 'sound/effects/bang.ogg', 100, 1) - to_chat(owner, "You feel an explosion erupt inside you as your chest implant breaks. Is it hot in here?") - owner.adjust_fire_stacks(20) - owner.IgniteMob()//ignite the owner, as well as - owner.say("AUUUUUUUUUUUUUUUUUUGH!!") - if(prob(50)) - if(lasthand == "r_hand") - var/obj/item/organ/external/limb = owner.get_organ("r_arm") - limb.droplimb(0, DROPLIMB_EDGE) - else if(lasthand == "l_hand") - var/obj/item/organ/external/limb = owner.get_organ("l_arm") - limb.droplimb(0, DROPLIMB_EDGE) - owner.say("I HAVE BEEN DISARMED!!!") - owner.adjustFireLoss(25)//severely injure him! - overloaded = TRUE - -/obj/item/organ/internal/cyberimp/chest/arm_mod/tase//mounted, self-charging taser! - name = "Arm-cannon taser implant" - desc = "A variant of the arm cannon implant that fires electrodes and disabler shots. The cannon emerges from the subject's arms and remains in the shoulders when not in use." - icon_state = "armcannon_tase_implant" - origin_tech = "materials=5;combat=5;biotech=4;powerstorage=4" - actions_types = list(/datum/action/item_action/organ_action/toggle) - -/obj/item/organ/internal/cyberimp/chest/arm_mod/tase/New()//when the implant is created... - ..() - holder = new /obj/item/weapon/gun/energy/gun/advtaser/mounted(src)//assign a brand new item to it. (in this case, a gun) - -/obj/item/organ/internal/cyberimp/chest/arm_mod/lase//mounted, self-charging laser! - name = "Arm-cannon laser implant" - desc = "A variant of the arm cannon implant that fires lethal laser beams. The cannon emerges from the subject's arms and remains in the shoulders when not in use." - icon_state = "armcannon_lase_implant" - origin_tech = "materials=4;combat=4;biotech=4;powerstorage=4;syndicate=3" - actions_types = list(/datum/action/item_action/organ_action/toggle) - -/obj/item/organ/internal/cyberimp/chest/arm_mod/lase/New() - ..() - holder = new /obj/item/weapon/gun/energy/laser/mounted(src) - -// lets make IPCs even *more* vulnerable to EMPs! -/obj/item/organ/internal/cyberimp/chest/arm_mod/power_cord - name = "APC-compatible power adapter implant" - desc = "An implant commonly installed inside IPCs in order to allow them to easily collect energy from their environment" - origin_tech = "materials=3;biotech=2;powerstorage=3" - slot = "shoulders2" - actions_types = list(/datum/action/item_action/organ_action/toggle) - - -/obj/item/organ/internal/cyberimp/chest/arm_mod/power_cord/New() - ..() - holder = new /obj/item/apc_powercord(src) - -/obj/item/organ/internal/cyberimp/chest/arm_mod/power_cord/overload() - // To allow repair via nanopaste/screwdriver - // also so IPCs don't also catch on fire and fall even more apart upon EMP - damage = 1 - overloaded = TRUE - -/obj/item/organ/internal/cyberimp/chest/arm_mod/power_cord/surgeryize() - if(overloaded && owner) - to_chat(owner, "Your [src] feels functional again.") - overloaded = FALSE - - -/obj/item/apc_powercord - name = "power cable" - desc = "Insert into a nearby APC to draw power from it." - icon = 'icons/obj/power.dmi' - icon_state = "wire1" - flags = NODROP | NOBLUDGEON - -/obj/item/apc_powercord/afterattack(atom/target, mob/user, proximity_flag, click_parameters) - if(!istype(target, /obj/machinery/power/apc) || !ishuman(user) || !proximity_flag) - return ..() - user.changeNext_move(CLICK_CD_MELEE) - var/obj/machinery/power/apc/A = target - var/mob/living/carbon/human/H = user - if(H.get_int_organ(/obj/item/organ/internal/cell)) - if(A.emagged || A.stat & BROKEN) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread - s.set_up(3, 1, A) - s.start() - to_chat(H, "The APC power currents surge erratically, damaging your chassis!") - H.adjustFireLoss(10,0) - else if(A.cell && A.cell.charge > 0) - if(H.nutrition >= NUTRITION_LEVEL_WELL_FED) - to_chat(user, "You are already fully charged!") - else - addtimer(src, "powerdraw_loop", 0, TRUE, A, H) - else - to_chat(user, "There is no charge to draw from that APC.") - else - to_chat(user, "You lack a cell in which to store charge!") - -/obj/item/apc_powercord/proc/powerdraw_loop(obj/machinery/power/apc/A, mob/living/carbon/human/H) - H.visible_message("[H] inserts a power connector into \the [A].", "You begin to draw power from \the [A].") - while(do_after(H, 10, target = A)) - if(loc != H) - to_chat(H, "You must keep your connector out while charging!") - break - if(A.cell.charge == 0) - to_chat(H, "\The [A] has no more charge.") - break - A.charging = 1 - if(A.cell.charge >= 500) - H.nutrition += 50 - A.cell.charge -= 500 - to_chat(H, "You siphon off some of the stored charge for your own use.") - else - H.nutrition += A.cell.charge/10 - A.cell.charge = 0 - to_chat(H, "You siphon off the last of \the [A]'s charge.") - break - if(H.nutrition > NUTRITION_LEVEL_WELL_FED) - to_chat(H, "You are now fully charged.") - break - H.visible_message("[H] unplugs from \the [A].", "You unplug from \the [A].") - //BOX O' IMPLANTS /obj/item/weapon/storage/box/cyber_implants diff --git a/code/modules/surgery/organs/blood.dm b/code/modules/surgery/organs/blood.dm index 9eefe264524..987b5cf53e4 100644 --- a/code/modules/surgery/organs/blood.dm +++ b/code/modules/surgery/organs/blood.dm @@ -2,379 +2,287 @@ BLOOD SYSTEM ****************************************************/ -/mob/living/carbon/human/var/datum/reagents/vessel //Container for blood and BLOOD ONLY. Do not transfer other chems here. - -//Initializes blood vessels -/mob/living/carbon/human/proc/make_blood() - - if(vessel) +/mob/living/carbon/human/proc/suppress_bloodloss(amount) + if(bleedsuppress) return - - vessel = new/datum/reagents(max_blood) - vessel.my_atom = src - - if(species && species.exotic_blood) - vessel.add_reagent(species.exotic_blood, max_blood) else - vessel.add_reagent("blood", max_blood) - for(var/datum/reagent/blood/B in vessel.reagent_list) - if(B.id == "blood") - B.data = list( - "donor" = src, - "viruses" = null, - "blood_DNA" = dna.unique_enzymes, - "blood_colour" = species.blood_color, - "blood_type" = b_type, - "resistances" = null, - "trace_chem" = null) - spawn(1) - fixblood() + bleedsuppress = TRUE + addtimer(src, "resume_bleeding", amount) -//Resets blood data -/mob/living/carbon/human/proc/fixblood() - for(var/datum/reagent/blood/B in vessel.reagent_list) - if(B.id == "blood") - B.data = list( - "donor" = src, - "viruses" = null, - "blood_DNA" = dna.unique_enzymes, - "blood_colour" = species.blood_color, - "blood_type" = b_type, - "resistances" = null, - "trace_chem" = null) +/mob/living/carbon/human/proc/resume_bleeding() + bleedsuppress = FALSE + if(stat != DEAD && bleed_rate) + to_chat(src, "The blood soaks through your bandage.") // Takes care blood loss and regeneration -/mob/living/carbon/human/proc/handle_blood() - var/blood_volume - if(species && species.flags & NO_BLOOD) +/mob/living/carbon/human/handle_blood() + var/list/blood_data = get_blood_data(get_blood_id())//PROCCEPTION + + if(NO_BLOOD in species.species_traits) + bleed_rate = 0 return - if(stat != DEAD && bodytemperature >= 170) //Dead or cryosleep people do not pump the blood. - if(species.exotic_blood) - var/blood_reagent = species.exotic_blood // This is a string of the name of the species' blood reagent - blood_volume = round(vessel.get_reagent_amount(blood_reagent)) - if(blood_volume < max_blood && blood_volume) - vessel.add_reagent(blood_reagent, 0.1) // regenerate blood VERY slowly - if(reagents.has_reagent(blood_reagent)) - vessel.add_reagent(blood_reagent, 0.4) - else - blood_volume = round(vessel.get_reagent_amount("blood")) - //Blood regeneration if there is some space - if(blood_volume < max_blood && blood_volume) - var/datum/reagent/blood/B = locate() in vessel.reagent_list //Grab some blood - if(B) // Make sure there's some blood at all - if(mind) //Handles vampires "eating" blood that isn't their own. - if(mind in ticker.mode.vampires) - for(var/datum/reagent/blood/BL in vessel.reagent_list) - if(nutrition >= NUTRITION_LEVEL_WELL_FED) - break //We don't want blood tranfusions making vampires fat. - if(BL.data["donor"] != src) - nutrition += (15 * REAGENTS_METABOLISM) - BL.volume -= REAGENTS_METABOLISM - if(BL.volume <= 0) - qdel(BL) - break //Only process one blood per tick, to maintain the same metabolism as nutriment for non-vampires. + if(bodytemperature >= 225 && !(NOCLONE in mutations)) //cryosleep or husked people do not pump the blood. - if(B.data["donor"] != src) //If it's not theirs, then we look for theirs - for(var/datum/reagent/blood/D in vessel.reagent_list) - if(D.data["donor"] == src) - B = D - break - - vessel.add_reagent("blood", 0.1) // regenerate blood VERY slowly + //Blood regeneration if there is some space + if(blood_volume < max_blood && blood_volume) + if(mind) //Handles vampires "eating" blood that isn't their own. + if(mind in ticker.mode.vampires) + if(nutrition >= NUTRITION_LEVEL_WELL_FED) + return //We don't want blood tranfusions making vampires fat. + if(blood_data["donor"] != src) + nutrition += (15 * REAGENTS_METABOLISM) + return //Only process one blood per tick, to maintain the same metabolism as nutriment for non-vampires. + if(blood_volume < BLOOD_VOLUME_NORMAL) + blood_volume += 0.1 // regenerate blood VERY slowly //Effects of bloodloss - var/oxy_immune = species.flags & NO_BREATHE //Some species have blood, but don't breathe; they should still suffer the effects of bloodloss. - + var/word = pick("dizzy","woozy","faint") switch(blood_volume) if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE) if(prob(5)) - to_chat(src, "You feel [pick("dizzy","woozy","faint")].") - if(oxy_immune) - adjustToxLoss(round((BLOOD_VOLUME_NORMAL - blood_volume) * 0.01, 1)) - else - adjustOxyLoss(round((BLOOD_VOLUME_NORMAL - blood_volume) * 0.01, 1)) + to_chat(src, "You feel [word].") + apply_damage_type(round((BLOOD_VOLUME_NORMAL - blood_volume) * 0.01, 1), species.blood_damage_type) if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY) - if(oxy_immune) - adjustToxLoss(round((BLOOD_VOLUME_NORMAL - blood_volume) * 0.02, 1)) - else - adjustOxyLoss(round((BLOOD_VOLUME_NORMAL - blood_volume) * 0.02, 1)) + apply_damage_type(round((BLOOD_VOLUME_NORMAL - blood_volume) * 0.02, 1), species.blood_damage_type) if(prob(5)) EyeBlurry(6) - var/word = pick("dizzy","woozy","faint") to_chat(src, "You feel very [word].") if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_BAD) - if(oxy_immune) - adjustToxLoss(5) - else - adjustOxyLoss(5) + apply_damage_type(5, species.blood_damage_type) if(prob(15)) Paralyse(rand(1,3)) - var/word = pick("dizzy","woozy","faint") to_chat(src, "You feel extremely [word].") if(0 to BLOOD_VOLUME_SURVIVE) death() + var/temp_bleed = 0 + var/internal_bleeding_rate = 0 //Bleeding out - var/blood_max = 0 - for(var/obj/item/organ/external/temp in bodyparts) - if(!(temp.status & ORGAN_BLEEDING) || temp.status & ORGAN_ROBOT) + for(var/X in bodyparts) + var/obj/item/organ/external/BP = X + var/brutedamage = BP.brute_dam + + if(BP.status & ORGAN_ROBOT) continue - for(var/datum/wound/W in temp.wounds) - if(W.bleeding()) - blood_max += W.damage / 4 - if(temp.open) - blood_max += 2 //Yer stomach is cut open - drip(blood_max) -//Makes a blood drop, leaking certain amount of blood from the mob -/mob/living/carbon/human/proc/drip(var/amt as num) + //We want an accurate reading of .len + listclearnulls(BP.embedded_objects) + temp_bleed += 0.5*BP.embedded_objects.len - if(species && species.flags & NO_BLOOD) //TODO: Make drips come from the reagents instead. - return + if(brutedamage >= 20) + temp_bleed += (brutedamage * 0.013) - if(!amt) - return + if(BP.open) + temp_bleed += 0.5 - var/amm = 0.1 * amt - var/turf/T = get_turf(src) + if(BP.internal_bleeding) + internal_bleeding_rate += 0.5 - if(species.exotic_blood) - vessel.remove_reagent(species.exotic_blood,amm) - if(vessel.total_volume) - var/fraction = amm / vessel.total_volume - vessel.reaction(T, TOUCH, fraction) - return + bleed_rate = max(bleed_rate - 0.5, temp_bleed)//if no wounds, other bleed effects (heparin) naturally decreases - else - vessel.remove_reagent("blood",amm) - blood_splatter(src, src) + if(internal_bleeding_rate && !(status_flags & FAKEDEATH)) + bleed(internal_bleeding_rate) + if(bleed_rate && !bleedsuppress && !(status_flags & FAKEDEATH)) + bleed(bleed_rate) + +//Makes a blood drop, leaking amt units of blood from the mob +/mob/living/carbon/proc/bleed(amt) + if(blood_volume) + blood_volume = max(blood_volume - amt, 0) + if(isturf(loc)) //Blood loss still happens in locker, floor stays clean + if(amt >= 10) + add_splatter_floor(loc) + else + add_splatter_floor(loc, 1) + +/mob/living/carbon/human/bleed(amt) + if(!(NO_BLOOD in species.species_traits)) + ..() + if(species.exotic_blood) + var/datum/reagent/R = chemical_reagents_list[get_blood_id()] + if(istype(R) && isturf(loc)) + R.reaction_turf(get_turf(src), amt) + +/mob/living/proc/restore_blood() + blood_volume = initial(blood_volume) + +/mob/living/carbon/human/restore_blood() + blood_volume = BLOOD_VOLUME_NORMAL + bleed_rate = 0 /**************************************************** BLOOD TRANSFERS ****************************************************/ -//Gets blood from mob to the container, preserving all data in it. -/mob/living/carbon/proc/take_blood(obj/item/weapon/reagent_containers/container, var/amount) - var/datum/reagent/B = get_blood(container.reagents) - if(!istype(B, /datum/reagent/blood)) B = new /datum/reagent/blood - B.holder = container - B.volume += amount +//Gets blood from mob to a container or other mob, preserving all data in it. +/mob/living/proc/transfer_blood_to(atom/movable/AM, amount, forced) + if(!blood_volume || !AM.reagents) + return 0 + if(blood_volume < BLOOD_VOLUME_BAD && !forced) + return 0 - //set reagent data - B.data["donor"] = src - B.data["viruses"] = list() + if(blood_volume < amount) + amount = blood_volume - for(var/datum/disease/D in viruses) - B.data["viruses"] += D.Copy() - if(resistances && resistances.len) - B.data["resistances"] = resistances.Copy() + var/blood_id = get_blood_id() + if(!blood_id) + return 0 - B.data["blood_DNA"] = copytext(src.dna.unique_enzymes,1,0) - B.data["blood_type"] = copytext(src.dna.b_type,1,0) + blood_volume -= amount - // Putting this here due to return shenanigans. - if(istype(src,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = src - B.data["blood_colour"] = H.species.blood_color - B.color = B.data["blood_colour"] + var/list/blood_data = get_blood_data(blood_id) - var/list/temp_chem = list() - for(var/datum/reagent/R in src.reagents.reagent_list) - temp_chem += R.id - temp_chem[R.id] = R.volume - B.data["trace_chem"] = list2params(temp_chem) - if(mind) - B.data["mind"] = mind - if(ckey) - B.data["ckey"] = ckey + if(iscarbon(AM)) + var/mob/living/carbon/C = AM + if(blood_id == C.get_blood_id())//both mobs have the same blood substance + if(blood_id == "blood") //normal blood + if(blood_data["viruses"]) + for(var/thing in blood_data["viruses"]) + var/datum/disease/D = thing + if((D.spread_flags & SPECIAL) || (D.spread_flags & NON_CONTAGIOUS)) + continue + C.ForceContractDisease(D) + if(!(blood_data["blood_type"] in get_safe_blood(C.dna.b_type))) + C.reagents.add_reagent("toxin", amount * 0.5) + return 1 - if(!suiciding) - B.data["cloneable"] = 1 - B.data["gender"] = gender - B.data["real_name"] = real_name - B.data["factions"] = faction - return B + C.blood_volume = min(C.blood_volume + round(amount, 0.1), BLOOD_VOLUME_NORMAL) + return 1 -//For humans, blood does not appear from blue, it comes from vessels. -/mob/living/carbon/human/take_blood(obj/item/weapon/reagent_containers/container, var/amount) - if(src.species.exotic_blood) - if(vessel.get_reagent_amount(src.species.exotic_blood) < amount) - return null - var/datum/reagent/W = new /datum/reagent - W.holder = container - W.volume += amount + AM.reagents.add_reagent(blood_id, amount, blood_data, bodytemperature) + return 1 + + +/mob/living/proc/get_blood_data(blood_id) + return + +/mob/living/carbon/human/get_blood_data(blood_id) + if(blood_id == "blood") //actual blood reagent + var/blood_data = list() + //set the blood data + blood_data["donor"] = src + blood_data["viruses"] = list() + + for(var/thing in viruses) + var/datum/disease/D = thing + blood_data["viruses"] += D.Copy() + + blood_data["blood_DNA"] = copytext(dna.unique_enzymes,1,0) + if(resistances && resistances.len) + blood_data["resistances"] = resistances.Copy() var/list/temp_chem = list() - for(var/datum/reagent/R in src.reagents.reagent_list) - temp_chem += R.id + for(var/datum/reagent/R in reagents.reagent_list) temp_chem[R.id] = R.volume - W.data["trace_chem"] = list2params(temp_chem) - vessel.remove_reagent(src.species.exotic_blood,amount) // Removes blood if human - return W - if(species && species.flags & NO_BLOOD) - return null - else - if(vessel.get_reagent_amount("blood") < amount) - return null - . = ..() - vessel.remove_reagent("blood",amount) // Removes blood if human + blood_data["trace_chem"] = list2params(temp_chem) + if(mind) + blood_data["mind"] = mind + if(ckey) + blood_data["ckey"] = ckey + if(!suiciding) + blood_data["cloneable"] = 1 + blood_data["blood_type"] = copytext(src.dna.b_type,1,0) + blood_data["gender"] = gender + blood_data["real_name"] = real_name + blood_data["blood_color"] = species.blood_color + blood_data["factions"] = faction + return blood_data -//Transfers blood from container ot vessels -/mob/living/carbon/proc/inject_blood(obj/item/weapon/reagent_containers/container, var/amount) - var/datum/reagent/blood/injected = get_blood(container.reagents) +//get the id of the substance this mob use as blood. +/mob/proc/get_blood_id() + return - if(!istype(injected)) +/mob/living/simple_animal/get_blood_id() + if(blood_volume) + return "blood" + +/mob/living/carbon/human/get_blood_id() + if(species.exotic_blood)//some races may bleed water..or kethcup.. + return species.exotic_blood + else if((NO_BLOOD in species.species_traits) || (NOCLONE in mutations)) return - - var/list/chems = list() - chems = params2list(injected.data["trace_chem"]) - for(var/C in chems) - src.reagents.add_reagent(C, (text2num(chems[C]) / BLOOD_VOLUME_NORMAL) * amount)//adds trace chemicals to owner's blood - reagents.update_total() - - container.reagents.remove_reagent("blood", amount) - -//Transfers blood from container ot vessels, respecting blood types compatability. -/mob/living/carbon/human/inject_blood(obj/item/weapon/reagent_containers/container, var/amount) - - var/datum/reagent/blood/injected = get_blood(container.reagents) - - if(!istype(injected)) //Sanity.. - return - - if(species && species.flags & NO_BLOOD) - reagents.add_reagent("blood", amount, injected.data) - reagents.update_total() - return - - var/datum/reagent/blood/our = get_blood(vessel) - - if(!istype(our)) // Do we not have blood? - vessel.add_reagent("blood", amount, injected.data) // This is only ran once, so we need to add back their DNA. - vessel.update_total() - ..() - our = get_blood(vessel) // Get the new blood. - our.data["blood_DNA"] = dna.unique_enzymes // Give it the proper DNA we had before (src.dna) - our.data["blood_type"] = dna.b_type // Proper blood type. - our.data["donor"] = src // Without this, it'd be random each time it was extracted or Null. - return - - if(blood_incompatible(injected.data["blood_type"],our.data["blood_type"]) ) - reagents.add_reagent("toxin",amount * 0.5) - reagents.update_total() - else - vessel.add_reagent("blood", amount, injected.data) - vessel.update_total() - ..() - -//Gets human's own blood. -/mob/living/carbon/proc/get_blood(datum/reagents/container) - var/datum/reagent/blood/res = locate() in container.reagent_list //Grab some blood - if(res) // Make sure there's some blood at all - if(res.data["donor"] != src) //If it's not theirs, then we look for theirs - for(var/datum/reagent/blood/D in container.reagent_list) - if(D.data["donor"] == src) - return D - return res - -/mob/living/carbon/human/get_blood(datum/reagents/container) - if(species.exotic_blood) - return container.get_reagent_from_id(species.exotic_blood) - else - return ..() - -/mob/living/carbon/proc/get_blood_name() return "blood" -/mob/living/carbon/human/get_blood_name() - if(species.exotic_blood) - return species.exotic_blood - else - return ..() +// This is has more potential uses, and is probably faster than the old proc. +/proc/get_safe_blood(bloodtype) + . = list() + if(!bloodtype) + return + switch(bloodtype) + if("A-") + return list("A-", "O-") + if("A+") + return list("A-", "A+", "O-", "O+") + if("B-") + return list("B-", "O-") + if("B+") + return list("B-", "B+", "O-", "O+") + if("AB-") + return list("A-", "B-", "O-", "AB-") + if("AB+") + return list("A-", "A+", "B-", "B+", "O-", "O+", "AB-", "AB+") + if("O-") + return list("O-") + if("O+") + return list("O-", "O+") -/proc/blood_incompatible(donor,receiver) +//to add a splatter of blood or other mob liquid. +/mob/living/proc/add_splatter_floor(turf/T, small_drip) + if(get_blood_id() != "blood")//is it blood or welding fuel? + return + if(!T) + T = get_turf(src) - var/donor_antigen = copytext(donor,1,lentext(donor)) - var/receiver_antigen = copytext(receiver,1,lentext(receiver)) - var/donor_rh = findtext("+",donor) - var/receiver_rh = findtext("+",receiver) + var/list/temp_blood_DNA + var/list/b_data = get_blood_data(get_blood_id()) - if(donor_rh && !receiver_rh) return 1 - switch(receiver_antigen) - if("A") - if(donor_antigen != "A" && donor_antigen != "O") return 1 - if("B") - if(donor_antigen != "B" && donor_antigen != "O") return 1 - if("O") - if(donor_antigen != "O") return 1 - //AB is a universal receiver. - return 0 - -/* -Target: Thing/tile to get bloody -Source: Human or blood reagent -Large: Whether the splat should be big or not -*/ -/proc/blood_splatter(var/target,var/source,var/large = 0) - - var/obj/effect/decal/cleanable/blood/B - var/decal_type = /obj/effect/decal/cleanable/blood/splatter - var/turf/T = get_turf(target) - var/datum/reagent/blood/bld - if(istype(source,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = source - bld = H.get_blood(H.vessel) - if(H.species.exotic_blood) - H.vessel.reaction(T, TOUCH) + if(small_drip) + // Only a certain number of drips (or one large splatter) can be on a given turf. + var/obj/effect/decal/cleanable/blood/drip/drop = locate() in T + if(drop) + if(drop.drips < 3) + drop.drips++ + drop.overlays |= pick(drop.random_icon_states) + drop.transfer_mob_blood_dna(src) + drop.basecolor = b_data["blood_color"] + drop.update_icon() + else + temp_blood_DNA = list() + temp_blood_DNA |= drop.blood_DNA.Copy() //we transfer the dna from the drip to the splatter + qdel(drop) + else + drop = new(T) + drop.transfer_mob_blood_dna(src) + drop.basecolor = b_data["blood_color"] + drop.update_icon() return - else if(H.species.flags & NO_BLOOD) - return - else if(istype(source, /datum/reagent)) - bld = source - if(!istype(bld, /datum/reagent/blood)) - var/datum/reagent/R = bld - if(istype(R)) - R.reaction_turf(T, R.volume) - return - else if(source) - log_runtime(EXCEPTION("Non-human or reagent blood source. Area: [get_area(source)], Name: [source]"), source) - - // Are we dripping or splattering? - var/list/drips = list() - // Only a certain number of drips (or one large splatter) can be on a given turf. - for(var/obj/effect/decal/cleanable/blood/drip/drop in T) - drips |= drop.drips - qdel(drop) - if(!large && drips.len < 3) - decal_type = /obj/effect/decal/cleanable/blood/drip // Find a blood decal or create a new one. - B = locate(decal_type) in T + var/obj/effect/decal/cleanable/blood/B = locate() in T if(!B) - B = new decal_type(T) + B = new /obj/effect/decal/cleanable/blood/splatter(T) + B.transfer_mob_blood_dna(src) //give blood info to the blood decal. + if(temp_blood_DNA) + B.blood_DNA |= temp_blood_DNA + B.update_icon() - var/obj/effect/decal/cleanable/blood/drip/drop = B - if(istype(drop) && drips && drips.len && !large) - drop.overlays |= drips - drop.drips |= drips +/mob/living/carbon/human/add_splatter_floor(turf/T, small_drip) + if(!(NO_BLOOD in species.species_traits)) + ..() - // If there's no data to copy, call it quits here. - if(!bld) - return B +/mob/living/carbon/alien/add_splatter_floor(turf/T, small_drip) + if(!T) + T = get_turf(src) + var/obj/effect/decal/cleanable/blood/xeno/B = locate() in T.contents + if(!B) + B = new(T) + B.blood_DNA["UNKNOWN DNA"] = "X*" - // Update appearance. - if(bld.data["blood_colour"]) - B.basecolor = bld.data["blood_colour"] - B.update_icon() - - // Update blood information. - if(bld.data["blood_DNA"]) - B.blood_DNA = list() - if(bld.data["blood_type"]) - B.blood_DNA[bld.data["blood_DNA"]] = bld.data["blood_type"] - else - B.blood_DNA[bld.data["blood_DNA"]] = "O+" - - return B +/mob/living/silicon/robot/add_splatter_floor(turf/T, small_drip) + if(!T) + T = get_turf(src) + var/obj/effect/decal/cleanable/blood/oil/B = locate() in T.contents + if(!B) + B = new(T) \ No newline at end of file diff --git a/code/modules/surgery/organs/helpers.dm b/code/modules/surgery/organs/helpers.dm index 94b0de5e066..61ed78d0e3b 100644 --- a/code/modules/surgery/organs/helpers.dm +++ b/code/modules/surgery/organs/helpers.dm @@ -30,9 +30,7 @@ return returnorg /mob/living/carbon/get_organ_slot(slot) - for(var/obj/item/organ/internal/O in internal_organs) - if(slot == O.slot) - return O + return internal_organs_slot[slot] /mob/living/carbon/get_int_organ_tag(tag) for(var/obj/item/organ/internal/O in internal_organs) diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm index fb52fba69f9..a5ad0fabe91 100644 --- a/code/modules/surgery/organs/organ.dm +++ b/code/modules/surgery/organs/organ.dm @@ -29,8 +29,9 @@ var/list/organ_cache = list() var/freezer_update_period = 100 var/is_in_freezer = 0 - var/sterile = 0 //can the organ be infected by germs? - var/tough = 0 //can organ be easily damaged? + var/sterile = FALSE //can the organ be infected by germs? + var/tough = FALSE //can organ be easily damaged? + /obj/item/organ/Destroy() processing_objects.Remove(src) @@ -45,7 +46,6 @@ var/list/organ_cache = list() /obj/item/organ/New(var/mob/living/carbon/holder) ..(holder) - create_reagents(5) if(!max_damage) max_damage = min_broken_damage * 2 if(istype(holder)) @@ -95,16 +95,11 @@ var/list/organ_cache = list() return //Process infections - if((status & ORGAN_ROBOT) || sterile ||(owner && owner.species && (owner.species.flags & IS_PLANT))) + if((status & ORGAN_ROBOT) || sterile || (owner && (IS_PLANT in owner.species.species_traits))) germ_level = 0 return if(!owner) - if(reagents && prob(40)) - reagents.remove_any(0.1) - for(var/datum/reagent/R in reagents.reagent_list) - R.reaction_turf(get_turf(src), 0.1) - // Maybe scale it down a bit, have it REALLY kick in once past the basic infection threshold // Another mercy for surgeons preparing transplant organs germ_level++ @@ -115,27 +110,20 @@ var/list/organ_cache = list() if(germ_level >= INFECTION_LEVEL_THREE) necrotize() - if(damage >= max_damage) - necrotize() - else if(owner.bodytemperature >= 170) //cryo stops germs from moving and doing their bad stuffs //** Handle antibiotics and curing infections handle_antibiotics() handle_germ_effects() - //check if we've hit max_damage - if(damage >= max_damage) - necrotize() - /obj/item/organ/proc/is_preserved() if(istype(loc,/obj/item/device/mmi)) germ_level = max(0, germ_level - 1) // So a brain can slowly recover from being left out of an MMI return 1 - if(is_found_within(/obj/item/bodybag/cryobag)) - return 1 if(is_found_within(/obj/structure/closet/crate/freezer)) return 1 - if(istype(loc,/turf)) + if(is_found_within(/obj/machinery/clonepod)) + return 1 + if(isturf(loc)) if(world.time - last_freezer_update_time > freezer_update_period) // I don't want to loop through everything in the tile constantly, especially since it'll be a pile of organs // if the virologist releases gibbingtons again or something @@ -178,12 +166,12 @@ var/list/organ_cache = list() if(antibiotics < 5 && parent.germ_level < germ_level && ( parent.germ_level < INFECTION_LEVEL_ONE*2 || prob(30) )) parent.germ_level++ +/obj/item/organ/internal/handle_germ_effects() + ..() + if(germ_level >= INFECTION_LEVEL_TWO) if(prob(3)) //about once every 30 seconds take_damage(1,silent=prob(30)) -/obj/item/organ/proc/receive_chem(chemical as obj) - return 0 - /obj/item/organ/proc/rejuvenate() damage = 0 germ_level = 0 @@ -203,7 +191,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_BROKEN) && !(status & ORGAN_SPLINTED))) //Germs /obj/item/organ/proc/handle_antibiotics() @@ -233,7 +221,7 @@ var/list/organ_cache = list() W.time_inflicted = world.time //Note: external organs have their own version of this proc -/obj/item/organ/proc/take_damage(amount, var/silent=0) +/obj/item/organ/proc/take_damage(amount, silent = 0) if(tough) return if(status & ORGAN_ROBOT) @@ -247,36 +235,43 @@ var/list/organ_cache = list() if(parent && !silent) owner.custom_pain("Something inside your [parent.name] hurts a lot.", 1) + //check if we've hit max_damage + if(damage >= max_damage) + necrotize() + /obj/item/organ/proc/robotize() //Being used to make robutt hearts, etc robotic = 2 status &= ~ORGAN_BROKEN - status &= ~ORGAN_BLEEDING status &= ~ORGAN_SPLINTED - status &= ~ORGAN_CUT_AWAY - status &= ~ORGAN_ATTACHABLE - status &= ~ORGAN_DESTROYED status |= ORGAN_ROBOT - status |= ORGAN_ASSISTED /obj/item/organ/proc/mechassist() //Used to add things like pacemakers, etc robotize(1) //Skip the icon/name setting that occurs in robotize to avoid having to reset the icon file. status &= ~ORGAN_ROBOT + status |= ORGAN_ASSISTED robotic = 1 min_bruised_damage = 15 min_broken_damage = 35 -/obj/item/organ/emp_act(severity) +/obj/item/organ/external/emp_act(severity) if(!(status & ORGAN_ROBOT)) return - switch(severity) - if(1.0) - take_damage(0,20) - return - if(2.0) - take_damage(0,7) - return - if(3.0) - take_damage(0,3) + if(tough) + switch(severity) + if(1) + take_damage(0, 5.5) + if(owner) + owner.Stun(10) + if(2) + take_damage(0, 2.8) + if(owner) + owner.Stun(5) + else + switch(severity) + if(1) + take_damage(0, 20) + if(2) + take_damage(0, 7) /obj/item/organ/internal/emp_act(severity) if(!robotic) @@ -284,13 +279,11 @@ var/list/organ_cache = list() if(robotic == 2) switch(severity) if(1.0) - take_damage(20,1) + take_damage(20, 1) if(2.0) - take_damage(7,1) - if(3.0) - take_damage(3,1) + take_damage(7, 1) else if(robotic == 1) - take_damage(11,1) + take_damage(11, 1) /obj/item/organ/internal/heart/emp_act(intensity) if(owner && robotic == 2) @@ -310,10 +303,6 @@ var/list/organ_cache = list() loc = get_turf(owner) processing_objects |= src - var/datum/reagent/blood/organ_blood - if(reagents) organ_blood = reagents.get_reagent_from_id(owner.get_blood_name()) - if((!organ_blood || !organ_blood.data["blood_DNA"]) && (owner && !(owner.species.flags & NO_BLOOD))) - owner.vessel.trans_to(src, 5, 1, 1) if(owner && vital && is_primary_organ()) // I'd do another check for species or whatever so that you couldn't "kill" an IPC by removing a human head from them, but it doesn't matter since they'll come right back from the dead if(user) diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index ca2bee1fdd9..04bf50b230d 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -25,7 +25,6 @@ var/brute_dam = 0 var/burn_dam = 0 var/max_size = 0 - var/last_dam = -1 var/icon/mob_icon var/gendered_icon = 0 var/limb_name @@ -34,18 +33,13 @@ var/cannot_break var/s_tone = null var/list/s_col = null // If this is instantiated, it should be a list of length 3 - var/list/wounds = list() var/list/child_icons = list() - var/number_wounds = 0 // cache the number of wounds, which is NOT wounds.len! var/perma_injury = 0 - // 0: Don't fail when at full damage - // 1: Neatly pop off at full damage, stop damage propogation - // 2: Disintegrate at full damage, continue damage propogation - var/fail_at_full_damage = 0 - + var/dismember_at_max_damage = FALSE var/obj/item/organ/external/parent var/list/obj/item/organ/external/children + var/list/convertable_children = list() // Internal organs of this body part var/list/internal_organs = list() @@ -58,15 +52,11 @@ var/encased // Needs to be opened with a saw to access the organs. var/obj/item/hidden = null - var/list/implants = list() - - // how often wounds should be updated, a higher number means less often - var/wound_update_accuracy = 1 - + var/list/embedded_objects = list() + var/internal_bleeding = FALSE var/amputation_point // Descriptive string used in amputation. var/can_grasp var/can_stand - var/wound_cleanup_timer var/splinted_count = 0 //Time when this organ was last splinted @@ -79,7 +69,6 @@ if(owner) to_chat(owner, "You can't feel your [name] anymore...") owner.update_body(update_sprite) - owner.bad_external_organs |= src if(vital) owner.death() @@ -100,13 +89,7 @@ QDEL_LIST(children) - if(wound_cleanup_timer) - deltimer(wound_cleanup_timer) - wound_cleanup_timer = null - - QDEL_LIST(wounds) - - QDEL_LIST(implants) + QDEL_LIST(embedded_objects) QDEL_NULL(hidden) @@ -116,26 +99,24 @@ switch(open) if(0) if(istype(W,/obj/item/weapon/scalpel)) - spread_germs_to_organ(src,user, W) + spread_germs_to_organ(src, user, W) user.visible_message("[user] cuts [src] open with [W]!") open++ return if(1) if(istype(W,/obj/item/weapon/retractor)) - spread_germs_to_organ(src,user, W) + spread_germs_to_organ(src, user, W) user.visible_message("[user] cracks [src] open like an egg with [W]!") open++ return if(2) if(istype(W,/obj/item/weapon/hemostat)) - spread_germs_to_organ(src,user, W) + spread_germs_to_organ(src, user, W) if(contents.len) var/obj/item/removing = pick(contents) var/obj/item/organ/internal/O = removing if(istype(O)) - O.status |= ORGAN_CUT_AWAY - if(!O.sterile) - spread_germs_to_organ(O,user, W) // This wouldn't be any cleaner than the actual surgery + spread_germs_to_organ(O, user, W) // This wouldn't be any cleaner than the actual surgery user.put_in_hands(removing) user.visible_message("[user] extracts [removing] from [src] with [W]!") else @@ -162,7 +143,6 @@ /obj/item/organ/external/replaced(var/mob/living/carbon/human/target) owner = target - status = status & ~ORGAN_DESTROYED forceMove(owner) if(istype(owner)) if(!isnull(owner.bodyparts_by_name[limb_name])) @@ -178,12 +158,7 @@ if(!parent.children) parent.children = list() parent.children.Add(src) - //Remove all stump wounds since limb is not missing anymore - for(var/datum/wound/lost_limb/W in parent.wounds) - parent.wounds -= W - qdel(W) - break - parent.update_damages() + parent.check_fracture() /obj/item/organ/external/attempt_become_organ(obj/item/organ/external/parent,mob/living/carbon/human/H) if(parent_organ != parent.limb_name) @@ -195,15 +170,17 @@ DAMAGE PROCS ****************************************************/ -/obj/item/organ/external/take_damage(brute, burn, sharp, edge, used_weapon = null, list/forbidden_limbs = list()) +/obj/item/organ/external/take_damage(brute, burn, sharp, used_weapon = null, list/forbidden_limbs = list(), ignore_resists = FALSE) + if(tough && !ignore_resists) + brute = max(0, brute - 5) + burn = max(0, burn - 4) + if((brute <= 0) && (burn <= 0)) return 0 - if(status & ORGAN_DESTROYED) - return 0 - - brute *= brute_mod - burn *= burn_mod + if(!ignore_resists) + brute *= brute_mod + burn *= burn_mod // Threshold needed to have a chance of hurting internal bits with something sharp #define LIMB_SHARP_THRESH_INT_DMG 5 @@ -216,9 +193,8 @@ // Damage an internal organ if(internal_organs && internal_organs.len) var/obj/item/organ/internal/I = pick(internal_organs) - if(!I.tough)//mostly for cybernetic organs - I.take_damage(brute / 2) - brute -= brute / 2 + I.take_damage(brute * 0.5) + brute -= brute * 0.5 if(status & ORGAN_BROKEN && prob(40) && brute) owner.emote("scream") //getting hit on broken hand hurts @@ -229,74 +205,63 @@ if(used_weapon) add_autopsy_data("[used_weapon]", brute + burn) - var/can_cut = (prob(brute*2) || sharp) && !(status & ORGAN_ROBOT) - // If the limbs can break, make sure we don't exceed the maximum damage a limb can take before breaking - if((brute_dam + burn_dam + brute + burn) < max_damage || !config.limbs_can_break) - if(brute) - if(can_cut) - createwound( CUT, brute ) - else - createwound( BRUISE, brute ) - if(burn) - createwound( BURN, burn ) + // Make sure we don't exceed the maximum damage a limb can take before dismembering + if((brute_dam + burn_dam + brute + burn) < max_damage) + brute_dam += brute + burn_dam += burn + check_for_internal_bleeding(brute) else //If we can't inflict the full amount of damage, spread the damage in other ways //How much damage can we actually cause? - var/can_inflict = max_damage * config.organ_health_multiplier - (brute_dam + burn_dam) + var/can_inflict = max_damage - (brute_dam + burn_dam) if(can_inflict) if(brute > 0) //Inflict all burte damage we can - if(can_cut) - createwound( CUT, min(brute,can_inflict) ) - else - createwound( BRUISE, min(brute,can_inflict) ) + brute_dam = min(brute_dam + brute, brute_dam + can_inflict) var/temp = can_inflict //How much mroe damage can we inflict can_inflict = max(0, can_inflict - brute) //How much brute damage is left to inflict brute = max(0, brute - temp) + check_for_internal_bleeding(brute) if(burn > 0 && can_inflict) //Inflict all burn damage we can - createwound(BURN, min(burn,can_inflict)) + burn_dam = min(burn_dam + burn, burn_dam + can_inflict) //How much burn damage is left to inflict burn = max(0, burn - can_inflict) //If there are still hurties to dispense if(burn || brute) - if(fail_at_full_damage == 1 && body_part != UPPER_TORSO && body_part != LOWER_TORSO) - droplimb(1) //Clean loss, just drop the limb and be done - else - //List organs we can pass it to - var/list/obj/item/organ/external/possible_points = list() - if(parent) - possible_points += parent - if(children) for(var/organ in children) - if(organ) possible_points += organ - if(forbidden_limbs.len) - possible_points -= forbidden_limbs - if(possible_points.len) - //And pass the pain around - var/obj/item/organ/external/target = pick(possible_points) - target.take_damage(brute, burn, sharp, edge, used_weapon, forbidden_limbs + src) - if(fail_at_full_damage == 2 && body_part != UPPER_TORSO && body_part != LOWER_TORSO) - var/losstype - if(burn > brute) - losstype = DROPLIMB_BURN - else - losstype = DROPLIMB_BLUNT - droplimb(0, losstype) // less clean than a robot arm, doesn't buffer damage either + //List organs we can pass it to + var/list/obj/item/organ/external/possible_points = list() + if(parent) + possible_points += parent + if(children) + for(var/organ in children) + if(organ) + possible_points += organ + if(forbidden_limbs.len) + possible_points -= forbidden_limbs + if(possible_points.len) + //And pass the pain around + var/obj/item/organ/external/target = pick(possible_points) + target.take_damage(brute, burn, sharp, used_weapon, forbidden_limbs + src, ignore_resists = TRUE) //If the damage was reduced before, don't reduce it again - // sync the organ's damage with its wounds - src.update_damages() + if(dismember_at_max_damage && body_part != UPPER_TORSO && body_part != LOWER_TORSO) // We've ensured all damage to the mob is retained, now let's drop it, if necessary. + droplimb(1) //Clean loss, just drop the limb and be done + + // See if bones need to break + check_fracture() var/mob/living/carbon/owner_old = owner //Need to update health, but need a reference in case the below check cuts off a limb. //If limb took enough damage, try to cut or tear it off if(owner && loc == owner) - if(!cannot_amputate && config.limbs_can_break && (brute_dam) >= (max_damage * config.organ_health_multiplier)) + if(!cannot_amputate && (brute_dam) >= (max_damage)) if(prob(brute / 2)) - if(edge) - droplimb(0,DROPLIMB_EDGE) + if(sharp) + droplimb(0, DROPLIMB_SHARP) - if(owner_old) owner_old.updatehealth() + if(owner_old) + owner_old.updatehealth() return update_icon() #undef LIMB_SHARP_THRESH_INT_DMG @@ -308,34 +273,16 @@ if(status & ORGAN_ROBOT && !robo_repair) return - //Heal damage on the individual wounds - for(var/datum/wound/W in wounds) - if(brute == 0 && burn == 0) - break - - // heal brute damage - if(W.damage_type == CUT || W.damage_type == BRUISE) - brute = W.heal_damage(brute) - else if(W.damage_type == BURN) - burn = W.heal_damage(burn) + brute_dam = max(brute_dam - brute, 0) + burn_dam = max(burn_dam - burn, 0) if(internal) status &= ~ORGAN_BROKEN perma_injury = 0 -/* - if((brute || burn) && children && children.len && (owner.species.flags & REGENERATES_LIMBS)) - var/obj/item/organ/external/stump/S = locate() in children - if(S) -// to_chat(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() owner.updatehealth() - var/result = update_icon() - return result + return update_icon() /* This function completely restores a damaged organ to perfect condition. @@ -353,7 +300,7 @@ This function completely restores a damaged organ to perfect condition. brute_dam = 0 burn_dam = 0 open = 0 //Closing all wounds. - wounds.Cut() //Clears all wounds! Good as new. + internal_bleeding = FALSE if(istype(src, /obj/item/organ/external/head) && disfigured) //If their head's disfigured, refigure it. disfigured = 0 @@ -364,104 +311,19 @@ This function completely restores a damaged organ to perfect condition. for(var/obj/item/organ/external/EO in contents) EO.rejuvenate() - // remove embedded objects and drop them on the floor - for(var/obj/implanted_object in implants) - if(!istype(implanted_object,/obj/item/weapon/implant)) // We don't want to remove REAL implants. Just shrapnel etc. - implanted_object.loc = owner.loc - implants -= implanted_object - owner.updatehealth() update_icon() if(!owner) processing_objects |= src - -/obj/item/organ/external/proc/createwound(var/type = CUT, var/damage) - if(damage == 0) return - - //moved this before the open_wound check so that having many small wounds for example doesn't somehow protect you from taking internal damage - //Possibly trigger an internal wound, too. - var/local_damage = brute_dam + burn_dam + damage - if(damage > 15 && type != BURN && local_damage > 30 && prob(damage) && !(status & ORGAN_ROBOT)) - var/datum/wound/internal_bleeding/I = new () - wounds += I - owner.custom_pain("You feel something rip in your [name]!", 1) - - // first check whether we can widen an existing wound - if(wounds.len > 0 && prob(max(50+(number_wounds-1)*10,90))) - if((type == CUT || type == BRUISE) && damage >= 5) - //we need to make sure that the wound we are going to worsen is compatible with the type of damage... - var/list/compatible_wounds = list() - for(var/datum/wound/W in wounds) - if(W.can_worsen(type, damage)) - compatible_wounds += W - - if(compatible_wounds.len) - var/datum/wound/W = pick(compatible_wounds) - W.open_wound(damage) - if(prob(25)) - if(status & ORGAN_ROBOT) - owner.visible_message("The damage to [owner.name]'s [name] worsens.",\ - "The damage to your [name] worsens.",\ - "You hear the screech of abused metal.") - else - owner.visible_message("The wound on [owner.name]'s [name] widens with a nasty ripping noise.",\ - "The wound on your [name] widens with a nasty ripping noise.",\ - "You hear a nasty ripping noise, as if flesh is being torn apart.") - return - - //Creating wound - var/wound_type = get_wound_type(type, damage) - - if(wound_type) - var/datum/wound/W = new wound_type(damage) - - //Check whether we can add the wound to an existing wound - for(var/datum/wound/other in wounds) - if(other.can_merge(W)) - other.merge_wound(W) - W = null // to signify that the wound was added - break - if(W) - wounds += W - /**************************************************** PROCESSING & UPDATING ****************************************************/ //Determines if we even need to process this organ. -/obj/item/organ/external/proc/need_process() - if(status & (ORGAN_CUT_AWAY|ORGAN_GAUZED|ORGAN_BLEEDING|ORGAN_BROKEN|ORGAN_DESTROYED|ORGAN_SPLINTED|ORGAN_DEAD|ORGAN_MUTATED)) - return 1 - if(brute_dam || burn_dam) - return 1 - if(last_dam != brute_dam + burn_dam) // Process when we are fully healed up. - last_dam = brute_dam + burn_dam - return 1 - else - last_dam = brute_dam + burn_dam - if(germ_level) - return 1 - if(!wound_cleanup_timer && wounds.len) - wound_cleanup_timer = addtimer(src, "cleanup_wounds", SecondsToTicks(600), 1, wounds) - - if(update_icon()) - owner.UpdateDamageIcon(1) - return 0 - /obj/item/organ/external/process() if(owner) - if(parent) - if(parent.status & ORGAN_DESTROYED) - status |= ORGAN_DESTROYED - owner.update_body(1) - return - - // Process wounds, doing healing etc. Only do this every few ticks to save processing power - if(owner.life_tick % wound_update_accuracy == 0) - update_wounds() - //Chem traces slowly vanish if(owner.life_tick % 10 == 0) for(var/chemID in trace_chemicals) @@ -498,7 +360,7 @@ Note that amputating the affected organ does in fact remove the infection from t */ /obj/item/organ/external/proc/update_germs() - if(status & (ORGAN_ROBOT|ORGAN_DESTROYED) || (owner.species && owner.species.flags & IS_PLANT)) //Robotic limbs shouldn't be infected, nor should nonexistant limbs. + if((status & ORGAN_ROBOT) || (IS_PLANT in owner.species.species_traits)) //Robotic limbs shouldn't be infected, nor should nonexistant limbs. germ_level = 0 return @@ -514,17 +376,10 @@ Note that amputating the affected organ does in fact remove the infection from t /obj/item/organ/external/proc/handle_germ_sync() var/antibiotics = owner.reagents.get_reagent_amount("spaceacillin") - for(var/datum/wound/W in wounds) - //Open wounds can become infected - if(owner.germ_level > W.germ_level && W.infection_check()) - W.germ_level++ - if(antibiotics < 5) - for(var/datum/wound/W in wounds) - //Infected wounds raise the organ's germ level - if(W.germ_level > germ_level) - germ_level++ - break //limit increase to a maximum of one per second + //Open wounds can become infected + if(owner.germ_level > germ_level && infection_check()) + germ_level++ /obj/item/organ/external/handle_germ_effects() @@ -571,99 +426,20 @@ Note that amputating the affected organ does in fact remove the infection from t germ_level++ owner.adjustToxLoss(1) -//Updating wounds. Handles wound natural I had some free spachealing, internal bleedings and infections -/obj/item/organ/external/proc/update_wounds() - - if((status & ORGAN_ROBOT)) //Robotic limbs don't heal or get worse. - return - - for(var/datum/wound/W in wounds) - - // Internal wounds get worse over time. Low temperatures (cryo) stop them. - if(W.internal && !W.can_autoheal() && owner.bodytemperature >= 170) - var/bicardose = owner.reagents.get_reagent_amount("styptic_powder") - if(!bicardose) //styptic powder stops internal wounds from growing bigger with time, and also stop bleeding - W.open_wound(0.1 * wound_update_accuracy) - owner.vessel.remove_reagent("blood",0.05 * W.damage * wound_update_accuracy) - - owner.vessel.remove_reagent("blood",0.02 * W.damage * wound_update_accuracy) - if(prob(1 * wound_update_accuracy)) - owner.custom_pain("You feel a stabbing pain in your [name]!",1) - - //overdose of styptic powder begins healing IB - if(owner.reagents.get_reagent_amount("styptic_powder") >= 30) - W.damage = max(0, W.damage - 0.2) - - // slow healing - var/heal_amt = 0 - - // if damage >= 50 AFTER treatment then it's probably too severe to heal within the timeframe of a round. - if(W.can_autoheal() && W.wound_damage() < 50) - heal_amt += 0.5 - - //we only update wounds once in [wound_update_accuracy] ticks so have to emulate realtime - heal_amt = heal_amt * wound_update_accuracy - //configurable regen speed woo, no-regen hardcore or instaheal hugbox, choose your destiny - heal_amt = heal_amt * config.organ_regeneration_multiplier - // amount of healing is spread over all the wounds - heal_amt = heal_amt / (wounds.len + 1) - // making it look prettier on scanners - heal_amt = round(heal_amt,0.1) - W.heal_damage(heal_amt) - - // Salving also helps against infection - if(W.germ_level > 0 && W.salved && prob(2)) - W.disinfected = 1 - W.germ_level = 0 - - // sync the organ's damage with its wounds - src.update_damages() - if(update_icon()) - owner.UpdateDamageIcon(1) - //Updates brute_damn and burn_damn from wound damages. Updates BLEEDING status. -/obj/item/organ/external/proc/update_damages() - number_wounds = 0 - brute_dam = 0 - burn_dam = 0 - status &= ~ORGAN_BLEEDING - var/clamped = 0 +/obj/item/organ/external/proc/check_fracture() + if(config.bones_can_break && brute_dam > min_broken_damage && !(status & ORGAN_ROBOT)) + fracture() - var/mob/living/carbon/human/H - if(istype(owner,/mob/living/carbon/human)) - H = owner - - for(var/datum/wound/W in wounds) - if(W.damage_type == CUT || W.damage_type == BRUISE) - brute_dam += W.damage - else if(W.damage_type == BURN) - burn_dam += W.damage - - if(!(status & ORGAN_ROBOT) && W.bleeding()) - W.bleed_timer-- - if(H && (H.species.flags & NO_BLOOD)) // Bloodless organic races are finicky - W.clamped = 1 - W.bleed_timer = 0 - else - status |= ORGAN_BLEEDING - - clamped |= W.clamped - - number_wounds += W.amount - - if(open && !clamped && (H && !(H.species.flags & NO_BLOOD))) - status |= ORGAN_BLEEDING - - //Bone fractures - if(config.bones_can_break && brute_dam > min_broken_damage * config.organ_health_multiplier && !(status & ORGAN_ROBOT)) - src.fracture() +/obj/item/organ/external/proc/check_for_internal_bleeding(damage) + var/local_damage = brute_dam + damage + if(damage > 15 && local_damage > 30 && prob(damage) && !(status & ORGAN_ROBOT)) + internal_bleeding = TRUE + owner.custom_pain("You feel something rip in your [name]!", 1) // new damage icon system // returns just the brute/burn damage code /obj/item/organ/external/proc/damage_state_text() - if(status & ORGAN_DESTROYED) - return "--" - var/tburn = 0 var/tbrute = 0 @@ -709,10 +485,10 @@ Note that amputating the affected organ does in fact remove the infection from t return if(!disintegrate) - disintegrate = DROPLIMB_EDGE + disintegrate = DROPLIMB_SHARP switch(disintegrate) - if(DROPLIMB_EDGE) + if(DROPLIMB_SHARP) if(!clean) var/gore_sound = "[(status & ORGAN_ROBOT) ? "tortured metal" : "ripping tendons and flesh"]" owner.visible_message( @@ -736,22 +512,16 @@ Note that amputating the affected organ does in fact remove the infection from t var/mob/living/carbon/human/victim = owner //Keep a reference for post-removed(). // Let people make limbs become fun things when removed var/atom/movable/dropped_part = remove(null, ignore_children) - victim.traumatic_shock += 30 - wounds.Cut() - if(parent && !nodamage) - var/datum/wound/lost_limb/W = new (src, disintegrate, clean) + if(parent) parent.children -= src - if(clean) - parent.wounds |= W - parent.update_damages() - else - var/obj/item/organ/external/stump/stump = new (victim, 0, src) - if(status & ORGAN_ROBOT) - stump.robotize() - stump.wounds |= W - victim.bodyparts |= stump - stump.update_damages() + if(!nodamage) + var/total_brute = brute_dam + var/total_burn = burn_dam + for(var/obj/item/organ/external/E in children) //Factor in the children's brute and burn into how much will transfer + total_brute += E.brute_dam + total_burn += E.burn_dam + parent.take_damage(total_brute, total_burn, ignore_resists = TRUE) //Transfer the full damage to the parent, bypass limb damage reduction. parent = null spawn(1) @@ -761,9 +531,9 @@ Note that amputating the affected organ does in fact remove the infection from t victim.regenerate_icons() dir = 2 switch(disintegrate) - if(DROPLIMB_EDGE) + if(DROPLIMB_SHARP) compile_icon() - add_blood(victim) + add_blood(victim.blood_DNA, victim.species.blood_color) var/matrix/M = matrix() M.Turn(rand(180)) src.transform = M @@ -772,6 +542,8 @@ Note that amputating the affected organ does in fact remove the infection from t if(src && istype(loc,/turf)) dropped_part.throw_at(get_edge_target_turf(src,pick(alldirs)),rand(1,3),30) dir = 2 + brute_dam = 0 + burn_dam = 0 //Reset the damage on the limb; the damage should have transferred to the parent; we don't want extra damage being re-applie when then limb is re-attached return dropped_part else qdel(src) // If you flashed away to ashes, YOU FLASHED AWAY TO ASHES @@ -780,9 +552,6 @@ Note that amputating the affected organ does in fact remove the infection from t /**************************************************** HELPERS ****************************************************/ -/obj/item/organ/external/proc/is_stump() - return 0 - /obj/item/organ/external/proc/release_restraints(var/mob/living/carbon/human/holder) if(!holder) holder = owner @@ -799,41 +568,6 @@ Note that amputating the affected organ does in fact remove the infection from t "\The [holder.legcuffed.name] falls off you.") holder.unEquip(holder.legcuffed) - -/obj/item/organ/external/proc/bandage() - var/rval = 0 - src.status &= ~ORGAN_BLEEDING - for(var/datum/wound/W in wounds) - if(W.internal) continue - rval |= !W.bandaged - W.bandaged = 1 - return rval - -/obj/item/organ/external/proc/disinfect() - var/rval = 0 - for(var/datum/wound/W in wounds) - if(W.internal) continue - rval |= !W.disinfected - W.disinfected = 1 - W.germ_level = 0 - return rval - -/obj/item/organ/external/proc/clamp() - var/rval = 0 - src.status &= ~ORGAN_BLEEDING - for(var/datum/wound/W in wounds) - if(W.internal) continue - rval |= !W.clamped - W.clamped = 1 - return rval - -/obj/item/organ/external/proc/salve() - var/rval = 0 - for(var/datum/wound/W in wounds) - rval |= !W.salved - W.salved = 1 - return rval - /obj/item/organ/external/proc/fracture() if(status & ORGAN_ROBOT) return //ORGAN_BROKEN doesn't have the same meaning for robot limbs @@ -845,7 +579,7 @@ Note that amputating the affected organ does in fact remove the infection from t "You hear a loud cracking sound coming from \the [owner].",\ "Something feels like it shattered in your [name]!",\ "You hear a sickening crack.") - if(owner.species && !(owner.species.flags & NO_PAIN)) + if(owner.species && !(NO_PAIN in owner.species.species_traits)) owner.emote("scream") status |= ORGAN_BROKEN @@ -859,25 +593,24 @@ Note that amputating the affected organ does in fact remove the infection from t /obj/item/organ/external/proc/mend_fracture() if(status & ORGAN_ROBOT) return 0 //ORGAN_BROKEN doesn't have the same meaning for robot limbs - if(brute_dam > min_broken_damage * config.organ_health_multiplier) + if(brute_dam > min_broken_damage) return 0 //will just immediately fracture again status &= ~ORGAN_BROKEN return 1 -// I put these two next to each other to highlight that both exist. This should likely be resolved. -/obj/item/organ/external/robotize() +/obj/item/organ/external/robotize(company, make_tough = 0, convert_all = 1) ..() //robot limbs take reduced damage - brute_mod = 0.66 - burn_mod = 0.66 + if(!make_tough) + brute_mod = 0.66 + burn_mod = 0.66 + dismember_at_max_damage = TRUE + else + tough = TRUE // Robot parts also lack bones // This is so surgery isn't kaput, let's see how this does encased = null - fail_at_full_damage = 1 - -/obj/item/organ/external/robotize(var/company) - ..() if(company && istext(company)) set_company(company) @@ -885,8 +618,8 @@ Note that amputating the affected organ does in fact remove the infection from t cannot_break = 1 get_icon() for(var/obj/item/organ/external/T in children) - if(T) - T.robotize() + if((convert_all) || (T.type in convertable_children)) + T.robotize(company, make_tough, convert_all) @@ -912,35 +645,17 @@ Note that amputating the affected organ does in fact remove the infection from t return max(brute_dam + burn_dam - perma_injury, perma_injury) //could use health? /obj/item/organ/external/proc/has_infected_wound() - for(var/datum/wound/W in wounds) - if(W.germ_level > INFECTION_LEVEL_ONE) - return 1 - return 0 + if(germ_level > INFECTION_LEVEL_ONE) + return TRUE + return FALSE /obj/item/organ/external/proc/is_usable() - if((status & ORGAN_ROBOT) && get_damage() >= max_damage) //robot limbs just become inoperable at max damage + if(((status & ORGAN_ROBOT) && get_damage() >= max_damage) && !tough) //robot limbs just become inoperable at max damage return - return !(status & (ORGAN_DESTROYED|ORGAN_MUTATED|ORGAN_DEAD)) + return !(status & (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)) - -/obj/item/organ/external/proc/embed(var/obj/item/weapon/W, var/silent = 0) - if(!owner || loc != owner) - return - if(!silent) - owner.visible_message("\The [W] sticks in the wound!") - implants += W - owner.embedded_flag = 1 - owner.verbs += /mob/proc/yank_out_object - W.add_blood(owner) - if(ismob(W.loc)) - var/mob/living/H = W.loc - H.drop_item() - W.loc = owner - -/obj/item/organ/external/proc/open_enough_for_surgery() - return (encased ? (open == 3) : (open == 2)) + return ((status & ORGAN_ROBOT) && (brute_dam + burn_dam) >= 10 && prob(brute_dam + burn_dam) && !tough) /obj/item/organ/external/remove(var/mob/living/user, var/ignore_children) @@ -949,15 +664,18 @@ Note that amputating the affected organ does in fact remove the infection from t var/is_robotic = status & ORGAN_ROBOT var/mob/living/carbon/human/victim = owner - . = ..() - status |= ORGAN_DESTROYED victim.bad_external_organs -= src if(status & ORGAN_SPLINTED) victim.splinted_limbs -= src - for(var/implant in implants) //todo: check if this can be left alone - qdel(implant) + for(var/obj/item/I in embedded_objects) + embedded_objects -= I + I.forceMove(src) + if(!owner.has_embedded_objects()) + owner.clear_alert("embeddedobject") + + . = ..() // Attached organs also fly off. if(!ignore_children) @@ -1012,17 +730,18 @@ Note that amputating the affected organ does in fact remove the infection from t return 0 return src == O.bodyparts_by_name[limb_name] -// The callback we use to remove wounds from an un-processed limb -/obj/item/organ/external/proc/cleanup_wounds(var/list/slated_wounds) - wound_cleanup_timer = null - for(var/datum/wound/W in slated_wounds) - if(!W) - continue - if(W.damage > 0) - continue - wounds -= W - qdel(W) +/obj/item/organ/external/proc/infection_check() + var/total_damage = brute_dam + burn_dam + if(total_damage) + if(total_damage < 10) //small amounts of damage aren't infectable + return FALSE + if(owner && owner.bleedsuppress && total_damage < 25) + return FALSE + + var/dam_coef = round(total_damage / 10) + return prob(dam_coef * 10) + return FALSE /obj/item/organ/external/serialize() var/list/data = ..() @@ -1038,3 +757,22 @@ Note that amputating the affected organ does in fact remove the infection from t ..() // Parent call loads in the DNA if(data["dna"]) sync_colour_to_dna() + +//Remove all embedded objects from all limbs on the carbon mob +/mob/living/carbon/human/proc/remove_all_embedded_objects() + var/turf/T = get_turf(src) + + for(var/X in bodyparts) + var/obj/item/organ/external/L = X + for(var/obj/item/I in L.embedded_objects) + L.embedded_objects -= I + I.forceMove(T) + + clear_alert("embeddedobject") + +/mob/living/carbon/human/proc/has_embedded_objects() + . = 0 + for(var/X in bodyparts) + var/obj/item/organ/external/L = X + for(var/obj/item/I in L.embedded_objects) + return 1 \ No newline at end of file diff --git a/code/modules/surgery/organs/organ_icon.dm b/code/modules/surgery/organs/organ_icon.dm index 6c2c9a89c08..59e3de83894 100644 --- a/code/modules/surgery/organs/organ_icon.dm +++ b/code/modules/surgery/organs/organ_icon.dm @@ -49,7 +49,7 @@ var/global/list/limb_icon_cache = list() if(!isnull(dna.GetUIValue(DNA_UI_SKIN_TONE)) && ((species.bodyflags & HAS_SKIN_TONE) || (species.bodyflags & HAS_ICON_SKIN_TONE))) s_col = null s_tone = dna.GetUIValue(DNA_UI_SKIN_TONE) - if(species.flags & HAS_SKIN_COLOR) + if(species.bodyflags & HAS_SKIN_COLOR) s_tone = null s_col = list(dna.GetUIValue(DNA_UI_SKIN_R), dna.GetUIValue(DNA_UI_SKIN_G), dna.GetUIValue(DNA_UI_SKIN_B)) @@ -58,7 +58,7 @@ var/global/list/limb_icon_cache = list() var/obj/item/organ/internal/eyes/eyes = owner.get_int_organ(/obj/item/organ/internal/eyes)//owner.internal_bodyparts_by_name["eyes"] if(eyes) eyes.update_colour() -/obj/item/organ/external/head/remove() +/obj/item/organ/external/head/remove(mob/living/user, ignore_children) get_icon() . = ..() @@ -115,7 +115,7 @@ var/global/list/limb_icon_cache = list() mob_icon.Blend(eyes_icon, ICON_OVERLAY) overlays |= eyes_icon - if(owner.lip_style && (species && (species.flags & HAS_LIPS))) + if(owner.lip_style && (LIPS in species.species_traits)) var/icon/lip_icon = new/icon('icons/mob/human_face.dmi', "lips_[owner.lip_style]_s") overlays |= lip_icon mob_icon.Blend(lip_icon, ICON_OVERLAY) @@ -139,7 +139,7 @@ var/global/list/limb_icon_cache = list() if(f_style) var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[f_style] - if(facial_hair_style && ((facial_hair_style.species_allowed && (species.name in facial_hair_style.species_allowed)) || (src.species.flags & ALL_RPARTS))) + if(facial_hair_style && ((facial_hair_style.species_allowed && (species.name in facial_hair_style.species_allowed)) || (src.species.bodyflags & ALL_RPARTS))) var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s") if(species.name == "Slime People") // I am el worstos facial_s.Blend(rgb(owner.r_skin, owner.g_skin, owner.b_skin, 160), ICON_AND) @@ -149,7 +149,7 @@ var/global/list/limb_icon_cache = list() if(h_style && !(owner.head && (owner.head.flags & BLOCKHEADHAIR))) var/datum/sprite_accessory/hair_style = hair_styles_list[h_style] - if(hair_style && ((species.name in hair_style.species_allowed) || (src.species.flags & ALL_RPARTS))) + if(hair_style && ((species.name in hair_style.species_allowed) || (src.species.bodyflags & ALL_RPARTS))) var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s") if(species.name == "Slime People") // I am el worstos hair_s.Blend(rgb(owner.r_skin, owner.g_skin, owner.b_skin, 160), ICON_AND) @@ -172,7 +172,7 @@ var/global/list/limb_icon_cache = list() gender = "f" else gender = "m" - if(limb_name == "head" && !is_stump() && !(status & ORGAN_DESTROYED)) + if(limb_name == "head") var/obj/item/organ/external/head/head_organ = src head_organ.handle_alt_icon() @@ -192,7 +192,7 @@ var/global/list/limb_icon_cache = list() /obj/item/organ/external/chest/get_icon_state(skeletal) var/result = ..() - if(fat && !skeletal && !(status & ORGAN_ROBOT) && (species.flags & CAN_BE_FAT)) + if(fat && !skeletal && !(status & ORGAN_ROBOT) && (CAN_BE_FAT in species.species_traits)) result[2] += "_fat" return result diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 071d579b0c0..1070199d598 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -5,8 +5,8 @@ force = 1 w_class = WEIGHT_CLASS_SMALL throwforce = 0 - var/zone = "chest" var/slot + // DO NOT add slots with matching names to different zones - it will break internal_organs_slot list! vital = 0 var/non_primary = 0 @@ -29,6 +29,7 @@ owner = M M.internal_organs |= src + M.internal_organs_slot[slot] = src var/obj/item/organ/external/parent if(istype(M, /mob/living/carbon/human)) var/mob/living/carbon/human/H = M @@ -52,6 +53,8 @@ owner = null if(M) M.internal_organs -= src + if(M.internal_organs_slot[slot] == src) + M.internal_organs_slot.Remove(slot) if(vital && !special) if(M.stat != DEAD)//safety check! M.death() @@ -208,7 +211,7 @@ /obj/item/organ/internal/heart/cursed/attack(mob/living/carbon/human/H, mob/living/carbon/human/user, obj/target) if(H == user && istype(H)) - if(H.species.flags & NO_BLOOD || H.species.exotic_blood) + if(NO_BLOOD in H.species.species_traits) to_chat(H, "\The [src] is not compatible with your form!") return playsound(user,'sound/effects/singlebeat.ogg', 40, 1) @@ -221,10 +224,11 @@ if(world.time > (last_pump + pump_delay)) if(ishuman(owner) && owner.client) //While this entire item exists to make people suffer, they can't control disconnects. var/mob/living/carbon/human/H = owner - H.vessel.remove_reagent("blood", blood_loss) - to_chat(H, "You have to keep pumping your blood!") - if(H.client) - H.client.color = "red" //bloody screen so real + if(!(NO_BLOOD in H.species.species_traits)) + H.blood_volume = max(H.blood_volume - blood_loss, 0) + to_chat(H, "You have to keep pumping your blood!") + if(H.client) + H.client.color = "red" //bloody screen so real else last_pump = world.time //lets be extra fair *sigh* @@ -253,13 +257,14 @@ var/mob/living/carbon/human/H = owner if(istype(H)) - H.vessel.add_reagent("blood", (cursed_heart.blood_loss*0.5))//gain half the blood back from a failure - if(owner.client) - owner.client.color = "" + if(!(NO_BLOOD in H.species.species_traits)) + H.blood_volume = min(H.blood_volume + cursed_heart.blood_loss*0.5, BLOOD_VOLUME_NORMAL) + if(owner.client) + owner.client.color = "" - H.adjustBruteLoss(-cursed_heart.heal_brute) - H.adjustFireLoss(-cursed_heart.heal_burn) - H.adjustOxyLoss(-cursed_heart.heal_oxy) + H.adjustBruteLoss(-cursed_heart.heal_brute) + H.adjustFireLoss(-cursed_heart.heal_burn) + H.adjustOxyLoss(-cursed_heart.heal_oxy) /obj/item/organ/internal/lungs name = "lungs" @@ -286,7 +291,7 @@ if(is_bruised()) if(prob(2)) owner.custom_emote(1, "coughs up blood!") - owner.drip(10) + owner.bleed(1) if(prob(4)) owner.custom_emote(1, "gasps for air!") owner.AdjustLoseBreath(5) @@ -426,20 +431,17 @@ //High toxins levels are dangerous if(owner.getToxLoss() >= 60 && !owner.reagents.has_reagent("charcoal")) //Healthy liver suffers on its own - if(src.damage < min_broken_damage) - src.damage += 0.2 * PROCESS_ACCURACY + if(damage < min_broken_damage) + take_damage(0.2 * PROCESS_ACCURACY) //Damaged one shares the fun else var/obj/item/organ/internal/O = pick(owner.internal_organs) if(O) - O.damage += 0.2 * PROCESS_ACCURACY + O.take_damage(0.2 * PROCESS_ACCURACY) //Detox can heal small amounts of damage - if(src.damage && src.damage < src.min_bruised_damage && owner.reagents.has_reagent("charcoal")) - src.damage -= 0.2 * PROCESS_ACCURACY - - if(src.damage < 0) - src.damage = 0 + if(damage && damage < min_bruised_damage && owner.reagents.has_reagent("charcoal")) + take_damage(-0.2 * PROCESS_ACCURACY) // Get the effectiveness of the liver. var/filter_effect = 3 @@ -449,7 +451,7 @@ filter_effect -= 2 // Damaged liver means some chemicals are very dangerous - if(src.damage >= src.min_bruised_damage) + if(damage >= min_bruised_damage) for(var/datum/reagent/R in owner.reagents.reagent_list) // Ethanol and all drinks are bad if(istype(R, /datum/reagent/consumable/ethanol)) diff --git a/code/modules/surgery/organs/organ_stump.dm b/code/modules/surgery/organs/organ_stump.dm deleted file mode 100644 index 9d6c0183cb8..00000000000 --- a/code/modules/surgery/organs/organ_stump.dm +++ /dev/null @@ -1,28 +0,0 @@ -/obj/item/organ/external/stump - name = "limb stump" - icon_name = "" - var/can_intake_reagents = 0 - -/obj/item/organ/external/stump/New(var/mob/living/carbon/holder, var/internal, var/obj/item/organ/external/limb) - if(istype(limb)) - limb_name = limb.limb_name - body_part = limb.body_part - amputation_point = limb.amputation_point - parent_organ = limb.parent_organ - wounds = limb.wounds - ..(holder, internal) - if(istype(limb)) - max_damage = limb.max_damage - if((limb.status & ORGAN_ROBOT) && (!parent || (parent.status & ORGAN_ROBOT))) - robotize() //if both limb and the parent are robotic, the stump is robotic too - -/obj/item/organ/external/stump/is_stump() - return 1 - -/obj/item/organ/external/stump/remove() - ..() - qdel(src) - return null - -/obj/item/organ/external/stump/is_usable() - return 0 diff --git a/code/modules/surgery/organs/pain.dm b/code/modules/surgery/organs/pain.dm index 67655e17102..d107c7439c6 100644 --- a/code/modules/surgery/organs/pain.dm +++ b/code/modules/surgery/organs/pain.dm @@ -47,7 +47,8 @@ mob/living/carbon/proc/pain(var/partname, var/amount, var/force, var/burning = 0 mob/living/carbon/human/proc/custom_pain(var/message, var/flash_strength) if(stat >= 1) return - if(species && species.flags & NO_PAIN) return + if(NO_PAIN in species.species_traits) + return if(reagents.has_reagent("morphine")) return @@ -66,7 +67,7 @@ mob/living/carbon/human/proc/custom_pain(var/message, var/flash_strength) mob/living/carbon/human/proc/handle_pain() // not when sleeping - if(species && species.flags & NO_PAIN) + if(NO_PAIN in species.species_traits) //While synthetics don't feel pain, they will notice their gears gunking up with residue (toxins) if(isSynthetic()) var/toxDamageMessage = null diff --git a/code/modules/surgery/organs/robolimbs.dm b/code/modules/surgery/organs/robolimbs.dm index 2d31942059c..d3c297bc0c7 100644 --- a/code/modules/surgery/organs/robolimbs.dm +++ b/code/modules/surgery/organs/robolimbs.dm @@ -1,5 +1,6 @@ var/global/list/all_robolimbs = list() var/global/list/chargen_robolimbs = list() +var/global/list/selectable_robolimbs = list() var/global/datum/robolimb/basic_robolimb /proc/populate_robolimb_list() @@ -11,12 +12,15 @@ var/global/datum/robolimb/basic_robolimb if(R != "head" && R != "chest" && R != "groin" ) //Part of the method that ensures only IPCs can access head, chest and groin prosthetics. if(R.has_subtypes) //Ensures solos get added to the list as well be incorporating has_subtypes == 1 and has_subtypes == 2. chargen_robolimbs[R.company] = R //List only main brands and solo parts. + if(R.selectable) + selectable_robolimbs[R.company] = R /datum/robolimb var/company = "Unbranded" // Shown when selecting the limb. var/desc = "A generic unbranded robotic prosthesis." // Seen when examining a limb. var/icon = 'icons/mob/human_races/robotic.dmi' // Icon base to draw from. var/unavailable_at_chargen // If set, not available at chargen. + var/selectable = 1 // If set, is it available for selection on attack_self with a robo limb? var/is_monitor // If set, limb is a monitor and should be getting monitor styles. var/has_subtypes = 2 // If null, object is a model. If 1, object is a brand (that serves as the default model) with child models. If 2, object is a brand that has no child models and thus also serves as the model.. var/parts = list("chest", "groin", "head", "r_arm", "r_hand", "r_leg", "r_foot", "l_leg", "l_foot", "l_arm", "l_hand") // Defines what parts said brand can replace on a body. @@ -31,6 +35,7 @@ var/global/datum/robolimb/basic_robolimb company = "Bishop Cybernetics alt." icon = 'icons/mob/human_races/cyberlimbs/bishop/bishop_alt1.dmi' parts = list("head") + selectable = 0 has_subtypes = null /datum/robolimb/bishop/monitor @@ -38,6 +43,7 @@ var/global/datum/robolimb/basic_robolimb icon = 'icons/mob/human_races/cyberlimbs/bishop/bishop_monitor.dmi' parts = list("head") is_monitor = 1 + selectable = 0 has_subtypes = null /datum/robolimb/hesphiastos @@ -51,6 +57,7 @@ var/global/datum/robolimb/basic_robolimb icon = 'icons/mob/human_races/cyberlimbs/hesphiastos/hesphiastos_alt1.dmi' parts = list("head") is_monitor = 1 + selectable = 0 has_subtypes = null /datum/robolimb/hesphiastos/monitor @@ -58,6 +65,7 @@ var/global/datum/robolimb/basic_robolimb icon = 'icons/mob/human_races/cyberlimbs/hesphiastos/hesphiastos_monitor.dmi' parts = list("head") is_monitor = 1 + selectable = 0 has_subtypes = null /datum/robolimb/morpheus @@ -74,6 +82,7 @@ var/global/datum/robolimb/basic_robolimb parts = list("head") unavailable_at_chargen = null is_monitor = null + selectable = 0 has_subtypes = 2 //Edge case. We want to be able to pick this one, and if we had it left as null for has_subtypes we'd be assuming it'll be chosen as a child model, //and since the parent is unavailable at chargen, we wouldn't be able to see it in the list anyway. Now, we'll be able to select the Morpheus Ckt. Alt. head as a solo-model. @@ -87,6 +96,7 @@ var/global/datum/robolimb/basic_robolimb company = "Ward-Takahashi alt." icon = 'icons/mob/human_races/cyberlimbs/wardtakahashi/wardtakahashi_alt1.dmi' parts = list("head") + selectable = 0 has_subtypes = null /datum/robolimb/wardtakahashi/monitor @@ -94,6 +104,7 @@ var/global/datum/robolimb/basic_robolimb icon = 'icons/mob/human_races/cyberlimbs/wardtakahashi/wardtakahashi_monitor.dmi' parts = list("head") is_monitor = 1 + selectable = 0 has_subtypes = null /datum/robolimb/xion @@ -106,6 +117,7 @@ var/global/datum/robolimb/basic_robolimb company = "Xion Manufacturing Group alt." icon = 'icons/mob/human_races/cyberlimbs/xion/xion_alt1.dmi' parts = list("head") + selectable = 0 has_subtypes = null /datum/robolimb/xion/monitor @@ -113,6 +125,7 @@ var/global/datum/robolimb/basic_robolimb icon = 'icons/mob/human_races/cyberlimbs/xion/xion_monitor.dmi' parts = list("head") is_monitor = 1 + selectable = 0 has_subtypes = null /datum/robolimb/zenghu @@ -131,6 +144,7 @@ var/global/datum/robolimb/basic_robolimb company = "Shellguard Munitions Elite Series" icon = 'icons/mob/human_races/cyberlimbs/shellguard/shellguard_alt1.dmi' parts = list("head") + selectable = 0 has_subtypes = null /datum/robolimb/shellguard/monitor @@ -138,4 +152,5 @@ var/global/datum/robolimb/basic_robolimb icon = 'icons/mob/human_races/cyberlimbs/shellguard/shellguard_monitor.dmi' parts = list("head") is_monitor = 1 + selectable = 0 has_subtypes = null \ No newline at end of file diff --git a/code/modules/surgery/organs/subtypes/skrell.dm b/code/modules/surgery/organs/subtypes/skrell.dm index 842088f2937..7e5785c7fa0 100644 --- a/code/modules/surgery/organs/subtypes/skrell.dm +++ b/code/modules/surgery/organs/subtypes/skrell.dm @@ -40,7 +40,7 @@ /obj/item/organ/internal/headpocket/on_owner_death() empty_contents() -/obj/item/organ/internal/headpocket/remove() +/obj/item/organ/internal/headpocket/remove(mob/living/carbon/M, special = 0) empty_contents() . = ..() diff --git a/code/modules/surgery/organs/subtypes/standard.dm b/code/modules/surgery/organs/subtypes/standard.dm index a6467584963..bf2aeced0d4 100644 --- a/code/modules/surgery/organs/subtypes/standard.dm +++ b/code/modules/surgery/organs/subtypes/standard.dm @@ -17,6 +17,7 @@ parent_organ = null encased = "ribcage" var/fat = FALSE + convertable_children = list(/obj/item/organ/external/groin) /obj/item/organ/external/chest/proc/makeFat(update_body_icon = 1) fat = TRUE @@ -45,6 +46,7 @@ w_class = WEIGHT_CLASS_BULKY // if you know what I mean ;) body_part = LOWER_TORSO vital = 1 + cannot_amputate = TRUE parent_organ = "chest" amputation_point = "lumbar" gendered_icon = 1 @@ -60,6 +62,7 @@ parent_organ = "chest" amputation_point = "left shoulder" can_grasp = 1 + convertable_children = list(/obj/item/organ/external/hand) /obj/item/organ/external/arm/right limb_name = "r_arm" @@ -67,6 +70,7 @@ icon_name = "r_arm" body_part = ARM_RIGHT amputation_point = "right shoulder" + convertable_children = list(/obj/item/organ/external/hand/right) /obj/item/organ/external/leg limb_name = "l_leg" @@ -80,6 +84,7 @@ parent_organ = "groin" amputation_point = "left hip" can_stand = 1 + convertable_children = list(/obj/item/organ/external/foot) /obj/item/organ/external/leg/right limb_name = "r_leg" @@ -88,6 +93,7 @@ body_part = LEG_RIGHT icon_position = RIGHT amputation_point = "right hip" + convertable_children = list(/obj/item/organ/external/foot/right) /obj/item/organ/external/foot limb_name = "l_foot" @@ -214,8 +220,8 @@ ..() -/obj/item/organ/external/head/take_damage(brute, burn, sharp, edge, used_weapon = null, list/forbidden_limbs = list()) - ..(brute, burn, sharp, edge, used_weapon, forbidden_limbs) +/obj/item/organ/external/head/take_damage(brute, burn, sharp, used_weapon = null, list/forbidden_limbs = list(), ignore_resists = FALSE) + ..(brute, burn, sharp, used_weapon, forbidden_limbs, ignore_resists) if(!disfigured) if(brute_dam > 40) if(prob(50)) diff --git a/code/modules/surgery/organs/subtypes/xenos.dm b/code/modules/surgery/organs/subtypes/xenos.dm index 8f4434f41bc..bbe3f4387de 100644 --- a/code/modules/surgery/organs/subtypes/xenos.dm +++ b/code/modules/surgery/organs/subtypes/xenos.dm @@ -2,28 +2,18 @@ origin_tech = "biotech=5" icon_state = "xgibmid2" var/list/alien_powers = list() - tough = 1 - sterile = 1 - -///obj/item/organ/internal/xenos/New() -// for(var/A in alien_powers) -// if(ispath(A)) -// alien_powers -= A -// alien_powers += new A(src) -// ..() + tough = TRUE + sterile = TRUE ///can be changed if xenos get an update.. /obj/item/organ/internal/xenos/insert(mob/living/carbon/M, special = 0) ..() for(var/P in alien_powers) M.verbs |= P - //M.verbs |= alien_powers.Copy() /obj/item/organ/internal/xenos/remove(mob/living/carbon/M, special = 0) for(var/P in alien_powers) M.verbs -= P - //M.verbs -= alien_powers.Copy() - . = ..() /obj/item/organ/internal/xenos/prepare_eat() diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index e44f20046db..915dd67d6af 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -38,7 +38,6 @@ var/static/regex/multispin_words = regex("like a record baby") /obj/item/organ/internal/vocal_cords //organs that are activated through speech with the :x channel name = "vocal cords" icon_state = "appendix" - zone = "mouth" slot = "vocal_cords" parent_organ = "mouth" var/spans = null @@ -245,7 +244,7 @@ var/static/regex/multispin_words = regex("like a record baby") //BLEED else if((findtext(message, bleed_words))) for(var/mob/living/carbon/human/H in listeners) - H.drip(100 * power_multiplier) + H.bleed_rate += (5 * power_multiplier) next_command = world.time + cooldown_damage //FIRE @@ -436,7 +435,7 @@ var/static/regex/multispin_words = regex("like a record baby") playsound(get_turf(owner), 'sound/items/bikehorn.ogg', 300, 1) if(owner.mind && owner.mind.assigned_role == "Clown") for(var/mob/living/carbon/C in listeners) - C.slip(0,7 * power_multiplier) + C.slip("your feet", 0, 7 * power_multiplier) next_command = world.time + cooldown_stun else next_command = world.time + cooldown_meme diff --git a/code/modules/surgery/organs/wound.dm b/code/modules/surgery/organs/wound.dm deleted file mode 100644 index ca5b25dee12..00000000000 --- a/code/modules/surgery/organs/wound.dm +++ /dev/null @@ -1,344 +0,0 @@ - -/**************************************************** - WOUNDS -****************************************************/ -/datum/wound - // number representing the current stage - var/current_stage = 0 - - // description of the wound - var/desc = "wound" //default in case something borks - - // amount of damage this wound causes - var/damage = 0 - // ticks of bleeding left. - var/bleed_timer = 0 - // amount of damage the current wound type requires(less means we need to apply the next healing stage) - var/min_damage = 0 - - // is the wound bandaged? - var/bandaged = 0 - // Similar to bandaged, but works differently - var/clamped = 0 - // is the wound salved? - var/salved = 0 - // is the wound disinfected? - var/disinfected = 0 - var/created = 0 - // number of wounds of this type - var/amount = 1 - // amount of germs in the wound - var/germ_level = 0 - - /* These are defined by the wound type and should not be changed */ - - // stages such as "cut", "deep cut", etc. - var/list/stages - // internal wounds can only be fixed through surgery - var/internal = 0 - // maximum stage at which bleeding should still happen. Beyond this stage bleeding is prevented. - var/max_bleeding_stage = 0 - // one of CUT, BRUISE, BURN - var/damage_type = CUT - // whether this wound needs a bandage/salve to heal at all - // the maximum amount of damage that this wound can have and still autoheal - var/autoheal_cutoff = 15 - - - - - // helper lists - var/tmp/list/desc_list = list() - var/tmp/list/damage_list = list() - - New(var/damage) - - created = world.time - - // reading from a list("stage" = damage) is pretty difficult, so build two separate - // lists from them instead - for(var/V in stages) - desc_list += V - damage_list += stages[V] - - src.damage = damage - - // initialize with the appropriate stage - src.init_stage(damage) - - bleed_timer += damage - - // returns 1 if there's a next stage, 0 otherwise - proc/init_stage(var/initial_damage) - current_stage = stages.len - - while(src.current_stage > 1 && src.damage_list[current_stage-1] <= initial_damage / src.amount) - src.current_stage-- - - src.min_damage = damage_list[current_stage] - src.desc = desc_list[current_stage] - - // the amount of damage per wound - proc/wound_damage() - return src.damage / src.amount - - proc/can_autoheal() - if(src.wound_damage() <= autoheal_cutoff) - return 1 - - return is_treated() - - // checks whether the wound has been appropriately treated - proc/is_treated() - if(damage_type == BRUISE || damage_type == CUT) - return bandaged - else if(damage_type == BURN) - return salved - - // Checks whether other other can be merged into src. - proc/can_merge(var/datum/wound/other) - if(other.type != src.type) return 0 - if(other.current_stage != src.current_stage) return 0 - if(other.damage_type != src.damage_type) return 0 - if(!(other.can_autoheal()) != !(src.can_autoheal())) return 0 - if(!(other.bandaged) != !(src.bandaged)) return 0 - if(!(other.clamped) != !(src.clamped)) return 0 - if(!(other.salved) != !(src.salved)) return 0 - if(!(other.disinfected) != !(src.disinfected)) return 0 - //if(other.germ_level != src.germ_level) return 0 - return 1 - - proc/merge_wound(var/datum/wound/other) - src.damage += other.damage - src.amount += other.amount - src.bleed_timer += other.bleed_timer - src.germ_level = max(src.germ_level, other.germ_level) - src.created = max(src.created, other.created) //take the newer created time - - // checks if wound is considered open for external infections - // untreated cuts (and bleeding bruises) and burns are possibly infectable, chance higher if wound is bigger - proc/infection_check() - if(damage < 10) //small cuts, tiny bruises, and moderate burns shouldn't be infectable. - return 0 - if(is_treated() && damage < 25) //anything less than a flesh wound (or equivalent) isn't infectable if treated properly - return 0 - if(disinfected) - germ_level = 0 //reset this, just in case - return 0 - - if(damage_type == BRUISE && !bleeding()) //bruises only infectable if bleeding - return 0 - - var/dam_coef = round(damage/10) - switch(damage_type) - if(BRUISE) - return prob(dam_coef*5) - if(BURN) - return prob(dam_coef*10) - if(CUT) - return prob(dam_coef*20) - - return 0 - - // heal the given amount of damage, and if the given amount of damage was more - // than what needed to be healed, return how much heal was left - // set @heals_internal to also heal internal organ damage - proc/heal_damage(amount, heals_internal = 0) - if(src.internal && !heals_internal) - // heal nothing - return amount - - var/healed_damage = min(src.damage, amount) - amount -= healed_damage - src.damage -= healed_damage - - while(src.wound_damage() < damage_list[current_stage] && current_stage < src.desc_list.len) - current_stage++ - desc = desc_list[current_stage] - src.min_damage = damage_list[current_stage] - - // return amount of healing still leftover, can be used for other wounds - return amount - - // opens the wound again - proc/open_wound(damage) - src.damage += damage - bleed_timer += damage - - while(src.current_stage > 1 && src.damage_list[current_stage-1] <= src.damage / src.amount) - src.current_stage-- - - src.desc = desc_list[current_stage] - src.min_damage = damage_list[current_stage] - - // returns whether this wound can absorb the given amount of damage. - // this will prevent large amounts of damage being trapped in less severe wound types - proc/can_worsen(damage_type, damage) - if(src.damage_type != damage_type) - return 0 //incompatible damage types - - if(src.amount > 1) - return 0 - - //with 1.5*, a shallow cut will be able to carry at most 30 damage, - //37.5 for a deep cut - //52.5 for a flesh wound, etc. - var/max_wound_damage = 1.5*src.damage_list[1] - if(src.damage + damage > max_wound_damage) - return 0 - - return 1 - - proc/bleeding() - if(src.internal) - return 0 // internal wounds don't bleed in the sense of this function - - if(current_stage > max_bleeding_stage) - return 0 - - if(bandaged||clamped) - return 0 - - if(wound_damage() <= 30 && bleed_timer <= 0) - return 0 //Bleed timer has run out. Wounds with more than 30 damage don't stop bleeding on their own. - - return (damage_type == BRUISE && wound_damage() >= 20 || damage_type == CUT && wound_damage() >= 5) - -/** WOUND DEFINITIONS **/ - -//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, -//because in it's stages list, "deep cut" = 15. -/proc/get_wound_type(var/type = CUT, var/damage) - switch(type) - if(CUT) - switch(damage) - if(70 to INFINITY) - return /datum/wound/cut/massive - if(60 to 70) - return /datum/wound/cut/gaping_big - if(50 to 60) - return /datum/wound/cut/gaping - if(25 to 50) - return /datum/wound/cut/flesh - if(15 to 25) - return /datum/wound/cut/deep - if(0 to 15) - return /datum/wound/cut/small - if(BRUISE) - return /datum/wound/bruise - if(BURN) - switch(damage) - if(50 to INFINITY) - return /datum/wound/burn/carbonised - if(40 to 50) - return /datum/wound/burn/deep - if(30 to 40) - return /datum/wound/burn/severe - if(15 to 30) - return /datum/wound/burn/large - if(0 to 15) - return /datum/wound/burn/moderate - return null //no wound - -/** CUTS **/ -/datum/wound/cut/small - // Minor cuts have max_bleeding_stage set to the stage that bears the wound type's name. - // The major cut types have the max_bleeding_stage set to the clot stage (which is accordingly given the "blood soaked" descriptor). - max_bleeding_stage = 3 - stages = list("ugly ripped cut" = 20, "ripped cut" = 10, "cut" = 5, "healing cut" = 2, "small scab" = 0) - damage_type = CUT - -/datum/wound/cut/deep - max_bleeding_stage = 3 - stages = list("ugly deep ripped cut" = 25, "deep ripped cut" = 20, "deep cut" = 15, "clotted cut" = 8, "scab" = 2, "fresh skin" = 0) - damage_type = CUT - -/datum/wound/cut/flesh - max_bleeding_stage = 4 - stages = list("ugly ripped flesh wound" = 35, "ugly flesh wound" = 30, "flesh wound" = 25, "blood soaked clot" = 15, "large scab" = 5, "fresh skin" = 0) - damage_type = CUT - -/datum/wound/cut/gaping - max_bleeding_stage = 3 - stages = list("gaping wound" = 50, "large blood soaked clot" = 25, "blood soaked clot" = 15, "small angry scar" = 5, "small straight scar" = 0) - damage_type = CUT - -/datum/wound/cut/gaping_big - max_bleeding_stage = 3 - stages = list("big gaping wound" = 60, "healing gaping wound" = 40, "large blood soaked clot" = 25, "large angry scar" = 10, "large straight scar" = 0) - damage_type = CUT - -datum/wound/cut/massive - max_bleeding_stage = 3 - stages = list("massive wound" = 70, "massive healing wound" = 50, "massive blood soaked clot" = 25, "massive angry scar" = 10, "massive jagged scar" = 0) - damage_type = CUT - -/** BRUISES **/ -/datum/wound/bruise - stages = list("monumental bruise" = 80, "huge bruise" = 50, "large bruise" = 30, - "moderate bruise" = 20, "small bruise" = 10, "tiny bruise" = 5) - max_bleeding_stage = 3 //only large bruise and above can bleed. - autoheal_cutoff = 30 - damage_type = BRUISE - -/** BURNS **/ -/datum/wound/burn/moderate - stages = list("ripped burn" = 10, "moderate burn" = 5, "healing moderate burn" = 2, "fresh skin" = 0) - damage_type = BURN - -/datum/wound/burn/large - stages = list("ripped large burn" = 20, "large burn" = 15, "healing large burn" = 5, "fresh skin" = 0) - damage_type = BURN - -/datum/wound/burn/severe - stages = list("ripped severe burn" = 35, "severe burn" = 30, "healing severe burn" = 10, "burn scar" = 0) - damage_type = BURN - -/datum/wound/burn/deep - stages = list("ripped deep burn" = 45, "deep burn" = 40, "healing deep burn" = 15, "large burn scar" = 0) - damage_type = BURN - -/datum/wound/burn/carbonised - stages = list("carbonised area" = 50, "healing carbonised area" = 20, "massive burn scar" = 0) - damage_type = BURN - -/** INTERNAL BLEEDING **/ -/datum/wound/internal_bleeding - internal = 1 - stages = list("severed artery" = 30, "cut artery" = 20, "damaged artery" = 10, "bruised artery" = 5) - autoheal_cutoff = 5 - max_bleeding_stage = 4 //all stages bleed. It's called internal bleeding after all. - - -/** EXTERNAL ORGAN LOSS **/ -/datum/wound/lost_limb - -/datum/wound/lost_limb/New(var/obj/item/organ/external/lost_limb, var/losstype, var/clean) - var/damage_amt = lost_limb.max_damage - if(clean) damage_amt /= 2 - - switch(losstype) - if(DROPLIMB_EDGE, DROPLIMB_BLUNT) - damage_type = CUT - max_bleeding_stage = 3 //clotted stump and above can bleed. - stages = list( - "ripped stump" = damage_amt*1.3, - "bloody stump" = damage_amt, - "clotted stump" = damage_amt*0.5, - "scarred stump" = 0 - ) - if(DROPLIMB_BURN) - damage_type = BURN - stages = list( - "ripped charred stump" = damage_amt*1.3, - "charred stump" = damage_amt, - "scarred stump" = damage_amt*0.5, - "scarred stump" = 0 - ) - - ..(damage_amt) - -/datum/wound/lost_limb/can_merge(var/datum/wound/other) - return 0 //cannot be merged diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm index 420d56de43d..8bc0e799e11 100644 --- a/code/modules/surgery/organs_internal.dm +++ b/code/modules/surgery/organs_internal.dm @@ -14,7 +14,7 @@ /datum/surgery/organ_manipulation_boneless name = "Organ Manipulation" - possible_locs = list("chest","head","groin", "eyes", "mouth") + possible_locs = list("chest","head","groin", "eyes", "mouth", "l_arm", "r_arm") steps = list(/datum/surgery_step/generic/cut_open,/datum/surgery_step/generic/clamp_bleeders, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/internal/manipulate_organs,/datum/surgery_step/generic/cauterize) requires_organic_bodypart = 1 @@ -159,6 +159,11 @@ else if(implement_type in implements_extract) current_type = "extract" var/list/organs = target.get_organs_zone(target_zone) + var/mob/living/simple_animal/borer/B = target.has_brain_worms() + if(target_zone == "head" && B) + user.visible_message("[user] begins to extract [B] from [target]'s [parse_zone(target_zone)].", + "You begin to extract [B] from [target]'s [parse_zone(target_zone)]...") + return TRUE if(!organs.len) to_chat(user, "There are no removeable organs in [target]'s [parse_zone(target_zone)]!") return -1 @@ -195,7 +200,7 @@ return for(var/obj/item/organ/internal/I in affected.internal_organs) - if(I && I.damage > 0) + if(I && I.damage) if(I.robotic < 2 && !istype (tool, /obj/item/stack/nanopaste)) if(!(I.sterile)) spread_germs_to_organ(I, user, tool) @@ -233,7 +238,7 @@ for(var/obj/item/organ/internal/I in affected.internal_organs) if(I) I.surgeryize() - if(I && I.damage > 0) + if(I && I.damage) if(I.robotic < 2 && !istype (tool, /obj/item/stack/nanopaste)) user.visible_message(" [user] treats damage to [target]'s [I.name] with [tool_name].", \ " You treat damage to [target]'s [I.name] with [tool_name]." ) @@ -259,16 +264,20 @@ user.visible_message(" [user] has transplanted [tool] into [target]'s [parse_zone(target_zone)].", " You have transplanted [tool] into [target]'s [parse_zone(target_zone)].") - I.status &= ~ORGAN_CUT_AWAY - else if(current_type == "extract") + var/mob/living/simple_animal/borer/B = target.has_brain_worms() + if(target_zone == "head" && B && B.host == target) + user.visible_message("[user] successfully extracts [B] from [target]'s [parse_zone(target_zone)]!", + "You successfully extract [B] from [target]'s [parse_zone(target_zone)].") + add_logs(user, target, "surgically removed [B] from", addition="INTENT: [uppertext(user.a_intent)]") + B.leave_host() + return FALSE if(I && I.owner == target) user.visible_message(" [user] has separated and extracts [target]'s [I] with [tool].", " You have separated and extracted [target]'s [I] with [tool].") add_logs(user, target, "surgically removed [I.name] from", addition="INTENT: [uppertext(user.a_intent)]") spread_germs_to_organ(I, user, tool) - I.status |= ORGAN_CUT_AWAY var/obj/item/thing = I.remove(target) if(!istype(thing)) thing.forceMove(get_turf(target)) @@ -341,10 +350,10 @@ else if(istype(tool, /obj/item/stack/medical/bruise_pack) || istype(tool, /obj/item/stack/nanopaste)) dam_amt = 5 target.adjustToxLoss(10) - affected.createwound(CUT, 5) + affected.take_damage(5) for(var/obj/item/organ/internal/I in affected.internal_organs) - if(I && I.damage > 0 && !(I.tough)) + if(I && I.damage && !(I.tough)) I.take_damage(dam_amt,0) return 0 @@ -389,7 +398,7 @@ if(affected) user.visible_message(" [user]'s hand slips, damaging [target]'s [affected.name] with [tool]!", \ " Your hand slips, damaging [target]'s [affected.name] with [tool]!") - affected.createwound(BRUISE, 20) + affected.take_damage(20) else user.visible_message(" [user]'s hand slips, damaging [target]'s [parse_zone(target_zone)] with [tool]!", \ " Your hand slips, damaging [target]'s [parse_zone(target_zone)] with [tool]!") @@ -409,7 +418,7 @@ var/self_msg = " Your hand slips, tearing skin!" user.visible_message(msg, self_msg) if(affected) - affected.createwound(BRUISE, 20) + affected.take_damage(20) return 0 diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm index cfd6b8e632e..f18787f1fe4 100644 --- a/code/modules/surgery/other.dm +++ b/code/modules/surgery/other.dm @@ -33,14 +33,10 @@ if(ishuman(target)) var/mob/living/carbon/human/H = target var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting) - if(!affected) return 0 + if(!affected) + return 0 - var/internal_bleeding = 0 - for(var/datum/wound/W in affected.wounds) - if(W.internal) - internal_bleeding = 1 - break - if(internal_bleeding) + if(affected.internal_bleeding) return 1 return 0 @@ -75,15 +71,10 @@ /datum/surgery_step/fix_vein/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) var/obj/item/organ/external/affected = target.get_organ(target_zone) - if(!affected) return 0 + if(!affected) + return 0 - var/internal_bleeding = 0 - for(var/datum/wound/W in affected.wounds) - if(W.internal) - internal_bleeding = 1 - break - - return internal_bleeding + return affected.internal_bleeding /datum/surgery_step/fix_vein/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) var/obj/item/organ/external/affected = target.get_organ(target_zone) @@ -97,9 +88,7 @@ user.visible_message(" [user] has patched the damaged vein in [target]'s [affected.name] with \the [tool].", \ " You have patched the damaged vein in [target]'s [affected.name] with \the [tool].") - for(var/datum/wound/W in affected.wounds) if(W.internal) - affected.wounds -= W - affected.update_damages() + affected.internal_bleeding = FALSE if(ishuman(user) && prob(40)) var/mob/living/carbon/human/U = user U.bloody_hands(target, 0) @@ -159,7 +148,7 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message(" [user]'s hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!", \ " Your hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!") - affected.createwound(CUT, 20, 1) + affected.take_damage(20) return 0 diff --git a/code/modules/surgery/remove_embedded_object.dm b/code/modules/surgery/remove_embedded_object.dm new file mode 100644 index 00000000000..d7fe8b7fb53 --- /dev/null +++ b/code/modules/surgery/remove_embedded_object.dm @@ -0,0 +1,65 @@ +/datum/surgery/embedded_removal + name = "Removal of Embedded Objects" + steps = list(/datum/surgery_step/generic/cut_open, /datum/surgery_step/generic/clamp_bleeders, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/remove_object,/datum/surgery_step/generic/cauterize) + possible_locs = list("head", "chest", "l_arm", "l_hand", "r_arm", "r_hand","r_leg", "r_foot", "l_leg", "l_foot", "groin") + +/datum/surgery/embedded_removal/synth + steps = list(/datum/surgery_step/robotics/external/unscrew_hatch,/datum/surgery_step/robotics/external/open_hatch,/datum/surgery_step/remove_object,/datum/surgery_step/robotics/external/close_hatch) + +/datum/surgery/embedded_removal/can_start(mob/user, mob/living/carbon/human/target) + if(!istype(target)) + return 0 + var/obj/item/organ/external/affected = target.get_organ(user.zone_sel.selecting) + if(!affected) + return 0 + if(affected.status & ORGAN_ROBOT) + return 0 + return 1 + +/datum/surgery/embedded_removal/synth/can_start(mob/user, mob/living/carbon/human/target) + if(!istype(target)) + return 0 + var/obj/item/organ/external/affected = target.get_organ(user.zone_sel.selecting) + if(!affected) + return 0 + if(!(affected.status & ORGAN_ROBOT)) + return 0 + + return 1 + +/datum/surgery_step/remove_object + name = "Remove Embedded Objects" + time = 32 + accept_hand = 1 + var/obj/item/organ/external/L = null + + +/datum/surgery_step/remove_object/begin_step(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + L = surgery.organ_ref + if(L) + user.visible_message("[user] looks for objects embedded in [target]'s [parse_zone(user.zone_sel.selecting)].", "You look for objects embedded in [target]'s [parse_zone(user.zone_sel.selecting)]...") + else + user.visible_message("[user] looks for [target]'s [parse_zone(user.zone_sel.selecting)].", "You look for [target]'s [parse_zone(user.zone_sel.selecting)]...") + + +/datum/surgery_step/remove_object/end_step(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + if(L) + if(ishuman(target)) + var/mob/living/carbon/human/H = target + var/objects = 0 + for(var/obj/item/I in L.embedded_objects) + objects++ + I.forceMove(get_turf(H)) + L.embedded_objects -= I + if(!H.has_embedded_objects()) + H.clear_alert("embeddedobject") + + if(objects > 0) + user.visible_message("[user] sucessfully removes [objects] objects from [H]'s [L]!", "You successfully remove [objects] objects from [H]'s [L.name].") + else + to_chat(user, "You find no objects embedded in [H]'s [L]!") + + else + to_chat(user, "You can't find [target]'s [parse_zone(user.zone_sel.selecting)], let alone any objects embedded in it!") + + return 1 \ No newline at end of file diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm index e1dc252412d..27f722318d7 100644 --- a/code/modules/surgery/robotics.dm +++ b/code/modules/surgery/robotics.dm @@ -12,7 +12,7 @@ /datum/surgery/cybernetic_repair/internal name = "Internal Component Manipulation" steps = list(/datum/surgery_step/robotics/external/unscrew_hatch,/datum/surgery_step/robotics/external/open_hatch,/datum/surgery_step/robotics/manipulate_robotic_organs) - possible_locs = list("eyes", "chest","head","groin") + possible_locs = list("eyes", "chest","head","groin","l_arm","r_arm") requires_organic_bodypart = 0 /datum/surgery/cybernetic_amputation @@ -56,8 +56,6 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) if(affected == null) return 0 - if(affected.status & ORGAN_DESTROYED) - return 0 return 1 /datum/surgery_step/robotics/external @@ -400,7 +398,7 @@ var/found_damaged_organ = FALSE for(var/obj/item/organ/internal/I in affected.internal_organs) - if(I && I.damage > 0 && I.robotic >= 2) + if(I && I.damage && I.robotic >= 2) user.visible_message("[user] starts mending the damage to [target]'s [I.name]'s mechanisms.", \ "You start mending the damage to [target]'s [I.name]'s mechanisms.") found_damaged_organ = TRUE @@ -425,7 +423,7 @@ if(!hasorgans(target)) return for(var/obj/item/organ/internal/I in affected.internal_organs) - if(I && I.damage > 0) + if(I && I.damage) if(I.robotic >= 2) user.visible_message(" [user] repairs [target]'s [I.name] with [tool].", \ " You repair [target]'s [I.name] with [tool]." ) @@ -443,8 +441,6 @@ user.visible_message(" [user] has reattached [target]'s [I]." , \ " You have reattached [target]'s [I].") - if(I && istype(I)) - I.status &= ~ORGAN_CUT_AWAY else if(current_type == "install") user.visible_message(" [user] has installed \the [tool] into [target]'s [affected.name].", \ " You have installed \the [tool] into [target]'s [affected.name].") @@ -461,7 +457,6 @@ add_logs(user, target, "surgically removed [I.name] from", addition="INTENT: [uppertext(user.a_intent)]") spread_germs_to_organ(I, user) - I.status |= ORGAN_CUT_AWAY var/obj/item/thing = I.remove(target) if(!istype(thing)) thing.forceMove(get_turf(target)) @@ -490,7 +485,7 @@ " Your hand slips, gumming up the mechanisms inside of [target]'s [affected.name] with \the [tool]!") target.adjustToxLoss(5) - affected.createwound(CUT, 5) + affected.take_damage(5) for(var/obj/item/organ/internal/I in affected.internal_organs) if(I) @@ -538,7 +533,7 @@ add_logs(user, target, "surgically removed [affected.name] from", addition="INTENT: [uppertext(user.a_intent)]")//log it - var/atom/movable/thing = affected.droplimb(1,DROPLIMB_EDGE) + var/atom/movable/thing = affected.droplimb(1,DROPLIMB_SHARP) if(istype(thing,/obj/item)) user.put_in_hands(thing) diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index 48ee29f3f45..8861380527a 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -181,7 +181,7 @@ return null /proc/spread_germs_to_organ(obj/item/organ/E, mob/living/carbon/human/user, obj/item/tool) - if(!istype(user) || !istype(E)) + if(!istype(user) || !istype(E) || !(E.status & ORGAN_ROBOT) || E.sterile) return var/germ_level = user.germ_level @@ -189,20 +189,19 @@ //germ spread from surgeon touching the patient if(user.gloves) germ_level = user.gloves.germ_level - if(!(E.status & ORGAN_ROBOT)) //Germs on robotic limbs bad - E.germ_level = max(germ_level,E.germ_level) //as funny as scrubbing microbes out with clean gloves is - no. - spread_germs_by_incision(E,tool)//germ spread from environement to patient + E.germ_level += germ_level + spread_germs_by_incision(E, tool) //germ spread from environement to patient /proc/spread_germs_by_incision(obj/item/organ/external/E,obj/item/tool) - if(!istype(E,/obj/item/organ/external)) + if(!istype(E, /obj/item/organ/external)) return var/germs = 0 for(var/mob/living/carbon/human/H in view(2, E.loc))//germs from people if(AStar(E.loc, H.loc, /turf/proc/Distance, 2, simulated_only = 0)) - if((!(NO_BREATH in H.mutations) || !(H.species.flags & NO_BREATH)) && !H.wear_mask) //wearing a mask helps preventing people from breathing cooties into open incisions - germs+=H.germ_level/4 + if((!(NO_BREATH in H.mutations) || !(NO_BREATH in H.species.species_traits)) && !H.wear_mask) //wearing a mask helps preventing people from breathing cooties into open incisions + germs += H.germ_level * 0.25 for(var/obj/effect/decal/cleanable/M in view(2, E.loc))//germs from messes if(AStar(E.loc, M.loc, /turf/proc/Distance, 2, simulated_only = 0)) @@ -213,7 +212,7 @@ germs += 30 if(E.internal_organs.len) - germs = germs / E.internal_organs.len + germs = germs / (E.internal_organs.len + 1) // +1 for the external limb this eventually applies to; let's not multiply germs now. for(var/obj/item/organ/internal/O in E.internal_organs) if(!(O.status & ORGAN_ROBOT)) O.germ_level += germs diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index 37e1aebe089..b8637c3f797 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -43,7 +43,6 @@ flags = CONDUCT force = 15.0 sharp = 1 - edge = 1 w_class = WEIGHT_CLASS_NORMAL origin_tech = "materials=1;biotech=1" attack_verb = list("drilled") @@ -63,7 +62,6 @@ flags = CONDUCT force = 10.0 sharp = 1 - edge = 1 w_class = WEIGHT_CLASS_TINY throwforce = 5.0 throw_speed = 3 @@ -123,7 +121,6 @@ flags = CONDUCT force = 15.0 sharp = 1 - edge = 1 w_class = WEIGHT_CLASS_NORMAL throwforce = 9.0 throw_speed = 3 diff --git a/code/world.dm b/code/world.dm index 34d61dbbc21..e293058cdf6 100644 --- a/code/world.dm +++ b/code/world.dm @@ -244,6 +244,27 @@ var/world_topic_spam_protect_time = world.timeofday for(var/client/C in clients) to_chat(C, "PR: [input["announce"]]") + else if("kick" in input) + /* + We have a kick request over coms. + Only needed portion is the ckey + */ + if(!key_valid) + return keySpamProtect(addr) + + var/client/C + + for(var/client/K in clients) + if(K.ckey == input["kick"]) + C = K + break + if(!C) + return "No client with that name on server" + + del(C) + + return "Kick Successful" + /proc/keySpamProtect(var/addr) if(world_topic_spam_protect_ip == addr && abs(world_topic_spam_protect_time - world.time) < 50) spawn(50) diff --git a/config/example/admins.txt b/config/example/admins.txt index 0e89ae17e23..c42f756a87d 100644 --- a/config/example/admins.txt +++ b/config/example/admins.txt @@ -5,4 +5,4 @@ # Ranks can be anything defined in admin_ranks.txt # ###################################################################### -# example - Admin +# example - Hosting Provider diff --git a/config/example/dbconfig.txt b/config/example/dbconfig.txt index 4dd55974678..e713bda4c7d 100644 --- a/config/example/dbconfig.txt +++ b/config/example/dbconfig.txt @@ -5,6 +5,12 @@ ## Should SQL be enabled? Uncomment to enable. #SQL_ENABLED +## Database version. This value is used if SQL_ENABLED is uncommented +## This value must be set to the version of the paradise schema in use. +## If this value does not match, the SQL database will not be loaded and an error will be generated. +## Roundstart will be delayed. +DB_VERSION 0 + ## Server the MySQL database can be found at. # Examples: localhost, 200.135.5.43, www.mysqldb.com, etc. ADDRESS localhost @@ -30,4 +36,4 @@ FEEDBACK_TABLEPREFIX FEEDBACK_LOGIN username ## Password used to access the database. -FEEDBACK_PASSWORD password \ No newline at end of file +FEEDBACK_PASSWORD password diff --git a/config/example/game_options.txt b/config/example/game_options.txt index 7246e0773fa..ae3cc153995 100644 --- a/config/example/game_options.txt +++ b/config/example/game_options.txt @@ -8,17 +8,6 @@ HEALTH_THRESHOLD_DEAD -100 ## Determines whether bones can be broken through excessive damage to the organ ## 0 means bones can't break, 1 means they can BONES_CAN_BREAK 1 -## Determines whether limbs can be amputated through excessive damage to the organ -## 0 means limbs can't be amputated, 1 means they can -LIMBS_CAN_BREAK 1 - -## Multiplier which enables organs to take more damage before bones breaking or limbs being destroyed -## 100 means normal, 50 means half -ORGAN_HEALTH_MULTIPLIER 100 - -## Multiplier which influences how fast organs regenerate naturally -## 100 means normal, 50 means half -ORGAN_REGENERATION_MULTIPLIER 0 ### REVIVAL ### ## Whether pod plants work or not diff --git a/html/changelog.html b/html/changelog.html index a1dc332eb94..6e81794dece 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -26,7 +26,7 @@
    Paradise Station

    - Visit our IRC channel: #crew on neko.sneeza.me + Visit our Discord channel:-Click Here- @@ -55,6 +55,577 @@ -->
    + +

    10 August 2017

    +

    KasparoVy updated:

    +
      +
    • Blood trails are now the same colour as the blood pools they came from when viewed by colour blind or noir shades wearing humanoids.
    • +
    + +

    09 August 2017

    +

    Purpose2 updated:

    +
      +
    • Adds a cycling airlock on the new mining mini outpost.
    • +
    • Re-adds the cycling airlock on mining outpost.
    • +
    • Fixes the broken atmos piping on mining outpost.
    • +
    • Fixes a lack of lighting on mining outpost.
    • +
    + +

    06 August 2017

    +

    Birdtalon updated:

    +
      +
    • Small wording change to syndicate collaborator greetings.
    • +
    +

    Fox McCloud updated:

    +
      +
    • Botany nerfed; will need ambrosia gaia earth's blood to make a tray self-sustaining
    • +
    • Gene machine now requires heavy upgrading to make use of transferring high quality genes from one plant to another
    • +
    • Starthistle can now be grown
    • +
    • Adds in red and regular onions; slice them for onion rings; cook them for even more delicious onion rings
    • +
    +

    Kyep updated:

    +
      +
    • Playing as a smite/bless hunter, or syndie infiltration team member, now requires that you be traitor-eligible. IE: have enough playtime, and the preference enabled.
    • +
    +

    Purpose2 updated:

    +
      +
    • BoxStation: Adds a garbage receptacle by the kitchen. Don't forget to bus your plates.
    • +
    • BoxStation: Fixes an inappropriate access restriction on one part of an airlock, and ensures the buttons are visible.
    • +
    • BoxStation: Changes the now erroneous Science Shuttle Console on the bridge to a Labor Camp Shuttle Console.
    • +
    • Adds screwdrivers to Medical by the cell chargers for recharging the defibs.
    • +
    + +

    05 August 2017

    +

    Purpose2 updated:

    +
      +
    • Karma message will now point you in the right direction again.
    • +
    + +

    03 August 2017

    +

    Fox McCloud updated:

    +
      +
    • Internal organs can take damage again, brain damage can be fixed again, and you now take the proper damage from external sources to limbs, IPCs surviving EMPs, and robo limbs never malfunctioning
    • +
    + +

    02 August 2017

    +

    Fox McCloud updated:

    +
      +
    • removed a stasis book from the medical break room
    • +
    + +

    31 July 2017

    +

    Birdtalon updated:

    +
      +
    • Protolathe stock part printing no longer takes a lifetime.
    • +
    + +

    30 July 2017

    +

    FreeStylaLT updated:

    +
      +
    • Fixed erroneous pipes on z5
    • +
    +

    Kyep updated:

    +
      +
    • Evil-minded players can no longer use the Gateway's Mother of Terror spider to create an infestation on-station.
    • +
    + +

    29 July 2017

    +

    Fox McCloud updated:

    +
      +
    • Dead hearts now induce a heart attack
    • +
    • Fixed concentrated initro never metabolizing
    • +
    +

    FreeStylaLT updated:

    +
      +
    • replaces generic Mining z-level with Meta's
    • +
    +

    Purpose2 updated:

    +
      +
    • MetaStation: Adds the missing kitchen windows
    • +
    • MetaStation: Nerfs the Top Hat equivalent of the Sword in the Stone.
    • +
    • MetaStation: Adds a Pet Supply vendor, chefs now make sushi again!
    • +
    + +

    27 July 2017

    +

    Birdtalon updated:

    +
      +
    • Protolathe speed now increases when upgraded with manipulators.
    • +
    + +

    26 July 2017

    +

    Citinited updated:

    +
      +
    • The autopsy drawer's description makes more sense.
    • +
    + +

    25 July 2017

    +

    Birdtalon updated:

    +
      +
    • Reduces the volume of the electric guitars
    • +
    +

    FlattestGuitar updated:

    +
      +
    • Antagonists will no longer get the objective to steal slime extracts and plasma tanks.
    • +
    • The Captain has a swanky high-tech jetpack now. Antagonists will try to steal this one instead of *any* jetpack.
    • +
    +

    Fox McCloud updated:

    +
      +
    • You can now point while voluntarily lying down
    • +
    • shotgun darts and syringe darts no longer react their reagents on hit (they will still transfer reagents)
    • +
    • removes cryostasis bag
    • +
    +

    FreeStylaLT updated:

    +
      +
    • Removed sci outpost and dock from Metastation and Cyberiad
    • +
    • Added a Mining Outpost to the northernmost point of the Asteroid.
    • +
    +

    Kluys, Kyep & DarkLordpyro updated:

    +
      +
    • Emagged drones are now readily identifiable, as their lights turn red.
    • +
    +

    Kyep updated:

    +
      +
    • Eating as Ian (and other player-controlled corgis) is now rate-limited.
    • +
    • Reagents placed in shotgun shells will now react. It is no longer possible to make explosive shotgun darts by using regular darts like cryobeakers.
    • +
    • Admins' Smite command has been upgraded. No longer limited to Dark Priests, it can now send over a dozen different entities in search of its target, from the comic, like Greytiders, Tunnel Clowns, Masked Killers and Mime Assasins, to the serious, such as Syndicates, Soviets, Dark Lords and more. All come with a dust implant. These same characters can also be sent to protect specific crew members, so they aren't predictable.
    • +
    • The 'reaper' admin outfit now has a working briefcase.
    • +
    • Use of the 'Bless' command to bestow powers no longer causes genetic damage.
    • +
    +

    imsxz updated:

    +
      +
    • makes HONK rifle selfcharge
    • +
    +

    owenowen212 updated:

    +
      +
    • Adds the clownish language to honk squad members.
    • +
    + +

    24 July 2017

    +

    FlattestGuitar updated:

    +
      +
    • Adds a taste system! Drink or eat stuff to find out what it tastes like!
    • +
    +

    Kyep updated:

    +
      +
    • it is no longer possible to use a sentience potion to convert space pirates in the beach away mission to your side. Nor is this possible with other sentient NPCs, such as syndies or russians.
    • +
    + +

    23 July 2017

    +

    Fox McCloud updated:

    +
      +
    • Fixes cloners causing infections in clonees
    • +
    + +

    22 July 2017

    +

    Crazylemon64 updated:

    +
      +
    • Slipping now outputs a visible message instead of a personal one
    • +
    +

    Fox McCloud updated:

    +
      +
    • Fixes IPCs and Diona being immune to weapon knockdown
    • +
    +

    Kyep updated:

    +
      +
    • Terror Spider away mission is now harder to cheese.
    • +
    • Loading a different character while in the lobby will now update the character name listed on the lobby screen. Same when you rename an existing character.
    • +
    • Blood decals are no longer movable. This means LINDA cannot move them, spiders cannot wrap them, etc.
    • +
    + +

    21 July 2017

    +

    Purpose2 updated:

    +
      +
    • MetaStation: Adds a brand new Medbay!
    • +
    • MetaStation: Adds the dogbeds to the CMO/HoS office
    • +
    • MetaStation: Adds Sergeant Araneus back to the HoS's office. HoS beware.
    • +
    • MetaStation: Adds a processing area to the brig.
    • +
    • MetaStation: Adds the Gamma Armory.
    • +
    • MetaStation: Adds two additional brig cells
    • +
    • MetaStation: Adds a morgue slab to the Brig Phys office
    • +
    • MetaStation: Morgue has a swanky new office, directly connected to Cloning.
    • +
    • MetaStation: Robotics gets gloves and masks.
    • +
    • MetaStation: Adds shutters to R&D and Genetics.
    • +
    • MetaStation: Adds a Paramedic's office.
    • +
    • MetaStation: Adds a fully function containment grid.
    • +
    • MetaStation: Moves Monitor Encryption key to the RD's office again
    • +
    • MetaStation: Dorms have glass doors and fewer tinted windows
    • +
    • Metastation: Engine Containment now has Blast Doors instead of Shutters.
    • +
    • Metastation: Execution chamber blast doors are no longer see-through.
    • +
    • Metastation: Only the appropriate plastic flaps should be see-through.
    • +
    • MetaStation: Botany is no longer all-access
    • +
    • MetaStation: Science gets access to the Science outpost again... for now...
    • +
    • MetaStation: Fixes camera network monitors
    • +
    • MetaStation: Church shutters block vision again
    • +
    • MetaStation: Adds the missing Armory shutter button.
    • +
    • MetaStation: Removes tinted windows from R&D & Genetics
    • +
    + +

    20 July 2017

    +

    Purpose2 updated:

    +
      +
    • Stops vampires spawning in the church.
    • +
    + +

    19 July 2017

    +

    Fox McCloud updated:

    +
      +
    • Fixes dismembering and some damage transfers (when limb damage is maxed out) being inconsistent
    • +
    • can no longer dismember groins
    • +
    • Cleans up human examine code to be better laid out and more consistent; minor grammatical changes and some fixes; consistency should be retained for species that lack a pulse. Soul departure now properly checks for if the person can re-enter their corpse or not. Also resolves issues with FAKE DEATH examination.
    • +
    • Adds in gunshot blood splattering
    • +
    + +

    18 July 2017

    +

    Fox McCloud updated:

    +
      +
    • Fixes blood volume being able to exceed 560
    • +
    +

    Purpose2 updated:

    +
      +
    • The Arrival's Trader Dock now cycles properly.
    • +
    + +

    16 July 2017

    +

    Ataman updated:

    +
      +
    • Fixed diona nymphs needing oxygen and getting cold.
    • +
    +

    Crazylemon64 updated:

    +
      +
    • Cable laying by clicking the cable you want to join to works now
    • +
    +

    KasparoVy updated:

    +
      +
    • Fixes a bug with Vampire Shapeshift where you didn't get a name appropriate to your species and clarifies the ability description.
    • +
    • Fixes a bug with DNA scramblers whereby you wouldn't get a name appropriate to your species.
    • +
    + +

    15 July 2017

    +

    Fox McCloud updated:

    +
      +
    • Fixes blood oddities with vampires
    • +
    +

    Kyep updated:

    +
      +
    • Mechs firing missiles no longer cause the missiles to drop at their feet, as if frozen in midair.
    • +
    +

    imsxz updated:

    +
      +
    • Edits the syndicate soft suit helmet's description to match the suit's.
    • +
    + +

    13 July 2017

    +

    Fox McCloud updated:

    +
      +
    • Fixes blood volume and type not showing up properly on health analyzer
    • +
    • Fixes exotic blood names being incorrect
    • +
    • fix examining/checking yourself/others for bleeding/bandaging
    • +
    • Everything that involves bandaging now properly uses the new blood system
    • +
    • Fixes species exotic blood being injected into a mob not increasing their blood volume (slimes rejoice)
    • +
    • Fixed faked deaths still allowing for bleeding
    • +
    • Fixes IV drips not transferring over the proper amount of blood
    • +
    • Embedded objects will cause additional bleeding
    • +
    • Adds in heparin, a drug that can cause bleeding
    • +
    • medical stacks can be used multiple times on the same limb
    • +
    • Blood depletes in the body a lot faster now, due to blood refactor changes
    • +
    +

    Shazbot-coding, Driker-Sprites updated:

    +
      +
    • Gives the clown their own jug
    • +
    + +

    12 July 2017

    +

    Fox McCloud updated:

    +
      +
    • Fixed advanced scanners showing hidden viruses
    • +
    • Fixed changeling panacea curing beneficial viruses
    • +
    • removed blood decal infections
    • +
    • some diseases now bypasse species virus immunity (kuru, TB, and appendicitis)
    • +
    + +

    11 July 2017

    +

    Fethas and tigercat updated:

    +
      +
    • blood trails
    • +
    • blood is now eaiser to decrease/increase .
    • +
    • revamps about every method of adding blood to something, floors, walls, doors, PEOPLE.
    • +
    + +

    10 July 2017

    +

    AffectedArc07 updated:

    +
      +
    • APC frames now have the correct texture
    • +
    +

    Birdtalon updated:

    +
      +
    • Pool contractors have been back to school and can now spell "safety" on the controller correctly.
    • +
    • Minor change to blob description to address grammar issue.
    • +
    +

    Citinited updated:

    +
      +
    • Superfart once again works ass intended.
    • +
    +

    Fox McCloud updated:

    +
      +
    • Radiation poisoning no longer permastuns, but deals burn damage now and has increased mutation chances
    • +
    • adds in electric guitars
    • +
    • can now craft violins and electric guitars
    • +
    • purchase electric guitars at the cargo store
    • +
    • service borgs now have an electric guitar, too
    • +
    • lowered the price of instruments, at cargo store, to 500
    • +
    • Fixed violins not having an in-hand icon
    • +
    + +

    08 July 2017

    +

    Citinited updated:

    +
      +
    • Rainbow and mime crayons will now change colour as intended.
    • +
    +

    Fox McCloud updated:

    +
      +
    • Advanced mop slightly slower at cleaning and holds less reagents, but now regenerates water if turned on
    • +
    • Blood (on the floor) that has viruses in it will now properly infect you, if you get near
    • +
    +

    Kyep updated:

    +
      +
    • It is no longer possible to prioritize a job with no open slots, or close any job slots for a job that is already prioritized, as either of these actions could lead to a situation where a job is prioritized without people being able to join as it.
    • +
    + +

    05 July 2017

    +

    Purpose2 updated:

    +
      +
    • Anomalies will once again drop cores.
    • +
    + +

    04 July 2017

    +

    Birdtalon updated:

    +
      +
    • Traitor medical chemists can now access syndicate poison bottles.
    • +
    +

    Citinited updated:

    +
      +
    • AIs and cyborgs can now toggle liquid dispensers by ctrl-clicking them, and can make them dispense foam by alt-clicking.
    • +
    +

    Citinited & LightFire53 updated:

    +
      +
    • Adds the plasmaman coroner suit, the plasmaman geneticist suit, and the plasmaman virologist suit. Spooky purple skeletons everywhere rejoice!
    • +
    +

    Fethas updated:

    +
      +
    • Adds medical gowns to medical wardrobes.
    • +
    +

    Fox McCloud updated:

    +
      +
    • Syndicate bombs now have visible timers for observers
    • +
    • Syndicate bombs tick more often
    • +
    • Syndnicate bombs can be deconstructed into plasteel if it is fully defused and has no bomb core
    • +
    • Can make Cryo, Pyro, and time released chemical grenades at R&D
    • +
    • Can make syndicate chemical bombs utilizing crafting
    • +
    • love just got more powerful; it now prevents a mob from being on anything other than help intent
    • +
    • IPCs can now process the love reagent
    • +
    • Adds in radio jammers to the traitor uplink
    • +
    • Adds in breathing tube augment to R&D
    • +
    • Adds in arm toolset augment to R&D
    • +
    • IPC cell charging device is now inside their right arm, as opposed to chest
    • +
    • IPC cell charging device can now be produced in mech fabricators
    • +
    +

    Ionward updated:

    +
      +
    • Greys now have properly fitting sprites for most head clothing items!
    • +
    +

    Kyep updated:

    +
      +
    • Gimmick Teams are now more configurable.
    • +
    +

    Vivalas updated:

    +
      +
    • "Tweaks" SecHUDs to only display criminal status of people if their face is uncovered or they have no ID.
    • +
    + +

    03 July 2017

    +

    Fethas updated:

    +
      +
    • fixes issue with hand teleporter not working in active hands
    • +
    +

    fludd12 updated:

    +
      +
    • Greys are now PROPERLY immune to sulfuric acid.
    • +
    • Greys don't pretend to touch their heads when they don't manage to anymore.
    • +
    + +

    01 July 2017

    +

    Fox McCloud updated:

    +
      +
    • Re-enables object embedding system; embedding objects now cause more damage than before
    • +
    • Adds in throwing stars kit to the traitor uplink
    • +
    • bullets no longer leave shrapnel
    • +
    + +

    30 June 2017

    +

    fludd12 updated:

    +
      +
    • Greys treat Sulfuric Acid as if it were water. They also treat water as if it were sulfuric acid.
    • +
    • Grey language is now Z-level wide, but requires you to be able to put a finger to your temple. (Requires at least one hand not disabled and not stunned.)
    • +
    • Remote Talk is buffed to have a range of two screens, and has some minor formatting changes!
    • +
    • Remote Talk no longer lets you magically know the true name of whoever you speak with.
    • +
    + +

    29 June 2017

    +

    Fox McCloud updated:

    +
      +
    • Fixes limbs being an open wound after augmentation
    • +
    +

    Kluys updated:

    +
      +
    • Bob ross painting in the captains office called "calming painting". +Also changes around the entertainment monitor and light switch to accomodate.
    • +
    • Clown painting was named "\improper mech painting"
    • +
    + +

    28 June 2017

    +

    Fox McCloud updated:

    +
      +
    • Fix's IPC head customization
    • +
    +

    Purpose2 and Re-Opened by Fethas updated:

    +
      +
    • Rare Sentience event, the mice now want coffee!
    • +
    + +

    27 June 2017

    +

    Alexshreds updated:

    +
      +
    • EMPs now disable radios for a period of time
    • +
    +

    Citinited updated:

    +
      +
    • Adds the Rapid Pipe Dispenser (RPD). All Atmospherics Technician lockers and the Chief Engineer's locker get one each.
    • +
    +

    Code Fethas and Sprites Phantasmicdream updated:

    +
      +
    • Fancy Victorian Clothes
    • +
    +

    FlattestGuitar updated:

    +
      +
    • defibs work even if you don't target the chest
    • +
    • Chaplain's soul stone is now opt-in.
    • +
    +

    Fox McCloud updated:

    +
      +
    • Can now augment all non-head limbs with surgery
    • +
    • Can select the company design of a limb by using a robot part in your hands
    • +
    +

    Kyep updated:

    +
      +
    • Gamma ship now looks like a real supply pod/ship, doesn't encourage wizards/vampires to hide in it, and has been updated with a wall-mounted charger and smarter layout.
    • +
    • Fixed a bug causing gamma armory mech recharger to be unusable after gamma alert was declared.
    • +
    • Admins may now spawn 'Gimmick' teams, including Janitorial ERT, Paranormal ERT, and more. Any admin outfit, any mission, spawned anywhere.
    • +
    • Paranormal ERT outfit now exists. It acts like a red security ERT, except with focus on fighting paranormal threats.
    • +
    • Janitorial ERT now gets ERT headset, not centcom headset. Also, they now get a survival box, and a flashlight.
    • +
    • New 'department' shuttle now has more public-access seating.
    • +
    +

    ProperPants updated:

    +
      +
    • Plasmaman virologists now spawn with a medical plasmasuit instead of an assistant one.
    • +
    +

    Purpose2 updated:

    +
      +
    • Water coolers have been fitted with better bolts, enabling them to be loosened and moved.
    • +
    • Antag barbers scissors now have the same name as regular scissors.
    • +
    • AIs door open link is now [O] rather than [OPEN].
    • +
    • The Syndicate once more recognises the Coroner as a member of the medical team for purposes for uplink items.
    • +
    • The chef may now tap into the Syndicate's poison networks for use in his dishes.
    • +
    • The chef's supply crate now comes with another rolling pin. Stop misplacing these.
    • +
    +

    tigercat2000 updated:

    +
      +
    • Karma returned to the Special Verbs tab
    • +
    + +

    26 June 2017

    +

    Crazylemon64 updated:

    +
      +
    • TK can now manipulate adjacent tiles. Use throw mode to override this if you want to move an object a single tile.
    • +
    • TK can now remotely manipulate item stacks.
    • +
    • TK can now remotely operate an RCD
    • +
    • TK now behaves more consistently regarding interacting with various objects remotely
    • +
    +

    Kyep updated:

    +
      +
    • ID card consoles can now be used to prioritize any on-station job, including head jobs and karma jobs.
    • +
    • Playing as a drone now requires 10h of playtime.
    • +
    • Admin-ghosts can now interact with (ie: activate) the drone fab without having to spawn in as engineer to do so.
    • +
    • Prioritized jobs now lose their priority status once all their slots are filled. In the event someone with a formerly prioritized job cryos, the HoP may want to re-prioritize the job.
    • +
    +

    Purpose2 updated:

    +
      +
    • Coroners are more battlehardened, and thus don't throw up around dead bodies anymore.
    • +
    + +

    25 June 2017

    +

    Kyep updated:

    +
      +
    • Trial admins no longer see a permissions error when opening player panel.
    • +
    + +

    24 June 2017

    +

    Allfd updated:

    +
      +
    • Ported growl and howl sounds from Goon
    • +
    • Added growl and howl emotes to Vulpkanin
    • +
    +

    Kyep updated:

    +
      +
    • Activating a dust implant no longer causes NODROP items to drop.
    • +
    +

    Purpose2 updated:

    +
      +
    • The *slap emote now has a cooldown like all other noise making emotes.
    • +
    +

    SamHPurp updated:

    +
      +
    • The Coroner will respect the CMO's Authoritah.
    • +
    + +

    23 June 2017

    +

    Kyep updated:

    +
      +
    • Smite/Bless commands are now restricted to Game Admins. (admins with R_EVENT)
    • +
    • Admins can now access telecomms while ghosted.
    • +
    +

    Vivalas updated:

    +
      +
    • Buckling mobs to beds now displays them correctly.
    • +
    + +

    22 June 2017

    +

    Crazylemon64 updated:

    +
      +
    • Cloners now malfunction if the original comes back to life
    • +
    +

    Purpose2 updated:

    +
      +
    • RCDs can no longer construct multiple airlocks on a single tile
    • +
    + +

    21 June 2017

    +

    tigercat2000 updated:

    +
      +
    • Changelings are now tentacle monsters. Give them a schoolgirl outfit.
    • +
    + +

    20 June 2017

    +

    Purpose2 updated:

    +
      +
    • Fixes Fluorine's non-functionality in plants.
    • +
    + +

    19 June 2017

    +

    Fox McCloud updated:

    +
      +
    • Diona nutrition bar should no longer flicker constantly
    • +
    +

    18 June 2017

    Citinited updated:

      diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index d4948cbc304..f12e29b9cd3 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -4957,3 +4957,416 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. Citinited: - bugfix: Using a screwdriver on a camera console will now deconstruct it instead of opening the camera window. +2017-06-19: + Fox McCloud: + - tweak: Diona nutrition bar should no longer flicker constantly +2017-06-20: + Purpose2: + - bugfix: Fixes Fluorine's non-functionality in plants. +2017-06-21: + tigercat2000: + - rscadd: Changelings are now tentacle monsters. Give them a schoolgirl outfit. +2017-06-22: + Crazylemon64: + - rscadd: Cloners now malfunction if the original comes back to life + Purpose2: + - bugfix: RCDs can no longer construct multiple airlocks on a single tile +2017-06-23: + Kyep: + - bugfix: Smite/Bless commands are now restricted to Game Admins. (admins with R_EVENT) + - tweak: Admins can now access telecomms while ghosted. + Vivalas: + - bugfix: Buckling mobs to beds now displays them correctly. +2017-06-24: + Allfd: + - rscadd: Ported growl and howl sounds from Goon + - rscadd: Added growl and howl emotes to Vulpkanin + Kyep: + - bugfix: Activating a dust implant no longer causes NODROP items to drop. + Purpose2: + - tweak: The *slap emote now has a cooldown like all other noise making emotes. + SamHPurp: + - bugfix: The Coroner will respect the CMO's Authoritah. +2017-06-25: + Kyep: + - bugfix: Trial admins no longer see a permissions error when opening player panel. +2017-06-26: + Crazylemon64: + - rscadd: TK can now manipulate adjacent tiles. Use throw mode to override this + if you want to move an object a single tile. + - rscadd: TK can now remotely manipulate item stacks. + - rscadd: TK can now remotely operate an RCD + - bugfix: TK now behaves more consistently regarding interacting with various objects + remotely + Kyep: + - rscadd: ID card consoles can now be used to prioritize any on-station job, including + head jobs and karma jobs. + - rscadd: Playing as a drone now requires 10h of playtime. + - bugfix: 'Admin-ghosts can now interact with (ie: activate) the drone fab without + having to spawn in as engineer to do so.' + - bugfix: Prioritized jobs now lose their priority status once all their slots are + filled. In the event someone with a formerly prioritized job cryos, the HoP + may want to re-prioritize the job. + Purpose2: + - rscadd: Coroners are more battlehardened, and thus don't throw up around dead + bodies anymore. +2017-06-27: + Alexshreds: + - tweak: EMPs now disable radios for a period of time + Citinited: + - rscadd: Adds the Rapid Pipe Dispenser (RPD). All Atmospherics Technician lockers + and the Chief Engineer's locker get one each. + Code Fethas and Sprites Phantasmicdream: + - rscadd: Fancy Victorian Clothes + FlattestGuitar: + - tweak: defibs work even if you don't target the chest + - tweak: Chaplain's soul stone is now opt-in. + Fox McCloud: + - rscadd: Can now augment all non-head limbs with surgery + - rscadd: Can select the company design of a limb by using a robot part in your + hands + Kyep: + - rscadd: Gamma ship now looks like a real supply pod/ship, doesn't encourage wizards/vampires + to hide in it, and has been updated with a wall-mounted charger and smarter + layout. + - bugfix: Fixed a bug causing gamma armory mech recharger to be unusable after gamma + alert was declared. + - rscadd: Admins may now spawn 'Gimmick' teams, including Janitorial ERT, Paranormal + ERT, and more. Any admin outfit, any mission, spawned anywhere. + - rscadd: Paranormal ERT outfit now exists. It acts like a red security ERT, except + with focus on fighting paranormal threats. + - bugfix: Janitorial ERT now gets ERT headset, not centcom headset. Also, they now + get a survival box, and a flashlight. + - tweak: New 'department' shuttle now has more public-access seating. + ProperPants: + - rscadd: Plasmaman virologists now spawn with a medical plasmasuit instead of an + assistant one. + Purpose2: + - rscadd: Water coolers have been fitted with better bolts, enabling them to be + loosened and moved. + - tweak: Antag barbers scissors now have the same name as regular scissors. + - tweak: AIs door open link is now [O] rather than [OPEN]. + - bugfix: The Syndicate once more recognises the Coroner as a member of the medical + team for purposes for uplink items. + - rscadd: The chef may now tap into the Syndicate's poison networks for use in his + dishes. + - rscadd: The chef's supply crate now comes with another rolling pin. Stop misplacing + these. + tigercat2000: + - tweak: Karma returned to the Special Verbs tab +2017-06-28: + Fox McCloud: + - bugfix: Fix's IPC head customization + Purpose2 and Re-Opened by Fethas: + - rscadd: Rare Sentience event, the mice now want coffee! +2017-06-29: + Fox McCloud: + - bugfix: Fixes limbs being an open wound after augmentation + Kluys: + - rscadd: 'Bob ross painting in the captains office called "calming painting". + + Also changes around the entertainment monitor and light switch to accomodate.' + - bugfix: Clown painting was named "\improper mech painting" +2017-06-30: + fludd12: + - tweak: Greys treat Sulfuric Acid as if it were water. They also treat water as + if it were sulfuric acid. + - experiment: Grey language is now Z-level wide, but requires you to be able to + put a finger to your temple. (Requires at least one hand not disabled and not + stunned.) + - tweak: Remote Talk is buffed to have a range of two screens, and has some minor + formatting changes! + - bugfix: Remote Talk no longer lets you magically know the true name of whoever + you speak with. +2017-07-01: + Fox McCloud: + - bugfix: Re-enables object embedding system; embedding objects now cause more damage + than before + - rscadd: Adds in throwing stars kit to the traitor uplink + - rscdel: bullets no longer leave shrapnel +2017-07-03: + Fethas: + - bugfix: fixes issue with hand teleporter not working in active hands + fludd12: + - bugfix: Greys are now PROPERLY immune to sulfuric acid. + - bugfix: Greys don't pretend to touch their heads when they don't manage to anymore. +2017-07-04: + Birdtalon: + - tweak: Traitor medical chemists can now access syndicate poison bottles. + Citinited: + - tweak: AIs and cyborgs can now toggle liquid dispensers by ctrl-clicking them, + and can make them dispense foam by alt-clicking. + Citinited & LightFire53: + - rscadd: Adds the plasmaman coroner suit, the plasmaman geneticist suit, and the + plasmaman virologist suit. Spooky purple skeletons everywhere rejoice! + Fethas: + - rscadd: Adds medical gowns to medical wardrobes. + Fox McCloud: + - rscadd: Syndicate bombs now have visible timers for observers + - rscadd: Syndicate bombs tick more often + - rscadd: Syndnicate bombs can be deconstructed into plasteel if it is fully defused + and has no bomb core + - rscadd: Can make Cryo, Pyro, and time released chemical grenades at R&D + - rscadd: Can make syndicate chemical bombs utilizing crafting + - tweak: love just got more powerful; it now prevents a mob from being on anything + other than help intent + - tweak: IPCs can now process the love reagent + - rscadd: Adds in radio jammers to the traitor uplink + - rscadd: Adds in breathing tube augment to R&D + - rscadd: Adds in arm toolset augment to R&D + - tweak: IPC cell charging device is now inside their right arm, as opposed to chest + - rscadd: IPC cell charging device can now be produced in mech fabricators + Ionward: + - bugfix: Greys now have properly fitting sprites for most head clothing items! + Kyep: + - tweak: Gimmick Teams are now more configurable. + Vivalas: + - bugfix: '"Tweaks" SecHUDs to only display criminal status of people if their face + is uncovered or they have no ID.' +2017-07-05: + Purpose2: + - bugfix: Anomalies will once again drop cores. +2017-07-08: + Citinited: + - bugfix: Rainbow and mime crayons will now change colour as intended. + Fox McCloud: + - tweak: Advanced mop slightly slower at cleaning and holds less reagents, but now + regenerates water if turned on + - bugfix: Blood (on the floor) that has viruses in it will now properly infect you, + if you get near + Kyep: + - bugfix: It is no longer possible to prioritize a job with no open slots, or close + any job slots for a job that is already prioritized, as either of these actions + could lead to a situation where a job is prioritized without people being able + to join as it. +2017-07-10: + AffectedArc07: + - tweak: APC frames now have the correct texture + Birdtalon: + - bugfix: Pool contractors have been back to school and can now spell "safety" on + the controller correctly. + - tweak: Minor change to blob description to address grammar issue. + Citinited: + - bugfix: Superfart once again works ass intended. + Fox McCloud: + - tweak: Radiation poisoning no longer permastuns, but deals burn damage now and + has increased mutation chances + - rscadd: adds in electric guitars + - rscadd: can now craft violins and electric guitars + - rscadd: purchase electric guitars at the cargo store + - rscadd: service borgs now have an electric guitar, too + - tweak: lowered the price of instruments, at cargo store, to 500 + - bugfix: Fixed violins not having an in-hand icon +2017-07-11: + Fethas and tigercat: + - rscadd: blood trails + - rscadd: blood is now eaiser to decrease/increase . + - rscadd: revamps about every method of adding blood to something, floors, walls, + doors, PEOPLE. +2017-07-12: + Fox McCloud: + - bugfix: Fixed advanced scanners showing hidden viruses + - bugfix: Fixed changeling panacea curing beneficial viruses + - rscdel: removed blood decal infections + - tweak: some diseases now bypasse species virus immunity (kuru, TB, and appendicitis) +2017-07-13: + Fox McCloud: + - bugfix: Fixes blood volume and type not showing up properly on health analyzer + - bugfix: Fixes exotic blood names being incorrect + - bugfix: fix examining/checking yourself/others for bleeding/bandaging + - bugfix: Everything that involves bandaging now properly uses the new blood system + - bugfix: Fixes species exotic blood being injected into a mob not increasing their + blood volume (slimes rejoice) + - bugfix: Fixed faked deaths still allowing for bleeding + - bugfix: Fixes IV drips not transferring over the proper amount of blood + - tweak: Embedded objects will cause additional bleeding + - rscadd: Adds in heparin, a drug that can cause bleeding + - tweak: medical stacks can be used multiple times on the same limb + - tweak: Blood depletes in the body a lot faster now, due to blood refactor changes + Shazbot-coding, Driker-Sprites: + - rscadd: Gives the clown their own jug +2017-07-15: + Fox McCloud: + - bugfix: Fixes blood oddities with vampires + Kyep: + - bugfix: Mechs firing missiles no longer cause the missiles to drop at their feet, + as if frozen in midair. + imsxz: + - tweak: Edits the syndicate soft suit helmet's description to match the suit's. +2017-07-16: + Ataman: + - bugfix: Fixed diona nymphs needing oxygen and getting cold. + Crazylemon64: + - bugfix: Cable laying by clicking the cable you want to join to works now + KasparoVy: + - bugfix: Fixes a bug with Vampire Shapeshift where you didn't get a name appropriate + to your species and clarifies the ability description. + - bugfix: Fixes a bug with DNA scramblers whereby you wouldn't get a name appropriate + to your species. +2017-07-18: + Fox McCloud: + - bugfix: Fixes blood volume being able to exceed 560 + Purpose2: + - tweak: The Arrival's Trader Dock now cycles properly. +2017-07-19: + Fox McCloud: + - bugfix: Fixes dismembering and some damage transfers (when limb damage is maxed + out) being inconsistent + - tweak: can no longer dismember groins + - tweak: Cleans up human examine code to be better laid out and more consistent; + minor grammatical changes and some fixes; consistency should be retained for + species that lack a pulse. Soul departure now properly checks for if the person + can re-enter their corpse or not. Also resolves issues with FAKE DEATH examination. + - rscadd: Adds in gunshot blood splattering +2017-07-20: + Purpose2: + - bugfix: Stops vampires spawning in the church. +2017-07-21: + Purpose2: + - rscadd: 'MetaStation: Adds a brand new Medbay!' + - rscadd: 'MetaStation: Adds the dogbeds to the CMO/HoS office' + - rscadd: 'MetaStation: Adds Sergeant Araneus back to the HoS''s office. HoS beware.' + - rscadd: 'MetaStation: Adds a processing area to the brig.' + - rscadd: 'MetaStation: Adds the Gamma Armory.' + - rscadd: 'MetaStation: Adds two additional brig cells' + - rscadd: 'MetaStation: Adds a morgue slab to the Brig Phys office' + - rscadd: 'MetaStation: Morgue has a swanky new office, directly connected to Cloning.' + - rscadd: 'MetaStation: Robotics gets gloves and masks.' + - rscadd: 'MetaStation: Adds shutters to R&D and Genetics.' + - rscadd: 'MetaStation: Adds a Paramedic''s office.' + - rscadd: 'MetaStation: Adds a fully function containment grid.' + - tweak: 'MetaStation: Moves Monitor Encryption key to the RD''s office again' + - tweak: 'MetaStation: Dorms have glass doors and fewer tinted windows' + - tweak: 'Metastation: Engine Containment now has Blast Doors instead of Shutters.' + - bugfix: 'Metastation: Execution chamber blast doors are no longer see-through.' + - bugfix: 'Metastation: Only the appropriate plastic flaps should be see-through.' + - bugfix: 'MetaStation: Botany is no longer all-access' + - bugfix: 'MetaStation: Science gets access to the Science outpost again... for + now...' + - bugfix: 'MetaStation: Fixes camera network monitors' + - bugfix: 'MetaStation: Church shutters block vision again' + - bugfix: 'MetaStation: Adds the missing Armory shutter button.' + - rscdel: 'MetaStation: Removes tinted windows from R&D & Genetics' +2017-07-22: + Crazylemon64: + - tweak: Slipping now outputs a visible message instead of a personal one + Fox McCloud: + - bugfix: Fixes IPCs and Diona being immune to weapon knockdown + Kyep: + - tweak: Terror Spider away mission is now harder to cheese. + - bugfix: Loading a different character while in the lobby will now update the character + name listed on the lobby screen. Same when you rename an existing character. + - bugfix: Blood decals are no longer movable. This means LINDA cannot move them, + spiders cannot wrap them, etc. +2017-07-23: + Fox McCloud: + - bugfix: Fixes cloners causing infections in clonees +2017-07-24: + FlattestGuitar: + - rscadd: Adds a taste system! Drink or eat stuff to find out what it tastes like! + Kyep: + - bugfix: it is no longer possible to use a sentience potion to convert space pirates + in the beach away mission to your side. Nor is this possible with other sentient + NPCs, such as syndies or russians. +2017-07-25: + Birdtalon: + - tweak: Reduces the volume of the electric guitars + FlattestGuitar: + - tweak: Antagonists will no longer get the objective to steal slime extracts and + plasma tanks. + - rscadd: The Captain has a swanky high-tech jetpack now. Antagonists will try to + steal this one instead of *any* jetpack. + Fox McCloud: + - tweak: You can now point while voluntarily lying down + - tweak: shotgun darts and syringe darts no longer react their reagents on hit (they + will still transfer reagents) + - rscdel: removes cryostasis bag + FreeStylaLT: + - rscdel: Removed sci outpost and dock from Metastation and Cyberiad + - rscadd: Added a Mining Outpost to the northernmost point of the Asteroid. + Kluys, Kyep & DarkLordpyro: + - tweak: Emagged drones are now readily identifiable, as their lights turn red. + Kyep: + - tweak: Eating as Ian (and other player-controlled corgis) is now rate-limited. + - tweak: Reagents placed in shotgun shells will now react. It is no longer possible + to make explosive shotgun darts by using regular darts like cryobeakers. + - rscadd: Admins' Smite command has been upgraded. No longer limited to Dark Priests, + it can now send over a dozen different entities in search of its target, from + the comic, like Greytiders, Tunnel Clowns, Masked Killers and Mime Assasins, + to the serious, such as Syndicates, Soviets, Dark Lords and more. All come with + a dust implant. These same characters can also be sent to protect specific crew + members, so they aren't predictable. + - bugfix: The 'reaper' admin outfit now has a working briefcase. + - bugfix: Use of the 'Bless' command to bestow powers no longer causes genetic damage. + imsxz: + - tweak: makes HONK rifle selfcharge + owenowen212: + - rscadd: Adds the clownish language to honk squad members. +2017-07-26: + Citinited: + - bugfix: The autopsy drawer's description makes more sense. +2017-07-27: + Birdtalon: + - bugfix: Protolathe speed now increases when upgraded with manipulators. +2017-07-29: + Fox McCloud: + - bugfix: Dead hearts now induce a heart attack + - bugfix: Fixed concentrated initro never metabolizing + FreeStylaLT: + - tweak: replaces generic Mining z-level with Meta's + Purpose2: + - bugfix: 'MetaStation: Adds the missing kitchen windows' + - bugfix: 'MetaStation: Nerfs the Top Hat equivalent of the Sword in the Stone.' + - bugfix: 'MetaStation: Adds a Pet Supply vendor, chefs now make sushi again!' +2017-07-30: + FreeStylaLT: + - bugfix: Fixed erroneous pipes on z5 + Kyep: + - bugfix: Evil-minded players can no longer use the Gateway's Mother of Terror spider + to create an infestation on-station. +2017-07-31: + Birdtalon: + - bugfix: Protolathe stock part printing no longer takes a lifetime. +2017-08-02: + Fox McCloud: + - tweak: removed a stasis book from the medical break room +2017-08-03: + Fox McCloud: + - bugfix: Internal organs can take damage again, brain damage can be fixed again, + and you now take the proper damage from external sources to limbs, IPCs surviving + EMPs, and robo limbs never malfunctioning +2017-08-05: + Purpose2: + - bugfix: Karma message will now point you in the right direction again. +2017-08-06: + Birdtalon: + - tweak: Small wording change to syndicate collaborator greetings. + Fox McCloud: + - tweak: Botany nerfed; will need ambrosia gaia earth's blood to make a tray self-sustaining + - tweak: Gene machine now requires heavy upgrading to make use of transferring high + quality genes from one plant to another + - rscadd: Starthistle can now be grown + - rscadd: Adds in red and regular onions; slice them for onion rings; cook them + for even more delicious onion rings + Kyep: + - bugfix: 'Playing as a smite/bless hunter, or syndie infiltration team member, + now requires that you be traitor-eligible. IE: have enough playtime, and the + preference enabled.' + Purpose2: + - rscadd: 'BoxStation: Adds a garbage receptacle by the kitchen. Don''t forget to + bus your plates.' + - bugfix: 'BoxStation: Fixes an inappropriate access restriction on one part of + an airlock, and ensures the buttons are visible.' + - tweak: 'BoxStation: Changes the now erroneous Science Shuttle Console on the bridge + to a Labor Camp Shuttle Console.' + - rscadd: Adds screwdrivers to Medical by the cell chargers for recharging the defibs. +2017-08-09: + Purpose2: + - rscadd: Adds a cycling airlock on the new mining mini outpost. + - bugfix: Re-adds the cycling airlock on mining outpost. + - bugfix: Fixes the broken atmos piping on mining outpost. + - bugfix: Fixes a lack of lighting on mining outpost. +2017-08-10: + KasparoVy: + - bugfix: Blood trails are now the same colour as the blood pools they came from + when viewed by colour blind or noir shades wearing humanoids. diff --git a/html/changelogs/AutoChangeLog-pr-7574.yml b/html/changelogs/AutoChangeLog-pr-7574.yml deleted file mode 100644 index a8663870896..00000000000 --- a/html/changelogs/AutoChangeLog-pr-7574.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Fox McCloud" -delete-after: True -changes: - - tweak: "Diona nutrition bar should no longer flicker constantly" diff --git a/html/templates/header.html b/html/templates/header.html index bcd9595f02b..fac4d7b280a 100644 --- a/html/templates/header.html +++ b/html/templates/header.html @@ -26,7 +26,7 @@
      Paradise Station

      - Visit our IRC channel: #crew on neko.sneeza.me + Visit our Discord channel:-Click Here- @@ -54,4 +54,4 @@ *** DO NOT FUCK WITH THIS FILE OR YOU WILL CAUSE MERGE CONFLICTS. *** --> -
      \ No newline at end of file +
      diff --git a/icons/effects/beam.dmi b/icons/effects/beam.dmi index ec06922a07d..b45657fff51 100644 Binary files a/icons/effects/beam.dmi and b/icons/effects/beam.dmi differ diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index 28e2fd791ff..faadfe6ed11 100644 Binary files a/icons/effects/blood.dmi and b/icons/effects/blood.dmi differ diff --git a/icons/effects/fluidtracks.dmi b/icons/effects/fluidtracks.dmi index 810ecc7f265..d4152ea83bc 100644 Binary files a/icons/effects/fluidtracks.dmi and b/icons/effects/fluidtracks.dmi differ diff --git a/icons/mecha/mecha.dmi b/icons/mecha/mecha.dmi index f0325b5f175..e7c2663bb4b 100644 Binary files a/icons/mecha/mecha.dmi and b/icons/mecha/mecha.dmi differ diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index 1c4472d5299..93b0317b0aa 100644 Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ diff --git a/icons/mob/custom_synthetic/custom-synthetic.dmi b/icons/mob/custom_synthetic/custom-synthetic.dmi index 29917049c85..08642abaab9 100644 Binary files a/icons/mob/custom_synthetic/custom-synthetic.dmi and b/icons/mob/custom_synthetic/custom-synthetic.dmi differ diff --git a/icons/mob/custom_synthetic/custom_head.dmi b/icons/mob/custom_synthetic/custom_head.dmi index 76ffcedcc82..c66ecb6c8be 100644 Binary files a/icons/mob/custom_synthetic/custom_head.dmi and b/icons/mob/custom_synthetic/custom_head.dmi differ diff --git a/icons/mob/custom_synthetic/custom_lefthand.dmi b/icons/mob/custom_synthetic/custom_lefthand.dmi index 8d469195434..0005ed032e8 100644 Binary files a/icons/mob/custom_synthetic/custom_lefthand.dmi and b/icons/mob/custom_synthetic/custom_lefthand.dmi differ diff --git a/icons/mob/custom_synthetic/custom_righthand.dmi b/icons/mob/custom_synthetic/custom_righthand.dmi index 8d469195434..df64d269aaa 100644 Binary files a/icons/mob/custom_synthetic/custom_righthand.dmi and b/icons/mob/custom_synthetic/custom_righthand.dmi differ diff --git a/icons/mob/feet.dmi b/icons/mob/feet.dmi index 2dd84b4117c..7fc4aa0a9ba 100644 Binary files a/icons/mob/feet.dmi and b/icons/mob/feet.dmi differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index f25715b9220..e2971a7c39c 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/inhands/clothing_lefthand.dmi b/icons/mob/inhands/clothing_lefthand.dmi index 29ebf19be94..b4cb362e298 100644 Binary files a/icons/mob/inhands/clothing_lefthand.dmi and b/icons/mob/inhands/clothing_lefthand.dmi differ diff --git a/icons/mob/inhands/clothing_righthand.dmi b/icons/mob/inhands/clothing_righthand.dmi index 0d43b6216f7..600c9aea661 100644 Binary files a/icons/mob/inhands/clothing_righthand.dmi and b/icons/mob/inhands/clothing_righthand.dmi differ diff --git a/icons/mob/inhands/fluff_lefthand.dmi b/icons/mob/inhands/fluff_lefthand.dmi index 209f7660781..417ca1bb107 100644 Binary files a/icons/mob/inhands/fluff_lefthand.dmi and b/icons/mob/inhands/fluff_lefthand.dmi differ diff --git a/icons/mob/inhands/fluff_righthand.dmi b/icons/mob/inhands/fluff_righthand.dmi index d048ff86003..6d4f3a2c76b 100644 Binary files a/icons/mob/inhands/fluff_righthand.dmi and b/icons/mob/inhands/fluff_righthand.dmi differ diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index 08050649225..bccdc57c656 100644 Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index 90a218c7166..e3b242b46f7 100644 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/mob/robots.dmi b/icons/mob/robots.dmi index 62948a933ed..6ea8f69d632 100644 Binary files a/icons/mob/robots.dmi and b/icons/mob/robots.dmi differ diff --git a/icons/mob/screen_alert.dmi b/icons/mob/screen_alert.dmi index 99359f5b079..297f9a9aae2 100644 Binary files a/icons/mob/screen_alert.dmi and b/icons/mob/screen_alert.dmi differ diff --git a/icons/mob/species/drask/suit.dmi b/icons/mob/species/drask/suit.dmi index 6e608313eda..96ce0b8bb71 100644 Binary files a/icons/mob/species/drask/suit.dmi and b/icons/mob/species/drask/suit.dmi differ diff --git a/icons/mob/species/drask/uniform.dmi b/icons/mob/species/drask/uniform.dmi index 9dd5a22618c..951a2443fef 100644 Binary files a/icons/mob/species/drask/uniform.dmi and b/icons/mob/species/drask/uniform.dmi differ diff --git a/icons/mob/species/grey/eyes.dmi b/icons/mob/species/grey/eyes.dmi index 929facc86b7..2a1d7c1cd35 100644 Binary files a/icons/mob/species/grey/eyes.dmi and b/icons/mob/species/grey/eyes.dmi differ diff --git a/icons/mob/species/grey/helmet.dmi b/icons/mob/species/grey/helmet.dmi new file mode 100644 index 00000000000..ba1d4f860da Binary files /dev/null and b/icons/mob/species/grey/helmet.dmi differ diff --git a/icons/mob/species/grey/mask.dmi b/icons/mob/species/grey/mask.dmi index 7a64321ed42..d47fd4e7232 100644 Binary files a/icons/mob/species/grey/mask.dmi and b/icons/mob/species/grey/mask.dmi differ diff --git a/icons/mob/species/grey/suit.dmi b/icons/mob/species/grey/suit.dmi index 3d61d72dec8..2766407b18b 100644 Binary files a/icons/mob/species/grey/suit.dmi and b/icons/mob/species/grey/suit.dmi differ diff --git a/icons/mob/species/grey/uniform.dmi b/icons/mob/species/grey/uniform.dmi index 111efe6de65..fdd6a52144c 100644 Binary files a/icons/mob/species/grey/uniform.dmi and b/icons/mob/species/grey/uniform.dmi differ diff --git a/icons/mob/species/plasmaman/helmet.dmi b/icons/mob/species/plasmaman/helmet.dmi index 125be79a278..258ea305d23 100644 Binary files a/icons/mob/species/plasmaman/helmet.dmi and b/icons/mob/species/plasmaman/helmet.dmi differ diff --git a/icons/mob/species/plasmaman/suit.dmi b/icons/mob/species/plasmaman/suit.dmi index 827146bb24c..3a4720378f7 100644 Binary files a/icons/mob/species/plasmaman/suit.dmi and b/icons/mob/species/plasmaman/suit.dmi differ diff --git a/icons/mob/species/vox/shoes.dmi b/icons/mob/species/vox/shoes.dmi index 45f664c715a..0a65993e240 100644 Binary files a/icons/mob/species/vox/shoes.dmi and b/icons/mob/species/vox/shoes.dmi differ diff --git a/icons/mob/species/vox/suit.dmi b/icons/mob/species/vox/suit.dmi index c339c15ab18..ca8289a3ccb 100644 Binary files a/icons/mob/species/vox/suit.dmi and b/icons/mob/species/vox/suit.dmi differ diff --git a/icons/mob/species/vox/uniform.dmi b/icons/mob/species/vox/uniform.dmi index 9324259ff14..6d6ff4abca4 100644 Binary files a/icons/mob/species/vox/uniform.dmi and b/icons/mob/species/vox/uniform.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index ab9763b0c18..89e3eb94136 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/mob/ties.dmi b/icons/mob/ties.dmi index a482ece8b38..295293ad9de 100644 Binary files a/icons/mob/ties.dmi and b/icons/mob/ties.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index f9bb3b2bbec..02990685d64 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/obj/apc_repair.dmi b/icons/obj/apc_repair.dmi index e2179506dce..4aadcd2ebdc 100644 Binary files a/icons/obj/apc_repair.dmi and b/icons/obj/apc_repair.dmi differ diff --git a/icons/obj/assemblies.dmi b/icons/obj/assemblies.dmi index 2fd457f5638..62a1c314388 100644 Binary files a/icons/obj/assemblies.dmi and b/icons/obj/assemblies.dmi differ diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi index cfcfec6e283..4445b3c3bb0 100644 Binary files a/icons/obj/clothing/belts.dmi and b/icons/obj/clothing/belts.dmi differ diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi index 3631097a2ba..c3942e015de 100644 Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ diff --git a/icons/obj/clothing/species/plasmaman/hats.dmi b/icons/obj/clothing/species/plasmaman/hats.dmi index f4ec02bef2b..bb2fa4120e8 100644 Binary files a/icons/obj/clothing/species/plasmaman/hats.dmi and b/icons/obj/clothing/species/plasmaman/hats.dmi differ diff --git a/icons/obj/clothing/species/plasmaman/suits.dmi b/icons/obj/clothing/species/plasmaman/suits.dmi index 86027617d15..ae07299ff8b 100644 Binary files a/icons/obj/clothing/species/plasmaman/suits.dmi and b/icons/obj/clothing/species/plasmaman/suits.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 016abd8cdf5..92b77524bc4 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/clothing/ties.dmi b/icons/obj/clothing/ties.dmi index ac64e6facf7..4f665031047 100644 Binary files a/icons/obj/clothing/ties.dmi and b/icons/obj/clothing/ties.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index 2a99367e4a4..436d2fa3cea 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/cryobag.dmi b/icons/obj/cryobag.dmi deleted file mode 100644 index acdb5bc14c9..00000000000 Binary files a/icons/obj/cryobag.dmi and /dev/null differ diff --git a/icons/obj/cryogenics.dmi b/icons/obj/cryogenics.dmi index 28d58130749..74ecc17ffb0 100644 Binary files a/icons/obj/cryogenics.dmi and b/icons/obj/cryogenics.dmi differ diff --git a/icons/obj/custom_items.dmi b/icons/obj/custom_items.dmi index 639bedfde29..e12b268a8f2 100644 Binary files a/icons/obj/custom_items.dmi and b/icons/obj/custom_items.dmi differ diff --git a/icons/obj/decals.dmi b/icons/obj/decals.dmi index 13913aae9bd..98da468fc56 100644 Binary files a/icons/obj/decals.dmi and b/icons/obj/decals.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index afa4f586504..65ebfa597a1 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 52eb53ac436..4008e17b3cf 100644 Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ diff --git a/icons/obj/flag.dmi b/icons/obj/flag.dmi index d1e0f08fa49..10126f99102 100644 Binary files a/icons/obj/flag.dmi and b/icons/obj/flag.dmi differ diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index 5f8fb26d74c..2fe44fcddd1 100644 Binary files a/icons/obj/food/food.dmi and b/icons/obj/food/food.dmi differ diff --git a/icons/obj/grenade.dmi b/icons/obj/grenade.dmi index ad8268ad59d..f33135baec6 100644 Binary files a/icons/obj/grenade.dmi and b/icons/obj/grenade.dmi differ diff --git a/icons/obj/guns/energy.dmi b/icons/obj/guns/energy.dmi index 9b38b205075..03b8eba0f8c 100644 Binary files a/icons/obj/guns/energy.dmi and b/icons/obj/guns/energy.dmi differ diff --git a/icons/obj/hydroponics/growing_flowers.dmi b/icons/obj/hydroponics/growing_flowers.dmi index e1f308c87b4..cceb7491212 100644 Binary files a/icons/obj/hydroponics/growing_flowers.dmi and b/icons/obj/hydroponics/growing_flowers.dmi differ diff --git a/icons/obj/hydroponics/growing_vegetables.dmi b/icons/obj/hydroponics/growing_vegetables.dmi index 070d3531a21..9fc1520175e 100644 Binary files a/icons/obj/hydroponics/growing_vegetables.dmi and b/icons/obj/hydroponics/growing_vegetables.dmi differ diff --git a/icons/obj/hydroponics/harvest.dmi b/icons/obj/hydroponics/harvest.dmi index d5bb7d48acb..bd596597624 100644 Binary files a/icons/obj/hydroponics/harvest.dmi and b/icons/obj/hydroponics/harvest.dmi differ diff --git a/icons/obj/hydroponics/seeds.dmi b/icons/obj/hydroponics/seeds.dmi index edc0ee4894f..a84ed3dd730 100644 Binary files a/icons/obj/hydroponics/seeds.dmi and b/icons/obj/hydroponics/seeds.dmi differ diff --git a/icons/obj/items_cyborg.dmi b/icons/obj/items_cyborg.dmi new file mode 100644 index 00000000000..cddb57303d2 Binary files /dev/null and b/icons/obj/items_cyborg.dmi differ diff --git a/icons/obj/library.dmi b/icons/obj/library.dmi index 81c5c39ddf8..ec038f3477b 100644 Binary files a/icons/obj/library.dmi and b/icons/obj/library.dmi differ diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi index d6cb7a676c4..1fabc78bdd0 100644 Binary files a/icons/obj/mining.dmi and b/icons/obj/mining.dmi differ diff --git a/icons/obj/musician.dmi b/icons/obj/musician.dmi index b5d0526d670..c57114abf63 100644 Binary files a/icons/obj/musician.dmi and b/icons/obj/musician.dmi differ diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index e95b9ce041f..cb42505cef8 100644 Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi index 316790998c5..8c3d0f2c81f 100644 Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ diff --git a/icons/obj/shards.dmi b/icons/obj/shards.dmi index 1b979682adc..5ce7113bf88 100644 Binary files a/icons/obj/shards.dmi and b/icons/obj/shards.dmi differ diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index 5dc147bc25e..219ead6f3b5 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index ac42a7d538c..cccdb4d16fb 100644 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ diff --git a/icons/obj/tank.dmi b/icons/obj/tank.dmi index ef5f6ad194e..ddcbfe8ac81 100644 Binary files a/icons/obj/tank.dmi and b/icons/obj/tank.dmi differ diff --git a/icons/obj/virology.dmi b/icons/obj/virology.dmi deleted file mode 100644 index b3b05584d86..00000000000 Binary files a/icons/obj/virology.dmi and /dev/null differ diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index 83276e5ec57..9f9434f0cbe 100644 Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ diff --git a/icons/obj/xenoarchaeology.dmi b/icons/obj/xenoarchaeology.dmi deleted file mode 100644 index 62d21044ace..00000000000 Binary files a/icons/obj/xenoarchaeology.dmi and /dev/null differ diff --git a/nano/templates/adv_med.tmpl b/nano/templates/adv_med.tmpl index e88db47456a..a1ca2815679 100644 --- a/nano/templates/adv_med.tmpl +++ b/nano/templates/adv_med.tmpl @@ -151,8 +151,6 @@ Used In File(s): \code\game\machinery\adv_med.dm {{if value.fireLoss> 0}} {{else}} {{/if}} {{:helper.smoothRound(value.fireLoss)}} - {{if value.status.destroyed}} DESTROYED
      {{/if}} - {{if value.status.bleeding}} external bleeding
      {{/if}} {{if value.internalBleeding}} internal bleeding
      {{/if}} {{if value.lungRuptured}} lung ruptured
      {{/if}} {{if value.status.broken}} {{:value.status.broken}}
      {{/if}} diff --git a/nano/templates/poolcontroller.tmpl b/nano/templates/poolcontroller.tmpl index ba6b0f6ded7..3492aa8f85f 100644 --- a/nano/templates/poolcontroller.tmpl +++ b/nano/templates/poolcontroller.tmpl @@ -13,7 +13,7 @@ Used In File(s): \code\game\machinery\poolcontroller.dm
      - Saftey Status: + Safety Status:
      {{if data.emagged}} diff --git a/nano/templates/rpd.tmpl b/nano/templates/rpd.tmpl new file mode 100644 index 00000000000..bd92b91c979 --- /dev/null +++ b/nano/templates/rpd.tmpl @@ -0,0 +1,112 @@ + +

      Mode:

      +
      + {{for data.mainmenu}} + {{:helper.link(String(value.category), String(value.icon), {"mode": Number(value.mode)}, data.mode == Number(value.mode) ? "linkOn" : null)}} + {{/for}} +
      +{{if data.mode == 1}} +

      Pipe type:

      +
      + {{for data.pipemenu}} + {{:helper.link(String(value.pipecategory), null, {"pipetype": Number(value.pipemode)}, data.pipetype == Number(value.pipemode) ? "linkOn" : null)}} + {{/for}} +
      +

      Available pipes:

      +
      + {{for data.pipelist}} + {{if value.category == data.pipetype}} +
      {{:helper.link(String(value.pipename), "arrow-right", {"whatpipe": Number(value.id)}, data.whatpipe == Number(value.id) ? "linkOn" : null)}}
      + {{/if}} + {{/for}} +
      + {{for data.pipelist}} +
      + {{if value.id == data.whatpipe && value.orientations != 1}} +
      + {{:helper.link("Orient automatically", null, {"iconrotation": 0}, data.iconrotation == 0 ? "linkOn" : null)}} +
      + {{/if}} + {{if value.id == data.whatpipe && value.orientations != 1 && value.bendy != 1}} +
      + {{:helper.link("", "arrow-right", {"iconrotation": 1}, data.iconrotation == 1 ? "linkOn" : null)}} + +
      +
      + {{:helper.link("", "arrow-right", {"iconrotation": 4}, data.iconrotation == 4 ? "linkOn" : null)}} + +
      + {{/if}} + {{if value.id == data.whatpipe && value.orientations == 4 && value.bendy != 1}} +
      + {{:helper.link("", "arrow-right", {"iconrotation": 2}, data.iconrotation == 2 ? "linkOn" : null)}} + +
      +
      + {{:helper.link("", "arrow-right", {"iconrotation": 8}, data.iconrotation == 8 ? "linkOn" : null)}} + +
      + {{/if}} + {{if value.id == data.whatpipe && value.bendy == 1}} +
      + {{:helper.link("", "arrow-right", {"iconrotation": 1}, data.iconrotation == 1 ? "linkOn" : null)}} + +
      +
      + {{:helper.link("", "arrow-right", {"iconrotation": 4}, data.iconrotation == 4 ? "linkOn" : null)}} + +
      +
      + {{:helper.link("", "arrow-right", {"iconrotation": 2}, data.iconrotation == 2 ? "linkOn" : null)}} + +
      +
      + {{:helper.link("", "arrow-right", {"iconrotation": 8}, data.iconrotation == 8 ? "linkOn" : null)}} + +
      + {{/if}} +
      + {{/for}} +{{else data.mode == 2}} +

      Available pipes:

      +
      + {{for data.dpipelist}} +
      {{:helper.link(String(value.pipename), "arrow-right", {"whatdpipe": Number(value.id)}, data.whatdpipe == Number(value.id) ? "linkOn" : null)}}
      + {{/for}} +
      + {{for data.dpipelist}} +
      + {{if value.id == data.whatdpipe && value.orientations != 1}} +
      + {{:helper.link("Orient automatically", null, {"iconrotation": 0}, data.iconrotation == 0 ? "linkOn" : null)}} +
      +
      + {{:helper.link("", "arrow-right", {"iconrotation": 1}, data.iconrotation == 1 ? "linkOn" : null)}} + +
      +
      + {{:helper.link("", "arrow-right", {"iconrotation": 4}, data.iconrotation == 4 ? "linkOn" : null)}} + +
      + {{/if}} + {{if value.id == data.whatdpipe && value.orientations == 4}} +
      + {{:helper.link("", "arrow-right", {"iconrotation": 2}, data.iconrotation == 2 ? "linkOn" : null)}} + +
      +
      + {{:helper.link("", "arrow-right", {"iconrotation": 8}, data.iconrotation == 8 ? "linkOn" : null)}} + +
      + {{/if}} +
      + {{/for}} +{{else data.mode == 3}} +

      Device ready to rotate loose pipes...

      +{{else data.mode == 4}} +

      Device ready to flip loose pipes...

      +{{else data.mode == 5}} +

      Device ready to eat loose pipes...

      +{{/if}} diff --git a/paradise.dme b/paradise.dme index 71edb0e003d..7922492f099 100644 --- a/paradise.dme +++ b/paradise.dme @@ -49,6 +49,7 @@ #include "code\__DEFINES\rolebans.dm" #include "code\__DEFINES\sight.dm" #include "code\__DEFINES\snpc.dm" +#include "code\__DEFINES\sound.dm" #include "code\__DEFINES\stat.dm" #include "code\__DEFINES\tick.dm" #include "code\__DEFINES\zlevel.dm" @@ -173,7 +174,6 @@ #include "code\controllers\voting.dm" #include "code\controllers\Processes\air.dm" #include "code\controllers\Processes\alarm.dm" -#include "code\controllers\Processes\diseases.dm" #include "code\controllers\Processes\event.dm" #include "code\controllers\Processes\fast_process.dm" #include "code\controllers\Processes\fires.dm" @@ -218,6 +218,7 @@ #include "code\datums\recipe.dm" #include "code\datums\ruins.dm" #include "code\datums\shuttles.dm" +#include "code\datums\soullink.dm" #include "code\datums\spell.dm" #include "code\datums\statclick.dm" #include "code\datums\supplypacks.dm" @@ -732,7 +733,7 @@ #include "code\game\objects\items\devices\flash.dm" #include "code\game\objects\items\devices\flashlight.dm" #include "code\game\objects\items\devices\floor_painter.dm" -#include "code\game\objects\items\devices\guitar.dm" +#include "code\game\objects\items\devices\instruments.dm" #include "code\game\objects\items\devices\laserpointer.dm" #include "code\game\objects\items\devices\lightreplacer.dm" #include "code\game\objects\items\devices\machineprototype.dm" @@ -748,7 +749,6 @@ #include "code\game\objects\items\devices\traitordevices.dm" #include "code\game\objects\items\devices\transfer_valve.dm" #include "code\game\objects\items\devices\uplinks.dm" -#include "code\game\objects\items\devices\violin.dm" #include "code\game\objects\items\devices\whistle.dm" #include "code\game\objects\items\devices\radio\beacon.dm" #include "code\game\objects\items\devices\radio\electropack.dm" @@ -822,6 +822,7 @@ #include "code\game\objects\items\weapons\powerfist.dm" #include "code\game\objects\items\weapons\RCD.dm" #include "code\game\objects\items\weapons\RCL.dm" +#include "code\game\objects\items\weapons\rpd.dm" #include "code\game\objects\items\weapons\RSF.dm" #include "code\game\objects\items\weapons\scissors.dm" #include "code\game\objects\items\weapons\scrolls.dm" @@ -858,6 +859,7 @@ #include "code\game\objects\items\weapons\grenades\smokebomb.dm" #include "code\game\objects\items\weapons\grenades\spawnergrenade.dm" #include "code\game\objects\items\weapons\grenades\syndieminibomb.dm" +#include "code\game\objects\items\weapons\implants\health.dm" #include "code\game\objects\items\weapons\implants\implant.dm" #include "code\game\objects\items\weapons\implants\implant_abductor.dm" #include "code\game\objects\items\weapons\implants\implant_chem.dm" @@ -969,6 +971,8 @@ #include "code\game\objects\structures\crates_lockers\closets\secure\scientist.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\secure_closets.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\security.dm" +#include "code\game\objects\structures\decor\decor.dm" +#include "code\game\objects\structures\decor\machinery\telecomms.dm" #include "code\game\objects\structures\stool_bed_chair_nest\alien_nests.dm" #include "code\game\objects\structures\stool_bed_chair_nest\bed.dm" #include "code\game\objects\structures\stool_bed_chair_nest\chairs.dm" @@ -1046,6 +1050,7 @@ #include "code\modules\admin\verbs\dice.dm" #include "code\modules\admin\verbs\freeze.dm" #include "code\modules\admin\verbs\getlogs.dm" +#include "code\modules\admin\verbs\gimmick_team.dm" #include "code\modules\admin\verbs\honksquad.dm" #include "code\modules\admin\verbs\infiltratorteam_syndicate.dm" #include "code\modules\admin\verbs\map_template_loadverb.dm" @@ -1289,6 +1294,7 @@ #include "code\modules\events\prison_break.dm" #include "code\modules\events\radiation_storm.dm" #include "code\modules\events\rogue_drones.dm" +#include "code\modules\events\sentience.dm" #include "code\modules\events\slaughterevent.dm" #include "code\modules\events\spacevine.dm" #include "code\modules\events\spider_infestation.dm" @@ -1394,6 +1400,7 @@ #include "code\modules\hydroponics\grown\mushrooms.dm" #include "code\modules\hydroponics\grown\nettle.dm" #include "code\modules\hydroponics\grown\nymph.dm" +#include "code\modules\hydroponics\grown\onion.dm" #include "code\modules\hydroponics\grown\peanut.dm" #include "code\modules\hydroponics\grown\potato.dm" #include "code\modules\hydroponics\grown\pumpkin.dm" @@ -1510,7 +1517,6 @@ #include "code\modules\mob\living\carbon\death.dm" #include "code\modules\mob\living\carbon\give.dm" #include "code\modules\mob\living\carbon\life.dm" -#include "code\modules\mob\living\carbon\shock.dm" #include "code\modules\mob\living\carbon\superheroes.dm" #include "code\modules\mob\living\carbon\update_icons.dm" #include "code\modules\mob\living\carbon\update_status.dm" @@ -1568,6 +1574,7 @@ #include "code\modules\mob\living\carbon\human\login.dm" #include "code\modules\mob\living\carbon\human\npcs.dm" #include "code\modules\mob\living\carbon\human\say.dm" +#include "code\modules\mob\living\carbon\human\shock.dm" #include "code\modules\mob\living\carbon\human\status_procs.dm" #include "code\modules\mob\living\carbon\human\update_icons.dm" #include "code\modules\mob\living\carbon\human\whisper.dm" @@ -1945,6 +1952,7 @@ #include "code\modules\projectiles\projectile\magic.dm" #include "code\modules\projectiles\projectile\reusable.dm" #include "code\modules\projectiles\projectile\special.dm" +#include "code\modules\reagents\chem_splash.dm" #include "code\modules\reagents\reagent_containers.dm" #include "code\modules\reagents\reagent_dispenser.dm" #include "code\modules\reagents\chemistry\colors.dm" @@ -2025,60 +2033,6 @@ #include "code\modules\research\designs\stock_parts_designs.dm" #include "code\modules\research\designs\telecomms_designs.dm" #include "code\modules\research\designs\weapon_designs.dm" -#include "code\modules\research\xenoarchaeology\areas.dm" -#include "code\modules\research\xenoarchaeology\chemistry.dm" -#include "code\modules\research\xenoarchaeology\geosample.dm" -#include "code\modules\research\xenoarchaeology\manuals.dm" -#include "code\modules\research\xenoarchaeology\master_controller.dm" -#include "code\modules\research\xenoarchaeology\misc.dm" -#include "code\modules\research\xenoarchaeology\readme.dm" -#include "code\modules\research\xenoarchaeology\artifact\artifact.dm" -#include "code\modules\research\xenoarchaeology\artifact\artifact_autocloner.dm" -#include "code\modules\research\xenoarchaeology\artifact\artifact_crystal.dm" -#include "code\modules\research\xenoarchaeology\artifact\artifact_gigadrill.dm" -#include "code\modules\research\xenoarchaeology\artifact\artifact_hoverpod.dm" -#include "code\modules\research\xenoarchaeology\artifact\artifact_replicator.dm" -#include "code\modules\research\xenoarchaeology\artifact\artifact_unknown.dm" -#include "code\modules\research\xenoarchaeology\artifact\effect.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_affect_cold.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_badfeeling.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_cellcharge.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_celldrain.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_dnaswitch.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_emp.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_goodfeeling.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_heal.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_heat.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_hurt.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_radiate.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_roboheal.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_robohurt.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_sleepy.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_stun.dm" -#include "code\modules\research\xenoarchaeology\finds\finds.dm" -#include "code\modules\research\xenoarchaeology\finds\finds_defines.dm" -#include "code\modules\research\xenoarchaeology\finds\finds_fossils.dm" -#include "code\modules\research\xenoarchaeology\finds\finds_misc.dm" -#include "code\modules\research\xenoarchaeology\finds\finds_special.dm" -#include "code\modules\research\xenoarchaeology\finds\finds_talkingitem.dm" -#include "code\modules\research\xenoarchaeology\genetics\prehistoric_animals.dm" -#include "code\modules\research\xenoarchaeology\genetics\reconstitutor.dm" -#include "code\modules\research\xenoarchaeology\machinery\artifact_analyser.dm" -#include "code\modules\research\xenoarchaeology\machinery\artifact_harvester.dm" -#include "code\modules\research\xenoarchaeology\machinery\artifact_scanner.dm" -#include "code\modules\research\xenoarchaeology\machinery\coolant.dm" -#include "code\modules\research\xenoarchaeology\machinery\geosample_scanner.dm" -#include "code\modules\research\xenoarchaeology\tools\ano_device_battery.dm" -#include "code\modules\research\xenoarchaeology\tools\anomaly_suit.dm" -#include "code\modules\research\xenoarchaeology\tools\bunsen_burner.dm" -#include "code\modules\research\xenoarchaeology\tools\gearbelt.dm" -#include "code\modules\research\xenoarchaeology\tools\suspension_generator.dm" -#include "code\modules\research\xenoarchaeology\tools\tools.dm" -#include "code\modules\research\xenoarchaeology\tools\tools_anoscanner.dm" -#include "code\modules\research\xenoarchaeology\tools\tools_coresampler.dm" -#include "code\modules\research\xenoarchaeology\tools\tools_depthscanner.dm" -#include "code\modules\research\xenoarchaeology\tools\tools_locater.dm" -#include "code\modules\research\xenoarchaeology\tools\tools_pickaxe.dm" #include "code\modules\research\xenobiology\xenobio_camera.dm" #include "code\modules\research\xenobiology\xenobiology.dm" #include "code\modules\ruins\ruin_areas.dm" @@ -2130,20 +2084,24 @@ #include "code\modules\store\items.dm" #include "code\modules\store\store.dm" #include "code\modules\surgery\bones.dm" +#include "code\modules\surgery\cavity_implant.dm" #include "code\modules\surgery\dental_implant.dm" #include "code\modules\surgery\encased.dm" #include "code\modules\surgery\face.dm" #include "code\modules\surgery\generic.dm" #include "code\modules\surgery\helpers.dm" -#include "code\modules\surgery\implant.dm" +#include "code\modules\surgery\implant_removal.dm" +#include "code\modules\surgery\limb_augmentation.dm" #include "code\modules\surgery\limb_reattach.dm" #include "code\modules\surgery\organs_internal.dm" #include "code\modules\surgery\other.dm" +#include "code\modules\surgery\remove_embedded_object.dm" #include "code\modules\surgery\rig_removal.dm" #include "code\modules\surgery\robotics.dm" #include "code\modules\surgery\slime.dm" #include "code\modules\surgery\surgery.dm" #include "code\modules\surgery\tools.dm" +#include "code\modules\surgery\organs\augments_arms.dm" #include "code\modules\surgery\organs\augments_eyes.dm" #include "code\modules\surgery\organs\augments_internal.dm" #include "code\modules\surgery\organs\autoimplanter.dm" @@ -2154,13 +2112,11 @@ #include "code\modules\surgery\organs\organ_external.dm" #include "code\modules\surgery\organs\organ_icon.dm" #include "code\modules\surgery\organs\organ_internal.dm" -#include "code\modules\surgery\organs\organ_stump.dm" #include "code\modules\surgery\organs\pain.dm" #include "code\modules\surgery\organs\parasites.dm" #include "code\modules\surgery\organs\robolimbs.dm" #include "code\modules\surgery\organs\skeleton.dm" #include "code\modules\surgery\organs\vocal_cords.dm" -#include "code\modules\surgery\organs\wound.dm" #include "code\modules\surgery\organs\subtypes\abductor.dm" #include "code\modules\surgery\organs\subtypes\diona.dm" #include "code\modules\surgery\organs\subtypes\drask.dm" diff --git a/sound/eguitar/ab4.ogg b/sound/eguitar/ab4.ogg new file mode 100644 index 00000000000..055e64b85bf Binary files /dev/null and b/sound/eguitar/ab4.ogg differ diff --git a/sound/eguitar/ab5.ogg b/sound/eguitar/ab5.ogg new file mode 100644 index 00000000000..c32958e28a7 Binary files /dev/null and b/sound/eguitar/ab5.ogg differ diff --git a/sound/eguitar/ab6.ogg b/sound/eguitar/ab6.ogg new file mode 100644 index 00000000000..35b971c67d5 Binary files /dev/null and b/sound/eguitar/ab6.ogg differ diff --git a/sound/eguitar/an4.ogg b/sound/eguitar/an4.ogg new file mode 100644 index 00000000000..319d2a1ff5f Binary files /dev/null and b/sound/eguitar/an4.ogg differ diff --git a/sound/eguitar/an5.ogg b/sound/eguitar/an5.ogg new file mode 100644 index 00000000000..a97f87b1c25 Binary files /dev/null and b/sound/eguitar/an5.ogg differ diff --git a/sound/eguitar/an6.ogg b/sound/eguitar/an6.ogg new file mode 100644 index 00000000000..9e3de19344f Binary files /dev/null and b/sound/eguitar/an6.ogg differ diff --git a/sound/eguitar/bb4.ogg b/sound/eguitar/bb4.ogg new file mode 100644 index 00000000000..6141a843db6 Binary files /dev/null and b/sound/eguitar/bb4.ogg differ diff --git a/sound/eguitar/bb5.ogg b/sound/eguitar/bb5.ogg new file mode 100644 index 00000000000..ac3f78b31b3 Binary files /dev/null and b/sound/eguitar/bb5.ogg differ diff --git a/sound/eguitar/bb6.ogg b/sound/eguitar/bb6.ogg new file mode 100644 index 00000000000..2c703de8e63 Binary files /dev/null and b/sound/eguitar/bb6.ogg differ diff --git a/sound/eguitar/bn4.ogg b/sound/eguitar/bn4.ogg new file mode 100644 index 00000000000..b6b30ad3e62 Binary files /dev/null and b/sound/eguitar/bn4.ogg differ diff --git a/sound/eguitar/bn5.ogg b/sound/eguitar/bn5.ogg new file mode 100644 index 00000000000..acb78d18c98 Binary files /dev/null and b/sound/eguitar/bn5.ogg differ diff --git a/sound/eguitar/bn6.ogg b/sound/eguitar/bn6.ogg new file mode 100644 index 00000000000..6102bbee531 Binary files /dev/null and b/sound/eguitar/bn6.ogg differ diff --git a/sound/eguitar/cn4.ogg b/sound/eguitar/cn4.ogg new file mode 100644 index 00000000000..78d9e04af74 Binary files /dev/null and b/sound/eguitar/cn4.ogg differ diff --git a/sound/eguitar/cn5.ogg b/sound/eguitar/cn5.ogg new file mode 100644 index 00000000000..3a81c7786e0 Binary files /dev/null and b/sound/eguitar/cn5.ogg differ diff --git a/sound/eguitar/cn6.ogg b/sound/eguitar/cn6.ogg new file mode 100644 index 00000000000..e1b77945f33 Binary files /dev/null and b/sound/eguitar/cn6.ogg differ diff --git a/sound/eguitar/cn7.ogg b/sound/eguitar/cn7.ogg new file mode 100644 index 00000000000..e9c511b116a Binary files /dev/null and b/sound/eguitar/cn7.ogg differ diff --git a/sound/eguitar/db4.ogg b/sound/eguitar/db4.ogg new file mode 100644 index 00000000000..65ce5817fe7 Binary files /dev/null and b/sound/eguitar/db4.ogg differ diff --git a/sound/eguitar/db5.ogg b/sound/eguitar/db5.ogg new file mode 100644 index 00000000000..ac02e0a2daa Binary files /dev/null and b/sound/eguitar/db5.ogg differ diff --git a/sound/eguitar/db6.ogg b/sound/eguitar/db6.ogg new file mode 100644 index 00000000000..3fd03e88a60 Binary files /dev/null and b/sound/eguitar/db6.ogg differ diff --git a/sound/eguitar/dn4.ogg b/sound/eguitar/dn4.ogg new file mode 100644 index 00000000000..16e4d768141 Binary files /dev/null and b/sound/eguitar/dn4.ogg differ diff --git a/sound/eguitar/dn5.ogg b/sound/eguitar/dn5.ogg new file mode 100644 index 00000000000..58e4e3ea6d7 Binary files /dev/null and b/sound/eguitar/dn5.ogg differ diff --git a/sound/eguitar/dn6.ogg b/sound/eguitar/dn6.ogg new file mode 100644 index 00000000000..e5bf1a4b5bb Binary files /dev/null and b/sound/eguitar/dn6.ogg differ diff --git a/sound/eguitar/eb4.ogg b/sound/eguitar/eb4.ogg new file mode 100644 index 00000000000..a2c469681fe Binary files /dev/null and b/sound/eguitar/eb4.ogg differ diff --git a/sound/eguitar/eb5.ogg b/sound/eguitar/eb5.ogg new file mode 100644 index 00000000000..1910e799412 Binary files /dev/null and b/sound/eguitar/eb5.ogg differ diff --git a/sound/eguitar/eb6.ogg b/sound/eguitar/eb6.ogg new file mode 100644 index 00000000000..661e0d9914f Binary files /dev/null and b/sound/eguitar/eb6.ogg differ diff --git a/sound/eguitar/en4.ogg b/sound/eguitar/en4.ogg new file mode 100644 index 00000000000..fa904c5567a Binary files /dev/null and b/sound/eguitar/en4.ogg differ diff --git a/sound/eguitar/en5.ogg b/sound/eguitar/en5.ogg new file mode 100644 index 00000000000..c654fbccdf7 Binary files /dev/null and b/sound/eguitar/en5.ogg differ diff --git a/sound/eguitar/en6.ogg b/sound/eguitar/en6.ogg new file mode 100644 index 00000000000..13e1f4eacf1 Binary files /dev/null and b/sound/eguitar/en6.ogg differ diff --git a/sound/eguitar/fn4.ogg b/sound/eguitar/fn4.ogg new file mode 100644 index 00000000000..0e0bbaad161 Binary files /dev/null and b/sound/eguitar/fn4.ogg differ diff --git a/sound/eguitar/fn5.ogg b/sound/eguitar/fn5.ogg new file mode 100644 index 00000000000..1efd9b4771b Binary files /dev/null and b/sound/eguitar/fn5.ogg differ diff --git a/sound/eguitar/fn6.ogg b/sound/eguitar/fn6.ogg new file mode 100644 index 00000000000..31f4e52d3fc Binary files /dev/null and b/sound/eguitar/fn6.ogg differ diff --git a/sound/eguitar/gb4.ogg b/sound/eguitar/gb4.ogg new file mode 100644 index 00000000000..ea10aa9664a Binary files /dev/null and b/sound/eguitar/gb4.ogg differ diff --git a/sound/eguitar/gb5.ogg b/sound/eguitar/gb5.ogg new file mode 100644 index 00000000000..4be3a1ae3bc Binary files /dev/null and b/sound/eguitar/gb5.ogg differ diff --git a/sound/eguitar/gb6.ogg b/sound/eguitar/gb6.ogg new file mode 100644 index 00000000000..af3b192bf69 Binary files /dev/null and b/sound/eguitar/gb6.ogg differ diff --git a/sound/eguitar/gn4.ogg b/sound/eguitar/gn4.ogg new file mode 100644 index 00000000000..4d9afd710b3 Binary files /dev/null and b/sound/eguitar/gn4.ogg differ diff --git a/sound/eguitar/gn5.ogg b/sound/eguitar/gn5.ogg new file mode 100644 index 00000000000..0802ec6c5f9 Binary files /dev/null and b/sound/eguitar/gn5.ogg differ diff --git a/sound/eguitar/gn6.ogg b/sound/eguitar/gn6.ogg new file mode 100644 index 00000000000..9842f698e72 Binary files /dev/null and b/sound/eguitar/gn6.ogg differ diff --git a/sound/goonstation/voice/growl1.ogg b/sound/goonstation/voice/growl1.ogg new file mode 100644 index 00000000000..d5152d9c057 Binary files /dev/null and b/sound/goonstation/voice/growl1.ogg differ diff --git a/sound/goonstation/voice/growl2.ogg b/sound/goonstation/voice/growl2.ogg new file mode 100644 index 00000000000..5c48053ac68 Binary files /dev/null and b/sound/goonstation/voice/growl2.ogg differ diff --git a/sound/goonstation/voice/growl3.ogg b/sound/goonstation/voice/growl3.ogg new file mode 100644 index 00000000000..bcacf2442f0 Binary files /dev/null and b/sound/goonstation/voice/growl3.ogg differ diff --git a/sound/goonstation/voice/howl.ogg b/sound/goonstation/voice/howl.ogg new file mode 100644 index 00000000000..778fd6b2483 Binary files /dev/null and b/sound/goonstation/voice/howl.ogg differ diff --git a/sound/weapons/flashbang.ogg b/sound/weapons/flashbang.ogg new file mode 100644 index 00000000000..389aad77bc2 Binary files /dev/null and b/sound/weapons/flashbang.ogg differ diff --git a/sound/weapons/stringsmash.ogg b/sound/weapons/stringsmash.ogg new file mode 100644 index 00000000000..ea96bc0b50b Binary files /dev/null and b/sound/weapons/stringsmash.ogg differ