diff --git a/.editorconfig b/.editorconfig index a25dbdfc85..df93ae3a16 100644 --- a/.editorconfig +++ b/.editorconfig @@ -2,3 +2,7 @@ insert_final_newline = true indent_style = tab indent_size = 4 + +[*.yml] +indent_style = space +indent_size = 2 diff --git a/.travis.yml b/.travis.yml index bef3a69ad7..ab3b1003c3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,28 +1,34 @@ language: generic -sudo: false dist: xenial +sudo: false + branches: except: - ___TGS3TempBranch - ___TGSTempBranch + matrix: include: - - env: - - BUILD_TOOLS=true - name: "Build Tools" + - name: "Run Linters" addons: apt: packages: - python3 - python3-pip - python3-setuptools - cache: - directories: - - tgui/node_modules - - env: - - BUILD_TESTING=true - - BUILD_TOOLS=false - name: "Build All Maps" + install: + - tools/travis/install_build_tools.sh + - tools/travis/install_dreamchecker.sh + script: + - tools/travis/check_filedirs.sh tgstation.dme + - tools/travis/check_changelogs.sh + - find . -name "*.php" -print0 | xargs -0 -n1 php -l + - find . -name "*.json" -not -path "./tgui/node_modules/*" -print0 | xargs -0 python3 ./tools/json_verifier.py + - tools/travis/build_tgui.sh + - tools/travis/check_grep.sh + - ~/dreamchecker + + - name: "Compile All Maps" addons: apt: packages: @@ -30,10 +36,15 @@ matrix: cache: directories: - $HOME/BYOND - - env: - - BUILD_TESTING=false - - BUILD_TOOLS=false - name: "Build and Run Unit Tests" + install: + - tools/travis/install_byond.sh + - source $HOME/BYOND/byond/bin/byondsetup + before_script: + - tools/travis/template_dm_generator.py + script: + - tools/travis/dm.sh -DTRAVISBUILDING -DTRAVISTESTING -DALL_MAPS tgstation.dme + + - name: "Compile and Run Tests" addons: mariadb: '10.2' apt: @@ -41,7 +52,6 @@ matrix: - ubuntu-toolchain-r-test packages: - libstdc++6:i386 - - libssl-dev:i386 - gcc-multilib - g++-7 - g++-7-multilib @@ -49,25 +59,19 @@ matrix: - libmariadbd-dev cache: directories: - - $HOME/.cargo - $HOME/BYOND - - $HOME/MariaDB - - $HOME/.rustup - -install: - - tools/travis/install_build_tools.sh - - if [ $BUILD_TOOLS = false ] && [ $BUILD_TESTING = false ]; then mysql -u root -e 'CREATE DATABASE tg_travis;'; fi - - if [ $BUILD_TOOLS = false ] && [ $BUILD_TESTING = false ]; then mysql -u root tg_travis < SQL/tgstation_schema.sql; fi - - if [ $BUILD_TOOLS = false ] && [ $BUILD_TESTING = false ]; then mysql -u root -e 'CREATE DATABASE tg_travis_prefixed;'; fi - - if [ $BUILD_TOOLS = false ] && [ $BUILD_TESTING = false ]; then mysql -u root tg_travis_prefixed < SQL/tgstation_schema_prefixed.sql; fi - -before_script: - - tools/travis/before_build_tools.sh - - tools/travis/before_build_byond.sh - -script: - - tools/travis/check_filedirs.sh tgstation.dme - - tools/travis/build_tools.sh || travis_terminate 1 - - tools/travis/build_dependencies.sh || travis_terminate 1 - - tools/travis/build_byond.sh - + - $HOME/libmariadb + install: + - tools/travis/install_byond.sh + - source $HOME/BYOND/byond/bin/byondsetup + - tools/travis/install_libmariadb.sh + - tools/travis/install_rust_g.sh + before_script: + - mysql -u root -e 'CREATE DATABASE tg_travis;' + - mysql -u root tg_travis < SQL/tgstation_schema.sql + - mysql -u root -e 'CREATE DATABASE tg_travis_prefixed;' + - mysql -u root tg_travis_prefixed < SQL/tgstation_schema_prefixed.sql + - tools/travis/build_bsql.sh + script: + - tools/travis/dm.sh -DTRAVISBUILDING tgstation.dme || travis_terminate 1 + - tools/travis/run_server.sh diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_elite_tumor.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_elite_tumor.dmm new file mode 100644 index 0000000000..6e44ec3197 --- /dev/null +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_elite_tumor.dmm @@ -0,0 +1,111 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/lavaland/surface/outdoors) +"b" = ( +/obj/structure/elite_tumor, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"c" = ( +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +a +a +a +a +a +"} +(4,1,1) = {" +a +a +a +c +c +c +a +a +a +"} +(5,1,1) = {" +a +a +a +c +b +c +a +a +a +"} +(6,1,1) = {" +a +a +a +c +c +c +a +a +a +"} +(7,1,1) = {" +a +a +a +a +a +a +a +a +a +"} +(8,1,1) = {" +a +a +a +a +a +a +a +a +a +"} +(9,1,1) = {" +a +a +a +a +a +a +a +a +a +"} diff --git a/_maps/RandomRuins/SpaceRuins/spacehermit.dmm b/_maps/RandomRuins/SpaceRuins/spacehermit.dmm index 341dcf7b99..f64bfa8a4e 100644 --- a/_maps/RandomRuins/SpaceRuins/spacehermit.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacehermit.dmm @@ -338,6 +338,9 @@ /obj/item/flashlight/lamp/bananalamp, /turf/open/floor/plating/asteroid, /area/ruin/unpowered) +"bt" = ( +/turf/closed/mineral/random/low_chance/earth_like, +/area/ruin/unpowered) (1,1,1) = {" aa @@ -474,13 +477,13 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt ab ab ab @@ -520,22 +523,22 @@ aA ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt ab ab aA @@ -569,27 +572,27 @@ aA aA aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt ab aA aa @@ -620,29 +623,29 @@ ab ab aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt ab aA aa @@ -666,36 +669,36 @@ aM aa aA ab +bt +bt +bt +bt ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt ab aA aa @@ -718,37 +721,37 @@ aa aa aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt ae af ae -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt ab aA aa @@ -770,38 +773,38 @@ aa aa aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt af aq af -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt ab aA aa @@ -822,38 +825,38 @@ aa aA aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt ae ae ao ae ae -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt ab aA aa @@ -874,39 +877,39 @@ aa aA aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt af an an an af -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt ab aA aa @@ -927,24 +930,24 @@ aA aA aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt ae ae bh @@ -952,13 +955,13 @@ an an ae aZ -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt ab aA aa @@ -979,24 +982,24 @@ aA aA aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt af aY ao @@ -1004,13 +1007,13 @@ ao ao ak ba -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt ab aA aa @@ -1031,24 +1034,24 @@ aA aA aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt al aj ap @@ -1056,13 +1059,13 @@ an as aj aE -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt ab aA aa @@ -1083,24 +1086,24 @@ aA aA aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt af ak ao @@ -1109,12 +1112,12 @@ ao ak ba ac -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt ab aA aa @@ -1134,24 +1137,24 @@ aa aA aA ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt ah az -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt aR ae ae @@ -1161,12 +1164,12 @@ an ae aZ ac -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt ab aA aM @@ -1186,24 +1189,24 @@ aa aA aA ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt ac ac -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt aR ag ag @@ -1213,12 +1216,12 @@ af at bb ac -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt ab aA aa @@ -1238,24 +1241,24 @@ aa aA aA ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt ad ac ac ac ac -ab +bt aH aJ aL -ab -ab +bt +bt aT ac ac @@ -1265,12 +1268,12 @@ ac ac ac aR -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt ab aA aa @@ -1289,14 +1292,14 @@ aa aA aA ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt ad au ac @@ -1306,8 +1309,8 @@ ac ac ac ac -ab -ab +bt +bt ac ac ac @@ -1317,12 +1320,12 @@ ac ac ac bg -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt ab aA aa @@ -1341,14 +1344,14 @@ aa aA aA ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt ad aw bs @@ -1358,9 +1361,9 @@ ac ac ac ac -ab -ab -ab +bt +bt +bt ac ac ac @@ -1368,13 +1371,13 @@ ac ac ac ac -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt ab aA aa @@ -1393,14 +1396,14 @@ aa aA aA ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt ad ax ac @@ -1409,9 +1412,9 @@ aF ac ac ac -ab -ab -ab +bt +bt +bt aU bd ac @@ -1420,13 +1423,13 @@ bl bm ac ac -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt ab aA aa @@ -1445,14 +1448,14 @@ aa aA aA ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt ad ay ac @@ -1461,9 +1464,9 @@ ac aG ac ac -ab -ab -ab +bt +bt +bt av be ac @@ -1473,12 +1476,12 @@ bn bo bo bq -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt ab aA aa @@ -1496,16 +1499,16 @@ aa aa aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt ac ac ac @@ -1513,9 +1516,9 @@ ac ac ac ac -ab -ab -ab +bt +bt +bt bc bf ac @@ -1525,11 +1528,11 @@ ac ac ac br -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt ab aA aa @@ -1548,26 +1551,26 @@ aa aA aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt ac -ab +bt ac ac ac ac ac -ab -ab +bt +bt ac ac ac @@ -1577,11 +1580,11 @@ ac ac ac ac -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt ab aA aa @@ -1599,20 +1602,20 @@ aa aa aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt ac ac ac @@ -1628,11 +1631,11 @@ ac ac ac ac -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt ab aA aa @@ -1651,26 +1654,26 @@ aa aa aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt ac ac ac -ab -ab +bt +bt ac ac ac @@ -1682,9 +1685,9 @@ ac ac ac ac -ab -ab -ab +bt +bt +bt ab aa aa @@ -1703,26 +1706,26 @@ aa aa aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt aK -ab -ab +bt +bt ac ac ac @@ -1734,8 +1737,8 @@ bp ac ac aR -ab -ab +bt +bt ab aA aa @@ -1756,25 +1759,25 @@ aa aa aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt aP ac ac @@ -1786,8 +1789,8 @@ ac ac ac aR -ab -ab +bt +bt ab aA aa @@ -1808,25 +1811,25 @@ aa aa aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt aQ aP ac @@ -1836,10 +1839,10 @@ ac ac ac ac -ab +bt ac -ab -ab +bt +bt ab aA aa @@ -1860,27 +1863,27 @@ aa aa aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt ac ac ac @@ -1888,10 +1891,10 @@ ac aP ac bg -ab -ab -ab -ab +bt +bt +bt +bt ab aa aa @@ -1913,26 +1916,26 @@ aa aA ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt ac ac ac @@ -1940,9 +1943,9 @@ ac ac ac aS -ab -ab -ab +bt +bt +bt ab aA aa @@ -1966,25 +1969,25 @@ aa aA aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt bg ac ac @@ -1992,9 +1995,9 @@ ac ac ac aS -ab -ab -ab +bt +bt +bt ab aA aa @@ -2018,25 +2021,25 @@ aa aa aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt ac ac bj @@ -2044,9 +2047,9 @@ ac ac ac aS -ab -ab -ab +bt +bt +bt ab aA aa @@ -2071,24 +2074,24 @@ aa aa aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt aS bi ac @@ -2096,9 +2099,9 @@ ac ac aS aS -ab -ab -ab +bt +bt +bt ab aA aa @@ -2124,23 +2127,23 @@ aM aa aA ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt aS ac ac @@ -2148,8 +2151,8 @@ ac ac aS aS -ab -ab +bt +bt ab aA aa @@ -2176,20 +2179,20 @@ aa aa aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt ab aA aS @@ -2229,18 +2232,18 @@ aa aA aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt ab aA aA @@ -2282,17 +2285,17 @@ aa aA aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt ab aA aA @@ -2335,16 +2338,16 @@ aa aA aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt ab aA aa @@ -2388,16 +2391,16 @@ aa aA aA ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt ab ab aa @@ -2448,9 +2451,9 @@ ab ab ab ab -ab -ab -ab +bt +bt +bt ab aa aa @@ -2933,7 +2936,7 @@ aa aa aa aa -ab +bt aa aa aa diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 53b12ca0bb..7bec217f62 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -3,44 +3,17 @@ /turf/open/space/basic, /area/space) "aab" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/obj/structure/table, -/obj/machinery/chem_dispenser/drinks/beer{ - dir = 8 - }, -/obj/item/radio/intercom{ - pixel_y = 25 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) +/turf/open/floor/plating, +/area/space/nearstation) "aac" = ( -/obj/machinery/requests_console{ - department = "Bar"; - departmentType = 2; - pixel_x = 30; - receive_ore_updates = 1 +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, -/obj/machinery/camera{ - c_tag = "Bar"; - dir = 8 - }, -/obj/structure/table, -/obj/machinery/chem_dispenser/drinks{ - dir = 8 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) +/turf/open/floor/plating, +/area/space/nearstation) "aad" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -113,40 +86,30 @@ "aan" = ( /obj/machinery/hydroponics/soil, /obj/item/seeds/ambrosia, -/obj/effect/turf_decal/tile/green{ - dir = 1 +/obj/machinery/newscaster{ + pixel_y = 32 }, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/turf/open/floor/plasteel, +/turf/open/floor/grass, /area/security/prison) "aao" = ( -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/turf/open/floor/plating, +/obj/machinery/hydroponics/soil, +/obj/item/seeds/carrot, +/turf/open/floor/grass, /area/security/prison) "aap" = ( /obj/machinery/hydroponics/soil, -/obj/item/seeds/carrot, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/security/prison) -"aaq" = ( +/obj/item/plant_analyzer, /obj/structure/sign/warning/electricshock{ pixel_y = 32 }, +/turf/open/floor/grass, +/area/security/prison) +"aaq" = ( /obj/machinery/hydroponics/soil, -/obj/item/plant_analyzer, +/obj/item/seeds/glowshroom, +/turf/open/floor/grass, +/area/security/prison) +"aar" = ( /obj/machinery/camera{ c_tag = "Prison Common Room"; network = list("ss13","prison") @@ -158,24 +121,20 @@ /obj/effect/turf_decal/tile/green{ dir = 4 }, -/turf/open/floor/plasteel, -/area/security/prison) -"aar" = ( -/obj/machinery/hydroponics/soil, -/obj/item/seeds/glowshroom, /obj/effect/turf_decal/tile/green{ - dir = 1 + dir = 8 }, -/obj/effect/turf_decal/tile/green{ - dir = 4 +/obj/structure/sink{ + pixel_y = 20 }, /turf/open/floor/plasteel, /area/security/prison) "aas" = ( -/obj/structure/sink{ - pixel_y = 20 +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 }, -/turf/open/floor/plating, +/obj/machinery/seed_extractor, +/turf/open/floor/plasteel, /area/security/prison) "aat" = ( /turf/open/floor/plasteel, @@ -194,78 +153,64 @@ /obj/machinery/light{ dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/grass, /area/security/prison) "aax" = ( -/mob/living/simple_animal/mouse/brown/Tom, -/turf/open/floor/plating, +/turf/open/floor/grass, /area/security/prison) "aay" = ( /turf/open/floor/plating, /area/security/prison) "aaz" = ( /obj/item/reagent_containers/glass/bucket, -/turf/open/floor/plating, +/turf/open/floor/grass, /area/security/prison) "aaA" = ( -/obj/machinery/seed_extractor, +/obj/machinery/vr_sleeper{ + dir = 8 + }, /turf/open/floor/plasteel, /area/security/prison) "aaB" = ( -/obj/structure/window/reinforced, -/obj/machinery/hydroponics/soil, -/obj/item/seeds/potato, +/mob/living/simple_animal/mouse/brown/Tom, +/turf/open/floor/grass, +/area/security/prison) +"aaC" = ( +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, /obj/effect/turf_decal/tile/green{ dir = 1 }, /obj/effect/turf_decal/tile/green, /obj/effect/turf_decal/tile/green{ - dir = 8 + dir = 4 }, /turf/open/floor/plasteel, /area/security/prison) -"aaC" = ( -/obj/structure/window/reinforced, -/turf/open/floor/plating, -/area/security/prison) "aaD" = ( /obj/structure/window/reinforced, /obj/machinery/hydroponics/soil, -/obj/item/seeds/grass, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/turf/open/floor/plasteel, +/obj/item/seeds/potato, +/turf/open/floor/grass, /area/security/prison) "aaE" = ( /obj/structure/window/reinforced, /obj/machinery/hydroponics/soil, -/obj/item/cultivator, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/turf/open/floor/plasteel, +/obj/item/seeds/grass, +/turf/open/floor/grass, /area/security/prison) "aaF" = ( -/obj/structure/window/reinforced, /obj/machinery/hydroponics/soil, -/obj/item/cultivator, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/turf/open/floor/plasteel, +/obj/structure/window/reinforced, +/obj/item/seeds/tower, +/turf/open/floor/grass, /area/security/prison) "aaG" = ( /obj/machinery/light{ dir = 4 }, -/obj/machinery/cryopod{ +/obj/machinery/vr_sleeper{ dir = 8 }, /turf/open/floor/plasteel, @@ -282,77 +227,54 @@ /turf/open/floor/plasteel, /area/security/prison) "aaK" = ( -/obj/machinery/washing_machine, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/plasteel/cafeteria, -/area/security/prison) +/turf/open/floor/wood, +/area/crew_quarters/bar) "aaL" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/plasteel/cafeteria, -/area/security/prison) -"aaM" = ( /obj/machinery/computer/libraryconsole/bookmanagement, /obj/structure/table, -/obj/machinery/newscaster{ - pixel_x = -32 - }, /turf/open/floor/plasteel, /area/security/prison) +"aaM" = ( +/obj/structure/falsewall, +/turf/open/floor/plating, +/area/security/prison) "aaN" = ( -/obj/structure/table, -/obj/item/pen, -/turf/open/floor/plasteel, +/obj/structure/window/reinforced, +/obj/machinery/hydroponics/soil, +/obj/item/cultivator, +/turf/open/floor/grass, /area/security/prison) "aaO" = ( -/obj/structure/table, -/obj/item/storage/pill_bottle/dice, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, /turf/open/floor/plasteel, /area/security/prison) "aaP" = ( -/obj/structure/table, -/obj/structure/bedsheetbin, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 }, +/turf/closed/wall, +/area/security/execution/transfer) +"aaQ" = ( /obj/machinery/computer/cryopod{ dir = 8; pixel_x = 26 }, -/turf/open/floor/plasteel/cafeteria, -/area/security/prison) -"aaQ" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ +/obj/machinery/cryopod{ dir = 8 }, -/turf/open/floor/plasteel/cafeteria, +/turf/open/floor/plasteel, /area/security/prison) "aaR" = ( /obj/structure/lattice, @@ -372,50 +294,30 @@ /turf/open/space, /area/space/nearstation) "aaU" = ( -/obj/machinery/computer/arcade{ - icon_state = "arcade"; +/obj/machinery/computer/arcade/minesweeper{ dir = 4 }, /turf/open/floor/plasteel, /area/security/prison) "aaV" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen, +/obj/structure/chair/sofa/right, /turf/open/floor/plasteel, /area/security/prison) "aaW" = ( -/obj/structure/table, -/obj/item/toy/cards/deck, +/obj/structure/chair/sofa/left, /turf/open/floor/plasteel, /area/security/prison) "aaX" = ( -/obj/machinery/washing_machine, /obj/structure/window/reinforced, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ +/obj/machinery/cryopod{ dir = 8 }, -/turf/open/floor/plasteel/cafeteria, +/turf/open/floor/plasteel, /area/security/prison) "aaY" = ( -/obj/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/plasteel/cafeteria, -/area/security/prison) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/security/execution/transfer) "aaZ" = ( /turf/closed/wall/r_wall, /area/ai_monitored/security/armory) @@ -450,11 +352,11 @@ /turf/open/floor/plasteel, /area/security/prison) "abg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 +/obj/machinery/computer/arcade{ + dir = 4 }, -/turf/closed/wall/r_wall, -/area/security/execution/transfer) +/turf/open/floor/plasteel, +/area/security/prison) "abh" = ( /obj/machinery/holopad, /turf/open/floor/plasteel, @@ -473,6 +375,7 @@ /obj/structure/window/reinforced{ dir = 8 }, +/obj/machinery/washing_machine, /turf/open/floor/plasteel/freezer, /area/security/prison) "abk" = ( @@ -560,8 +463,7 @@ /area/security/execution/transfer) "abu" = ( /obj/machinery/door/poddoor{ - id = "executionspaceblast"; - name = "blast door" + id = "executionspaceblast" }, /turf/open/floor/plating, /area/security/execution/transfer) @@ -588,8 +490,9 @@ /turf/open/floor/plasteel/dark, /area/security/execution/transfer) "abx" = ( -/obj/machinery/vending/cola/random, -/turf/open/floor/plasteel, +/obj/structure/bedsheetbin/color, +/obj/structure/table, +/turf/open/floor/plasteel/freezer, /area/security/prison) "aby" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -616,9 +519,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-24" - }, /turf/open/floor/plasteel, /area/security/prison) "abB" = ( @@ -655,7 +555,6 @@ "abG" = ( /obj/machinery/door/window/westleft{ base_state = "right"; - dir = 8; icon_state = "right"; name = "Unisex Showers" }, @@ -751,8 +650,7 @@ pixel_y = -3 }, /obj/machinery/camera/motion{ - c_tag = "Armory Motion Sensor"; - dir = 2 + c_tag = "Armory Motion Sensor" }, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -921,7 +819,6 @@ /area/security/execution/transfer) "acb" = ( /obj/machinery/sparker{ - dir = 2; id = "executionburn"; pixel_x = 25 }, @@ -1009,8 +906,8 @@ /area/ai_monitored/security/armory) "acm" = ( /obj/machinery/power/apc/highcap/five_k{ - dir = 4; areastring = "/area/ai_monitored/security/armory"; + dir = 4; name = "Armory APC"; pixel_x = 24 }, @@ -1098,18 +995,14 @@ /turf/open/floor/plasteel/dark, /area/security/execution/transfer) "acA" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 2 - }, +/obj/machinery/atmospherics/components/unary/outlet_injector/on, /obj/effect/turf_decal/stripes/line{ dir = 6 }, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) "acB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) "acC" = ( @@ -1120,7 +1013,6 @@ }, /obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; - dir = 2; name = "Prison Intercom (General)"; pixel_y = 24; prison_radio = 1 @@ -1150,7 +1042,6 @@ }, /obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; - dir = 2; name = "Prison Intercom (General)"; pixel_y = 24; prison_radio = 1 @@ -1172,7 +1063,6 @@ }, /obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; - dir = 2; name = "Prison Intercom (General)"; pixel_y = 24; prison_radio = 1 @@ -1211,13 +1101,15 @@ /turf/open/floor/plasteel, /area/security/prison) "acK" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 +/obj/structure/mirror{ + pixel_x = 25 }, /obj/machinery/light/small{ - dir = 4 + dir = 8 + }, +/obj/structure/sink{ + dir = 4; + pixel_x = 11 }, /turf/open/floor/plasteel/freezer, /area/security/prison) @@ -1239,25 +1131,23 @@ pixel_y = -3 }, /obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/effect/turf_decal/bot{ - dir = 2 - }, +/obj/effect/turf_decal/bot, /obj/structure/window/reinforced{ dir = 1; layer = 2.9 }, -/turf/open/floor/plasteel{ - dir = 2 - }, +/turf/open/floor/plasteel, /area/ai_monitored/security/armory) "acN" = ( -/obj/structure/chair/stool/bar, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green{ + on = 0; + pixel_x = -7; + pixel_y = 12 }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "acO" = ( /obj/structure/closet/l3closet/security, /obj/machinery/camera{ @@ -1278,15 +1168,16 @@ /area/crew_quarters/heads/hos) "acR" = ( /obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, /obj/item/flashlight/lamp/green{ on = 0; pixel_x = -3; pixel_y = 8 }, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, +/obj/item/pen/fountain, /turf/open/floor/carpet, /area/crew_quarters/heads/hos) "acS" = ( @@ -1438,9 +1329,7 @@ pixel_x = 3; pixel_y = -3 }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, +/obj/effect/turf_decal/bot, /obj/structure/window/reinforced{ dir = 1; layer = 2.9 @@ -1448,9 +1337,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/turf/open/floor/plasteel{ - dir = 2 - }, +/turf/open/floor/plasteel, /area/ai_monitored/security/armory) "adk" = ( /obj/structure/rack, @@ -1463,9 +1350,7 @@ pixel_x = 3; pixel_y = -3 }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, +/obj/effect/turf_decal/bot, /obj/structure/window/reinforced{ dir = 1; layer = 2.9 @@ -1473,9 +1358,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/turf/open/floor/plasteel{ - dir = 2 - }, +/turf/open/floor/plasteel, /area/ai_monitored/security/armory) "adl" = ( /obj/machinery/door/poddoor/shutters{ @@ -1514,15 +1397,12 @@ /turf/open/floor/carpet, /area/crew_quarters/heads/hos) "adq" = ( -/obj/structure/table/wood, -/obj/item/instrument/guitar{ - pixel_x = -7 +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/item/instrument/eguitar{ - pixel_x = 5 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) +/turf/open/floor/plating, +/area/maintenance/fore/secondary) "adr" = ( /obj/structure/sign/warning/vacuum/external{ pixel_x = -32 @@ -1700,9 +1580,7 @@ /area/security/prison) "adK" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) "adL" = ( @@ -1731,8 +1609,8 @@ /area/crew_quarters/heads/hos) "adN" = ( /obj/machinery/power/apc{ - dir = 8; areastring = "/area/crew_quarters/heads/hos"; + dir = 8; name = "Head of Security's Office APC"; pixel_x = -24 }, @@ -1743,8 +1621,11 @@ /turf/open/floor/carpet, /area/crew_quarters/heads/hos) "adO" = ( -/obj/structure/chair/stool, /obj/effect/landmark/event_spawn, +/obj/structure/chair/comfy/brown{ + color = "#596479"; + dir = 4 + }, /turf/open/floor/plasteel, /area/security/prison) "adP" = ( @@ -1755,9 +1636,7 @@ /turf/open/floor/carpet, /area/crew_quarters/heads/hos) "adQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) "adR" = ( @@ -2040,13 +1919,12 @@ /area/security/prison) "aer" = ( /obj/machinery/firealarm{ - dir = 2; pixel_y = 24 }, /obj/machinery/power/apc{ + areastring = "/area/security/prison"; dir = 4; name = "Prison Wing APC"; - areastring = "/area/security/prison"; pixel_x = 24 }, /obj/structure/cable{ @@ -2065,7 +1943,6 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/suit_storage_unit/security, /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ dir = 8 @@ -2082,7 +1959,6 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/suit_storage_unit/security, /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ dir = 8 @@ -2145,7 +2021,8 @@ "aeB" = ( /obj/structure/table, /obj/item/stack/packageWrap, -/obj/item/pen, +/obj/item/stack/packageWrap, +/obj/item/hand_labeler, /turf/open/floor/plasteel, /area/security/main) "aeC" = ( @@ -2444,8 +2321,6 @@ /area/security/main) "afd" = ( /obj/item/radio/intercom{ - freerange = 0; - frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29 }, @@ -2553,7 +2428,7 @@ /turf/open/floor/plasteel, /area/security/main) "afn" = ( -/obj/structure/table, +/obj/machinery/suit_storage_unit/security, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "afo" = ( @@ -2924,9 +2799,8 @@ /obj/structure/closet/secure_closet/injection, /obj/structure/cable, /obj/machinery/power/apc{ - dir = 2; - name = "Prisoner Transfer Centre"; areastring = "/area/security/execution/transfer"; + name = "Prisoner Transfer Centre"; pixel_y = -27 }, /turf/open/floor/plasteel/dark, @@ -3034,9 +2908,7 @@ icon_state = "2-4" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) "agr" = ( @@ -3054,12 +2926,11 @@ /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "agu" = ( -/obj/structure/table, -/obj/machinery/recharger, /obj/machinery/airalarm{ dir = 8; pixel_x = 24 }, +/obj/machinery/suit_storage_unit/security, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "agv" = ( @@ -3085,6 +2956,7 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, +/obj/machinery/syndicatebomb/training, /turf/open/floor/plasteel, /area/security/main) "agx" = ( @@ -3159,8 +3031,13 @@ /area/security/brig) "agE" = ( /obj/structure/table, -/obj/item/folder/red, -/obj/item/pen, +/obj/item/storage/fancy/donut_box{ + pixel_y = 10 + }, +/obj/item/storage/fancy/donut_box, +/obj/item/storage/fancy/donut_box{ + pixel_y = -10 + }, /turf/open/floor/plasteel, /area/security/main) "agF" = ( @@ -3334,8 +3211,11 @@ /turf/open/floor/plating, /area/security/warden) "agX" = ( -/obj/structure/table, -/obj/machinery/recharger, +/obj/structure/closet/secure_closet/warden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/item/book/manual/wiki/security_space_law, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "agY" = ( @@ -3402,14 +3282,21 @@ /turf/open/floor/plasteel, /area/security/main) "ahh" = ( +/obj/item/paper_bin/bundlenatural{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/paper_bin{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/pen/fountain, +/obj/item/folder/red, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/item/pen, /obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, /turf/open/floor/plasteel, /area/security/main) "ahi" = ( @@ -3517,8 +3404,6 @@ /area/security/brig) "ahs" = ( /obj/item/radio/intercom{ - freerange = 0; - frequency = 1459; name = "Station Intercom (General)"; pixel_y = 24 }, @@ -3563,9 +3448,9 @@ /area/security/brig) "ahv" = ( /obj/machinery/power/apc{ + areastring = "/area/security/warden"; dir = 8; name = "Brig Control APC"; - areastring = "/area/security/warden"; pixel_x = -24 }, /obj/structure/cable{ @@ -3649,9 +3534,7 @@ /area/security/main) "ahD" = ( /obj/machinery/door/window/westleft{ - base_state = "left"; dir = 4; - icon_state = "left"; name = "Brig Infirmary" }, /obj/effect/turf_decal/tile/red, @@ -3784,9 +3667,9 @@ /area/security/main) "ahN" = ( /obj/machinery/power/apc{ + areastring = "/area/security/main"; dir = 4; name = "Security Office APC"; - areastring = "/area/security/main"; pixel_x = 24 }, /obj/structure/cable{ @@ -3809,9 +3692,17 @@ /turf/open/floor/plasteel/white, /area/security/brig) "ahQ" = ( -/obj/structure/closet/secure_closet/warden, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table, +/obj/machinery/recharger{ + pixel_x = -6; + pixel_y = 3 + }, +/obj/machinery/recharger{ + pixel_x = 6; + pixel_y = 3 }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) @@ -3966,16 +3857,11 @@ /turf/open/floor/plasteel/white, /area/security/brig) "aie" = ( -/obj/structure/table, -/obj/item/folder/red, -/obj/item/pen, -/obj/item/hand_labeler, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/item/book/manual/wiki/security_space_law, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) +/obj/structure/closet/wardrobe/mixed, +/obj/item/clothing/shoes/jackboots, +/obj/item/coin/silver, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "aif" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -4475,7 +4361,6 @@ "aje" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/machinery/firealarm{ - dir = 2; pixel_y = 24 }, /obj/effect/turf_decal/tile/red{ @@ -4535,8 +4420,6 @@ /area/security/courtroom) "ajj" = ( /obj/item/radio/intercom{ - broadcasting = 0; - listening = 1; name = "Station Intercom (General)"; pixel_y = 20 }, @@ -4590,10 +4473,10 @@ /turf/open/floor/plasteel/dark, /area/security/courtroom) "ajq" = ( +/obj/structure/lattice/catwalk, /obj/structure/cable{ icon_state = "0-2" }, -/obj/structure/lattice/catwalk, /turf/open/space, /area/solar/port/fore) "ajr" = ( @@ -4643,7 +4526,6 @@ /area/security/brig) "ajx" = ( /obj/machinery/firealarm{ - dir = 2; pixel_y = 24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -4660,9 +4542,9 @@ /area/security/brig) "ajy" = ( /obj/machinery/power/apc{ + areastring = "/area/security/brig"; dir = 1; name = "Brig APC"; - areastring = "/area/security/brig"; pixel_y = 24 }, /obj/structure/cable{ @@ -4740,9 +4622,7 @@ /area/security/courtroom) "ajF" = ( /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/obj/effect/turf_decal/tile/red{ - dir = 2 - }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/plasteel, /area/security/brig) "ajG" = ( @@ -4824,9 +4704,7 @@ "ajO" = ( /obj/structure/table/wood, /obj/item/radio/intercom{ - broadcasting = 0; dir = 8; - listening = 1; name = "Station Intercom (Court)" }, /obj/effect/turf_decal/tile/neutral{ @@ -5027,9 +4905,7 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/effect/turf_decal/tile/red{ - dir = 2 - }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/plasteel, /area/security/brig) "akh" = ( @@ -5077,9 +4953,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/effect/turf_decal/tile/red{ - dir = 2 - }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/plasteel, /area/security/brig) "akl" = ( @@ -5582,10 +5456,10 @@ /turf/open/floor/plasteel, /area/security/brig) "alg" = ( +/obj/structure/lattice/catwalk, /obj/structure/cable{ icon_state = "0-2" }, -/obj/structure/lattice/catwalk, /turf/open/space, /area/solar/starboard/fore) "alh" = ( @@ -5703,7 +5577,6 @@ }, /obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; - dir = 2; name = "Prison Intercom (General)"; pixel_x = -25; pixel_y = -2; @@ -5738,7 +5611,6 @@ }, /obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; - dir = 2; name = "Prison Intercom (General)"; pixel_x = -25; pixel_y = -2; @@ -5815,9 +5687,7 @@ /turf/open/floor/plasteel, /area/security/brig) "alF" = ( -/obj/machinery/atmospherics/components/unary/tank/air{ - dir = 2 - }, +/obj/machinery/atmospherics/components/unary/tank/air, /turf/open/floor/plating, /area/maintenance/port/fore) "alG" = ( @@ -5862,22 +5732,25 @@ /turf/open/floor/plasteel, /area/security/courtroom) "alK" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/button/door{ + id = "Room Two"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 7; + pixel_y = -24; + specialfunctions = 4 }, -/obj/structure/cable{ - icon_state = "2-8" +/obj/structure/chair/comfy/brown{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "alL" = ( /obj/structure/disposalpipe/segment, /obj/machinery/power/apc{ + areastring = "/area/security/courtroom"; dir = 8; name = "Courtroom APC"; - areastring = "/area/security/courtroom"; pixel_x = -24 }, /obj/structure/cable{ @@ -5905,14 +5778,8 @@ /turf/open/floor/plasteel, /area/security/prison) "alN" = ( -/obj/machinery/camera{ - c_tag = "Dormitory Toilets"; - dir = 1 - }, -/obj/structure/table, -/obj/structure/bedsheetbin/towel, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) +/turf/open/space/basic, +/area/space/nearstation) "alO" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -5923,8 +5790,7 @@ "alQ" = ( /obj/machinery/power/solar_control{ id = "auxsolareast"; - name = "Port Bow Solar Control"; - track = 0 + name = "Port Bow Solar Control" }, /obj/structure/cable{ icon_state = "0-4" @@ -6001,7 +5867,7 @@ pixel_y = -2 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/plasteel, @@ -6026,17 +5892,23 @@ /turf/open/floor/plasteel, /area/security/processing) "amd" = ( -/obj/effect/turf_decal/tile/red{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/button/door{ + desc = "Bolts the doors to the Private Study."; + id = "PrivateStudy"; + name = "Private Study Lock"; + pixel_x = -5; + pixel_y = 24; + req_access_txt = "28" }, -/obj/machinery/computer/arcade{ - icon_state = "arcade"; - dir = 4 +/obj/machinery/button/door{ + id = "PrivateStudy1"; + name = "Privacy Shutters"; + pixel_x = 5; + pixel_y = 24 }, -/turf/open/floor/plasteel/white/corner{ - dir = 1 - }, -/area/hallway/secondary/exit) +/turf/open/floor/wood, +/area/library) "ame" = ( /obj/structure/cable{ icon_state = "1-2" @@ -6048,7 +5920,6 @@ /area/security/processing) "amf" = ( /obj/structure/bed, -/obj/item/bedsheet, /obj/structure/cable{ icon_state = "1-2" }, @@ -6056,6 +5927,7 @@ id = "Cell 1"; pixel_x = -28 }, +/obj/item/bedsheet/orange, /turf/open/floor/plasteel, /area/security/brig) "amg" = ( @@ -6067,11 +5939,11 @@ /area/security/brig) "amh" = ( /obj/structure/bed, -/obj/item/bedsheet, /obj/machinery/flasher{ id = "Cell 2"; pixel_x = -28 }, +/obj/item/bedsheet/orange, /turf/open/floor/plasteel, /area/security/brig) "ami" = ( @@ -6083,11 +5955,11 @@ /area/security/brig) "amj" = ( /obj/structure/bed, -/obj/item/bedsheet, /obj/machinery/flasher{ id = "Cell 3"; pixel_x = -28 }, +/obj/item/bedsheet/orange, /turf/open/floor/plasteel, /area/security/brig) "amk" = ( @@ -6170,7 +6042,6 @@ /obj/item/bedsheet, /obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; - dir = 2; name = "Prison Intercom (General)"; pixel_x = 25; pixel_y = -2; @@ -6216,11 +6087,8 @@ /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) "amx" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) +/turf/closed/wall, +/area/crew_quarters/abandoned_gambling_den) "amy" = ( /obj/structure/chair/stool{ pixel_y = 8 @@ -6244,16 +6112,18 @@ /turf/open/floor/plating, /area/maintenance/solars/port/fore) "amB" = ( -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/computer/arcade{ - icon_state = "arcade"; - dir = 1 +/obj/structure/cable{ + icon_state = "2-8" }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) "amC" = ( /turf/open/floor/plating, /area/maintenance/port/fore) @@ -6300,6 +6170,29 @@ /obj/item/trash/plate, /turf/open/floor/plating, /area/maintenance/port/fore) +"amI" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4; + name = "Air In" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"amJ" = ( +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/structure/sink{ + dir = 1; + pixel_y = 25 + }, +/obj/structure/toilet{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/dorms) "amK" = ( /obj/structure/sign/warning/docking, /turf/closed/wall, @@ -6320,6 +6213,19 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/security/processing) +"amN" = ( +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"amO" = ( +/obj/machinery/shower{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/dorms) +"amP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/crew_quarters/dorms) "amQ" = ( /obj/structure/cable{ icon_state = "0-4" @@ -6465,18 +6371,21 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "anc" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/shower{ + dir = 4 }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) +/obj/item/soap, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/dorms) "and" = ( /obj/machinery/light/small{ dir = 4 }, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, /turf/open/floor/plating, /area/maintenance/fore/secondary) "ane" = ( @@ -6493,9 +6402,9 @@ icon_state = "0-4" }, /obj/machinery/power/apc{ + areastring = "/area/maintenance/solars/port/fore"; dir = 8; name = "Port Bow Solar APC"; - areastring = "/area/maintenance/solars/port/fore"; pixel_x = -25; pixel_y = 3 }, @@ -6566,6 +6475,13 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"anq" = ( +/obj/structure/sign/poster/official/twelve_gauge, +/turf/closed/wall/r_wall, +/area/ai_monitored/security/armory) +"anr" = ( +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/dorms) "ans" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 @@ -6679,15 +6595,11 @@ /turf/open/floor/plating, /area/security/courtroom) "anD" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "anE" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -6733,6 +6645,16 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/fore) +"anM" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/obj/structure/curtain, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/dorms) "anN" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -6879,8 +6801,7 @@ "aoh" = ( /obj/machinery/power/solar_control{ id = "auxsolareast"; - name = "Starboard Bow Solar Control"; - track = 0 + name = "Starboard Bow Solar Control" }, /obj/structure/cable{ icon_state = "0-4" @@ -6932,6 +6853,9 @@ /obj/item/circuitboard/machine/monkey_recycler, /turf/open/floor/plating, /area/maintenance/port/fore) +"aop" = ( +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/toilet) "aoq" = ( /obj/structure/sign/warning/vacuum/external{ pixel_y = -32 @@ -7026,9 +6950,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "aoz" = ( -/obj/effect/turf_decal/tile/red{ - dir = 2 - }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aoA" = ( @@ -7037,9 +6959,7 @@ pixel_y = -29 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/red{ - dir = 2 - }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aoB" = ( @@ -7047,16 +6967,12 @@ dir = 1; pixel_y = -24 }, -/obj/effect/turf_decal/tile/red{ - dir = 2 - }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aoC" = ( /obj/machinery/vending/coffee, -/obj/effect/turf_decal/tile/red{ - dir = 2 - }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aoD" = ( @@ -7068,23 +6984,17 @@ pixel_x = 5; pixel_y = -32 }, -/obj/effect/turf_decal/tile/red{ - dir = 2 - }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aoE" = ( /obj/machinery/vending/cigarette, -/obj/effect/turf_decal/tile/red{ - dir = 2 - }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aoF" = ( /obj/machinery/vending/snack/random, -/obj/effect/turf_decal/tile/red{ - dir = 2 - }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aoG" = ( @@ -7104,27 +7014,9 @@ /turf/open/floor/plasteel/dark, /area/security/courtroom) "aoI" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/power/apc{ - dir = 2; - name = "Fitness Room APC"; - areastring = "/area/crew_quarters/fitness"; - pixel_y = -24 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) +/obj/structure/fireplace, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "aoJ" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating, @@ -7219,6 +7111,26 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating, /area/maintenance/port/fore) +"aoY" = ( +/obj/structure/sign/warning/fire{ + desc = "A sign that states the labeled room's number."; + dir = 10; + icon_state = "roomnum"; + name = "Room Number 6"; + pixel_y = 24 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/washing_machine{ + pixel_x = 7; + pixel_y = 7 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "aoZ" = ( /obj/machinery/atmospherics/components/binary/valve/digital{ name = "Waste Release" @@ -7334,9 +7246,9 @@ icon_state = "0-2" }, /obj/machinery/power/apc{ + areastring = "/area/maintenance/fore/secondary"; dir = 1; name = "Fore Maintenance APC"; - areastring = "/area/maintenance/fore/secondary"; pixel_y = 24 }, /obj/structure/disposalpipe/segment{ @@ -7367,38 +7279,23 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "apu" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/closet/secure_closet/personal/cabinet{ + desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; + name = "Personal ID-Locked Closet"; + pixel_y = 15 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "apv" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Fitness Maintenance"; - req_access_txt = "12" - }, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"apw" = ( /obj/structure/cable{ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) -"apw" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 4; - name = "Air In" - }, -/obj/effect/landmark/blobstart, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/fore/secondary) "apx" = ( @@ -7435,9 +7332,9 @@ icon_state = "0-4" }, /obj/machinery/power/apc{ + areastring = "/area/maintenance/solars/starboard/fore"; dir = 8; name = "Starboard Bow Solar APC"; - areastring = "/area/maintenance/solars/starboard/fore"; pixel_x = -25; pixel_y = 3 }, @@ -7458,8 +7355,9 @@ /turf/closed/wall/r_wall, /area/maintenance/starboard/fore) "apD" = ( -/obj/structure/closet/wardrobe/mixed, -/obj/item/clothing/shoes/jackboots, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/computer/slot_machine, +/obj/item/coin/iron, /turf/open/floor/plating, /area/maintenance/starboard/fore) "apE" = ( @@ -7475,6 +7373,15 @@ /obj/machinery/portable_atmospherics/canister/water_vapor, /turf/open/floor/plasteel, /area/janitor) +"apH" = ( +/obj/machinery/door/airlock{ + desc = "A small bathroom with a sink, toilet and shower."; + id_tag = "Bath1"; + name = "Bathroom" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/toilet) "apI" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/atmos_waste{ dir = 1 @@ -7485,6 +7392,12 @@ "apJ" = ( /turf/closed/wall, /area/construction/mining/aux_base) +"apK" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/space/nearstation) "apL" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance{ @@ -7513,6 +7426,14 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/maintenance/port/fore) +"apQ" = ( +/obj/machinery/door/airlock{ + desc = "A small bathroom with a sink, toilet and shower."; + id_tag = "Bath2"; + name = "Bathroom" + }, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/toilet) "apR" = ( /obj/item/paper/fluff/jobs/security/beepsky_mom, /turf/open/floor/plating, @@ -7523,6 +7444,18 @@ }, /turf/open/floor/plating, /area/maintenance/fore) +"apT" = ( +/obj/structure/lattice/catwalk, +/obj/item/stack/marker_beacon{ + anchored = 1; + icon_state = "markerburgundy-on"; + light_power = 3; + light_range = 3; + name = "Docking Beacon"; + picked_color = "Burgundy" + }, +/turf/open/space/basic, +/area/space/nearstation) "apU" = ( /turf/open/floor/plating, /area/security/vacantoffice/b) @@ -7539,13 +7472,21 @@ /turf/open/floor/plating, /area/maintenance/fore) "apX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, -/area/crew_quarters/fitness) -"apY" = ( -/obj/structure/closet/secure_closet/personal, +/obj/structure/bed, +/obj/item/bedsheet/random, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, /turf/open/floor/carpet, /area/crew_quarters/dorms) +"apY" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "maintdiy"; + name = "Security Shutters" + }, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) "apZ" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 @@ -7553,12 +7494,9 @@ /turf/open/floor/wood, /area/lawoffice) "aqa" = ( -/obj/structure/table, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) +/obj/machinery/recharge_station, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) "aqb" = ( /obj/structure/rack, /obj/item/storage/briefcase, @@ -7639,9 +7577,8 @@ /area/maintenance/fore/secondary) "aqk" = ( /obj/machinery/power/apc{ - dir = 2; - name = "Dormitory APC"; areastring = "/area/crew_quarters/dorms"; + name = "Dormitory APC"; pixel_y = -24 }, /obj/structure/cable{ @@ -7653,32 +7590,22 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "aql" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/structure/mirror{ + pixel_y = 32 }, -/obj/structure/cable{ - icon_state = "2-8" +/obj/structure/sink{ + dir = 1; + pixel_y = 25 }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) -"aqm" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/machinery/light/small{ dir = 4 }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/dorms) +"aqm" = ( +/obj/structure/chair/sofa/right, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "aqn" = ( /obj/structure/bed, /obj/machinery/airalarm{ @@ -7698,11 +7625,25 @@ /turf/open/floor/carpet, /area/crew_quarters/dorms) "aqo" = ( -/obj/structure/chair/stool{ - pixel_y = 8 +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/power/apc{ + areastring = "/area/crew_quarters/fitness"; + name = "Fitness Room APC"; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) "aqp" = ( /obj/structure/rack, /obj/item/clothing/suit/fire/firefighter, @@ -7727,24 +7668,45 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "aqr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aqs" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, /obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "holoprivacy"; + name = "Holodeck Shutters" + }, /turf/open/floor/plating, /area/crew_quarters/fitness) -"aqs" = ( +"aqt" = ( +/obj/machinery/door/airlock{ + desc = "A small bathroom with a sink, toilet and shower."; + id_tag = "Bath3"; + name = "Bathroom" + }, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/toilet) +"aqu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/fitness) -"aqu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 +/obj/machinery/door/poddoor/shutters/preopen{ + id = "holoprivacy"; + name = "Holodeck Shutters" }, -/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/crew_quarters/fitness) "aqv" = ( @@ -7788,26 +7750,47 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "aqB" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/table/glass, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, /turf/open/floor/plating, /area/maintenance/starboard/fore) "aqC" = ( -/obj/machinery/computer/slot_machine{ - balance = 15; - money = 500 +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/structure/chair/comfy/brown{ + dir = 4 }, -/obj/item/coin/iron, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) +/turf/open/floor/wood, +/area/crew_quarters/dorms) "aqD" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/item/coin/gold, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/crew_quarters/dorms) "aqE" = ( -/obj/effect/landmark/xeno_spawn, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) +/obj/item/flashlight/lamp/green{ + pixel_x = -3; + pixel_y = 22 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4; + pixel_y = 5 + }, +/obj/structure/dresser{ + desc = "There's plenty of clothes here to change into! It has a surprising amount of variety, too."; + name = "Dresser"; + pixel_y = 7 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"aqF" = ( +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "aqG" = ( /obj/docking_port/stationary/random{ dir = 4; @@ -7816,6 +7799,28 @@ }, /turf/open/space, /area/space/nearstation) +"aqH" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"aqI" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) "aqJ" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/door/airlock/external{ @@ -7841,19 +7846,25 @@ /obj/machinery/meter, /turf/open/floor/plating, /area/maintenance/port/fore) +"aqN" = ( +/obj/structure/toilet{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/dorms) "aqO" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" + lootcount = 3; + name = "3maintenance loot spawner" }, /turf/open/floor/plating, /area/maintenance/port/fore) "aqP" = ( /obj/machinery/power/apc{ + areastring = "/area/maintenance/port/fore"; dir = 1; name = "Port Bow Maintenance APC"; - areastring = "/area/maintenance/port/fore"; pixel_x = -1; pixel_y = 26 }, @@ -7882,9 +7893,9 @@ /area/security/processing) "aqT" = ( /obj/machinery/power/apc{ + areastring = "/area/security/processing"; dir = 8; name = "Labor Shuttle Dock APC"; - areastring = "/area/security/processing"; pixel_x = -24 }, /obj/structure/cable, @@ -7893,6 +7904,14 @@ }, /turf/open/floor/plating, /area/maintenance/fore) +"aqU" = ( +/obj/structure/closet/secure_closet/personal{ + desc = "Swipe your ID on this locker to claim it. You can drag it around and use it as your own personal storage area. Very useful."; + name = "Personal ID-Locked Locker"; + pixel_y = 10 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "aqV" = ( /obj/structure/table/wood, /obj/item/paper_bin{ @@ -7961,6 +7980,13 @@ "arf" = ( /turf/closed/wall, /area/crew_quarters/dorms) +"arg" = ( +/obj/machinery/hydroponics/constructable, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/hydroponics) "arh" = ( /obj/machinery/door/airlock/maintenance{ name = "Dormitories Maintenance"; @@ -7970,60 +7996,49 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "ari" = ( -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"arj" = ( -/turf/closed/wall, -/area/crew_quarters/fitness) -"ark" = ( -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/structure/closet/secure_closet/personal/cabinet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"arl" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 2 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/light/small{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"arj" = ( +/obj/machinery/door/airlock{ + id_tag = "Room Two"; + name = "Room Seven - Luxury Suite" }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"arm" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms) +"ark" = ( +/obj/structure/bed, +/obj/item/bedsheet/random, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"arl" = ( +/obj/structure/sign/poster/official/ion_rifle, +/turf/closed/wall/r_wall, +/area/ai_monitored/security/armory) +"arm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, /obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "holoprivacy"; + name = "Holodeck Shutters" + }, /turf/open/floor/plating, /area/crew_quarters/fitness) "arn" = ( -/obj/structure/closet/athletic_mixed, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/turf/open/floor/plating, +/area/maintenance/fore/secondary) "aro" = ( /turf/open/floor/engine{ name = "Holodeck Projector Floor" @@ -8046,35 +8061,31 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "arr" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/maintenance{ + name = "Dormitories Maintenance"; + req_access_txt = "12" }, /turf/open/floor/plating, -/area/maintenance/starboard/fore) +/area/maintenance/fore/secondary) "ars" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "Starboard Bow Maintenance APC"; - areastring = "/area/maintenance/starboard/fore"; - pixel_y = 24 +/obj/item/flashlight/lamp/green{ + pixel_x = -3; + pixel_y = 22 }, -/obj/structure/cable{ - icon_state = "0-4" +/obj/structure/dresser{ + desc = "There's plenty of clothes here to change into! It has a surprising amount of variety, too."; + name = "Dresser"; + pixel_y = 7 }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) +/turf/open/floor/wood, +/area/crew_quarters/dorms) "art" = ( -/obj/machinery/light/small{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 }, -/obj/machinery/camera{ - c_tag = "Fore Starboard Solar Access" - }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) "aru" = ( /obj/structure/chair/stool, /turf/open/floor/plating, @@ -8099,11 +8110,11 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "ary" = ( -/obj/structure/closet, -/obj/item/coin/iron, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms) "arz" = ( /obj/item/coin/gold, /obj/item/coin/iron, @@ -8112,11 +8123,26 @@ "arA" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance, +/obj/item/coin/plasma, /turf/open/floor/plating, /area/maintenance/starboard/fore) "arB" = ( /turf/closed/wall/r_wall, /area/hallway/secondary/entry) +"arC" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"arD" = ( +/obj/item/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 27 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "arE" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/effect/turf_decal/tile/yellow{ @@ -8204,14 +8230,27 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "arO" = ( -/obj/machinery/monkey_recycler, -/obj/item/reagent_containers/food/snacks/monkeycube, -/obj/item/reagent_containers/food/snacks/monkeycube, -/turf/open/floor/plating, -/area/maintenance/port/fore) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair/sofa, +/obj/item/radio/intercom{ + pixel_y = 25 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) "arP" = ( /turf/closed/wall, /area/maintenance/fore) +"arQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "arR" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/structure/table/wood, @@ -8235,7 +8274,7 @@ }, /obj/structure/filingcabinet/employment, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /turf/open/floor/wood, @@ -8284,14 +8323,15 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "asb" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 +/obj/structure/sign/warning/fire{ + desc = "A sign that states the labeled room's number."; + dir = 5; + icon_state = "roomnum"; + name = "Room Number 7"; + pixel_y = 24 }, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ +/obj/structure/chair/sofa/right, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plasteel, @@ -8335,20 +8375,11 @@ /turf/open/floor/plasteel, /area/crew_quarters/dorms) "asg" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ +/obj/structure/chair{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, /turf/open/floor/plasteel, -/area/crew_quarters/dorms) +/area/crew_quarters/fitness) "ash" = ( /obj/structure/cable{ icon_state = "4-8" @@ -8381,23 +8412,29 @@ /turf/open/floor/plating, /area/security/vacantoffice/b) "ask" = ( -/obj/structure/dresser, +/obj/machinery/light/small{ + dir = 4; + light_color = "#d8b1b1" + }, /turf/open/floor/wood, /area/crew_quarters/dorms) "asl" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/plating, /area/security/vacantoffice/b) "asm" = ( -/obj/machinery/light/small{ - dir = 1 +/obj/structure/closet/secure_closet/bar{ + req_access_txt = "25" }, -/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/item/clothing/under/waiter, +/obj/item/clothing/under/waiter, +/obj/item/clothing/under/waiter, +/obj/item/gun/ballistic/revolver/doublebarrel, /turf/open/floor/wood, -/area/crew_quarters/dorms) +/area/crew_quarters/bar) "asn" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plating, @@ -8414,69 +8451,41 @@ /turf/open/floor/plating, /area/maintenance/fore) "asp" = ( -/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/vending/wardrobe/bar_wardrobe, /turf/open/floor/wood, -/area/crew_quarters/dorms) +/area/crew_quarters/bar) "asq" = ( -/obj/machinery/camera{ - c_tag = "Fitness Room" +/obj/machinery/light, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 }, -/obj/structure/closet/masks, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/turf/open/floor/wood, +/area/crew_quarters/bar) "asr" = ( -/obj/structure/closet/boxinggloves, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/item/clothing/shoes/jackboots, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +/obj/structure/table/wood/fancy, +/obj/item/reagent_containers/food/drinks/soda_cans/starkist{ + pixel_x = -3; + pixel_y = 5 }, /turf/open/floor/plasteel, /area/crew_quarters/fitness) "ass" = ( -/obj/structure/closet/lasertag/red, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/external{ + name = "External Access"; + req_access_txt = "13" }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "ast" = ( -/obj/structure/closet/lasertag/blue, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/machinery/airalarm{ + pixel_y = 23 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/obj/structure/chair/sofa/left, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "asu" = ( /obj/structure/bed, /obj/machinery/button/door{ @@ -8496,6 +8505,9 @@ lootcount = 3; name = "3maintenance loot spawner" }, +/obj/structure/light_construct{ + dir = 8 + }, /turf/open/floor/plating, /area/maintenance/starboard/fore) "asw" = ( @@ -8531,6 +8543,10 @@ "asC" = ( /turf/open/floor/plasteel/airless, /area/space/nearstation) +"asD" = ( +/obj/machinery/light, +/turf/open/floor/wood, +/area/crew_quarters/bar) "asE" = ( /turf/closed/wall, /area/hallway/secondary/entry) @@ -8538,6 +8554,13 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/construction/mining/aux_base) +"asG" = ( +/obj/machinery/camera{ + c_tag = "Bar South"; + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "asH" = ( /obj/structure/closet/toolcloset, /obj/effect/turf_decal/tile/yellow{ @@ -8582,40 +8605,30 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "asL" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Dorm6"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - pixel_y = -25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/space/nearstation) "asM" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 +/obj/structure/cable{ + icon_state = "1-2" }, /obj/structure/cable{ - icon_state = "1-4" + icon_state = "2-4" }, -/obj/effect/turf_decal/tile/neutral{ +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"asN" = ( +/obj/machinery/light/small{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/obj/machinery/camera{ + c_tag = "Fore Starboard Solar Access" }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"asN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "asO" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, @@ -8643,48 +8656,64 @@ /turf/open/floor/plating, /area/maintenance/fore) "asU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 8; + name = "8maintenance loot spawner" + }, /turf/open/floor/plasteel, /area/security/vacantoffice/b) "asV" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 +/obj/machinery/power/apc{ + areastring = "/area/maintenance/starboard/fore"; + dir = 1; + name = "Starboard Bow Maintenance APC"; + pixel_y = 24 }, /obj/structure/cable{ - icon_state = "2-8" + icon_state = "0-8" }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "asW" = ( -/obj/machinery/light/small{ - dir = 8 +/obj/structure/table/wood, +/obj/item/storage/box/evidence, +/obj/item/hand_labeler{ + pixel_x = 5 }, -/obj/structure/rack, -/obj/item/storage/briefcase, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/taperecorder, /turf/open/floor/plasteel/grimy, /area/security/detectives_office) "asX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/item/radio/intercom{ + pixel_y = 25 + }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/area/crew_quarters/dorms) "asY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 +/obj/machinery/door/poddoor/shutters/preopen{ + id = "holoprivacy"; + name = "Holodeck Shutters" }, /turf/open/floor/plating, /area/crew_quarters/fitness) "asZ" = ( +/obj/structure/chair/sofa/left, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/vr_sleeper, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 + dir = 10 }, /turf/open/floor/plasteel, /area/crew_quarters/fitness) @@ -8725,23 +8754,23 @@ /turf/open/floor/carpet, /area/crew_quarters/dorms) "atf" = ( -/obj/structure/chair/stool{ - pixel_y = 8 +/obj/machinery/camera{ + c_tag = "Bar Storage" }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 +/obj/structure/sink/kitchen{ + pixel_y = 28 }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) +/turf/open/floor/wood, +/area/crew_quarters/bar) "atg" = ( /obj/machinery/door/airlock{ id_tag = "Dorm4"; - name = "Dorm 4" + name = "Room Three" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/crew_quarters/dorms) "ath" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -8772,6 +8801,17 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) +"atk" = ( +/obj/machinery/light/small, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"atl" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "atm" = ( /turf/open/floor/wood, /area/crew_quarters/dorms) @@ -8816,7 +8856,13 @@ /turf/open/floor/plating, /area/security/vacantoffice/b) "att" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/table/wood/fancy, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/item/reagent_containers/food/drinks/britcup{ + desc = "Kingston's personal cup."; + pixel_x = 5; + pixel_y = 5 + }, /turf/open/floor/plasteel, /area/crew_quarters/fitness) "atu" = ( @@ -8860,8 +8906,22 @@ icon_state = "panelscorched" }, /area/maintenance/starboard/fore) +"atz" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/closet/wardrobe/black, +/obj/item/clothing/under/skirt/black, +/obj/item/clothing/head/beret/black, +/obj/item/clothing/head/beret/black, +/obj/item/clothing/under/trendy_fit, +/obj/item/clothing/under/trendy_fit, +/obj/item/clothing/under/sundress, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) "atA" = ( /obj/structure/table, +/obj/item/paicard, /turf/open/floor/plating, /area/maintenance/starboard/fore) "atB" = ( @@ -8957,13 +9017,19 @@ /turf/closed/wall, /area/maintenance/port/fore) "atQ" = ( -/obj/machinery/door/airlock{ - id_tag = "Dorm5"; - name = "Cabin 1" +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/crew_quarters/dorms) +/obj/structure/closet/wardrobe/white, +/obj/item/clothing/under/waiter, +/obj/item/clothing/under/waiter, +/obj/item/clothing/under/waiter, +/obj/structure/sign/poster/contraband/lizard{ + pixel_x = -32 + }, +/obj/item/clothing/suit/straight_jacket, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) "atR" = ( /obj/effect/landmark/carpspawn, /obj/structure/lattice, @@ -8973,10 +9039,15 @@ /turf/closed/wall, /area/space/nearstation) "atT" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/port/fore) +/obj/structure/table/wood/poker, +/obj/item/toy/cards/deck{ + pixel_y = 5 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "atU" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance{ @@ -8986,44 +9057,48 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "atV" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23 - }, -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 + dir = 4; + pixel_y = 5 }, -/obj/effect/turf_decal/tile/neutral{ +/obj/structure/chair/sofa{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, /turf/open/floor/plasteel, /area/crew_quarters/fitness) "atW" = ( /obj/structure/chair/stool, /turf/open/floor/plating, /area/maintenance/port/fore) +"atX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating, +/area/space/nearstation) "atY" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, /area/security/vacantoffice/b) "atZ" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Holodeck Door" +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 }, /turf/open/floor/plasteel, /area/crew_quarters/fitness) "aua" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Dorm6"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms) "aub" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/tile/yellow, @@ -9043,6 +9118,12 @@ }, /turf/open/floor/plasteel, /area/construction/mining/aux_base) +"aud" = ( +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "aue" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, @@ -9146,60 +9227,60 @@ /turf/open/floor/plating, /area/maintenance/fore) "aup" = ( -/obj/machinery/door/airlock{ - id_tag = "Dorm6"; - name = "Cabin 2" +/obj/structure/table/wood/fancy, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -3; + pixel_y = 9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/crew_quarters/dorms) +/obj/item/reagent_containers/food/condiment/peppermill{ + dir = 1; + pixel_x = 3; + pixel_y = 9 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) "auq" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/security/vacantoffice/b) "aur" = ( -/obj/machinery/door/window/eastright{ - base_state = "left"; - dir = 8; - icon_state = "left"; - name = "Fitness Ring" - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/fitness) +/obj/structure/table/wood/fancy/black, +/obj/machinery/light/small, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "aus" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/area/crew_quarters/dorms) "aut" = ( -/obj/structure/window/reinforced{ - dir = 1 +/obj/machinery/door/airlock{ + id_tag = "Room One"; + name = "Room Six - Luxury Suite" }, +/obj/machinery/door/firedoor, /turf/open/floor/plasteel/dark, -/area/crew_quarters/fitness) +/area/crew_quarters/dorms) "auu" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 +/obj/structure/closet/secure_closet/personal/cabinet{ + desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; + name = "Personal ID-Locked Closet"; + pixel_y = 15 }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/turf/open/floor/wood, +/area/crew_quarters/dorms) "auv" = ( -/obj/structure/window/reinforced{ - dir = 4 +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/structure/closet/secure_closet/personal/cabinet{ + desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; + name = "Personal ID-Locked Closet"; + pixel_y = 15 }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/fitness) +/turf/open/floor/wood, +/area/crew_quarters/dorms) "auw" = ( /obj/structure/bed, /obj/machinery/airalarm{ @@ -9219,54 +9300,79 @@ /turf/open/floor/carpet, /area/crew_quarters/dorms) "aux" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"auy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"auy" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Holodeck Door" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"auz" = ( -/obj/machinery/camera{ - c_tag = "Holodeck" - }, -/obj/machinery/airalarm{ - pixel_y = 24 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"auA" = ( -/obj/machinery/light/small{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"auz" = ( +/obj/machinery/light/small, +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"auA" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/sign/warning/fire{ + desc = "A sign that states the labeled room's number."; + dir = 4; + icon_state = "roomnum"; + name = "Room Number 3"; + pixel_x = -30; + pixel_y = -7 + }, +/obj/effect/landmark/start/assistant, /turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/area/crew_quarters/dorms) "auB" = ( /obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "holoprivacy"; + name = "Holodeck Shutters" + }, /turf/open/floor/plating, /area/crew_quarters/fitness) "auC" = ( -/obj/machinery/light/small, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "auD" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, @@ -9328,6 +9434,21 @@ }, /turf/open/floor/plasteel, /area/maintenance/department/electrical) +"auN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "auO" = ( /obj/structure/closet/emcloset, /turf/open/floor/plating, @@ -9339,37 +9460,20 @@ /turf/open/floor/plasteel, /area/construction/mining/aux_base) "auR" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) +/turf/closed/wall, +/area/crew_quarters/fitness) "auS" = ( -/obj/machinery/requests_console{ - department = "Crew Quarters"; - pixel_y = 30 - }, /obj/machinery/camera{ - c_tag = "Dormitory North" + c_tag = "Holodeck" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/machinery/airalarm{ + pixel_y = 24 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 }, /turf/open/floor/plasteel, -/area/crew_quarters/dorms) +/area/crew_quarters/fitness) "auT" = ( /obj/structure/cable{ icon_state = "4-8" @@ -9377,36 +9481,20 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "auU" = ( -/obj/machinery/firealarm{ - dir = 2; - pixel_y = 24 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) +/obj/machinery/atmospherics/components/binary/valve, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "auV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, /area/maintenance/port/fore) "auW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) "auX" = ( @@ -9475,13 +9563,7 @@ /turf/open/floor/plating, /area/maintenance/fore) "avg" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel, /area/crew_quarters/dorms) "avh" = ( @@ -9490,18 +9572,18 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/power/apc{ + areastring = "/area/security/vacantoffice/b"; dir = 8; name = "Vacant Office B APC"; - areastring = "/area/security/vacantoffice/b"; pixel_x = -24 }, /turf/open/floor/plating, /area/maintenance/fore) "avi" = ( /obj/machinery/power/apc{ + areastring = "/area/lawoffice"; dir = 1; name = "Law Office APC"; - areastring = "/area/lawoffice"; pixel_y = 24 }, /obj/structure/cable{ @@ -9512,7 +9594,7 @@ /area/maintenance/fore) "avj" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/structure/cable{ @@ -9533,43 +9615,17 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "avl" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -5; - pixel_y = 30 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) "avm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/crew_quarters/dorms) "avn" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/crew_quarters/dorms) "avo" = ( @@ -9597,8 +9653,7 @@ pixel_y = 24 }, /obj/machinery/camera{ - c_tag = "Detective's Office"; - dir = 2 + c_tag = "Detective's Office" }, /turf/open/floor/plasteel/grimy, /area/security/detectives_office) @@ -9616,68 +9671,63 @@ /turf/open/floor/plating, /area/maintenance/fore) "avt" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) "avu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/tile/neutral{ +/obj/structure/chair/sofa/left{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"avv" = ( -/obj/structure/chair/stool{ - pixel_y = 8 - }, -/obj/effect/landmark/start/assistant, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"avw" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, /turf/open/floor/plasteel, /area/crew_quarters/fitness) +"avv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"avw" = ( +/obj/machinery/button/door{ + id = "Room One"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + specialfunctions = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "avx" = ( -/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"avy" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "holoprivacy"; + name = "Holodeck Shutters" + }, /turf/open/floor/plating, /area/crew_quarters/fitness) -"avy" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/fitness) "avz" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/computer/holodeck{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel, /area/crew_quarters/fitness) "avA" = ( -/obj/structure/window/reinforced{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/obj/machinery/light{ + dir = 4; + light_color = "#e8eaff" }, -/turf/open/floor/plasteel/dark, +/obj/structure/chair/sofa/right{ + dir = 1 + }, +/turf/open/floor/plasteel, /area/crew_quarters/fitness) "avB" = ( /obj/effect/spawner/structure/window/reinforced, @@ -9687,17 +9737,20 @@ /turf/open/floor/plating, /area/ai_monitored/security/armory) "avC" = ( -/obj/structure/chair{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "avD" = ( -/obj/machinery/computer/holodeck{ - dir = 4 +/obj/structure/cable{ + icon_state = "2-4" }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "avE" = ( /obj/machinery/door/poddoor/preopen{ id = "maint3" @@ -9746,9 +9799,9 @@ /area/maintenance/department/electrical) "avL" = ( /obj/machinery/power/apc{ + areastring = "/area/maintenance/department/electrical"; dir = 1; name = "Electrical Maintenance APC"; - areastring = "/area/maintenance/department/electrical"; pixel_y = 24 }, /obj/structure/cable{ @@ -9777,8 +9830,6 @@ }, /obj/item/multitool, /obj/item/radio/intercom{ - freerange = 0; - frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29 }, @@ -9810,11 +9861,17 @@ /turf/open/floor/plasteel, /area/construction/mining/aux_base) "avR" = ( -/obj/structure/table/wood, -/obj/item/storage/firstaid/regular, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) +/obj/structure/table/wood/poker, +/obj/item/clothing/mask/cigarette/cigar{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4; + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "avS" = ( /obj/item/wrench, /turf/open/floor/plating, @@ -9892,9 +9949,9 @@ /area/maintenance/fore) "awd" = ( /obj/machinery/power/apc{ + areastring = "/area/maintenance/fore"; dir = 1; name = "Fore Maintenance APC"; - areastring = "/area/maintenance/fore"; pixel_y = 24 }, /obj/structure/cable{ @@ -10027,60 +10084,73 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "awo" = ( -/obj/machinery/door/airlock{ - id_tag = "Dorm3"; - name = "Dorm 3" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/structure/chair/comfy/black{ dir = 4 }, -/turf/open/floor/plasteel, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/carpet, /area/crew_quarters/dorms) "awp" = ( -/obj/structure/table/wood, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/storage/pill_bottle/dice, /turf/open/floor/plasteel, /area/crew_quarters/dorms) "awq" = ( -/obj/structure/chair/stool{ - pixel_y = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, -/area/crew_quarters/dorms) +/area/crew_quarters/fitness) "awr" = ( /turf/open/floor/plasteel, /area/crew_quarters/dorms) "aws" = ( -/obj/structure/table/wood, -/obj/item/coin/silver, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Holodeck Door" + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/fitness) +"awt" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"awt" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 + dir = 4 }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) "awu" = ( -/obj/structure/chair/stool{ - pixel_y = 8 - }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/closet/wardrobe/mixed, +/obj/item/clothing/under/kilt, +/obj/item/clothing/under/kilt, +/obj/item/clothing/under/skirt/purple, +/obj/item/clothing/head/beret, +/obj/item/clothing/head/beret, +/obj/item/clothing/head/beret, /turf/open/floor/plasteel, -/area/crew_quarters/dorms) +/area/crew_quarters/fitness) "awv" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/sign/warning/fire{ + desc = "A sign that states the labeled room's number."; + dir = 8; + icon_state = "roomnum"; + name = "Room Number 4"; + pixel_y = 24 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) "aww" = ( @@ -10097,48 +10167,62 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "awy" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "awz" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ - name = "Fitness" + name = "Holodeck Door" }, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, /area/crew_quarters/fitness) "awA" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/door/airlock{ + id_tag = "Dorm5"; + name = "Room Four" }, -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms) "awB" = ( -/obj/effect/landmark/start/assistant, -/obj/machinery/vr_sleeper, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/bar) "awC" = ( -/obj/structure/table, -/obj/item/paper/fluff/holodeck/disclaimer, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/crew_quarters/bar) "awD" = ( /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/starboard/fore) "awE" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -3; + pixel_y = 20 + }, +/obj/item/reagent_containers/food/condiment/peppermill{ + dir = 1; + pixel_x = 3; + pixel_y = 20 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/item/reagent_containers/food/drinks/britcup, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "awF" = ( /obj/structure/closet/crate, /obj/effect/spawner/lootdrop/maintenance{ @@ -10179,26 +10263,34 @@ /area/maintenance/starboard/fore) "awK" = ( /obj/structure/table/glass, -/obj/item/pen, +/obj/item/coin/silver, /turf/open/floor/plating, /area/maintenance/starboard/fore) "awL" = ( -/obj/structure/table/glass, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 +/obj/structure/table, +/obj/item/instrument/guitar{ + pixel_x = -7 }, +/obj/item/instrument/eguitar{ + pixel_x = 5 + }, +/obj/item/instrument/violin, +/obj/item/instrument/trombone, +/obj/item/instrument/saxophone, +/obj/item/instrument/piano_synth, +/obj/item/instrument/recorder, +/obj/item/instrument/accordion, /turf/open/floor/plating, /area/maintenance/starboard/fore) "awM" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 +/obj/machinery/button/door{ + id = "maintdiy"; + name = "Shutters Control Button"; + pixel_x = -6; + pixel_y = 24 }, /turf/open/floor/plating, -/area/maintenance/starboard/fore) +/area/crew_quarters/abandoned_gambling_den) "awN" = ( /obj/structure/cable{ icon_state = "4-8" @@ -10294,6 +10386,14 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/hallway/secondary/entry) +"awX" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm6"; + name = "Room Five" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms) "awY" = ( /obj/machinery/light{ dir = 1 @@ -10357,6 +10457,15 @@ }, /turf/open/floor/plasteel, /area/construction/mining/aux_base) +"axd" = ( +/obj/structure/closet, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 4; + name = "4maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "axe" = ( /obj/machinery/sleeper{ dir = 4 @@ -10558,12 +10667,11 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "axC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 +/obj/structure/sign/poster/official/enlist{ + pixel_y = 32 }, /turf/open/floor/plasteel, /area/hallway/primary/fore) @@ -10574,12 +10682,16 @@ /turf/closed/wall, /area/maintenance/fore/secondary) "axE" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 8; + name = "8maintenance loot spawner" }, -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) +/obj/item/radio/intercom{ + pixel_y = 25 + }, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) "axF" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 @@ -10617,6 +10729,12 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) +"axJ" = ( +/obj/structure/piano{ + icon_state = "piano" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "axK" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 @@ -10624,128 +10742,189 @@ /turf/closed/wall, /area/maintenance/port/fore) "axL" = ( -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/closet/wardrobe/grey, +/obj/item/clothing/under/assistantformal, +/obj/item/clothing/under/assistantformal, +/obj/machinery/camera{ + c_tag = "Dorms East - Holodeck"; + dir = 4 + }, /turf/open/floor/plasteel, -/area/crew_quarters/dorms) +/area/crew_quarters/fitness) "axM" = ( -/obj/structure/table/wood, -/obj/item/paicard, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) "axN" = ( -/obj/structure/table/wood, -/obj/item/storage/crayons, -/turf/open/floor/plasteel, +/obj/structure/chair/comfy/black{ + dir = 8 + }, +/turf/open/floor/carpet, /area/crew_quarters/dorms) "axO" = ( -/obj/structure/chair/stool{ - pixel_y = 8 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/plasteel, +/obj/machinery/light/small, +/turf/open/floor/mineral/titanium/blue, /area/crew_quarters/dorms) "axP" = ( -/obj/structure/table/wood, -/obj/item/toy/cards/deck{ - pixel_x = 2 +/obj/structure/cable{ + icon_state = "4-8" }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/table/wood, +/obj/item/paicard, /obj/item/clothing/mask/balaclava{ pixel_x = -8; pixel_y = 8 }, +/obj/item/toy/cards/deck{ + pixel_x = 2 + }, +/obj/item/storage/crayons, /turf/open/floor/plasteel, /area/crew_quarters/dorms) "axQ" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"axR" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Fitness" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"axS" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ +/obj/machinery/light{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/fitness) -"axT" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"axU" = ( -/obj/structure/window/reinforced, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/fitness) -"axV" = ( -/obj/structure/cable{ - icon_state = "2-4" +/obj/structure/sign/warning/fire{ + desc = "A sign that states the labeled room's number."; + dir = 1; + icon_state = "roomnum"; + name = "Room Number 2"; + pixel_x = -30; + pixel_y = -7 }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) -"axW" = ( -/obj/machinery/door/window/eastright{ - base_state = "left"; - icon_state = "left"; - name = "Fitness Ring" +"axR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/obj/structure/window/reinforced, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/fitness) -"axX" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) -"axY" = ( -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ +"axS" = ( +/obj/item/flashlight/lamp/green{ + pixel_x = -3; + pixel_y = 22 + }, +/obj/structure/dresser{ + desc = "There's plenty of clothes here to change into! It has a surprising amount of variety, too."; + name = "Dresser"; + pixel_y = 7 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"axT" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm3"; + name = "Room Two" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms) +"axU" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/sign/warning/fire{ + desc = "A sign that states the labeled room's number."; + dir = 6; + icon_state = "roomnum"; + name = "Room Number 5"; + pixel_y = 24 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"axZ" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Holodeck Door" +/area/crew_quarters/dorms) +"axV" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"axW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, /turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"axX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light/small, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"axY" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/closet/toolcloset, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"axZ" = ( +/obj/machinery/light/small{ + dir = 1; + light_color = "#ffc1c1" + }, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel, /area/crew_quarters/fitness) "aya" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/area/crew_quarters/dorms) "ayb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/structure/chair{ + dir = 8 }, /turf/open/floor/plasteel, /area/crew_quarters/fitness) @@ -10821,9 +11000,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "ayn" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/plasteel, /area/hallway/secondary/entry) "ayo" = ( @@ -10997,14 +11174,6 @@ /turf/closed/wall/r_wall, /area/ai_monitored/storage/eva) "ayM" = ( -/obj/machinery/firealarm{ - dir = 2; - pixel_y = 24 - }, -/obj/item/clothing/head/welding, -/turf/open/floor/plasteel, -/area/ai_monitored/storage/eva) -"ayN" = ( /obj/structure/rack, /obj/machinery/light{ dir = 1 @@ -11014,8 +11183,15 @@ /obj/item/flashlight, /obj/item/flashlight, /obj/item/flashlight, +/obj/item/clothing/glasses/welding, /turf/open/floor/plasteel/dark, /area/ai_monitored/storage/eva) +"ayN" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) "ayO" = ( /obj/structure/table, /obj/item/storage/toolbox/electrical{ @@ -11029,9 +11205,9 @@ /area/ai_monitored/storage/eva) "ayP" = ( /obj/machinery/power/apc{ + areastring = "/area/ai_monitored/storage/eva"; dir = 1; name = "EVA Storage APC"; - areastring = "/area/ai_monitored/storage/eva"; pixel_y = 24 }, /obj/structure/cable{ @@ -11114,38 +11290,45 @@ /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "ayY" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 +/obj/structure/sign/poster/official/cohiba_robusto_ad, +/turf/closed/wall, +/area/lawoffice) +"ayZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, /obj/effect/turf_decal/tile/blue{ dir = 8 }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"ayZ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 +/obj/structure/sign/poster/contraband/pwr_game{ + pixel_x = -32 }, -/obj/effect/turf_decal/tile/blue, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aza" = ( -/obj/machinery/light, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/vr_sleeper{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ dir = 8 }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/crew_quarters/fitness) "azb" = ( -/obj/structure/chair/stool{ - pixel_y = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 2 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) +/turf/open/floor/plasteel/dark, +/area/crew_quarters/fitness) "azc" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -11159,47 +11342,68 @@ /turf/open/floor/plasteel, /area/crew_quarters/dorms) "azd" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/vr_sleeper{ dir = 8 }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"aze" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"azf" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"azg" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plating, -/area/crew_quarters/fitness) -"azh" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/vr_sleeper, /obj/effect/turf_decal/tile/green, /obj/effect/turf_decal/tile/green{ dir = 4 }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/white/side{ + dir = 8 + }, +/area/crew_quarters/fitness) +"aze" = ( +/obj/machinery/vr_sleeper{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/crew_quarters/fitness) +"azf" = ( +/obj/structure/grille/broken, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/window{ + dir = 4 + }, +/obj/structure/window, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/starboard/fore) +"azg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/button/door{ + id = "holoprivacy"; + name = "Holodeck Privacy"; + pixel_y = 24 + }, /turf/open/floor/plasteel, /area/crew_quarters/fitness) +"azh" = ( +/obj/machinery/door/airlock{ + name = "Instrument Storage" + }, +/turf/open/floor/plasteel/dark, +/area/maintenance/starboard/fore) "azi" = ( /obj/machinery/door/airlock/maintenance{ name = "Garden Maintenance"; @@ -11209,61 +11413,81 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "azj" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/obj/item/radio/intercom{ - name = "Station Intercom (General)"; - pixel_y = -29 +/obj/structure/closet{ + name = "Holodeck Outfits" }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/obj/item/clothing/under/trek/Q, +/obj/item/clothing/under/trek/command/next, +/obj/item/clothing/under/trek/command/next, +/obj/item/clothing/under/trek/command/next, +/obj/item/clothing/under/trek/engsec/next, +/obj/item/clothing/under/trek/engsec/next, +/obj/item/clothing/under/trek/engsec/next, +/obj/item/clothing/under/trek/engsec/next, +/obj/item/clothing/under/trek/medsci/next, +/obj/item/clothing/under/trek/medsci/next, +/obj/item/clothing/under/trek/medsci/next, +/obj/item/clothing/under/mw2_russian_para, +/obj/item/clothing/under/mw2_russian_para, +/obj/item/clothing/under/gladiator, +/obj/item/clothing/under/gladiator, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -24 }, /turf/open/floor/plasteel, /area/crew_quarters/fitness) "azk" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4; + light_color = "#d8b1b1" }, /turf/open/floor/plasteel, /area/crew_quarters/fitness) "azl" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"azm" = ( -/obj/structure/chair/stool{ - pixel_y = 8 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"azn" = ( -/obj/structure/table, -/obj/item/storage/firstaid/regular, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"azo" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +/area/crew_quarters/dorms) +"azm" = ( +/obj/machinery/shower{ dir = 4 }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"azn" = ( +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms) +"azo" = ( +/obj/machinery/shower{ + dir = 8; + pixel_y = -4 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) "azp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "holoprivacy"; + name = "Holodeck Shutters" + }, /turf/open/floor/plating, /area/crew_quarters/fitness) "azq" = ( @@ -11466,6 +11690,27 @@ }, /turf/open/floor/plating, /area/maintenance/fore) +"azP" = ( +/obj/structure/table/wood, +/obj/machinery/requests_console{ + department = "Theatre"; + name = "theatre RC"; + pixel_x = -32 + }, +/obj/item/reagent_containers/food/snacks/baguette, +/obj/item/toy/dummy, +/obj/item/lipstick/random{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/lipstick/random{ + pixel_x = -2; + pixel_y = -2 + }, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/crew_quarters/theatre) "azQ" = ( /obj/structure/cable{ icon_state = "4-8" @@ -11504,12 +11749,9 @@ /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "azT" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, -/obj/effect/turf_decal/tile/neutral{ - dir = 2 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) +/obj/effect/landmark/event_spawn, +/turf/closed/wall, +/area/crew_quarters/fitness) "azU" = ( /obj/structure/cable{ icon_state = "4-8" @@ -11523,27 +11765,38 @@ /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "azV" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ +/obj/machinery/vr_sleeper{ dir = 8 }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/white/side{ dir = 8 }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) +/area/crew_quarters/fitness) "azW" = ( /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "azX" = ( -/obj/machinery/door/airlock{ - name = "Unisex Showers" +/obj/machinery/vr_sleeper{ + dir = 4 }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/effect/turf_decal/tile/green{ + dir = 8 }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 4 + }, +/area/crew_quarters/fitness) "azY" = ( /obj/structure/table, /obj/item/radio/off, @@ -11563,27 +11816,26 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "aAb" = ( -/obj/machinery/door/airlock{ - id_tag = "Dorm2"; - name = "Dorm 2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, -/area/crew_quarters/dorms) +/area/crew_quarters/fitness) "aAc" = ( /obj/effect/spawner/structure/window, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/starboard/fore) "aAd" = ( -/obj/machinery/light_switch{ - pixel_y = -25 +/obj/machinery/camera{ + c_tag = "Dorms West" }, -/obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ - dir = 8 + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) @@ -11595,46 +11847,51 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "aAf" = ( -/obj/structure/closet/wardrobe/pjs, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/vr_sleeper{ dir = 8 }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/crew_quarters/fitness) "aAg" = ( -/obj/item/radio/intercom{ - name = "Station Intercom (General)"; - pixel_y = -29 +/obj/machinery/vr_sleeper{ + dir = 4 }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ dir = 8 }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 4 + }, +/area/crew_quarters/fitness) "aAh" = ( /turf/closed/wall, /area/crew_quarters/toilet) "aAi" = ( -/obj/structure/closet/wardrobe/pjs, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) +/turf/open/floor/plating, +/area/crew_quarters/fitness) "aAj" = ( /obj/structure/cable{ icon_state = "1-4" }, /obj/machinery/power/apc{ - dir = 2; - name = "Security Checkpoint APC"; areastring = "/area/security/checkpoint/auxiliary"; + name = "Security Checkpoint APC"; pixel_x = 1; pixel_y = -24 }, @@ -11643,119 +11900,77 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "aAk" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, +/obj/structure/closet/athletic_mixed, /turf/open/floor/plasteel, /area/crew_quarters/fitness) "aAl" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/obj/structure/reagent_dispensers/water_cooler, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, +/obj/structure/closet/boxinggloves, /turf/open/floor/plasteel, /area/crew_quarters/fitness) "aAm" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Holodeck Door" }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/crew_quarters/fitness) "aAn" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, -/obj/machinery/light_switch{ - pixel_y = -25 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/area/crew_quarters/dorms) "aAo" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms) "aAp" = ( -/obj/structure/cable{ - icon_state = "2-8" +/obj/structure/closet{ + name = "Suit Closet" }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/obj/item/clothing/under/suit_jacket/white, +/obj/item/clothing/under/suit_jacket/tan, +/obj/item/clothing/under/suit_jacket/red, +/obj/item/clothing/under/suit_jacket/really_black, +/obj/item/clothing/under/suit_jacket/navy, +/obj/item/clothing/under/suit_jacket/green, +/obj/item/clothing/under/suit_jacket/female, +/obj/item/clothing/under/suit_jacket/checkered, +/obj/item/clothing/under/suit_jacket/charcoal, +/obj/item/clothing/under/suit_jacket/burgundy, +/obj/item/clothing/under/suit_jacket, +/obj/item/clothing/under/lawyer/black, +/obj/item/clothing/under/lawyer/blacksuit, +/obj/item/clothing/under/lawyer/blue, +/obj/item/clothing/under/lawyer/bluesuit, +/obj/item/clothing/under/lawyer/female, +/obj/item/clothing/under/lawyer/purpsuit, +/obj/item/clothing/under/lawyer/really_black, +/obj/item/clothing/under/lawyer/red, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"aAq" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aAr" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"aAs" = ( +/obj/machinery/light/small{ + dir = 4; + light_color = "#d8b1b1" }, /turf/open/floor/plasteel, /area/crew_quarters/fitness) -"aAr" = ( -/obj/structure/closet, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) -"aAs" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) "aAt" = ( /obj/machinery/door/poddoor/preopen{ id = "maint2" @@ -11763,12 +11978,12 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "aAu" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, /obj/machinery/door/poddoor/preopen{ id = "maint2" }, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/plating, /area/maintenance/starboard/fore) "aAv" = ( @@ -11780,9 +11995,9 @@ /area/maintenance/starboard/fore) "aAw" = ( /obj/machinery/power/apc{ + areastring = "/area/hydroponics/garden"; dir = 4; name = "Garden APC"; - areastring = "/area/hydroponics/garden"; pixel_x = 27; pixel_y = 2 }, @@ -11796,9 +12011,7 @@ /turf/open/floor/plasteel, /area/hydroponics/garden) "aAy" = ( -/obj/machinery/power/smes{ - charge = 0 - }, +/obj/machinery/power/smes, /obj/structure/cable{ icon_state = "0-4" }, @@ -11825,9 +12038,7 @@ /turf/closed/wall, /area/maintenance/department/electrical) "aAB" = ( -/obj/machinery/power/smes{ - charge = 0 - }, +/obj/machinery/power/smes, /obj/structure/cable{ icon_state = "0-8" }, @@ -11900,9 +12111,8 @@ /area/hydroponics/garden) "aAL" = ( /obj/machinery/power/apc{ - dir = 2; - name = "Primary Tool Storage APC"; areastring = "/area/storage/primary"; + name = "Primary Tool Storage APC"; pixel_x = 1; pixel_y = -24 }, @@ -11914,6 +12124,16 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"aAM" = ( +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/structure/sink{ + dir = 1; + pixel_y = 25 + }, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/toilet) "aAN" = ( /obj/structure/cable{ icon_state = "2-8" @@ -11989,18 +12209,11 @@ /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "aAX" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, /turf/open/floor/plasteel, -/area/crew_quarters/dorms) +/area/crew_quarters/fitness) "aAY" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -12008,10 +12221,10 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "aAZ" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/structure/urinal{ + pixel_y = 32 }, -/turf/open/floor/plasteel/freezer, +/turf/open/floor/mineral/titanium/blue, /area/crew_quarters/toilet) "aBa" = ( /turf/closed/wall/r_wall, @@ -12084,9 +12297,9 @@ /area/maintenance/fore) "aBi" = ( /obj/machinery/power/apc{ + areastring = "/area/gateway"; dir = 8; name = "Gateway APC"; - areastring = "/area/gateway"; pixel_x = -24; pixel_y = -1 }, @@ -12126,7 +12339,6 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "aBm" = ( -/obj/effect/landmark/start/assistant, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, @@ -12216,26 +12428,41 @@ /turf/open/floor/plasteel, /area/hydroponics/garden) "aBx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/closed/wall, -/area/crew_quarters/toilet) +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plasteel, +/area/hydroponics) "aBy" = ( -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) -"aBz" = ( -/obj/machinery/shower{ +/obj/machinery/camera{ + c_tag = "Library North" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) -"aBA" = ( -/obj/machinery/shower{ - dir = 8 +/obj/structure/chair/sofa/right, +/obj/machinery/light{ + dir = 1; + light_color = "#c1caff" }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) +/turf/open/floor/wood, +/area/library) +"aBz" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/landmark/start/assistant, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair/sofa/left, +/turf/open/floor/wood, +/area/library) +"aBA" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/wood, +/area/library) "aBB" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, @@ -12251,6 +12478,12 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"aBD" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/turf/open/floor/wood, +/area/library) "aBE" = ( /obj/item/clothing/under/rank/mailman, /obj/item/clothing/head/mailman, @@ -12300,9 +12533,12 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "aBM" = ( -/obj/effect/landmark/start/assistant, -/turf/open/floor/plasteel, -/area/hydroponics/garden) +/obj/structure/sign/poster/official/nanomichi_ad{ + pixel_y = 32 + }, +/obj/machinery/vending/snack/random, +/turf/open/floor/plasteel/dark, +/area/hallway/primary/central) "aBN" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, @@ -12359,9 +12595,9 @@ /area/ai_monitored/nuke_storage) "aBU" = ( /obj/machinery/power/apc{ + areastring = "/area/ai_monitored/nuke_storage"; dir = 1; name = "Vault APC"; - areastring = "/area/ai_monitored/nuke_storage"; pixel_y = 25 }, /obj/structure/cable{ @@ -12483,21 +12719,27 @@ /turf/open/floor/carpet, /area/crew_quarters/cryopod) "aCe" = ( -/obj/effect/landmark/xeno_spawn, -/obj/item/bikehorn/rubberducky, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) +/obj/effect/turf_decal/tile/blue, +/obj/structure/sign/poster/official/do_not_question{ + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) "aCf" = ( -/obj/machinery/camera{ - c_tag = "Theatre Storage" +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 }, -/turf/open/floor/plasteel/white/side{ - dir = 4 +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, -/area/crew_quarters/theatre) +/obj/structure/sign/poster/official/obey{ + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) "aCg" = ( /obj/structure/cable{ icon_state = "4-8" @@ -12505,11 +12747,14 @@ /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "aCh" = ( -/obj/machinery/vending/autodrobe, -/turf/open/floor/plasteel/white/side{ - dir = 4 +/obj/machinery/shower{ + dir = 8; + pixel_y = -4 }, -/area/crew_quarters/theatre) +/obj/effect/landmark/xeno_spawn, +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) "aCi" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -12536,32 +12781,48 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "aCm" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 +/obj/item/radio/intercom{ + pixel_y = 25 }, -/obj/structure/mirror{ - pixel_x = -28 +/obj/machinery/camera{ + c_tag = "Theatre Stage" }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) -"aCn" = ( -/obj/structure/urinal{ - pixel_y = 32 - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) -"aCo" = ( -/obj/structure/chair/stool{ - pixel_y = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/structure/chair/comfy/brown{ dir = 4 }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aCn" = ( +/obj/structure/table/wood/fancy, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -3; + pixel_y = 20 + }, +/obj/item/reagent_containers/food/condiment/peppermill{ + dir = 1; + pixel_x = 3; + pixel_y = 20 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aCo" = ( +/obj/structure/closet{ + name = "Costume Closet" + }, +/obj/item/clothing/head/russobluecamohat, +/obj/item/clothing/head/russobluecamohat, +/obj/item/clothing/head/russofurhat, +/obj/item/clothing/head/russofurhat, +/obj/item/clothing/head/russofurhat, +/obj/item/clothing/head/russofurhat, +/obj/item/clothing/under/mw2_russian_para, +/obj/item/clothing/under/mw2_russian_para, +/obj/item/clothing/under/mw2_russian_para, +/obj/item/clothing/under/mw2_russian_para, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, /turf/open/floor/plating, /area/maintenance/starboard/fore) "aCp" = ( @@ -12578,19 +12839,11 @@ /turf/open/floor/plasteel/white/corner, /area/hallway/secondary/entry) "aCq" = ( -/obj/structure/table/wood, -/obj/machinery/requests_console{ - department = "Theatre"; - departmentType = 0; - name = "theatre RC"; - pixel_x = -32 - }, -/obj/item/reagent_containers/food/snacks/baguette, -/obj/item/toy/dummy, -/turf/open/floor/plasteel/white/side{ - dir = 4 - }, -/area/crew_quarters/theatre) +/obj/structure/closet/lasertag/red, +/obj/item/clothing/under/pj/red, +/obj/item/clothing/under/pj/red, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) "aCr" = ( /turf/closed/wall, /area/crew_quarters/theatre) @@ -12614,30 +12867,53 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "aCu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "holoprivacy"; + name = "Holodeck Shutters" + }, /turf/open/floor/plating, /area/crew_quarters/fitness) "aCv" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 + dir = 5 }, /obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "holoprivacy"; + name = "Holodeck Shutters" + }, /turf/open/floor/plating, /area/crew_quarters/fitness) "aCw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 + dir = 4 }, /obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "holoprivacy"; + name = "Holodeck Shutters" + }, /turf/open/floor/plating, /area/crew_quarters/fitness) +"aCx" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/crew_quarters/bar) "aCy" = ( -/obj/effect/decal/cleanable/oil, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "aCz" = ( /obj/structure/window/reinforced{ dir = 8 @@ -12648,18 +12924,11 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "aCA" = ( -/obj/structure/grille/broken, -/obj/structure/cable{ - icon_state = "1-8" +/obj/structure/chair/comfy/brown{ + dir = 1 }, -/obj/structure/window{ - dir = 4 - }, -/obj/structure/window, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/starboard/fore) +/turf/open/floor/wood, +/area/library) "aCB" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 @@ -12789,6 +13058,13 @@ "aCR" = ( /turf/closed/wall, /area/chapel/main) +"aCS" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library) "aCT" = ( /obj/structure/table, /obj/item/stack/sheet/metal/fifty, @@ -12800,6 +13076,23 @@ }, /turf/open/floor/plasteel, /area/construction/mining/aux_base) +"aCU" = ( +/obj/machinery/photocopier{ + pixel_x = -5; + pixel_y = -5 + }, +/turf/open/floor/wood, +/area/library) +"aCV" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/structure/sign/poster/official/obey{ + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) "aCW" = ( /obj/structure/reagent_dispensers/watertank, /obj/effect/spawner/lootdrop/maintenance, @@ -12846,7 +13139,6 @@ pixel_y = 5 }, /obj/machinery/firealarm{ - dir = 2; pixel_y = 24 }, /turf/open/floor/plasteel, @@ -12857,7 +13149,6 @@ dir = 1 }, /obj/item/radio/intercom{ - broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20 }, @@ -12900,9 +13191,14 @@ /turf/open/floor/plasteel, /area/hydroponics/garden) "aDh" = ( -/obj/machinery/vending/assist, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/sign/poster/official/space_cops{ + pixel_x = -32 + }, /turf/open/floor/plasteel, -/area/storage/primary) +/area/hallway/primary/fore) "aDi" = ( /obj/structure/window/reinforced, /turf/open/floor/plasteel/dark, @@ -12927,7 +13223,6 @@ }, /obj/machinery/requests_console{ department = "Tool Storage"; - departmentType = 0; pixel_y = 30 }, /turf/open/floor/plasteel, @@ -12954,7 +13249,6 @@ /obj/item/assembly/signaler, /obj/item/assembly/signaler, /obj/item/radio/intercom{ - broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20 }, @@ -13011,6 +13305,10 @@ }, /turf/open/floor/circuit, /area/ai_monitored/nuke_storage) +"aDu" = ( +/obj/structure/chair/comfy/brown, +/turf/open/floor/wood, +/area/crew_quarters/bar) "aDv" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 @@ -13073,9 +13371,7 @@ /area/ai_monitored/storage/eva) "aDB" = ( /obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "aDC" = ( @@ -13099,9 +13395,7 @@ c_tag = "EVA Storage"; dir = 1 }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "aDF" = ( @@ -13112,38 +13406,33 @@ /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "aDG" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +/obj/machinery/door/poddoor/shutters/preopen{ + desc = "Privacy shutters for the Private Study. Stops people spying in on your game."; + id = "PrivateStudy1"; + name = "Private Study Privacy Shutters" }, -/obj/machinery/camera{ - c_tag = "Dormitory South"; - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) +/obj/effect/spawner/structure/window, +/turf/open/floor/wood, +/area/library) "aDH" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = 1; - pixel_y = 9 - }, -/obj/item/pen, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/item/folder/white, -/obj/item/stamp/rd{ - pixel_x = 3; - pixel_y = -2 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/heads/hor) +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green, +/obj/item/pen/fountain/captain, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) "aDI" = ( /obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/ai_monitored/storage/eva) +"aDJ" = ( +/obj/machinery/door/airlock{ + desc = "Private study room where nerds are probably playing Dungeons and Dragons 13e, or a place for blood cult rituals."; + id_tag = "PrivateStudy"; + name = "Private Study" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/wood, +/area/library) "aDK" = ( /obj/machinery/door/airlock/public/glass{ name = "Cryogenics " @@ -13156,126 +13445,140 @@ /turf/open/floor/plasteel, /area/crew_quarters/cryopod) "aDL" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) -"aDM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) -"aDN" = ( -/obj/machinery/light/small, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) -"aDO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) -"aDP" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) -"aDQ" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) -"aDR" = ( -/obj/structure/table/wood, -/obj/structure/mirror{ - pixel_x = -28 - }, -/obj/item/lipstick/random{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/lipstick/random{ - pixel_x = -2; - pixel_y = -2 - }, -/turf/open/floor/plasteel/white/side{ - dir = 4 - }, -/area/crew_quarters/theatre) -"aDS" = ( /obj/machinery/door/airlock{ - name = "Unisex Showers" + desc = "Private study room where nerds are probably playing Dungeons and Dragons 13e, or a place for blood cult rituals."; + id_tag = "PrivateStudy"; + name = "Private Study" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood, +/area/library) +"aDM" = ( +/obj/structure/chair/sofa/right, +/obj/structure/window{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aDN" = ( +/obj/structure/chair/sofa, +/obj/structure/window{ + dir = 1 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aDO" = ( +/obj/structure/chair/sofa/left, +/obj/structure/window{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aDP" = ( +/obj/structure/chair/comfy/brown{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aDR" = ( +/obj/structure/closet/lasertag/blue, +/obj/item/clothing/under/pj/blue, +/obj/item/clothing/under/pj/blue, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"aDS" = ( +/obj/machinery/light/small{ + dir = 4; + light_color = "#d8b1b1" }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) +/turf/open/floor/wood, +/area/crew_quarters/bar) "aDT" = ( -/obj/machinery/light/small, -/obj/structure/cable{ - icon_state = "1-8" +/obj/structure/table/wood/fancy, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4; + pixel_y = 5 }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) +/obj/item/reagent_containers/food/snacks/burger/plain, +/turf/open/floor/wood, +/area/crew_quarters/bar) "aDU" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 +/obj/structure/table, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -3; + pixel_y = 9 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/item/reagent_containers/food/condiment/peppermill{ + dir = 1; + pixel_x = 3; + pixel_y = 9 }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) +/turf/open/floor/wood, +/area/crew_quarters/bar) "aDV" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/meter, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) +/obj/structure/table/wood/fancy, +/obj/machinery/light, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -3; + pixel_y = 20 + }, +/obj/item/reagent_containers/food/condiment/peppermill{ + dir = 1; + pixel_x = 3; + pixel_y = 20 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4; + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "aDW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/holopad, +/obj/machinery/camera{ + c_tag = "Dorms Central" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "aDX" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) +/obj/structure/chair/sofa{ + dir = 1 + }, +/obj/structure/window, +/turf/open/floor/wood, +/area/crew_quarters/bar) "aDY" = ( -/obj/structure/chair/stool, -/obj/effect/landmark/start/mime, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/plasteel/white/side{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/sink{ + dir = 4; + pixel_x = 11 }, -/area/crew_quarters/theatre) +/obj/structure/mirror{ + pixel_x = 25 + }, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/toilet) "aDZ" = ( /obj/structure/cable{ icon_state = "4-8" @@ -13304,29 +13607,17 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "aEb" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Theatre Maintenance"; - req_access_txt = "46" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/structure/closet/secure_closet/personal/cabinet{ + desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; + name = "Personal ID-Locked Closet"; + pixel_y = 15 }, /turf/open/floor/plating, -/area/maintenance/starboard/fore) +/area/maintenance/port) "aEc" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white/side{ - dir = 4 - }, -/area/crew_quarters/theatre) +/obj/structure/chair/wood/wings, +/turf/open/floor/plating, +/area/maintenance/port) "aEd" = ( /obj/structure/cable{ icon_state = "4-8" @@ -13360,9 +13651,8 @@ dir = 4 }, /obj/machinery/power/apc{ - dir = 2; - name = "Chapel APC"; areastring = "/area/chapel/main"; + name = "Chapel APC"; pixel_y = -24 }, /obj/structure/cable{ @@ -13424,11 +13714,121 @@ /obj/structure/fans/tiny, /turf/open/floor/plating, /area/chapel/main) +"aEo" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aEp" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/flora/ausbushes/brflowers, +/obj/effect/spawner/structure/window, +/turf/open/floor/grass, +/area/crew_quarters/bar) +"aEq" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aEr" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/machinery/light{ + dir = 1; + light_color = "#cee5d2" + }, +/obj/structure/table, +/obj/structure/bedsheetbin/color, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"aEs" = ( +/obj/machinery/vending/cola/red, +/turf/open/floor/plasteel/dark, +/area/hallway/primary/central) +"aEt" = ( +/obj/machinery/computer/arcade/minesweeper, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aEu" = ( +/obj/machinery/computer/arcade/battle, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aEv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/closet/wardrobe/pjs, +/obj/item/clothing/under/maid, +/obj/item/clothing/under/maid, +/obj/item/clothing/under/janimaid, +/obj/item/clothing/under/janimaid, +/obj/item/clothing/accessory/maidapron, +/obj/item/clothing/accessory/maidapron, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"aEw" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aEx" = ( +/obj/structure/table/reinforced, +/obj/item/clothing/head/that, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aEy" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -9; + pixel_y = 9 + }, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -3; + pixel_y = 9 + }, +/obj/item/reagent_containers/food/condiment/peppermill{ + dir = 1; + pixel_x = -3 + }, +/obj/item/reagent_containers/food/condiment/peppermill{ + pixel_x = -9 + }, +/obj/item/sharpener{ + pixel_x = 10 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) "aEz" = ( /obj/machinery/power/apc{ + areastring = "/area/hallway/secondary/entry"; dir = 4; name = "Entry Hall APC"; - areastring = "/area/hallway/secondary/entry"; pixel_x = 24 }, /obj/structure/cable, @@ -13685,97 +14085,68 @@ /turf/closed/wall/r_wall, /area/ai_monitored/storage/eva) "aFd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/structure/table/wood, +/obj/item/instrument/guitar{ + pixel_x = -7 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +/obj/item/instrument/eguitar{ + pixel_x = 5 }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) +/obj/item/instrument/violin, +/turf/open/floor/wood, +/area/crew_quarters/bar) "aFe" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 +/obj/machinery/door/airlock{ + id_tag = "Dorm2"; + name = "Room One" }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"aFf" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) -"aFg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/closed/wall, -/area/crew_quarters/toilet) -"aFh" = ( -/obj/machinery/door/airlock{ - name = "Unisex Restrooms" +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms) +"aFf" = ( +/obj/structure/piano{ + icon_state = "piano" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) -"aFi" = ( -/obj/machinery/power/apc{ - dir = 4; - name = "Dormitory Bathrooms APC"; - areastring = "/area/crew_quarters/toilet"; - pixel_x = 26 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) -"aFj" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/blue{ +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aFg" = ( +/obj/structure/chair/comfy/black{ dir = 8 }, -/turf/open/floor/plasteel, -/area/crew_quarters/theatre) +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aFh" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aFi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aFj" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/britcup, +/turf/open/floor/wood, +/area/crew_quarters/bar) "aFk" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ dir = 1 }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, -/area/crew_quarters/theatre) +/area/crew_quarters/bar) "aFl" = ( /obj/machinery/light/small{ dir = 8 @@ -13808,12 +14179,17 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "aFp" = ( -/obj/effect/spawner/lootdrop/maintenance, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/machinery/door/window/southright{ + name = "Bar Door"; + req_one_access_txt = "25;28" }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) "aFq" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -13846,6 +14222,20 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"aFt" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = 32 + }, +/obj/item/book/manual/wiki/barman_recipes, +/obj/item/reagent_containers/rag, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) "aFu" = ( /turf/closed/wall, /area/library) @@ -13871,15 +14261,14 @@ /area/maintenance/starboard/fore) "aFy" = ( /obj/machinery/power/apc{ - dir = 2; - name = "Chapel Office APC"; areastring = "/area/chapel/office"; + name = "Chapel Office APC"; pixel_y = -24 }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, -/area/chapel/office) +/area/maintenance/starboard/fore) "aFz" = ( /turf/open/floor/plasteel/dark, /area/chapel/main) @@ -13899,6 +14288,36 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/dark, /area/chapel/main) +"aFC" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/snacks/bluecherrycupcake{ + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aFD" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aFE" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 23 + }, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/toilet) +"aFF" = ( +/obj/structure/chair/sofa{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "aFG" = ( /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -14044,7 +14463,9 @@ /turf/open/floor/plasteel, /area/storage/primary) "aFS" = ( -/obj/effect/landmark/start/assistant, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, /turf/open/floor/plasteel, /area/storage/primary) "aFT" = ( @@ -14054,9 +14475,8 @@ /turf/open/floor/plasteel, /area/storage/primary) "aFU" = ( -/obj/effect/landmark/start/assistant, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 +/obj/structure/chair/stool{ + pixel_y = 8 }, /turf/open/floor/plasteel, /area/storage/primary) @@ -14075,8 +14495,6 @@ /area/gateway) "aFX" = ( /obj/item/radio/intercom{ - freerange = 0; - frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30 }, @@ -14168,7 +14586,7 @@ /area/ai_monitored/nuke_storage) "aGf" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/plasteel, @@ -14191,39 +14609,48 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/storage/eva) "aGk" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) +/turf/open/floor/plating, +/area/space/nearstation) "aGl" = ( -/obj/machinery/light_switch{ - pixel_x = 27 +/obj/structure/closet/crate, +/obj/item/book/manual/wiki/telescience, +/obj/item/book/manual/wiki/engineering_guide, +/obj/item/book/manual/wiki/engineering_construction, +/obj/item/book/manual/wiki/atmospherics, +/obj/item/book/manual/wiki/detective, +/obj/item/book/manual/wiki/tcomms, +/obj/item/book/manual/wiki/engineering_singulo_tesla, +/obj/item/book/manual/wiki/experimentor, +/obj/item/book/manual/wiki/research_and_development, +/obj/item/book/manual/wiki/robotics_cyborgs, +/obj/item/book/manual/wiki/security_space_law, +/obj/item/book/manual/wiki/medicine, +/obj/item/book/manual/wiki/medical_cloning, +/obj/item/book/manual/wiki/infections, +/obj/item/book/manual/ripley_build_and_repair, +/obj/item/book/manual/hydroponics_pod_people, +/obj/item/book/manual/wiki/toxins, +/obj/item/book/manual/wiki/grenades, +/obj/item/book{ + desc = "An undeniably handy book."; + icon_state = "bookknock"; + name = "A Simpleton's Guide to Safe-cracking with Stethoscopes" }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) +/turf/open/floor/wood, +/area/library) "aGm" = ( -/obj/structure/toilet{ - pixel_y = 8 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/hydroponics) "aGn" = ( -/obj/structure/toilet{ - pixel_y = 8 +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/effect/landmark/blobstart, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) +/turf/open/floor/plasteel, +/area/hydroponics) "aGo" = ( /obj/structure/table, /obj/item/stack/sheet/rglass{ @@ -14243,12 +14670,11 @@ /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "aGp" = ( -/obj/machinery/light/small{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/machinery/recharge_station, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) +/turf/open/floor/plasteel, +/area/hydroponics) "aGq" = ( /obj/item/stack/sheet/plasteel{ amount = 10 @@ -14300,28 +14726,13 @@ /turf/closed/wall, /area/crew_quarters/theatre) "aGw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/closet/secure_closet/freezer/cream_pie, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/theatre) +/obj/machinery/seed_extractor, +/turf/open/floor/plasteel/dark, +/area/hydroponics) "aGx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/toilet) +/obj/machinery/biogenerator, +/turf/open/floor/plasteel/dark, +/area/hydroponics) "aGy" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -14479,6 +14890,12 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"aGK" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hydroponics) "aGL" = ( /obj/structure/cable{ icon_state = "4-8" @@ -14520,15 +14937,9 @@ /turf/closed/wall, /area/chapel/office) "aGP" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) +/obj/machinery/vending/hydronutrients, +/turf/open/floor/plasteel/dark, +/area/hydroponics) "aGQ" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -14541,6 +14952,12 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"aGR" = ( +/obj/machinery/vending/hydroseeds{ + slogan_delay = 700 + }, +/turf/open/floor/plasteel/dark, +/area/hydroponics) "aGS" = ( /obj/structure/cable{ icon_state = "2-8" @@ -14632,17 +15049,33 @@ /area/hallway/secondary/entry) "aHb" = ( /obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_x = 1; - pixel_y = 9 +/obj/item/paper_bin/bundlenatural{ + pixel_x = 6; + pixel_y = 4 }, -/obj/item/stack/packageWrap, -/turf/open/floor/wood, -/area/library) +/obj/item/paper_bin{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/pen/fountain, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/item/pen/fourcolor, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "aHc" = ( -/obj/machinery/vending/games, -/turf/open/floor/wood, -/area/library) +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/landmark/start/botanist, +/turf/open/floor/plasteel, +/area/hydroponics) "aHd" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, @@ -14668,8 +15101,7 @@ pixel_y = 28 }, /obj/machinery/camera{ - c_tag = "Chapel Office"; - dir = 2 + c_tag = "Chapel Office" }, /turf/open/floor/plasteel/grimy, /area/chapel/office) @@ -14750,6 +15182,34 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/chapel/main) +"aHr" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aHs" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aHt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/light{ + dir = 1; + light_color = "#cee5d2" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "aHu" = ( /obj/machinery/status_display{ pixel_x = 32 @@ -14828,12 +15288,12 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/storage/eva) "aHD" = ( -/obj/structure/chair/stool{ - pixel_y = 8 +/obj/structure/chair/comfy/beige{ + dir = 8 }, /obj/effect/landmark/start/assistant, -/turf/open/floor/plasteel, -/area/storage/primary) +/turf/open/floor/plasteel/grimy, +/area/hallway/secondary/entry) "aHE" = ( /obj/structure/table, /obj/item/weldingtool, @@ -15000,38 +15460,67 @@ /turf/open/floor/plasteel, /area/crew_quarters/dorms) "aHU" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aHV" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aHW" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aHX" = ( +/obj/machinery/light{ dir = 1 }, -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 +/obj/structure/table/wood/fancy, +/obj/item/reagent_containers/food/condiment/peppermill{ + pixel_x = -9 }, -/obj/structure/mirror{ - pixel_x = -28 +/obj/item/reagent_containers/food/condiment/peppermill{ + dir = 1; + pixel_x = -3 }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) -"aHV" = ( -/obj/machinery/door/airlock{ - name = "Unit 1" +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -9; + pixel_y = 9 }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) -"aHW" = ( -/obj/machinery/door/airlock{ - name = "Unit 2" +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -3; + pixel_y = 9 }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) -"aHX" = ( -/obj/machinery/door/airlock{ - name = "Unit B" +/obj/item/reagent_containers/food/condiment/pack/ketchup{ + pixel_x = 5 }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) +/obj/item/reagent_containers/food/condiment/pack/ketchup{ + pixel_x = 5 + }, +/obj/item/reagent_containers/food/condiment/pack/ketchup{ + pixel_x = 5 + }, +/obj/item/reagent_containers/food/condiment/pack/hotsauce{ + pixel_x = 10 + }, +/obj/item/reagent_containers/food/condiment/pack/hotsauce{ + pixel_x = 10 + }, +/obj/item/reagent_containers/food/condiment/pack/mustard{ + pixel_x = 10 + }, +/obj/item/reagent_containers/food/condiment/pack/mustard{ + pixel_x = 10 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "aHY" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 @@ -15039,23 +15528,12 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "aHZ" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -22 - }, -/obj/structure/closet/crate/wooden/toy, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 +/obj/effect/turf_decal/tile/blue, +/obj/structure/sign/poster/contraband/fun_police{ + pixel_x = 32 }, /turf/open/floor/plasteel, -/area/crew_quarters/theatre) +/area/hallway/primary/fore) "aIa" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -15065,9 +15543,9 @@ /area/maintenance/starboard/fore) "aIb" = ( /obj/machinery/power/apc{ + areastring = "/area/crew_quarters/theatre"; dir = 8; name = "Theatre APC"; - areastring = "/area/crew_quarters/theatre"; pixel_x = -25 }, /obj/structure/cable, @@ -15078,9 +15556,8 @@ /area/maintenance/starboard/fore) "aIc" = ( /obj/machinery/power/apc{ - dir = 2; - name = "Bar APC"; areastring = "/area/crew_quarters/bar"; + name = "Bar APC"; pixel_y = -24 }, /obj/structure/cable, @@ -15120,18 +15597,13 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plasteel{ - dir = 2 - }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, /area/crew_quarters/bar) "aIh" = ( /obj/machinery/power/apc{ - dir = 2; - name = "Kitchen APC"; areastring = "/area/crew_quarters/kitchen"; + name = "Kitchen APC"; pixel_y = -24 }, /obj/structure/cable, @@ -15140,6 +15612,12 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"aIi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "aIj" = ( /obj/structure/cable{ icon_state = "4-8" @@ -15190,9 +15668,8 @@ /area/maintenance/starboard/fore) "aIn" = ( /obj/machinery/power/apc{ - dir = 2; - name = "Hydroponics APC"; areastring = "/area/hydroponics"; + name = "Hydroponics APC"; pixel_y = -24 }, /obj/structure/cable{ @@ -15219,21 +15696,15 @@ /turf/closed/wall, /area/hydroponics) "aIr" = ( -/obj/structure/filingcabinet, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/library) +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) "aIs" = ( -/obj/structure/chair/office/dark, -/obj/machinery/camera{ - c_tag = "Library North"; - dir = 2 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 }, +/obj/structure/chair/comfy/brown, /turf/open/floor/wood, -/area/library) +/area/crew_quarters/bar) "aIt" = ( /turf/open/floor/wood, /area/library) @@ -15253,16 +15724,11 @@ /turf/open/floor/wood, /area/library) "aIw" = ( -/obj/structure/chair/office/dark, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/effect/landmark/start/assistant, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 + dir = 9 }, /turf/open/floor/wood, -/area/library) +/area/crew_quarters/bar) "aIx" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -15273,29 +15739,35 @@ /turf/open/floor/wood, /area/library) "aIy" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/dark, -/area/chapel/office) +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/stack/packageWrap, +/obj/item/pen/fourcolor, +/turf/open/floor/wood, +/area/library) "aIz" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, /turf/open/floor/plasteel/grimy, /area/chapel/office) "aIA" = ( -/obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_x = -2; - pixel_y = 5 - }, -/obj/item/storage/crayons, -/turf/open/floor/plasteel/grimy, -/area/chapel/office) -"aIB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/bodycontainer/crematorium{ id = "crematoriumChapel" }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"aIB" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, /turf/open/floor/plasteel/dark, /area/chapel/office) "aIC" = ( @@ -15319,6 +15791,15 @@ /obj/structure/cable, /turf/open/floor/plating, /area/security/warden) +"aIG" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "aIH" = ( /obj/structure/table, /obj/item/storage/box/lights/mixed, @@ -15370,8 +15851,7 @@ /area/storage/primary) "aIO" = ( /obj/machinery/camera{ - c_tag = "Arrivals Lounge"; - dir = 2 + c_tag = "Arrivals Lounge" }, /obj/machinery/light{ dir = 1 @@ -15405,7 +15885,7 @@ /obj/item/reagent_containers/glass/bucket, /obj/item/plant_analyzer, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/green, @@ -15419,8 +15899,6 @@ /obj/structure/table/glass, /obj/item/plant_analyzer, /obj/item/radio/intercom{ - freerange = 0; - frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29 }, @@ -15580,12 +16058,13 @@ /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "aJk" = ( -/obj/machinery/door/airlock{ - name = "Theatre Backstage"; - req_access_txt = "46" +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, /turf/open/floor/plasteel, -/area/crew_quarters/theatre) +/area/crew_quarters/dorms) "aJl" = ( /obj/structure/tank_dispenser/oxygen, /obj/machinery/light{ @@ -15597,12 +16076,11 @@ /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "aJm" = ( -/obj/structure/sink/kitchen{ - pixel_y = 28 +/obj/machinery/light{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood, -/area/crew_quarters/bar) +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) "aJn" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -15612,8 +16090,7 @@ dir = 1 }, /obj/machinery/camera{ - c_tag = "Central Hallway North"; - dir = 2 + c_tag = "Central Hallway North" }, /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -15685,8 +16162,17 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "aJv" = ( -/obj/machinery/vending/cola/random, -/turf/open/floor/plasteel/dark, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/sign/poster/contraband/robust_softdrinks{ + pixel_x = -32; + pixel_y = 32 + }, +/turf/open/floor/plasteel, /area/hallway/primary/central) "aJw" = ( /turf/closed/wall, @@ -15706,6 +16192,10 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"aJz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms) "aJA" = ( /obj/machinery/door/airlock/maintenance{ name = "Kitchen Maintenance"; @@ -15737,13 +16227,12 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "aJE" = ( -/obj/item/reagent_containers/food/drinks/shaker, -/obj/item/gun/ballistic/revolver/doublebarrel, -/obj/structure/table/wood, -/obj/item/stack/spacecash/c10, -/obj/item/stack/spacecash/c100, -/turf/open/floor/wood, -/area/crew_quarters/bar) +/obj/machinery/light{ + dir = 4; + light_color = "#e8eaff" + }, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) "aJF" = ( /obj/machinery/newscaster{ pixel_x = 30 @@ -15770,9 +16259,6 @@ /area/chapel/office) "aJH" = ( /obj/machinery/door/window/southleft{ - base_state = "left"; - dir = 2; - icon_state = "left"; name = "Bar Delivery"; req_access_txt = "25" }, @@ -15783,11 +16269,11 @@ /turf/closed/wall, /area/crew_quarters/kitchen) "aJJ" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/chapel/office) +/obj/structure/table/wood, +/obj/item/folder/yellow, +/obj/item/pen/blue, +/turf/open/floor/wood, +/area/library) "aJK" = ( /obj/machinery/navbeacon{ codes_txt = "delivery;dir=2"; @@ -15795,12 +16281,8 @@ location = "Kitchen" }, /obj/structure/plasticflaps/opaque, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plasteel{ - dir = 2 - }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, /area/crew_quarters/kitchen) "aJL" = ( /obj/machinery/navbeacon{ @@ -15809,30 +16291,26 @@ location = "Hydroponics" }, /obj/structure/plasticflaps/opaque, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plasteel{ - dir = 2 - }, -/area/hydroponics) -"aJM" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp{ - pixel_y = 10 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/grimy, -/area/chapel/office) -"aJN" = ( -/obj/structure/table, -/obj/item/book/manual/hydroponics_pod_people, -/obj/item/paper/guides/jobs/hydroponics, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/hydroponics) +"aJM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"aJN" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/structure/sign/departments/security{ + pixel_x = -32; + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) "aJO" = ( /obj/structure/table, /obj/machinery/reagentgrinder, @@ -15840,30 +16318,55 @@ /area/hydroponics) "aJP" = ( /obj/structure/table/wood, -/obj/item/folder/yellow, -/obj/item/pen, -/turf/open/floor/wood, -/area/library) -"aJQ" = ( -/obj/structure/chair/office/dark{ +/obj/item/flashlight/lamp{ + pixel_y = 10 + }, +/obj/structure/disposalpipe/segment, +/obj/item/nullrod, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/wood, -/area/library) -"aJR" = ( -/obj/structure/chair/office/dark{ +/turf/open/floor/plasteel/grimy, +/area/chapel/office) +"aJQ" = ( +/obj/machinery/light{ dir = 8 }, -/turf/open/floor/wood, -/area/library) +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"aJR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "aJS" = ( /obj/structure/table/wood, /obj/structure/disposalpipe/segment, +/obj/item/paicard, /turf/open/floor/wood, /area/library) "aJT" = ( /obj/structure/table/wood, -/obj/item/nullrod, +/obj/item/paper_bin{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/storage/crayons, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -15971,9 +16474,9 @@ icon_state = "0-4" }, /obj/machinery/power/apc{ + areastring = "/area/construction/mining/aux_base"; dir = 8; name = "Auxillary Base Construction APC"; - areastring = "/area/construction/mining/aux_base"; pixel_x = -24 }, /obj/structure/cable{ @@ -15984,11 +16487,33 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"aKg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"aKh" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"aKi" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/table, +/obj/structure/bedsheetbin/towel, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "aKj" = ( /obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/neutral{ - dir = 2 - }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel, /area/hallway/secondary/entry) "aKk" = ( @@ -16028,22 +16553,24 @@ /turf/open/floor/plating, /area/storage/primary) "aKq" = ( -/obj/item/radio/intercom{ - pixel_y = 25 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 }, -/obj/machinery/camera{ - c_tag = "Theatre Stage"; - dir = 2 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "aKr" = ( -/obj/machinery/airalarm{ - dir = 2; - pixel_y = 24 +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "aKs" = ( /obj/structure/disposalpipe/segment, /obj/effect/spawner/structure/window, @@ -16182,14 +16709,22 @@ /turf/open/floor/plasteel, /area/hydroponics) "aKJ" = ( -/obj/machinery/light_switch{ - pixel_y = 28 +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 }, -/obj/machinery/light{ - dir = 1 +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "aKK" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/closet/secure_closet/hydroponics, @@ -16212,45 +16747,46 @@ /turf/open/floor/plasteel, /area/hydroponics) "aKM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) -"aKN" = ( -/obj/structure/window/reinforced{ - dir = 4 +/obj/structure/cable{ + icon_state = "2-8" }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aKO" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/machinery/firealarm{ - dir = 2; - pixel_y = 24 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel, -/area/crew_quarters/bar) +/area/crew_quarters/dorms) +"aKN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/chair/comfy/brown, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"aKO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/chair/comfy/black, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "aKP" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/machinery/door/airlock{ + name = "Unisex Restrooms" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms) "aKQ" = ( /obj/machinery/reagentgrinder, /obj/structure/table/wood, @@ -16260,11 +16796,13 @@ /turf/open/floor/wood, /area/crew_quarters/bar) "aKS" = ( -/obj/machinery/camera{ - c_tag = "Bar Storage" +/obj/effect/turf_decal/tile/red, +/obj/structure/sign/departments/security{ + pixel_x = 32; + pixel_y = -32 }, -/turf/open/floor/wood, -/area/crew_quarters/bar) +/turf/open/floor/plasteel, +/area/hallway/primary/fore) "aKT" = ( /obj/structure/closet/secure_closet/freezer/meat, /turf/open/floor/plasteel/showroomfloor, @@ -16275,9 +16813,6 @@ /area/hydroponics) "aKV" = ( /obj/machinery/door/window/southleft{ - base_state = "left"; - dir = 2; - icon_state = "left"; name = "Kitchen Delivery"; req_access_txt = "28" }, @@ -16317,8 +16852,9 @@ c_tag = "Chapel Crematorium"; dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 +/obj/structure/bodycontainer/morgue, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 }, /turf/open/floor/plasteel/dark, /area/chapel/office) @@ -16387,11 +16923,9 @@ /turf/open/floor/wood, /area/library) "aLh" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/wood, -/area/library) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/crew_quarters/toilet) "aLi" = ( /obj/structure/chair/comfy/beige, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -16467,6 +17001,23 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/main) +"aLs" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Dorms South"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "aLt" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 @@ -16483,7 +17034,7 @@ /area/construction/mining/aux_base) "aLv" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/stripes/line{ @@ -16550,9 +17101,9 @@ icon_state = "0-2" }, /obj/machinery/power/apc{ - name = "Port Hall APC"; areastring = "/area/hallway/primary/port"; dir = 1; + name = "Port Hall APC"; pixel_y = 26 }, /turf/open/floor/plasteel, @@ -16588,8 +17139,7 @@ /area/hallway/primary/port) "aLL" = ( /obj/machinery/camera{ - c_tag = "Port Hallway 2"; - dir = 2 + c_tag = "Port Hallway 2" }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -16628,15 +17178,18 @@ /turf/open/floor/plasteel, /area/hallway/primary/port) "aLQ" = ( -/obj/machinery/camera{ - c_tag = "Central Hallway North-East"; - dir = 2 +/obj/structure/cable, +/obj/machinery/power/apc{ + areastring = "/area/crew_quarters/toilet"; + dir = 4; + name = "Dormitory Bathrooms APC"; + pixel_x = 26 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/table/glass, +/obj/structure/bedsheetbin/towel, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/toilet) "aLR" = ( /obj/machinery/newscaster{ pixel_y = 32 @@ -16650,10 +17203,11 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "aLS" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel/white/side{ dir = 4 }, -/turf/open/floor/wood, /area/crew_quarters/theatre) "aLT" = ( /obj/machinery/door/firedoor, @@ -16678,15 +17232,13 @@ dir = 1 }, /obj/machinery/firealarm{ - dir = 2; pixel_y = 24 }, /turf/open/floor/plasteel, /area/hallway/primary/central) "aLW" = ( /obj/machinery/camera{ - c_tag = "Central Hallway North-West"; - dir = 2 + c_tag = "Central Hallway North-West" }, /obj/machinery/airalarm{ pixel_y = 23 @@ -16746,14 +17298,12 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "aMg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +/obj/machinery/vending/cola/pwr_game, +/obj/structure/sign/poster/contraband/pwr_game{ + pixel_y = 32 }, /turf/open/floor/plasteel, -/area/hallway/primary/central) +/area/crew_quarters/locker) "aMh" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 @@ -16790,7 +17340,6 @@ /area/crew_quarters/kitchen) "aMm" = ( /obj/machinery/firealarm{ - dir = 2; pixel_y = 24 }, /turf/open/floor/plasteel, @@ -16808,20 +17357,33 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "aMp" = ( -/obj/structure/chair/stool{ - pixel_y = 8 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) +/obj/effect/landmark/blobstart, +/turf/open/floor/plating, +/area/maintenance/department/electrical) "aMq" = ( -/obj/structure/piano{ - icon_state = "piano" +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "aMr" = ( -/turf/open/floor/wood, -/area/crew_quarters/theatre) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "aMs" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -16843,41 +17405,33 @@ /turf/open/floor/plasteel, /area/hydroponics) "aMu" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ +/obj/machinery/camera{ + c_tag = "Bathrooms"; dir = 1 }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) +/obj/structure/urinal{ + pixel_y = 32 + }, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/toilet) "aMv" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aMw" = ( -/obj/machinery/computer/slot_machine, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) -"aMx" = ( -/obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aMw" = ( +/obj/machinery/door/airlock{ + name = "Unisex Restrooms" }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/dark, +/area/hallway/primary/central) +"aMx" = ( +/obj/machinery/door/airlock{ + name = "Shower Room" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/toilet) "aMy" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -16910,13 +17464,21 @@ /turf/open/floor/plasteel, /area/hydroponics) "aMB" = ( -/obj/machinery/vending/coffee, -/turf/open/floor/wood, -/area/crew_quarters/bar) +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) "aMC" = ( -/obj/machinery/vending/cola/random, -/turf/open/floor/wood, -/area/crew_quarters/bar) +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light_switch{ + pixel_y = -25 + }, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) "aMD" = ( /obj/machinery/icecream_vat, /turf/open/floor/plasteel/showroomfloor, @@ -16942,27 +17504,28 @@ /turf/open/floor/plasteel, /area/hydroponics) "aMH" = ( -/obj/structure/chair/office/dark{ - dir = 1 +/obj/machinery/door/airlock{ + name = "Unisex Restrooms" }, -/turf/open/floor/wood, -/area/library) +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/bar) "aMI" = ( /obj/machinery/light/small, /obj/machinery/vending/wardrobe/hydro_wardrobe, /turf/open/floor/plasteel, /area/hydroponics) "aMJ" = ( -/obj/structure/chair/office/dark{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood, -/area/library) +/turf/closed/wall, +/area/crew_quarters/dorms) "aMK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 5 }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plasteel/dark, /area/chapel/office) "aML" = ( @@ -16973,8 +17536,7 @@ /area/chapel/main) "aMM" = ( /obj/machinery/camera{ - c_tag = "Chapel North"; - dir = 2 + c_tag = "Chapel North" }, /turf/open/floor/plasteel/dark, /area/chapel/main) @@ -17041,9 +17603,11 @@ /turf/open/floor/plasteel, /area/hallway/primary/port) "aMW" = ( -/obj/structure/bodycontainer/morgue, -/turf/open/floor/plasteel/dark, -/area/chapel/office) +/obj/structure/bookcase{ + name = "Forbidden Knowledge" + }, +/turf/open/floor/carpet, +/area/library) "aMX" = ( /turf/open/floor/plasteel/grimy, /area/chapel/office) @@ -17124,6 +17688,13 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/port) +"aNn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/chair/comfy/brown, +/turf/open/floor/wood, +/area/crew_quarters/bar) "aNo" = ( /obj/structure/cable{ icon_state = "1-8" @@ -17154,17 +17725,33 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "aNt" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/chair/comfy/brown{ dir = 4 }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aNu" = ( -/obj/structure/closet/secure_closet/bar{ - req_access_txt = "25" +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/turf/open/floor/wood, -/area/crew_quarters/bar) +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"aNu" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + areastring = "/area/crew_quarters/abandoned_gambling_den"; + name = "Abandoned Gambling Den APC"; + pixel_y = -24 + }, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) "aNv" = ( /obj/effect/turf_decal/plaque{ icon_state = "L4" @@ -17240,57 +17827,78 @@ /turf/open/floor/wood, /area/crew_quarters/bar) "aNF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/item/reagent_containers/food/drinks/soda_cans/starkist{ + pixel_x = -3; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) "aNG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 +/obj/structure/chair/comfy/brown{ + dir = 8 }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel, -/area/crew_quarters/bar) +/area/crew_quarters/dorms) "aNH" = ( -/obj/machinery/door/window{ - dir = 4; - name = "Theatre Stage" +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/sign/warning/fire{ + desc = "A sign that states the labeled room's number."; + icon_state = "roomnum"; + name = "Room Number 1"; + pixel_x = -30; + pixel_y = -7 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "aNI" = ( -/obj/machinery/computer/slot_machine, -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/status_display{ - pixel_x = 32 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, +/obj/structure/closet/jcloset, +/obj/item/storage/bag/trash, +/obj/item/clothing/under/janimaid, +/obj/item/clothing/under/janimaid, +/obj/item/clothing/under/janimaid, +/obj/item/clothing/under/maid, +/obj/item/clothing/under/maid, +/obj/item/clothing/under/maid, /turf/open/floor/plasteel, -/area/crew_quarters/bar) +/area/janitor) "aNJ" = ( -/obj/structure/chair/stool, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 +/obj/structure/table, +/obj/item/grenade/chem_grenade/cleaner, +/obj/item/grenade/chem_grenade/cleaner, +/obj/item/grenade/chem_grenade/cleaner, +/obj/machinery/requests_console{ + department = "Janitorial"; + departmentType = 1; + pixel_y = -29 }, +/obj/item/reagent_containers/spray/cleaner, +/obj/item/storage/box/lights/mixed, +/obj/item/storage/box/lights/mixed, /turf/open/floor/plasteel, -/area/crew_quarters/bar) +/area/janitor) "aNK" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 @@ -17343,6 +17951,7 @@ "aNR" = ( /obj/structure/table/wood, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/item/paicard, /turf/open/floor/carpet, /area/hallway/secondary/entry) "aNS" = ( @@ -17379,9 +17988,11 @@ /turf/open/floor/plasteel, /area/hallway/primary/port) "aNV" = ( -/obj/machinery/photocopier, -/turf/open/floor/wood, -/area/library) +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) "aNW" = ( /obj/machinery/door/airlock/public/glass{ name = "Chapel Office"; @@ -17588,6 +18199,15 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/port) +"aOu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "aOv" = ( /obj/structure/cable{ icon_state = "4-8" @@ -17712,32 +18332,56 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "aOH" = ( -/obj/structure/window/reinforced, -/turf/open/floor/wood, -/area/crew_quarters/theatre) +/obj/structure/closet/secure_closet/captains, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/item/clothing/under/captainparade, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) "aOI" = ( /obj/structure/kitchenspike, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) "aOJ" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 +/obj/item/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aOK" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/crew_quarters/bar) -"aOL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ +/obj/structure/closet/secure_closet/hop, +/obj/effect/turf_decal/tile/blue{ dir = 1 }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/item/clothing/suit/ianshirt, /turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) +"aOK" = ( +/obj/machinery/door/airlock{ + name = "Theatre Backstage"; + req_access_txt = "46" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/dark, /area/crew_quarters/bar) +"aOL" = ( +/obj/machinery/camera{ + c_tag = "Central Hallway North-East" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "aOM" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -17806,8 +18450,7 @@ "aOW" = ( /obj/machinery/hydroponics/constructable, /obj/machinery/camera{ - c_tag = "Hydroponics North"; - dir = 2 + c_tag = "Hydroponics North" }, /turf/open/floor/plasteel/dark, /area/hydroponics) @@ -17864,29 +18507,38 @@ /turf/open/floor/wood, /area/library) "aPg" = ( -/obj/structure/bookcase{ - name = "Forbidden Knowledge" - }, -/turf/open/floor/engine/cult, -/area/library) -"aPh" = ( -/obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen/invisible, -/turf/open/floor/engine/cult, -/area/library) -"aPi" = ( -/obj/structure/table/wood, -/obj/item/taperecorder, -/obj/item/camera, /obj/item/radio/intercom{ pixel_y = 25 }, -/turf/open/floor/engine/cult, +/obj/machinery/vending/wardrobe/curator_wardrobe, +/turf/open/floor/carpet, /area/library) +"aPh" = ( +/obj/structure/table/wood, +/obj/item/book/codex_gigas, +/obj/item/clothing/under/suit_jacket/red, +/obj/structure/destructible/cult/tome, +/turf/open/floor/carpet, +/area/library) +"aPi" = ( +/obj/structure/chair/comfy/brown, +/turf/open/floor/carpet, +/area/library) +"aPj" = ( +/obj/machinery/vr_sleeper{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/crew_quarters/fitness) "aPk" = ( /turf/open/floor/plasteel/chapel{ dir = 4 @@ -17961,7 +18613,6 @@ /area/hallway/secondary/entry) "aPv" = ( /obj/item/radio/intercom{ - broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20 }, @@ -18080,6 +18731,19 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/hallway/primary/port) +"aPP" = ( +/obj/structure/reagent_dispensers/watertank/high, +/obj/structure/sign/poster/contraband/lizard{ + pixel_x = -32 + }, +/obj/structure/sign/poster/contraband/lizard{ + pixel_x = -32 + }, +/obj/structure/sign/poster/contraband/lizard{ + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/hydroponics) "aPQ" = ( /turf/closed/wall, /area/storage/tools) @@ -18170,39 +18834,34 @@ /turf/open/floor/plating, /area/bridge) "aPY" = ( -/obj/structure/chair/stool, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 +/obj/structure/table/optable{ + name = "Robotics Operating Table" }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) +/obj/effect/landmark/event_spawn, +/obj/item/tank/internals/anesthetic, +/obj/item/clothing/mask/breath, +/turf/open/floor/plasteel/dark, +/area/science/robotics/lab) "aPZ" = ( -/obj/structure/table, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = -31 - }, -/obj/item/clothing/head/hardhat/cakehat, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 +/obj/item/mop, +/obj/item/reagent_containers/glass/bucket, +/obj/structure/sign/poster/contraband/busty_backdoor_xeno_babes_6{ + pixel_x = 32 }, /turf/open/floor/plasteel, -/area/crew_quarters/bar) +/area/janitor) "aQa" = ( -/obj/structure/table, -/obj/item/kitchen/fork, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 +/obj/structure/reagent_dispensers/watertank, +/obj/structure/sign/poster/contraband/lusty_xenomorph{ + pixel_x = 32 }, /turf/open/floor/plasteel, -/area/crew_quarters/bar) +/area/janitor) "aQb" = ( -/obj/structure/window/reinforced, -/obj/structure/table/wood, -/obj/item/instrument/violin, -/turf/open/floor/wood, +/obj/machinery/vending/autodrobe, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, /area/crew_quarters/theatre) "aQc" = ( /obj/effect/turf_decal/tile/bar, @@ -18212,23 +18871,15 @@ /turf/open/floor/plasteel, /area/crew_quarters/bar) "aQd" = ( -/obj/structure/chair, -/obj/effect/landmark/start/assistant, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) "aQe" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/chair/stool, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) +/turf/open/floor/plating, +/area/space/nearstation) "aQf" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/tile/green{ @@ -18343,22 +18994,24 @@ /area/library) "aQr" = ( /obj/machinery/light/small, -/obj/machinery/vending/wardrobe/curator_wardrobe, -/turf/open/floor/engine/cult, +/obj/structure/table/wood/fancy, +/turf/open/floor/carpet, /area/library) "aQs" = ( -/obj/structure/destructible/cult/tome, -/obj/item/clothing/under/suit_jacket/red, -/obj/item/book/codex_gigas, -/turf/open/floor/engine/cult, +/obj/structure/bed, +/obj/item/bedsheet/black, +/turf/open/floor/carpet, /area/library) "aQt" = ( -/obj/effect/landmark/blobstart, -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/turf/open/floor/engine/cult, -/area/library) +/obj/structure/table, +/obj/item/stack/cable_coil/random, +/obj/item/stack/cable_coil/random, +/obj/item/stack/cable_coil, +/obj/item/paper_bin/construction, +/obj/item/stack/cable_coil, +/obj/item/pen/fourcolor, +/turf/open/floor/plasteel, +/area/storage/art) "aQu" = ( /turf/open/floor/plasteel/chapel, /area/chapel/main) @@ -18494,37 +19147,67 @@ /area/crew_quarters/locker) "aQO" = ( /obj/structure/closet/wardrobe/white, +/obj/item/clothing/suit/ghost_sheet, +/obj/item/clothing/suit/ghost_sheet, +/obj/item/clothing/suit/ghost_sheet, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aQP" = ( -/obj/structure/reagent_dispensers/fueltank, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aQQ" = ( /obj/machinery/light_switch{ pixel_y = 28 }, -/turf/open/floor/plasteel, -/area/crew_quarters/locker) -"aQQ" = ( -/obj/structure/reagent_dispensers/watertank, +/obj/machinery/vending/cigarette, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aQR" = ( -/obj/machinery/vending/cola/random, +/obj/machinery/camera{ + c_tag = "Arrivals Bay 3 & 4"; + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/landmark/start/assistant, /turf/open/floor/plasteel, -/area/crew_quarters/locker) +/area/hallway/secondary/entry) "aQS" = ( /obj/machinery/vending/coffee, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aQT" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/crew_quarters/locker) +/obj/item/clothing/gloves/color/rainbow, +/obj/item/clothing/head/soft/rainbow, +/obj/item/clothing/shoes/sneakers/rainbow, +/obj/item/clothing/under/color/rainbow, +/turf/open/floor/plating, +/area/maintenance/port/fore) "aQU" = ( -/obj/machinery/vending/kink, -/turf/open/floor/plasteel, -/area/crew_quarters/locker) +/obj/structure/sign/poster/contraband/lizard{ + pixel_x = -32 + }, +/obj/structure/sign/poster/contraband/lizard{ + pixel_x = -32 + }, +/obj/structure/sign/poster/contraband/lizard{ + pixel_x = -32 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "aQV" = ( -/obj/machinery/vending/clothing, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aQW" = ( @@ -18532,18 +19215,19 @@ /turf/open/floor/plasteel, /area/crew_quarters/locker) "aQX" = ( -/obj/machinery/firealarm{ - dir = 2; - pixel_y = 24 +/obj/machinery/vending/clothing, +/obj/structure/disposalpipe/segment{ + dir = 4 }, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aQY" = ( -/obj/structure/table, -/obj/item/stack/cable_coil/random, -/obj/item/stack/cable_coil/random, +/obj/machinery/vending/autodrobe/all_access, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/plasteel, -/area/storage/art) +/area/crew_quarters/locker) "aQZ" = ( /obj/machinery/light/small{ dir = 4 @@ -18736,47 +19420,30 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "aRu" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/chair/stool, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) -"aRv" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) -"aRw" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/landmark/start/assistant, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) -"aRx" = ( -/obj/structure/chair{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 +/obj/machinery/vending/kink, +/obj/machinery/light{ + dir = 4; + light_color = "#e8eaff" }, /turf/open/floor/plasteel, -/area/crew_quarters/bar) +/area/crew_quarters/fitness) +"aRv" = ( +/obj/effect/landmark/blobstart, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aRw" = ( +/obj/structure/fans/tiny/invisible, +/turf/open/space/basic, +/area/space) +"aRx" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating, +/area/space/nearstation) "aRy" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -5; @@ -18795,7 +19462,9 @@ /turf/open/floor/plasteel, /area/crew_quarters/bar) "aRA" = ( -/obj/machinery/vending/dinnerware, +/obj/machinery/vending/dinnerware{ + contraband = list(/obj/item/kitchen/rollingpin = 2, /obj/item/kitchen/knife/butcher = 2, /obj/item/reagent_containers/food/condiment/flour = 4) + }, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) "aRB" = ( @@ -18803,8 +19472,7 @@ pixel_y = 25 }, /obj/machinery/camera{ - c_tag = "Kitchen"; - dir = 2 + c_tag = "Kitchen" }, /obj/structure/closet/secure_closet/freezer/fridge, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -18875,9 +19543,9 @@ icon_state = "1-2" }, /obj/machinery/power/apc{ + areastring = "/area/library"; dir = 4; name = "Library APC"; - areastring = "/area/library"; pixel_x = 24 }, /obj/structure/cable, @@ -18920,7 +19588,7 @@ /area/library) "aRR" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /turf/open/floor/plasteel/dark, @@ -18945,13 +19613,13 @@ /area/hallway/secondary/exit) "aRV" = ( /obj/machinery/power/apc{ + areastring = "/area/storage/tools"; dir = 1; name = "Auxiliary Tool Storage APC"; - areastring = "/area/storage/tools"; pixel_y = 24 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/structure/cable{ @@ -18990,8 +19658,7 @@ pixel_y = 28 }, /obj/machinery/camera{ - c_tag = "Auxiliary Tool Storage"; - dir = 2 + c_tag = "Auxiliary Tool Storage" }, /obj/structure/table, /obj/item/stack/sheet/metal/fifty, @@ -19012,7 +19679,7 @@ /area/storage/tools) "aSd" = ( /obj/machinery/firealarm{ - dir = 2; + dir = 1; pixel_y = -24 }, /turf/open/floor/plasteel, @@ -19032,26 +19699,39 @@ /turf/open/floor/plating, /area/maintenance/port) "aSh" = ( -/obj/structure/closet/wardrobe/mixed, -/obj/item/radio/intercom{ - name = "Station Intercom (General)"; - pixel_x = -27 +/obj/structure/table, +/obj/item/storage/toolbox/artistic{ + pixel_y = 10 + }, +/obj/item/storage/toolbox/artistic, +/obj/item/storage/toolbox/electrical{ + pixel_y = -10 }, /turf/open/floor/plasteel, -/area/crew_quarters/locker) +/area/storage/art) "aSi" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plasteel, /area/crew_quarters/locker) -"aSk" = ( -/obj/structure/table, -/obj/item/stack/cable_coil/random, -/obj/item/stack/cable_coil/random, -/obj/item/stack/cable_coil, -/obj/item/paper_bin/construction, -/obj/item/stack/cable_coil, +"aSj" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light, /turf/open/floor/plasteel, -/area/storage/art) +/area/crew_quarters/dorms) +"aSk" = ( +/obj/structure/table/wood, +/obj/item/camera_film, +/obj/item/camera_film, +/obj/item/taperecorder, +/obj/item/camera, +/turf/open/floor/wood, +/area/library) "aSl" = ( /obj/machinery/light_switch{ pixel_y = 28 @@ -19067,36 +19747,50 @@ /turf/open/floor/plating, /area/storage/emergency/port) "aSo" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) -"aSp" = ( -/obj/structure/chair/stool, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) -"aSq" = ( -/obj/structure/chair{ +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/light, /turf/open/floor/plasteel, -/area/crew_quarters/bar) +/area/crew_quarters/dorms) +"aSp" = ( +/obj/structure/toilet{ + dir = 4 + }, +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/structure/sink{ + dir = 1; + pixel_y = 25 + }, +/obj/machinery/button/door{ + id = "Bath1"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 14; + pixel_y = 38; + specialfunctions = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/toilet) +"aSq" = ( +/obj/machinery/door/airlock{ + name = "Recharging Station" + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) "aSr" = ( /turf/open/floor/plasteel, /area/storage/tools) @@ -19212,28 +19906,20 @@ /turf/open/floor/plasteel, /area/crew_quarters/bar) "aSG" = ( -/obj/structure/table/wood/poker, -/obj/item/toy/cards/deck, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/structure/fireplace, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 23 }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) +/turf/open/floor/plating, +/area/maintenance/port) "aSH" = ( -/obj/structure/chair/stool, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) +/turf/open/space, +/area/solar/starboard/aft) "aSI" = ( /obj/machinery/door/airlock/public/glass{ name = "Kitchen"; @@ -19314,13 +20000,17 @@ /turf/open/floor/plasteel/dark, /area/hydroponics) "aSS" = ( -/obj/machinery/seed_extractor, -/turf/open/floor/plasteel, -/area/hydroponics) +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/turf/open/space, +/area/solar/starboard/aft) "aST" = ( -/obj/machinery/biogenerator, -/turf/open/floor/plasteel, -/area/hydroponics) +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/space, +/area/solar/starboard/aft) "aSU" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 @@ -19342,25 +20032,19 @@ /turf/open/floor/plasteel, /area/storage/tools) "aSX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/vending/kink, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"aSY" = ( -/obj/structure/table/reinforced, -/obj/item/clothing/head/that{ - throwforce = 1 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, /turf/open/floor/plasteel, -/area/crew_quarters/bar) +/area/crew_quarters/locker) +"aSY" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/space, +/area/solar/starboard/aft) "aSZ" = ( /obj/effect/landmark/start/bartender, /obj/effect/turf_decal/tile/bar, @@ -19369,6 +20053,13 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/bar) +"aTa" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/space, +/area/solar/starboard/aft) "aTb" = ( /obj/machinery/newscaster{ pixel_y = 32 @@ -19377,9 +20068,7 @@ /area/library) "aTc" = ( /obj/machinery/door/window/northright{ - base_state = "right"; dir = 8; - icon_state = "right"; name = "Library Desk Door"; req_access_txt = "37" }, @@ -19475,6 +20164,20 @@ }, /turf/open/floor/plating, /area/hallway/secondary/exit) +"aTp" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/space, +/area/solar/port/fore) +"aTq" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/space, +/area/solar/starboard/fore) "aTr" = ( /obj/machinery/door/firedoor, /obj/machinery/status_display{ @@ -19506,17 +20209,25 @@ /turf/open/floor/plating, /area/maintenance/port) "aTw" = ( -/obj/structure/closet/wardrobe/green, -/obj/machinery/light{ - dir = 8 +/obj/structure/closet/wardrobe/mixed, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_x = -27 }, +/obj/item/clothing/head/beret, +/obj/item/clothing/head/beret, +/obj/item/clothing/head/russobluecamohat, +/obj/item/clothing/head/russobluecamohat, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aTx" = ( -/obj/structure/chair/stool{ - pixel_y = 8 +/obj/machinery/firealarm{ + pixel_y = 24 }, -/obj/effect/landmark/start/assistant, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/vending/games, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aTy" = ( @@ -19524,45 +20235,71 @@ /turf/open/floor/plasteel, /area/crew_quarters/locker) "aTz" = ( -/obj/structure/table, -/turf/open/floor/plasteel, -/area/crew_quarters/locker) -"aTA" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = -1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/locker) -"aTB" = ( /obj/structure/chair/stool{ pixel_y = 8 }, /turf/open/floor/plasteel, /area/crew_quarters/locker) -"aTC" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = -1 +"aTA" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 }, -/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aTB" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/structure/window{ + dir = 1 + }, +/obj/structure/window{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aTC" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/structure/window{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aTD" = ( -/obj/structure/closet/secure_closet/personal, -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/obj/machinery/camera{ - c_tag = "Locker Room East"; - dir = 8 - }, -/obj/machinery/light{ +/obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/effect/turf_decal/tile/blue, +/obj/structure/window{ + dir = 1 + }, +/obj/structure/window{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aTE" = ( @@ -19606,6 +20343,12 @@ /area/storage/emergency/port) "aTL" = ( /obj/structure/table, +/obj/item/storage/toolbox/artistic{ + icon_state = "yellow"; + item_state = "toolbox_yellow"; + name = "Cable Toolbox"; + pixel_y = 6 + }, /obj/item/storage/toolbox/emergency, /turf/open/floor/plasteel, /area/storage/tools) @@ -19615,10 +20358,15 @@ /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) "aTN" = ( -/obj/structure/table, -/obj/item/kitchen/rollingpin, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) +/obj/machinery/vending/dinnerware{ + contraband = list(/obj/item/reagent_containers/food/condiment/flour = 4); + desc = "This vendor is full of condiments to put on food."; + name = "\improper Condiments Vendor"; + product_ads = "Get your sauces here!;No slave labour was used to make these products!;Nanotrasen Approved?!"; + products = list(/obj/item/storage/bag/tray = 8, /obj/item/reagent_containers/food/drinks/drinkingglass = 10, /obj/item/storage/box/cups = 5, /obj/item/reagent_containers/food/condiment/pack/ketchup = 20, /obj/item/reagent_containers/food/condiment/pack/mustard = 20, /obj/item/reagent_containers/food/condiment/pack/hotsauce = 20, /obj/item/reagent_containers/food/condiment/pack/astrotame = 20, /obj/item/reagent_containers/food/condiment/saltshaker = 20, /obj/item/reagent_containers/food/condiment/peppermill = 20) + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "aTO" = ( /obj/structure/table, /obj/item/book/manual/chef_recipes, @@ -19738,28 +20486,19 @@ /turf/open/floor/plasteel, /area/bridge) "aUf" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -22 +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "0-4" }, -/obj/machinery/camera{ - c_tag = "Bar West"; - dir = 4 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) +/turf/open/space, +/area/solar/port/aft) "aUg" = ( -/obj/structure/chair, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) +/turf/open/space, +/area/solar/port/aft) "aUh" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/eastleft{ @@ -19784,15 +20523,28 @@ /turf/open/floor/plasteel/dark, /area/hydroponics) "aUj" = ( -/obj/machinery/vending/hydronutrients, -/turf/open/floor/plasteel, -/area/hydroponics) -"aUk" = ( -/obj/machinery/vending/hydroseeds{ - slogan_delay = 700 +/obj/item/soap, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light/small{ + dir = 1; + light_color = "#ffc1c1" }, -/turf/open/floor/plasteel, -/area/hydroponics) +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aUk" = ( +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/effect/turf_decal/tile/green, +/obj/machinery/camera{ + c_tag = "VR Sleepers"; + dir = 1 + }, +/obj/machinery/light/small, +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/crew_quarters/fitness) "aUl" = ( /obj/structure/chair/office/dark{ dir = 8 @@ -19817,39 +20569,71 @@ /turf/open/floor/plasteel, /area/crew_quarters/locker) "aUp" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/camera{ + c_tag = "Locker Room East"; + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, /obj/structure/table, -/obj/item/clothing/head/soft/grey{ - pixel_x = -2; - pixel_y = 3 +/obj/item/reagent_containers/rag/towel/random, +/obj/item/razor, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"aUq" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel, -/area/crew_quarters/locker) -"aUq" = ( -/obj/structure/table, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/structure/window{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ dir = 4 }, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aUr" = ( -/obj/structure/chair/stool{ - pixel_y = 8 - }, -/obj/effect/landmark/start/assistant, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aUs" = ( -/obj/structure/table, -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aUt" = ( @@ -19859,12 +20643,27 @@ /turf/open/floor/plasteel, /area/crew_quarters/locker) "aUu" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/window{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aUv" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 }, /turf/open/floor/plasteel, /area/crew_quarters/locker) @@ -19911,10 +20710,17 @@ /turf/open/floor/wood, /area/library) "aUC" = ( -/obj/structure/chair/comfy/black, -/obj/effect/landmark/start/assistant, -/turf/open/floor/wood, -/area/library) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/landmark/start/mime, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/crew_quarters/theatre) "aUD" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp/green{ @@ -19966,6 +20772,15 @@ dir = 1 }, /area/chapel/main) +"aUL" = ( +/obj/machinery/computer/arcade, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/hallway/secondary/exit) "aUM" = ( /obj/machinery/camera{ c_tag = "Arrivals Bay 2"; @@ -19984,11 +20799,29 @@ /turf/open/floor/wood, /area/security/vacantoffice) "aUP" = ( -/obj/machinery/airalarm{ - pixel_y = 23 +/obj/structure/toilet{ + dir = 4 }, -/turf/open/floor/wood, -/area/security/vacantoffice) +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/structure/sink{ + dir = 1; + pixel_y = 25 + }, +/obj/machinery/button/door{ + id = "Bath2"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 14; + pixel_y = 38; + specialfunctions = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/toilet) "aUQ" = ( /obj/structure/table/wood, /turf/open/floor/wood, @@ -20012,18 +20845,29 @@ /turf/open/floor/plating, /area/maintenance/port) "aUU" = ( -/obj/structure/closet/wardrobe/grey, -/obj/machinery/requests_console{ - department = "Locker Room"; - pixel_x = -32 +/obj/structure/closet/wardrobe/green, +/obj/machinery/light{ + dir = 8 }, +/obj/item/clothing/under/kilt, +/obj/item/clothing/under/kilt, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aUV" = ( -/obj/structure/chair/stool{ - pixel_y = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/door/window/westright{ + name = "Red Corner" + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ dir = 4 }, /turf/open/floor/plasteel, @@ -20040,17 +20884,29 @@ /turf/open/floor/plasteel, /area/crew_quarters/locker) "aUY" = ( -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aUZ" = ( -/obj/structure/closet/secure_closet/personal, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, +/obj/structure/table, +/obj/item/clothing/gloves/boxing/yellow, +/obj/item/clothing/gloves/boxing/green, +/obj/item/clothing/gloves/boxing/blue, +/obj/item/clothing/gloves/boxing/blue, +/obj/item/clothing/gloves/boxing, +/obj/item/clothing/gloves/boxing, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aVa" = ( @@ -20128,9 +20984,9 @@ /area/bridge) "aVh" = ( /obj/machinery/power/apc{ + areastring = "/area/hallway/primary/fore"; dir = 8; name = "Fore Primary Hallway APC"; - areastring = "/area/hallway/primary/fore"; pixel_x = -24 }, /obj/structure/cable{ @@ -20295,8 +21151,7 @@ /area/hallway/primary/central) "aVv" = ( /obj/machinery/camera{ - c_tag = "Bridge East Entrance"; - dir = 2 + c_tag = "Bridge East Entrance" }, /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -20307,40 +21162,42 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "aVw" = ( -/obj/structure/table/wood/poker, -/obj/item/clothing/mask/cigarette/cigar, -/obj/item/toy/cards/deck, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) +/obj/effect/landmark/carpspawn, +/turf/open/space/basic, +/area/space) "aVx" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "holoprivacy"; + name = "Holodeck Shutters" + }, +/turf/open/floor/plating, +/area/crew_quarters/fitness) "aVy" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/table, +/obj/item/storage/firstaid/regular{ + pixel_y = 5 }, /turf/open/floor/plasteel, -/area/crew_quarters/bar) +/area/crew_quarters/fitness) "aVz" = ( /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) "aVA" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/item/reagent_containers/food/snacks/pie/cream, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/crew_quarters/theatre) "aVB" = ( /obj/structure/table, /obj/item/reagent_containers/food/condiment/enzyme{ @@ -20360,15 +21217,18 @@ /turf/open/floor/plating, /area/maintenance/port) "aVD" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_x = -3 +/obj/machinery/door/airlock/maintenance{ + name = "Theatre Maintenance"; + req_access_txt = "46" }, -/obj/item/reagent_containers/food/condiment/peppermill{ - pixel_x = 3 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/crew_quarters/theatre) "aVE" = ( /obj/structure/table, /obj/item/storage/box/donkpockets{ @@ -20384,10 +21244,18 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) +"aVG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/table, +/obj/item/coin/gold, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) "aVH" = ( /obj/machinery/processor, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/plasteel/cafeteria, @@ -20409,9 +21277,14 @@ /turf/open/floor/plasteel/dark, /area/hydroponics) "aVK" = ( -/obj/effect/landmark/start/botanist, -/turf/open/floor/plasteel, -/area/hydroponics) +/obj/machinery/shower{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_y = 25 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) "aVL" = ( /obj/structure/cable{ icon_state = "1-2" @@ -20454,10 +21327,9 @@ /turf/open/floor/plasteel, /area/hallway/primary/starboard) "aVP" = ( -/obj/structure/table/wood, -/obj/item/paper, -/turf/open/floor/wood, -/area/library) +/obj/machinery/vending/autodrobe/all_access, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) "aVQ" = ( /obj/structure/chair/comfy/black{ dir = 8 @@ -20466,27 +21338,32 @@ /area/library) "aVR" = ( /obj/structure/table/wood, -/obj/item/pen/red, -/obj/item/pen/blue{ - pixel_x = 5; - pixel_y = 5 +/obj/item/paper_bin/bundlenatural{ + pixel_x = 6; + pixel_y = 4 }, +/obj/item/paper_bin{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/pen/fountain, +/obj/item/pen/fourcolor, /turf/open/floor/wood, /area/library) "aVS" = ( /obj/structure/table/wood, -/obj/item/camera_film, -/obj/item/camera_film, +/obj/item/pen/red, /turf/open/floor/wood, /area/library) "aVT" = ( /obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_x = 1; - pixel_y = 9 +/obj/item/reagent_containers/food/drinks/bottle/whiskey{ + pixel_x = 3 }, -/turf/open/floor/wood, -/area/library) +/obj/item/lighter, +/obj/item/restraints/handcuffs, +/turf/open/floor/carpet, +/area/security/detectives_office) "aVU" = ( /obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -20587,6 +21464,7 @@ /area/chapel/main) "aWh" = ( /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/obj/item/beacon, /turf/open/floor/plasteel, /area/hallway/secondary/exit) "aWi" = ( @@ -20629,6 +21507,14 @@ "aWn" = ( /obj/structure/closet/wardrobe/black, /obj/item/clothing/shoes/jackboots, +/obj/item/clothing/under/janimaid, +/obj/item/clothing/under/janimaid, +/obj/item/clothing/under/maid, +/obj/item/clothing/under/maid, +/obj/item/clothing/accessory/maidapron, +/obj/item/clothing/accessory/maidapron, +/obj/item/clothing/head/beret/black, +/obj/item/clothing/head/beret/black, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aWo" = ( @@ -20689,9 +21575,9 @@ /area/maintenance/port) "aWw" = ( /obj/machinery/power/apc{ + areastring = "/area/storage/art"; dir = 1; name = "Art Storage"; - areastring = "/area/storage/art"; pixel_y = 24 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -20721,9 +21607,9 @@ /area/crew_quarters/toilet/locker) "aWz" = ( /obj/machinery/power/apc{ + areastring = "/area/storage/emergency/port"; dir = 1; name = "Port Emergency Storage APC"; - areastring = "/area/storage/emergency/port"; pixel_y = 24 }, /obj/structure/cable{ @@ -20741,9 +21627,21 @@ /turf/open/floor/plating, /area/maintenance/port) "aWB" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plating, -/area/maintenance/port) +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) "aWC" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -20971,9 +21869,8 @@ /area/bridge) "aWW" = ( /obj/machinery/power/apc/highcap/five_k{ - dir = 2; - name = "Bridge APC"; areastring = "/area/bridge"; + name = "Bridge APC"; pixel_y = -24 }, /obj/structure/cable, @@ -21124,51 +22021,51 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "aXi" = ( -/obj/machinery/light{ +/obj/machinery/vending/clothing, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"aXj" = ( +/obj/structure/reagent_dispensers/water_cooler, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = -31 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel, -/area/crew_quarters/bar) -"aXj" = ( -/obj/structure/table/reinforced, -/obj/item/lighter, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) +/area/crew_quarters/dorms) "aXk" = ( -/obj/structure/table/reinforced, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 32 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/obj/item/book/manual/wiki/barman_recipes, -/obj/item/reagent_containers/rag, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/door/window/eastleft{ + name = "Blue Corner" + }, +/obj/effect/turf_decal/tile/blue{ dir = 1 }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, /turf/open/floor/plasteel, -/area/crew_quarters/bar) +/area/crew_quarters/locker) "aXl" = ( -/obj/machinery/door/window/southright{ - name = "Bar Door"; - req_one_access_txt = "25;28" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "2-8" }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 +/obj/structure/disposalpipe/junction, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel, -/area/crew_quarters/bar) +/area/crew_quarters/dorms) "aXm" = ( /obj/effect/landmark/start/cook, /turf/open/floor/plasteel/cafeteria, @@ -21204,29 +22101,33 @@ /turf/open/floor/plasteel, /area/hallway/primary/starboard) "aXr" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 }, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aXs" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 +/obj/machinery/door/airlock/maintenance{ + name = "Detective Maintenance"; + req_access_txt = "4" }, -/turf/open/floor/plasteel, -/area/crew_quarters/locker) +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/port) "aXt" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 2 +/obj/machinery/power/apc{ + areastring = "/area/security/detectives_office"; + dir = 4; + name = "Detective's Office APC"; + pixel_x = 24 }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - pixel_x = -3; - pixel_y = 3 +/obj/structure/cable{ + icon_state = "0-8" }, -/turf/open/floor/plasteel, -/area/crew_quarters/locker) +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) "aXu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -21234,20 +22135,45 @@ /turf/open/floor/carpet, /area/library) "aXv" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/structure/window{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 }, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aXw" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 }, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aXx" = ( -/obj/structure/closet/secure_closet/personal, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aXy" = ( @@ -21268,10 +22194,19 @@ /turf/open/floor/carpet, /area/chapel/main) "aXA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/corner{ +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/structure/window{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ dir = 1 }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aXB" = ( @@ -21305,19 +22240,24 @@ /turf/closed/wall, /area/quartermaster/warehouse) "aXF" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/tile/neutral{ +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +/obj/item/paper_bin/bundlenatural{ + pixel_x = 6; + pixel_y = 4 }, -/obj/effect/turf_decal/tile/neutral{ +/obj/item/pen/fountain{ + pixel_x = 6 + }, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/fitness) +/obj/item/pen/fourcolor, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) "aXG" = ( /obj/machinery/light{ dir = 4 @@ -21330,6 +22270,10 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/exit) +"aXH" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "aXI" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -21379,15 +22323,16 @@ /turf/open/floor/wood, /area/security/vacantoffice) "aXO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plasteel, -/area/crew_quarters/bar) +/area/crew_quarters/dorms) "aXP" = ( /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, @@ -21467,9 +22412,9 @@ /area/security/vacantoffice) "aYa" = ( /obj/machinery/power/apc{ + areastring = "/area/maintenance/port"; dir = 8; name = "Port Maintenance APC"; - areastring = "/area/maintenance/port"; pixel_x = -27; pixel_y = 2 }, @@ -21498,12 +22443,12 @@ /turf/open/floor/plating, /area/maintenance/port) "aYc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, /turf/closed/wall, /area/quartermaster/warehouse) "aYd" = ( @@ -21535,19 +22480,17 @@ /area/construction) "aYh" = ( /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 10 }, -/obj/machinery/light/small{ - dir = 4 +/obj/machinery/button/door{ + id = "kanyewest"; + name = "Privacy Shutters"; + pixel_y = 24 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/port) +/obj/structure/rack, +/obj/item/storage/briefcase, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) "aYi" = ( /obj/structure/closet/secure_closet/detective, /obj/structure/disposalpipe/segment{ @@ -21559,15 +22502,8 @@ /turf/open/floor/plasteel/grimy, /area/security/detectives_office) "aYj" = ( -/obj/structure/table/wood, -/obj/item/taperecorder, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/button/door{ - id = "kanyewest"; - name = "Privacy Shutters"; - pixel_y = 24 +/obj/machinery/light/small{ + dir = 8 }, /turf/open/floor/plasteel/grimy, /area/security/detectives_office) @@ -21764,9 +22700,8 @@ /area/hallway/primary/central) "aYF" = ( /obj/machinery/power/apc{ - dir = 2; - name = "Central Hall APC"; areastring = "/area/hallway/primary/central"; + name = "Central Hall APC"; pixel_y = -24 }, /obj/structure/cable, @@ -21784,28 +22719,24 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "aYH" = ( -/obj/structure/table, -/obj/item/razor, -/obj/structure/window{ - dir = 1 +/obj/structure/table/wood, +/obj/item/paper/fluff{ + info = "Renovation Notice

The bar layout for the station is very old. We've decided to give it a facelift after our partnership with IKEA Intergalactic?.
  • We added some sweet retro arcade machines and much more seating area. We removed the stage since it hasn't ever been used.
  • You can run this place like a restaurant now that you have tables. Go whip up a menu with the Chef. You have a condiments table and your Requests Console has been moved so a noticeboard can be placed there. Take tickets from customers and pin them on the noticeboard for the Chef.
  • We hope you like the new bar!"; + name = "Renovation Notice - Bar"; + pixel_x = -5; + pixel_y = 3 }, -/obj/effect/turf_decal/tile/blue{ +/obj/item/reagent_containers/food/drinks/shaker, +/obj/item/stack/spacecash/c100, +/obj/item/stack/spacecash/c100, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aYI" = ( +/obj/structure/chair/comfy/black{ dir = 4 }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/locker) -"aYI" = ( -/obj/structure/chair/stool/bar, -/obj/effect/landmark/start/assistant, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, /turf/open/floor/plasteel, -/area/crew_quarters/bar) +/area/crew_quarters/dorms) "aYJ" = ( /obj/machinery/light_switch{ pixel_y = -25 @@ -21853,9 +22784,9 @@ /turf/open/floor/plasteel, /area/hydroponics) "aYP" = ( -/obj/structure/reagent_dispensers/watertank/high, +/obj/structure/table/wood/poker, /turf/open/floor/plasteel, -/area/hydroponics) +/area/crew_quarters/dorms) "aYQ" = ( /obj/machinery/hydroponics/constructable, /obj/effect/turf_decal/tile/green{ @@ -21872,25 +22803,24 @@ /turf/open/floor/plasteel, /area/hydroponics) "aYS" = ( -/obj/structure/closet, -/obj/item/clothing/under/suit_jacket/female{ - pixel_x = 3; - pixel_y = 1 +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1; + pixel_x = 5 }, -/obj/item/clothing/under/suit_jacket/really_black{ - pixel_x = -2 - }, -/obj/structure/window{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ +/obj/machinery/light/small{ dir = 4 }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 +/obj/structure/table/glass, +/obj/item/razor{ + pixel_x = 2; + pixel_y = 3 }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/locker) +/obj/item/reagent_containers/rag/towel/random, +/obj/item/reagent_containers/rag/towel/random, +/obj/item/reagent_containers/rag/towel/random, +/obj/item/reagent_containers/rag/towel/random, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/toilet) "aYT" = ( /obj/machinery/camera{ c_tag = "Hydroponics South"; @@ -21910,11 +22840,17 @@ /turf/open/floor/carpet, /area/library) "aYX" = ( -/obj/structure/window/reinforced{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ dir = 8 }, /turf/open/floor/plasteel, @@ -21926,16 +22862,15 @@ /turf/open/floor/carpet, /area/library) "aYZ" = ( -/obj/structure/table/wood, -/obj/item/storage/box/evidence, -/obj/item/hand_labeler{ - pixel_x = 5 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/closet/crate/freezer, +/obj/machinery/light/small{ + dir = 8 }, -/turf/open/floor/plasteel/grimy, -/area/security/detectives_office) +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) "aZa" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 @@ -21943,16 +22878,10 @@ /turf/open/floor/plasteel/grimy, /area/security/detectives_office) "aZb" = ( -/obj/machinery/camera{ - c_tag = "Bar South"; - dir = 1 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, +/obj/structure/table/wood/poker, +/obj/item/toy/cards/deck, /turf/open/floor/plasteel, -/area/crew_quarters/bar) +/area/crew_quarters/dorms) "aZc" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -22043,15 +22972,14 @@ /turf/open/floor/wood, /area/security/vacantoffice) "aZo" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet/locker) +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) "aZp" = ( /obj/structure/rack, /obj/item/electronics/apc, @@ -22086,41 +23014,77 @@ /turf/open/floor/plating, /area/maintenance/port) "aZt" = ( -/obj/structure/toilet{ - pixel_y = 8 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1; + pixel_x = 5 }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet/locker) +/obj/machinery/light/small, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/toilet) "aZu" = ( /obj/machinery/photocopier, /turf/open/floor/wood, /area/bridge/meeting_room) "aZv" = ( -/obj/machinery/door/airlock{ - name = "Unit 1" +/obj/machinery/firealarm{ + dir = 8; + pixel_x = 24 }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet/locker) -"aZw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet/locker) -"aZx" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ +/obj/structure/table, +/obj/machinery/chem_dispenser/drinks/beer{ dir = 8 }, -/turf/open/floor/plasteel/cafeteria, +/obj/item/radio/intercom{ + pixel_y = 25 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aZw" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/machinery/requests_console{ + department = "Bar"; + departmentType = 2; + pixel_x = -30; + pixel_y = 45; + receive_ore_updates = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"aZx" = ( +/obj/structure/closet{ + name = "Suit Closet" + }, +/obj/item/clothing/under/suit_jacket/white, +/obj/item/clothing/under/suit_jacket/tan, +/obj/item/clothing/under/suit_jacket/red, +/obj/item/clothing/under/suit_jacket/really_black, +/obj/item/clothing/under/suit_jacket/navy, +/obj/item/clothing/under/suit_jacket/green, +/obj/item/clothing/under/suit_jacket/female, +/obj/item/clothing/under/suit_jacket/checkered, +/obj/item/clothing/under/suit_jacket/charcoal, +/obj/item/clothing/under/suit_jacket/burgundy, +/obj/item/clothing/under/suit_jacket, +/obj/item/clothing/under/lawyer/black, +/obj/item/clothing/under/lawyer/blacksuit, +/obj/item/clothing/under/lawyer/blue, +/obj/item/clothing/under/lawyer/bluesuit, +/obj/item/clothing/under/lawyer/female, +/obj/item/clothing/under/lawyer/purpsuit, +/obj/item/clothing/under/lawyer/really_black, +/obj/item/clothing/under/lawyer/red, +/turf/open/floor/plasteel, /area/crew_quarters/locker) "aZy" = ( /obj/machinery/camera{ - c_tag = "Conference Room"; - dir = 2 + c_tag = "Conference Room" }, /turf/open/floor/wood, /area/bridge/meeting_room) @@ -22281,53 +23245,50 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "aZZ" = ( -/obj/machinery/vending/cigarette, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"baa" = ( +/obj/structure/chair/comfy/brown{ dir = 1 }, /turf/open/floor/plasteel, -/area/crew_quarters/bar) +/area/crew_quarters/dorms) "bab" = ( -/obj/machinery/light, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ +/obj/structure/chair/comfy/black{ dir = 1 }, /turf/open/floor/plasteel, -/area/crew_quarters/bar) +/area/crew_quarters/dorms) "bac" = ( -/obj/machinery/newscaster{ - pixel_y = -28 +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 +/obj/effect/turf_decal/tile/neutral, +/obj/structure/cable{ + icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/crew_quarters/bar) +/area/crew_quarters/dorms) "bad" = ( -/obj/machinery/light, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) +/obj/structure/rack, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/effect/decal/cleanable/cobweb, +/obj/item/clothing/under/color/grey, +/turf/open/floor/plating, +/area/maintenance/port/aft) "bae" = ( -/obj/structure/noticeboard{ - pixel_y = -27 +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "baf" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -22341,28 +23302,29 @@ /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bag" = ( -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "bah" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = -30 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "bai" = ( -/obj/machinery/light/small, +/obj/machinery/camera{ + c_tag = "Bar"; + dir = 8 + }, +/obj/structure/table, +/obj/machinery/chem_dispenser/drinks{ + dir = 8 + }, /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ dir = 1 @@ -22395,7 +23357,7 @@ pixel_y = 2 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /turf/open/floor/plasteel, @@ -22458,10 +23420,9 @@ /turf/open/floor/wood, /area/library) "bat" = ( -/obj/structure/table/wood, -/obj/item/pen, -/turf/open/floor/wood, -/area/library) +/obj/structure/reagent_dispensers/keg/semen, +/turf/open/floor/plating, +/area/maintenance/bar) "bau" = ( /obj/structure/chair/comfy/black{ dir = 4 @@ -22479,15 +23440,16 @@ /turf/open/floor/wood, /area/library) "baw" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/item/reagent_containers/food/snacks/pie/cream, +/obj/structure/noticeboard{ + desc = "Tickets for food orders will be placed here. The Chef should make the order and hand it to a waiter, waitress or just let the barkeep serve it."; + name = "Food Orders"; + pixel_y = 26 }, -/obj/structure/mirror{ - pixel_x = 28 - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet/locker) +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) "bax" = ( /obj/structure/chair/comfy/black{ dir = 4 @@ -22526,9 +23488,9 @@ /area/hallway/secondary/exit) "baD" = ( /obj/machinery/power/apc{ + areastring = "/area/hallway/secondary/exit"; dir = 8; name = "Escape Hallway APC"; - areastring = "/area/hallway/secondary/exit"; pixel_x = -25 }, /obj/structure/cable{ @@ -22601,9 +23563,9 @@ icon_state = "1-2" }, /obj/machinery/power/apc{ + areastring = "/area/crew_quarters/toilet/locker"; dir = 4; name = "Locker Restrooms APC"; - areastring = "/area/crew_quarters/toilet/locker"; pixel_x = 27; pixel_y = 2 }, @@ -22619,8 +23581,28 @@ /turf/open/floor/plating, /area/maintenance/port) "baO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/freezer, +/obj/structure/toilet{ + dir = 4 + }, +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/structure/sink{ + dir = 1; + pixel_y = 25 + }, +/obj/machinery/button/door{ + id = "LockerShitter1"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 14; + pixel_y = 38; + specialfunctions = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, /area/crew_quarters/toilet/locker) "baP" = ( /obj/structure/table/wood, @@ -22811,24 +23793,28 @@ /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet/locker) "bbr" = ( -/obj/machinery/camera{ - c_tag = "Locker Room South"; +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/window, +/obj/structure/window{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, /turf/open/floor/plasteel, /area/crew_quarters/locker) "bbs" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/light, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/xmastree, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/locker) +/turf/open/floor/wood, +/area/crew_quarters/bar) "bbt" = ( /obj/structure/closet/crate, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -22836,9 +23822,9 @@ /area/quartermaster/warehouse) "bbu" = ( /obj/machinery/power/apc{ + areastring = "/area/crew_quarters/heads/captain"; dir = 1; name = "Captain's Office APC"; - areastring = "/area/crew_quarters/heads/captain"; pixel_y = 24 }, /obj/structure/cable{ @@ -22866,7 +23852,7 @@ /obj/machinery/door/airlock/public/glass{ name = "Diner" }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/crew_quarters/bar) "bby" = ( /obj/structure/sign/barsign, @@ -22878,14 +23864,14 @@ }, /area/hallway/primary/starboard) "bbA" = ( -/obj/machinery/camera{ - c_tag = "Starboard Primary Hallway 2"; - dir = 2 +/obj/machinery/vending/assist, +/obj/structure/sign/poster/contraband/grey_tide{ + desc = "A poster promoting a regression to ape-like intelligence for Assistants, suggesting they break, loot and murder enough to make even a caveman blush."; + pixel_x = -32; + poster_item_desc = "Nanotrasen does not condone such messages. Please don't regress to ape-level intelligence as this poster suggests." }, -/turf/open/floor/plasteel/white/corner{ - dir = 1 - }, -/area/hallway/primary/starboard) +/turf/open/floor/plasteel, +/area/storage/primary) "bbB" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -22915,7 +23901,7 @@ /area/chapel/main) "bbG" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/red{ @@ -22934,9 +23920,9 @@ /area/hallway/secondary/exit) "bbI" = ( /obj/machinery/power/apc{ + areastring = "/area/security/vacantoffice"; dir = 8; name = "Vacant Office APC"; - areastring = "/area/security/vacantoffice"; pixel_x = -24 }, /obj/structure/cable{ @@ -22963,9 +23949,10 @@ /area/maintenance/port) "bbL" = ( /obj/machinery/door/airlock{ - name = "Unit 2" + id_tag = "LockerShitter1"; + name = "Unit 1" }, -/turf/open/floor/plasteel/freezer, +/turf/open/floor/mineral/titanium/blue, /area/crew_quarters/toilet/locker) "bbM" = ( /obj/item/book/manual/wiki/security_space_law, @@ -22973,16 +23960,20 @@ /turf/open/floor/carpet, /area/bridge/meeting_room) "bbN" = ( -/obj/machinery/washing_machine, -/obj/machinery/light, -/obj/effect/turf_decal/tile/blue{ - dir = 4 +/obj/machinery/button/door{ + id = "Bath3"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 14; + pixel_y = 38; + specialfunctions = 4 }, -/obj/effect/turf_decal/tile/blue{ +/obj/machinery/light/small{ dir = 8 }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/locker) +/obj/machinery/recharge_station, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/toilet) "bbO" = ( /obj/machinery/washing_machine, /obj/effect/turf_decal/tile/blue{ @@ -23000,13 +23991,20 @@ /turf/open/floor/plasteel, /area/quartermaster/warehouse) "bbQ" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/drinks/bottle/whiskey{ - pixel_x = 3 +/obj/item/paper_bin/bundlenatural{ + pixel_x = 6; + pixel_y = 4 }, -/obj/item/lighter, -/turf/open/floor/carpet, -/area/security/detectives_office) +/obj/item/paper_bin{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/pen/fountain, +/obj/structure/table, +/obj/item/pen/fourcolor, +/obj/item/stamp/hop, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) "bbR" = ( /turf/open/floor/plasteel, /area/quartermaster/office) @@ -23023,15 +24021,22 @@ /turf/open/floor/carpet, /area/security/detectives_office) "bbU" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Detective Maintenance"; - req_access_txt = "4" +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, -/turf/open/floor/plating, -/area/maintenance/port) +/obj/effect/turf_decal/tile/blue, +/obj/structure/window, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) "bbV" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /turf/open/floor/plasteel, @@ -23184,31 +24189,46 @@ /turf/open/floor/plasteel, /area/hallway/primary/starboard) "bcr" = ( -/obj/machinery/camera{ - c_tag = "Starboard Primary Hallway"; - dir = 2 +/obj/machinery/smartfridge/disks{ + pixel_y = 2 + }, +/obj/structure/table, +/obj/item/radio/intercom{ + pixel_y = 25 }, /turf/open/floor/plasteel, -/area/hallway/primary/starboard) +/area/hydroponics) "bcs" = ( /obj/machinery/firealarm{ - dir = 2; pixel_y = 24 }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) "bct" = ( -/obj/effect/landmark/xeno_spawn, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/mirror{ + pixel_x = 28 + }, /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet/locker) "bcu" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Locker Room Maintenance"; - req_access_txt = "12" +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/maintenance/port) +/obj/structure/window, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) "bcv" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -5; @@ -23217,13 +24237,26 @@ /turf/open/floor/plasteel, /area/hallway/primary/starboard) "bcw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/structure/window, +/obj/structure/window{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel, /area/crew_quarters/locker) "bcx" = ( /obj/machinery/camera{ - c_tag = "Starboard Primary Hallway 5"; - dir = 2 + c_tag = "Starboard Primary Hallway 5" }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) @@ -23296,12 +24329,13 @@ /turf/open/floor/plating, /area/maintenance/port) "bcJ" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 +/obj/machinery/door/airlock{ + desc = "To keep the station within regulations, space IKEA requires one storage cupboard for their Nanotrasen partnership to continue."; + id_tag = "MaintDorm1"; + name = "Furniture Storage" }, -/obj/structure/closet/crate/freezer, -/turf/open/floor/plasteel, -/area/quartermaster/warehouse) +/turf/open/floor/plasteel/dark, +/area/maintenance/port) "bcK" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance, @@ -23329,12 +24363,21 @@ /turf/open/floor/carpet, /area/bridge/meeting_room) "bcO" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet/locker) +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/theatre) "bcP" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 @@ -23354,21 +24397,20 @@ /turf/open/floor/plasteel, /area/quartermaster/warehouse) "bcS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/effect/landmark/blobstart, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet/locker) +"bcT" = ( +/obj/structure/window/reinforced{ + dir = 8 }, +/obj/machinery/light, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light/small{ - dir = 4 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, /turf/open/floor/plasteel, -/area/quartermaster/warehouse) -"bcT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/quartermaster/warehouse) +/area/crew_quarters/locker) "bcU" = ( /obj/structure/table/wood, /turf/open/floor/wood, @@ -23382,6 +24424,14 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/grimy, /area/security/detectives_office) +"bcW" = ( +/obj/structure/table/wood, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) "bcX" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -23413,18 +24463,14 @@ /area/bridge/meeting_room) "bdb" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/white/side{ - dir = 2 - }, +/turf/open/floor/plasteel/white/side, /area/hallway/primary/starboard) "bdc" = ( /obj/structure/extinguisher_cabinet{ pixel_y = -30 }, /obj/machinery/light, -/turf/open/floor/plasteel/white/corner{ - dir = 2 - }, +/turf/open/floor/plasteel/white/corner, /area/hallway/primary/starboard) "bdd" = ( /obj/machinery/vending/cola/random, @@ -23658,11 +24704,32 @@ /turf/open/floor/plating, /area/maintenance/port) "bdE" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/structure/closet/crate/wooden/toy, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ dir = 8 }, -/turf/open/floor/plasteel/grimy, -/area/security/detectives_office) +/obj/structure/sign/poster/contraband/clown{ + pixel_y = -32 + }, +/obj/structure/sign/poster/contraband/clown{ + pixel_y = -32 + }, +/obj/structure/sign/poster/contraband/clown{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/theatre) "bdF" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 @@ -23686,8 +24753,15 @@ /turf/open/floor/carpet, /area/bridge/meeting_room) "bdJ" = ( -/obj/machinery/door/airlock{ - name = "Unit 3" +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/mirror{ + pixel_x = 28 }, /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet/locker) @@ -23699,15 +24773,20 @@ /turf/open/floor/carpet, /area/bridge/meeting_room) "bdL" = ( -/obj/effect/landmark/blobstart, -/obj/item/clothing/suit/ianshirt, -/obj/structure/closet, -/turf/open/floor/plating, -/area/maintenance/port) +/obj/machinery/camera{ + c_tag = "Locker Room South"; + dir = 8 + }, +/obj/structure/closet/secure_closet/personal, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) "bdM" = ( -/obj/item/latexballon, -/turf/open/floor/plating, -/area/maintenance/port) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) "bdN" = ( /obj/machinery/door/airlock/medical{ name = "Morgue"; @@ -23755,9 +24834,9 @@ /area/quartermaster/warehouse) "bdT" = ( /obj/machinery/power/apc{ + areastring = "/area/maintenance/disposal"; dir = 8; name = "Disposal APC"; - areastring = "/area/maintenance/disposal"; pixel_x = -24 }, /obj/structure/cable{ @@ -23772,13 +24851,39 @@ /obj/structure/closet/crate/medical, /turf/open/floor/plasteel, /area/quartermaster/warehouse) +"bdV" = ( +/obj/structure/toilet{ + dir = 4 + }, +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/structure/sink{ + dir = 1; + pixel_y = 25 + }, +/obj/machinery/button/door{ + id = "LockerShitter2"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 14; + pixel_y = 38; + specialfunctions = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/toilet/locker) "bdW" = ( -/obj/item/clothing/gloves/color/rainbow, -/obj/item/clothing/head/soft/rainbow, -/obj/item/clothing/shoes/sneakers/rainbow, -/obj/item/clothing/under/color/rainbow, -/turf/open/floor/plating, -/area/maintenance/port) +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) "bdX" = ( /obj/item/storage/fancy/donut_box, /obj/structure/table, @@ -23838,9 +24943,8 @@ /area/ai_monitored/turret_protected/ai_upload) "bed" = ( /obj/machinery/power/apc/highcap/five_k{ - dir = 2; - name = "Upload APC"; areastring = "/area/ai_monitored/turret_protected/ai_upload"; + name = "Upload APC"; pixel_y = -24 }, /obj/structure/cable, @@ -23874,9 +24978,7 @@ /obj/item/aiModule/supplied/oxygen, /obj/item/aiModule/zeroth/oneHuman, /obj/machinery/door/window{ - base_state = "left"; dir = 8; - icon_state = "left"; name = "High-Risk Modules"; req_access_txt = "20" }, @@ -23994,12 +25096,12 @@ /turf/open/floor/plasteel, /area/hallway/primary/starboard) "bev" = ( -/obj/machinery/light, -/obj/effect/turf_decal/tile/blue{ - dir = 8 +/obj/structure/chair/stool{ + pixel_y = 8 }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "bew" = ( /obj/structure/cable{ icon_state = "2-4" @@ -24090,9 +25192,7 @@ /area/quartermaster/sorting) "beG" = ( /obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/red{ - dir = 2 - }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/plasteel, /area/hallway/secondary/exit) "beH" = ( @@ -24227,7 +25327,7 @@ layer = 2.9 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/structure/table/reinforced, @@ -24261,14 +25361,17 @@ /area/medical/morgue) "beZ" = ( /obj/machinery/mineral/stacking_unit_console{ - dir = 2; machinedir = 8 }, /turf/closed/wall, /area/maintenance/disposal) "bfa" = ( -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet/locker) +/obj/structure/chair/sofa/left{ + dir = 1 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/wood, +/area/crew_quarters/bar) "bfb" = ( /obj/structure/sign/warning/vacuum/external{ pixel_y = 32 @@ -24281,9 +25384,9 @@ /area/chapel/main) "bfc" = ( /obj/machinery/power/apc{ + areastring = "/area/crew_quarters/locker"; dir = 1; name = "Locker Room APC"; - areastring = "/area/crew_quarters/locker"; pixel_y = 24 }, /obj/structure/cable{ @@ -24302,9 +25405,17 @@ /turf/open/floor/plating, /area/maintenance/port) "bfe" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plating, -/area/maintenance/port) +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/window{ + dir = 1 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/locker) "bff" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 @@ -24346,9 +25457,8 @@ dir = 9 }, /obj/machinery/power/apc{ - dir = 2; - name = "Cargo Bay APC"; areastring = "/area/quartermaster/storage"; + name = "Cargo Bay APC"; pixel_x = 1; pixel_y = -24 }, @@ -24534,9 +25644,8 @@ /area/hallway/primary/starboard) "bfP" = ( /obj/machinery/power/apc{ - dir = 2; - name = "Starboard Primary Hallway APC"; areastring = "/area/hallway/primary/starboard"; + name = "Starboard Primary Hallway APC"; pixel_y = -24 }, /obj/structure/cable, @@ -24684,13 +25793,17 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "bgi" = ( -/obj/machinery/camera{ - c_tag = "Arrivals Bay 3 & 4"; - dir = 1 +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/poster/contraband/space_up{ + pixel_y = -32 }, -/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, -/area/hallway/secondary/entry) +/area/hallway/primary/central) "bgj" = ( /obj/machinery/conveyor{ dir = 8; @@ -24705,6 +25818,13 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) +"bgl" = ( +/obj/machinery/door/airlock{ + id_tag = "LockerShitter2"; + name = "Unit 2" + }, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/toilet/locker) "bgm" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -24726,9 +25846,9 @@ icon_state = "1-2" }, /obj/machinery/power/apc{ + areastring = "/area/science/robotics/mechbay"; dir = 4; name = "Mech Bay APC"; - areastring = "/area/science/robotics/mechbay"; pixel_x = 26 }, /obj/structure/cable{ @@ -24755,18 +25875,16 @@ /turf/open/floor/plating, /area/maintenance/port) "bgr" = ( -/obj/machinery/door/airlock{ - name = "Unit 4" +/obj/machinery/camera{ + c_tag = "Locker Room Toilets"; + dir = 8 }, /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet/locker) "bgs" = ( -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet/locker) +/obj/item/chair/wood, +/turf/open/floor/plating, +/area/maintenance/port) "bgt" = ( /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, @@ -24796,6 +25914,11 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/port) +"bgx" = ( +/obj/structure/closet/wardrobe/cargotech, +/obj/item/radio/headset/headset_cargo, +/turf/open/floor/plasteel, +/area/quartermaster/storage) "bgy" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 @@ -24989,16 +26112,16 @@ /area/crew_quarters/heads/captain) "bgY" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/plasteel, /area/hallway/primary/central) "bgZ" = ( /obj/machinery/power/apc{ + areastring = "/area/medical/chemistry"; dir = 1; name = "Chemistry APC"; - areastring = "/area/medical/chemistry"; pixel_y = 24 }, /obj/structure/cable{ @@ -25022,11 +26145,9 @@ /area/medical/chemistry) "bhc" = ( /obj/machinery/camera{ - c_tag = "Chemistry"; - dir = 2 + c_tag = "Chemistry" }, /obj/machinery/firealarm{ - dir = 2; pixel_y = 24 }, /obj/machinery/chem_heater, @@ -25068,8 +26189,7 @@ /area/security/checkpoint/medical) "bhj" = ( /obj/machinery/camera{ - c_tag = "Security Post - Medbay"; - dir = 2 + c_tag = "Security Post - Medbay" }, /obj/machinery/requests_console{ department = "Security"; @@ -25146,9 +26266,9 @@ /area/medical/morgue) "bhp" = ( /obj/machinery/power/apc{ + areastring = "/area/medical/morgue"; dir = 1; name = "Morgue APC"; - areastring = "/area/medical/morgue"; pixel_y = 24 }, /obj/structure/cable{ @@ -25358,6 +26478,11 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) +"bhK" = ( +/obj/structure/table/wood/fancy/royalblue, +/obj/item/crowbar/red, +/turf/open/floor/plating, +/area/maintenance/port) "bhL" = ( /obj/machinery/mineral/stacking_machine{ input_dir = 1; @@ -25387,12 +26512,32 @@ }, /turf/open/floor/plating, /area/maintenance/port) -"bhQ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +"bhP" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/mineral/wood/fifty{ + amount = 20 }, -/turf/closed/wall, -/area/crew_quarters/toilet/locker) +/turf/open/floor/plating, +/area/maintenance/port) +"bhQ" = ( +/obj/structure/closet, +/obj/item/stack/tile/carpet/royalblue{ + amount = 24 + }, +/obj/item/stack/tile/carpet/green{ + amount = 24 + }, +/obj/item/stack/tile/carpet/purple{ + amount = 24 + }, +/obj/item/stack/tile/carpet/orange{ + amount = 24 + }, +/obj/item/stack/tile/wood{ + amount = 24 + }, +/turf/open/floor/plating, +/area/maintenance/port) "bhR" = ( /obj/structure/grille, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -25453,7 +26598,6 @@ /area/quartermaster/storage) "bhZ" = ( /obj/machinery/door/window/eastleft{ - dir = 4; icon_state = "right"; name = "Incoming Mail"; req_access_txt = "50" @@ -25475,8 +26619,6 @@ dir = 8 }, /obj/item/radio/intercom{ - freerange = 0; - frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29 }, @@ -25630,9 +26772,16 @@ /turf/open/floor/plasteel/white, /area/medical/chemistry) "bit" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel/white, -/area/medical/medbay/central) +/obj/machinery/light, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/bedsheetbin/color, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/locker) "biu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/white, @@ -25770,6 +26919,19 @@ "biL" = ( /turf/open/floor/plasteel/white, /area/science/robotics/lab) +"biM" = ( +/obj/machinery/button/door{ + desc = "Alright, GAMER! Want to take your PWRGAME addiction to the MAX? Just smash this button with your chubby chetto encrusted hands an- oh, you broke the switch. Good job, idiot."; + id = "RIPFUN"; + name = "Powerful Gamer Toggle"; + normaldoorcontrol = 1; + pixel_x = -24; + pixel_y = 7; + specialfunctions = 4 + }, +/obj/structure/table_frame/wood, +/turf/open/floor/plating, +/area/maintenance/port) "biN" = ( /obj/effect/turf_decal/tile/red{ dir = 1 @@ -25782,11 +26944,9 @@ "biO" = ( /obj/machinery/camera{ c_tag = "Robotics Lab"; - dir = 2; network = list("ss13","rd") }, /obj/machinery/button/door{ - dir = 2; id = "robotics"; name = "Shutters Control Button"; pixel_x = 6; @@ -25833,8 +26993,7 @@ /area/science/research) "biS" = ( /obj/machinery/camera{ - c_tag = "Research Division Access"; - dir = 2 + c_tag = "Research Division Access" }, /obj/structure/sink{ dir = 4; @@ -25880,12 +27039,10 @@ "biX" = ( /obj/machinery/camera{ c_tag = "Research and Development"; - dir = 2; network = list("ss13","rd"); pixel_x = 22 }, /obj/machinery/button/door{ - dir = 2; id = "rnd"; name = "Shutters Control Button"; pixel_x = -6; @@ -25905,6 +27062,10 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/starboard) +"biZ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plating, +/area/maintenance/port) "bja" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -26136,6 +27297,10 @@ /obj/structure/closet/wardrobe/black, /turf/open/floor/plating, /area/maintenance/central) +"bjD" = ( +/obj/structure/bed, +/turf/open/floor/plating, +/area/maintenance/port) "bjE" = ( /obj/machinery/airalarm{ dir = 4; @@ -26271,9 +27436,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, -/obj/effect/turf_decal/tile/blue{ - dir = 2 - }, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/plasteel/white, /area/medical/medbay/central) "bjV" = ( @@ -26286,6 +27449,11 @@ }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) +"bjW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/structure/table/wood/fancy/purple, +/turf/open/floor/plating, +/area/maintenance/port) "bjX" = ( /obj/structure/table, /obj/machinery/recharger{ @@ -26330,8 +27498,8 @@ "bkb" = ( /obj/machinery/camera{ c_tag = "Medbay Morgue"; - network = list("ss13","medbay"); - dir = 8 + dir = 8; + network = list("ss13","medbay") }, /obj/machinery/airalarm{ dir = 8; @@ -26347,10 +27515,23 @@ /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, /area/storage/emergency/starboard) +"bke" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/junction/flip, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "bkf" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/storage/emergency/starboard) +"bkg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/port) "bkh" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/circuit, @@ -26375,7 +27556,6 @@ "bkj" = ( /obj/structure/closet/emcloset, /obj/machinery/airalarm{ - dir = 2; pixel_y = 24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -26391,6 +27571,22 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/white, /area/science/robotics/lab) +"bkl" = ( +/obj/effect/turf_decal/tile/blue{ + alpha = 255 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + alpha = 255; + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) "bkm" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -26711,9 +27907,9 @@ /area/maintenance/central) "bkX" = ( /obj/machinery/power/apc{ + areastring = "/area/bridge/meeting_room"; dir = 4; name = "Conference Room APC"; - areastring = "/area/bridge/meeting_room"; pixel_x = 24 }, /obj/structure/cable{ @@ -26870,8 +28066,8 @@ /obj/structure/table/reinforced, /obj/machinery/camera{ c_tag = "Medbay Foyer"; - network = list("ss13","medbay"); - dir = 8 + dir = 8; + network = list("ss13","medbay") }, /obj/machinery/cell_charger, /turf/open/floor/plasteel/white, @@ -26884,9 +28080,9 @@ icon_state = "4-8" }, /obj/machinery/power/apc{ + areastring = "/area/storage/emergency/starboard"; dir = 1; name = "Starboard Emergency Storage APC"; - areastring = "/area/storage/emergency/starboard"; pixel_y = 24 }, /obj/structure/cable{ @@ -26899,9 +28095,9 @@ /area/maintenance/department/medical/morgue) "blp" = ( /obj/machinery/power/apc{ + areastring = "/area/security/checkpoint/medical"; dir = 8; name = "Medbay Security APC"; - areastring = "/area/security/checkpoint/medical"; pixel_x = -25 }, /obj/structure/cable{ @@ -26948,12 +28144,9 @@ /turf/open/floor/plasteel, /area/science/robotics/mechbay) "blt" = ( -/obj/machinery/recharge_station, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/science/robotics/mechbay) +/obj/structure/sign/poster/contraband/tools, +/turf/closed/wall, +/area/storage/primary) "blu" = ( /obj/machinery/computer/mech_bay_power_console{ dir = 4 @@ -27050,8 +28243,6 @@ /obj/item/healthanalyzer, /obj/item/healthanalyzer, /obj/item/radio/intercom{ - freerange = 0; - frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29 }, @@ -27113,6 +28304,17 @@ /obj/effect/landmark/start/roboticist, /turf/open/floor/plasteel, /area/science/robotics/lab) +"blN" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + alpha = 255; + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) "blO" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, @@ -27210,7 +28412,7 @@ }, /obj/item/stack/cable_coil, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/plasteel/white, @@ -27305,6 +28507,16 @@ }, /turf/open/floor/plasteel, /area/quartermaster/sorting) +"bml" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port) "bmm" = ( /obj/structure/cable{ icon_state = "1-2" @@ -27487,7 +28699,6 @@ "bmJ" = ( /obj/item/radio/intercom{ broadcasting = 1; - freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; @@ -27495,7 +28706,7 @@ }, /obj/machinery/light, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /turf/open/floor/plasteel/white, @@ -27646,6 +28857,38 @@ }, /turf/closed/wall/r_wall, /area/science/robotics/mechbay) +"bnd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + alpha = 255; + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"bne" = ( +/obj/machinery/button/door{ + desc = "A remote control switch for the genetics doors."; + id = "GeneticsDoor"; + name = "Genetics Exit Button"; + normaldoorcontrol = 1; + pixel_x = 8; + pixel_y = 24 + }, +/obj/structure/table, +/obj/item/book/manual/wiki/medical_cloning{ + pixel_y = 6 + }, +/obj/item/storage/box/rxglasses{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/box/bodybags, +/obj/item/pen, +/turf/open/floor/plasteel/white, +/area/medical/genetics) "bnf" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -27702,7 +28945,7 @@ /obj/item/assembly/flash/handheld, /obj/item/assembly/flash/handheld, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/plasteel, @@ -27734,9 +28977,9 @@ }, /obj/item/stock_parts/scanning_module, /obj/machinery/power/apc{ + areastring = "/area/science/lab"; dir = 4; name = "Research Lab APC"; - areastring = "/area/science/lab"; pixel_x = 26 }, /obj/structure/cable{ @@ -27782,8 +29025,12 @@ /turf/closed/wall, /area/maintenance/starboard) "bnt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/structure/rack, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" }, /turf/open/floor/plating, /area/maintenance/starboard/aft) @@ -27949,9 +29196,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "bnN" = ( -/obj/effect/turf_decal/tile/red{ - dir = 2 - }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/plasteel, /area/hallway/primary/central) "bnO" = ( @@ -28079,10 +29324,15 @@ /turf/open/floor/carpet, /area/crew_quarters/heads/captain) "bnZ" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green, -/turf/open/floor/carpet, -/area/crew_quarters/heads/captain) +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=HOP"; + location = "CHE" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "boa" = ( /obj/structure/toilet{ dir = 4 @@ -28173,7 +29423,6 @@ pixel_y = -22 }, /obj/machinery/requests_console{ - announcementConsole = 0; department = "Medbay"; departmentType = 1; name = "Medbay RC"; @@ -28224,6 +29473,12 @@ }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) +"bop" = ( +/obj/structure/closet/wardrobe/white, +/obj/item/clothing/under/kilt, +/obj/item/clothing/under/janimaid, +/turf/open/floor/plasteel/white, +/area/medical/genetics) "boq" = ( /obj/structure/bed/roller, /obj/effect/turf_decal/tile/blue, @@ -28242,15 +29497,25 @@ "bos" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/power/apc{ + areastring = "/area/science/robotics/lab"; dir = 8; name = "Robotics Lab APC"; - areastring = "/area/science/robotics/lab"; pixel_x = -25 }, /obj/structure/cable, /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/white, /area/science/robotics/lab) +"bot" = ( +/obj/structure/closet/wardrobe/grey, +/obj/item/clothing/head/beret/black, +/obj/item/clothing/head/beret/black, +/obj/item/clothing/head/beret, +/obj/item/clothing/head/beret, +/obj/item/clothing/under/assistantformal, +/obj/item/clothing/under/skirt/black, +/turf/open/floor/plasteel/white, +/area/medical/genetics) "bou" = ( /turf/open/floor/plasteel, /area/science/robotics/lab) @@ -28405,9 +29670,7 @@ /turf/open/floor/plasteel/dark, /area/science/robotics/lab) "boM" = ( -/turf/open/floor/plasteel/white/corner{ - dir = 2 - }, +/turf/open/floor/plasteel/white/corner, /area/science/research) "boN" = ( /obj/effect/turf_decal/tile/brown{ @@ -28417,9 +29680,7 @@ /area/quartermaster/office) "boO" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/white/side{ - dir = 2 - }, +/turf/open/floor/plasteel/white/side, /area/science/research) "boP" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -28495,20 +29756,16 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "boY" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/vending/cola/black, +/obj/structure/sign/poster/contraband/sun_kist{ + pixel_y = 32 }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) +/turf/open/floor/wood, +/area/crew_quarters/bar) "boZ" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/northleft{ dir = 8; - icon_state = "left"; name = "Reception Window" }, /obj/machinery/door/window/brigdoor{ @@ -28516,7 +29773,6 @@ dir = 4; icon_state = "rightsecure"; name = "Head of Personnel's Desk"; - req_access = null; req_access_txt = "57" }, /obj/structure/disposalpipe/segment{ @@ -28581,7 +29837,7 @@ "bpg" = ( /obj/structure/chair/office/light, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/stripes/line{ @@ -28622,13 +29878,18 @@ /turf/open/floor/carpet, /area/crew_quarters/heads/captain) "bpk" = ( -/obj/structure/closet/secure_closet/captains, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 +/obj/machinery/camera{ + c_tag = "Genetics Cloning"; + dir = 4; + network = list("ss13","medbay") }, -/turf/open/floor/carpet, -/area/crew_quarters/heads/captain) +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -24 + }, +/obj/structure/closet/secure_closet/personal/patient, +/turf/open/floor/plasteel/white, +/area/medical/genetics) "bpl" = ( /obj/structure/table/wood, /obj/item/storage/box/matches, @@ -28804,9 +30065,9 @@ /area/medical/chemistry) "bpG" = ( /obj/machinery/power/apc{ + areastring = "/area/medical/genetics"; dir = 1; name = "Genetics APC"; - areastring = "/area/medical/genetics"; pixel_y = 24 }, /obj/structure/cable{ @@ -28820,7 +30081,6 @@ /obj/item/radio/headset/headset_medsci, /obj/machinery/requests_console{ department = "Genetics"; - departmentType = 0; name = "Genetics Requests Console"; pixel_y = 30 }, @@ -28952,7 +30212,7 @@ /area/science/robotics/lab) "bpX" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -28985,6 +30245,12 @@ }, /turf/open/floor/plasteel/dark, /area/science/robotics/lab) +"bqb" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1 + }, +/turf/open/space/basic, +/area/space/nearstation) "bqc" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plasteel/white, @@ -29186,16 +30452,14 @@ icon_state = "0-4" }, /obj/machinery/power/apc{ + areastring = "/area/engine/gravity_generator"; dir = 8; name = "Gravity Generator APC"; - areastring = "/area/engine/gravity_generator"; pixel_x = -25; pixel_y = 1 }, /obj/structure/table, -/obj/item/paper/guides/jobs/engi/gravity_gen{ - layer = 3 - }, +/obj/item/paper/guides/jobs/engi/gravity_gen, /obj/item/pen/blue, /obj/item/radio/intercom{ name = "Station Intercom (General)"; @@ -29351,8 +30615,7 @@ }, /obj/machinery/camera{ c_tag = "Medbay West"; - network = list("ss13","medbay"); - dir = 2 + network = list("ss13","medbay") }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -29457,9 +30720,7 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/effect/turf_decal/tile/blue{ - dir = 2 - }, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/plasteel/white, /area/medical/medbay/central) "bri" = ( @@ -29490,6 +30751,12 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/white, /area/medical/genetics) +"brl" = ( +/obj/structure/shuttle/engine/heater{ + dir = 1 + }, +/turf/closed/wall/mineral/titanium, +/area/space/nearstation) "brm" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -29536,7 +30803,6 @@ "brq" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/button/door{ - dir = 2; id = "robotics2"; name = "Shutters Control Button"; pixel_x = 24; @@ -29577,7 +30843,6 @@ /area/science/research) "bru" = ( /obj/machinery/firealarm{ - dir = 2; pixel_y = 24 }, /obj/structure/disposalpipe/segment{ @@ -29644,29 +30909,22 @@ /obj/item/pen, /obj/machinery/camera{ c_tag = "Experimentor Lab"; - dir = 2; network = list("ss13","rd") }, /obj/item/hand_labeler, /obj/item/stack/packageWrap, -/turf/open/floor/plasteel/white/side{ - dir = 2 - }, +/turf/open/floor/plasteel/white/side, /area/science/explab) "brA" = ( /obj/structure/table, /obj/item/paper_bin{ pixel_y = 6 }, -/turf/open/floor/plasteel/white/corner{ - dir = 2 - }, +/turf/open/floor/plasteel/white/corner, /area/science/explab) "brB" = ( /obj/structure/closet/l3closet/scientist, -/turf/open/floor/plasteel/white/side{ - dir = 2 - }, +/turf/open/floor/plasteel/white/side, /area/science/explab) "brC" = ( /obj/structure/table, @@ -29676,9 +30934,7 @@ pixel_y = 23 }, /obj/item/radio/off, -/turf/open/floor/plasteel/white/side{ - dir = 2 - }, +/turf/open/floor/plasteel/white/side, /area/science/explab) "brD" = ( /obj/structure/closet/emcloset, @@ -29818,6 +31074,9 @@ "brS" = ( /turf/open/floor/plasteel, /area/crew_quarters/heads/hop) +"brT" = ( +/turf/open/floor/plating, +/area/space/nearstation) "brU" = ( /obj/structure/sign/warning/electricshock{ pixel_y = -32 @@ -29947,7 +31206,6 @@ /area/teleporter) "bsk" = ( /obj/machinery/firealarm{ - dir = 2; pixel_y = 24 }, /obj/machinery/light{ @@ -29960,8 +31218,6 @@ /area/teleporter) "bsl" = ( /obj/item/radio/intercom{ - broadcasting = 0; - listening = 1; name = "Station Intercom (General)"; pixel_y = 20 }, @@ -30014,10 +31270,7 @@ dir = 4 }, /obj/item/radio/intercom{ - broadcasting = 0; - freerange = 0; frequency = 1485; - listening = 1; name = "Station Intercom (Medbay)"; pixel_y = -30 }, @@ -30045,17 +31298,14 @@ /area/medical/medbay/central) "bst" = ( /obj/item/radio/intercom{ - broadcasting = 0; - freerange = 0; frequency = 1485; - listening = 1; name = "Station Intercom (Medbay)"; pixel_x = 30 }, /obj/machinery/camera{ c_tag = "Medbay East"; - network = list("ss13","medbay"); dir = 8; + network = list("ss13","medbay"); pixel_y = -22 }, /turf/open/floor/plasteel/white, @@ -30113,6 +31363,9 @@ dir = 9 }, /area/science/research) +"bsB" = ( +/turf/closed/wall/mineral/titanium, +/area/space/nearstation) "bsC" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel/white, @@ -30165,9 +31418,9 @@ /area/science/explab) "bsI" = ( /obj/machinery/power/apc{ + areastring = "/area/science/explab"; dir = 4; name = "Experimentation Lab APC"; - areastring = "/area/science/explab"; pixel_x = 26 }, /obj/structure/cable, @@ -30216,12 +31469,8 @@ /turf/open/floor/plasteel/dark, /area/science/robotics/lab) "bsP" = ( -/obj/structure/table/optable{ - name = "Robotics Operating Table" - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/dark, -/area/science/robotics/lab) +/turf/open/floor/plating/foam, +/area/space/nearstation) "bsQ" = ( /turf/open/floor/plasteel/dark, /area/science/robotics/lab) @@ -30292,8 +31541,7 @@ dir = 4 }, /obj/machinery/camera{ - c_tag = "Research Division North"; - dir = 2 + c_tag = "Research Division North" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -30335,7 +31583,6 @@ /area/science/research) "btf" = ( /obj/machinery/requests_console{ - announcementConsole = 0; department = "Medbay"; departmentType = 1; name = "Medbay RC"; @@ -30358,9 +31605,9 @@ /turf/open/floor/plasteel/white, /area/science/research) "bti" = ( -/obj/structure/closet/secure_closet/personal/patient, -/turf/open/floor/plasteel/white, -/area/medical/genetics) +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/space/nearstation) "btj" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -30371,9 +31618,9 @@ /turf/open/floor/plasteel/white, /area/science/explab) "btk" = ( -/obj/structure/closet/wardrobe/white, -/turf/open/floor/plasteel/white, -/area/medical/genetics) +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/space/nearstation) "btl" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plasteel/white, @@ -30434,7 +31681,6 @@ pixel_y = -8 }, /obj/machinery/button/door{ - dir = 2; id = "QMLoaddoor2"; layer = 4; name = "Loading Doors"; @@ -30463,7 +31709,7 @@ "btt" = ( /obj/structure/table, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/item/folder/yellow, @@ -30507,11 +31753,16 @@ /turf/open/floor/plasteel, /area/science/research) "bty" = ( -/obj/structure/chair{ - dir = 8 +/obj/structure/chair/sofa/right, +/obj/structure/window{ + dir = 1 }, -/turf/open/floor/plasteel, -/area/quartermaster/office) +/obj/structure/sign/poster/contraband/pwr_game{ + pixel_x = -32 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/wood, +/area/crew_quarters/bar) "btz" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/brown{ @@ -30521,8 +31772,7 @@ /area/hallway/primary/central) "btA" = ( /obj/machinery/camera{ - c_tag = "Research Division West"; - dir = 2 + c_tag = "Research Division West" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -30553,13 +31803,21 @@ "btD" = ( /obj/structure/table, /obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 + pixel_x = 1; + pixel_y = 9 }, /obj/item/pen, -/obj/item/stamp/hop, -/turf/open/floor/plasteel, -/area/crew_quarters/heads/hop) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/item/folder/white, +/obj/item/pen/fountain, +/obj/item/stamp/rd{ + pixel_x = 3; + pixel_y = -2 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/heads/hor) "btE" = ( /obj/structure/cable{ icon_state = "1-2" @@ -30594,9 +31852,9 @@ /area/teleporter) "btI" = ( /obj/machinery/power/apc{ + areastring = "/area/teleporter"; dir = 8; name = "Teleporter APC"; - areastring = "/area/teleporter"; pixel_x = -24 }, /obj/structure/cable{ @@ -30682,7 +31940,6 @@ /area/medical/medbay/central) "btS" = ( /obj/machinery/firealarm{ - dir = 2; pixel_y = 24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -30766,9 +32023,8 @@ "buc" = ( /obj/machinery/light, /obj/machinery/power/apc{ - dir = 2; - name = "Cargo Office APC"; areastring = "/area/quartermaster/office"; + name = "Cargo Office APC"; pixel_x = 1; pixel_y = -24 }, @@ -30776,9 +32032,7 @@ icon_state = "0-4" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/tile/brown{ - dir = 2 - }, +/obj/effect/turf_decal/tile/brown, /turf/open/floor/plasteel, /area/quartermaster/office) "bud" = ( @@ -30823,6 +32077,10 @@ }, /turf/open/floor/plasteel/white, /area/medical/genetics) +"buh" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/space/nearstation) "bui" = ( /obj/machinery/airalarm{ dir = 1; @@ -30989,10 +32247,16 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/starboard) +"buA" = ( +/obj/structure/frame/computer{ + dir = 1 + }, +/turf/open/floor/plating, +/area/space/nearstation) "buB" = ( /obj/machinery/conveyor_switch/oneway{ - id = "QMLoad"; - dir = 8 + dir = 8; + id = "QMLoad" }, /turf/open/floor/plasteel, /area/quartermaster/storage) @@ -31071,12 +32335,12 @@ /turf/open/floor/plasteel, /area/quartermaster/office) "buJ" = ( -/obj/structure/chair{ - dir = 8 +/obj/structure/chair/sofa, +/obj/structure/window{ + dir = 1 }, -/obj/machinery/light, -/turf/open/floor/plasteel, -/area/quartermaster/office) +/turf/open/floor/wood, +/area/crew_quarters/bar) "buK" = ( /obj/machinery/light{ dir = 4 @@ -31344,20 +32608,12 @@ /turf/open/floor/plasteel/white, /area/medical/sleeper) "bvn" = ( -/obj/machinery/button/door{ - desc = "A remote control switch for the genetics doors."; - id = "GeneticsDoor"; - name = "Genetics Exit Button"; - normaldoorcontrol = 1; - pixel_x = 8; - pixel_y = 24 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/obj/structure/table, -/obj/item/book/manual/wiki/medical_cloning{ - pixel_y = 6 - }, -/turf/open/floor/plasteel/white, -/area/medical/genetics) +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/maintenance/port) "bvo" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 @@ -31465,8 +32721,8 @@ "bvB" = ( /obj/machinery/camera{ c_tag = "Genetics Access"; - network = list("ss13","medbay"); dir = 8; + network = list("ss13","medbay"); pixel_y = -22 }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -31517,6 +32773,20 @@ }, /turf/open/floor/plasteel, /area/quartermaster/qm) +"bvG" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/light/small, +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = -32 + }, +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/crew_quarters/fitness) "bvH" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 @@ -31738,20 +33008,10 @@ /area/hallway/primary/central) "bwi" = ( /obj/item/radio/intercom{ - dir = 8; - name = "Station Intercom (General)"; - pixel_x = -28 + pixel_x = -25 }, -/obj/structure/closet/secure_closet/hop, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/heads/hop) +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/toilet) "bwj" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 @@ -31928,8 +33188,7 @@ /obj/structure/table/glass, /obj/machinery/camera{ c_tag = "Medbay Cryogenics"; - network = list("ss13","medbay"); - dir = 2 + network = list("ss13","medbay") }, /obj/item/reagent_containers/glass/beaker/cryoxadone, /obj/item/reagent_containers/glass/beaker/cryoxadone, @@ -31945,24 +33204,17 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "bwL" = ( -/obj/machinery/camera{ - c_tag = "Genetics Cloning"; - network = list("ss13","medbay"); +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/structure/closet/wardrobe/miner, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/table, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/obj/item/storage/box/rxglasses{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/bodybags, -/obj/item/pen, -/turf/open/floor/plasteel/white, -/area/medical/genetics) +/obj/item/radio/headset/headset_cargo/mining, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) "bwM" = ( /obj/structure/cable{ icon_state = "1-2" @@ -32009,6 +33261,10 @@ dir = 9 }, /area/science/research) +"bwP" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/closed/wall, +/area/maintenance/port) "bwQ" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -32191,6 +33447,14 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/aft) +"bxh" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 4; + name = "4maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "bxi" = ( /obj/machinery/computer/aifixer{ dir = 8 @@ -32278,9 +33542,7 @@ pixel_x = 25; req_access_txt = "47" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/white, /area/science/explab) "bxt" = ( @@ -32627,6 +33889,7 @@ pixel_x = -3; pixel_y = 7 }, +/obj/item/pen/fountain, /turf/open/floor/plasteel, /area/quartermaster/qm) "byh" = ( @@ -32796,9 +34059,9 @@ /area/quartermaster/qm) "byA" = ( /obj/machinery/power/apc{ + areastring = "/area/quartermaster/qm"; dir = 1; name = "Quartermaster APC"; - areastring = "/area/quartermaster/qm"; pixel_y = 24 }, /obj/structure/cable{ @@ -32852,9 +34115,9 @@ /area/quartermaster/miningdock) "byF" = ( /obj/machinery/power/apc{ + areastring = "/area/quartermaster/miningdock"; dir = 1; name = "Mining Dock APC"; - areastring = "/area/quartermaster/miningdock"; pixel_y = 24 }, /obj/structure/cable{ @@ -33019,6 +34282,9 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "byV" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, /obj/structure/extinguisher_cabinet{ pixel_x = 5; pixel_y = -32 @@ -33087,7 +34353,6 @@ /obj/item/stack/packageWrap, /obj/item/pen, /obj/machinery/requests_console{ - announcementConsole = 0; department = "Medbay"; departmentType = 1; name = "Medbay RC"; @@ -33212,8 +34477,8 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4; external_pressure_bound = 140; - pressure_checks = 0; - name = "server vent" + name = "server vent"; + pressure_checks = 0 }, /turf/open/floor/circuit/telecomms/server, /area/science/server) @@ -33250,14 +34515,13 @@ "bzy" = ( /obj/machinery/camera{ c_tag = "Server Room"; - dir = 2; network = list("ss13","rd"); pixel_x = 22 }, /obj/machinery/power/apc{ + areastring = "/area/science/server"; dir = 1; name = "Server Room APC"; - areastring = "/area/science/server"; pixel_y = 25 }, /obj/structure/cable{ @@ -33332,7 +34596,7 @@ /area/science/research) "bzF" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/plasteel, @@ -33343,18 +34607,14 @@ name = "Central Access" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/yellow{ - dir = 2 - }, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/plasteel, /area/hallway/primary/central) "bzH" = ( /obj/structure/table, /obj/item/hemostat, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/white/side{ - dir = 2 - }, +/turf/open/floor/plasteel/white/side, /area/medical/sleeper) "bzI" = ( /obj/structure/disposalpipe/segment, @@ -33381,9 +34641,7 @@ /turf/open/floor/plasteel/white, /area/medical/sleeper) "bzL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/white, /area/crew_quarters/heads/hor) "bzM" = ( @@ -33455,9 +34713,7 @@ /area/quartermaster/qm) "bzU" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/effect/turf_decal/tile/blue{ - dir = 2 - }, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/plasteel/white, /area/medical/sleeper) "bzV" = ( @@ -33564,11 +34820,11 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "bAj" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=HOP"; - location = "CHE" +/obj/structure/disposalpipe/trunk{ + dir = 1 }, -/turf/open/floor/plasteel, +/obj/machinery/disposal/bin, +/turf/open/floor/plasteel/dark, /area/hallway/primary/central) "bAk" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -33616,9 +34872,9 @@ icon_state = "4-8" }, /obj/machinery/power/apc{ + areastring = "/area/security/checkpoint/supply"; dir = 1; name = "Cargo Security APC"; - areastring = "/area/security/checkpoint/supply"; pixel_x = 1; pixel_y = 24 }, @@ -33636,7 +34892,7 @@ dir = 8 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /turf/open/floor/plasteel/white, @@ -33647,8 +34903,8 @@ }, /obj/machinery/camera{ c_tag = "Medbay Treatment Center"; - network = list("ss13","medbay"); - dir = 8 + dir = 8; + network = list("ss13","medbay") }, /turf/open/floor/plasteel, /area/medical/sleeper) @@ -33859,9 +35115,7 @@ "bAP" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/yellow{ - dir = 2 - }, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/plasteel, /area/hallway/primary/aft) "bAQ" = ( @@ -34016,6 +35270,10 @@ /obj/structure/cable{ icon_state = "1-8" }, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, /turf/open/floor/plasteel, /area/hallway/primary/central) "bBh" = ( @@ -34185,13 +35443,8 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "bBz" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, +/obj/machinery/vending/cola/space_up, +/turf/open/floor/plasteel/dark, /area/hallway/primary/central) "bBA" = ( /obj/structure/cable{ @@ -34203,14 +35456,20 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "bBB" = ( -/obj/structure/cable{ - icon_state = "1-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 }, /turf/open/floor/plasteel, -/area/hallway/primary/central) +/area/crew_quarters/fitness) "bBC" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -34238,9 +35497,7 @@ "bBF" = ( /obj/machinery/portable_atmospherics/scrubber, /obj/item/storage/firstaid/toxin, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /obj/machinery/airalarm/unlocked{ pixel_y = 24 }, @@ -34260,19 +35517,14 @@ /turf/closed/wall, /area/quartermaster/miningdock) "bBI" = ( -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, -/obj/structure/closet/wardrobe/miner, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, +/obj/structure/table, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/item/hand_labeler, /turf/open/floor/plasteel, -/area/quartermaster/miningdock) +/area/hallway/secondary/service) "bBJ" = ( /obj/machinery/firealarm{ - dir = 2; pixel_y = 24 }, /turf/open/floor/plasteel/white, @@ -34291,6 +35543,14 @@ }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) +"bBM" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 4; + name = "4maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "bBN" = ( /turf/closed/wall, /area/crew_quarters/heads/cmo) @@ -34350,6 +35610,18 @@ }, /turf/open/floor/circuit/telecomms/server, /area/science/server) +"bBT" = ( +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) "bBU" = ( /obj/machinery/atmospherics/pipe/simple{ dir = 9 @@ -34411,9 +35683,8 @@ /area/security/checkpoint/science) "bCa" = ( /obj/machinery/power/apc{ - dir = 2; - name = "Science Security APC"; areastring = "/area/security/checkpoint/science"; + name = "Science Security APC"; pixel_y = -24 }, /obj/structure/cable, @@ -34475,9 +35746,9 @@ /area/maintenance/port/aft) "bCf" = ( /obj/machinery/power/apc{ + areastring = "/area/crew_quarters/heads/hor"; dir = 8; name = "RD Office APC"; - areastring = "/area/crew_quarters/heads/hor"; pixel_x = -25 }, /obj/structure/cable, @@ -34581,9 +35852,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/yellow{ - dir = 2 - }, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/plasteel, /area/hallway/primary/aft) "bCq" = ( @@ -34660,9 +35929,20 @@ /turf/open/floor/plating, /area/maintenance/aft) "bCA" = ( -/obj/machinery/vending/cigarette, -/turf/open/floor/plasteel/dark, -/area/hallway/primary/central) +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) "bCB" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -34688,9 +35968,7 @@ "bCD" = ( /obj/structure/table, /obj/item/retractor, -/turf/open/floor/plasteel/white/side{ - dir = 2 - }, +/turf/open/floor/plasteel/white/side, /area/medical/sleeper) "bCE" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -34725,12 +36003,14 @@ /turf/open/floor/plasteel/white, /area/medical/sleeper) "bCI" = ( -/obj/structure/chair/office/dark{ +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ dir = 4 }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/wood, -/area/library) +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) "bCJ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -34747,8 +36027,7 @@ /obj/structure/closet/secure_closet/medical3, /obj/machinery/camera{ c_tag = "Medbay Storage"; - network = list("ss13","medbay"); - dir = 2 + network = list("ss13","medbay") }, /turf/open/floor/plasteel/white, /area/medical/sleeper) @@ -34765,7 +36044,13 @@ /turf/open/floor/plasteel/white, /area/medical/sleeper) "bCO" = ( -/obj/machinery/bloodbankgen, +/obj/structure/table, +/obj/item/storage/box/bodybags{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/box/rxglasses, +/obj/item/hand_labeler, /turf/open/floor/plasteel/white, /area/medical/sleeper) "bCP" = ( @@ -34799,35 +36084,22 @@ /turf/open/floor/plasteel/white, /area/medical/sleeper) "bCT" = ( -/obj/structure/table, -/obj/item/storage/belt/medical{ - pixel_y = 2 - }, -/obj/item/storage/belt/medical{ - pixel_y = 2 - }, -/obj/item/storage/belt/medical{ - pixel_y = 2 - }, -/obj/item/clothing/neck/stethoscope, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/machinery/bloodbankgen, /turf/open/floor/plasteel/white, /area/medical/sleeper) "bCU" = ( /obj/item/radio/intercom{ - broadcasting = 0; - freerange = 0; frequency = 1485; - listening = 1; name = "Station Intercom (Medbay)"; pixel_x = -30 }, /obj/machinery/camera{ c_tag = "Medbay South"; - network = list("ss13","medbay"); - dir = 4 + dir = 4; + network = list("ss13","medbay") }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) @@ -34950,7 +36222,6 @@ /obj/item/pen, /obj/machinery/requests_console{ department = "Mining"; - departmentType = 0; pixel_x = -30 }, /obj/machinery/light{ @@ -34960,7 +36231,7 @@ /area/quartermaster/miningdock) "bDl" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -34994,13 +36265,11 @@ /area/quartermaster/miningdock) "bDp" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/yellow{ - dir = 2 - }, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/plasteel, /area/hallway/primary/aft) "bDq" = ( @@ -35022,9 +36291,15 @@ /turf/open/floor/plasteel, /area/janitor) "bDs" = ( -/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green, /turf/open/floor/plasteel, -/area/janitor) +/area/hallway/primary/starboard) "bDt" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -35042,6 +36317,13 @@ /turf/open/floor/plating, /area/maintenance/aft) "bDv" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bDw" = ( /obj/structure/table, /obj/item/flashlight{ pixel_x = 1; @@ -35056,14 +36338,15 @@ /obj/machinery/status_display/ai{ pixel_x = -32 }, -/turf/open/floor/plating, -/area/storage/tech) -"bDw" = ( -/obj/structure/table, -/obj/item/screwdriver{ - pixel_y = 16 +/obj/machinery/power/apc{ + areastring = "/area/storage/tech"; + dir = 1; + name = "Tech Storage APC"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" }, -/obj/item/wirecutters, /turf/open/floor/plating, /area/storage/tech) "bDx" = ( @@ -35076,33 +36359,28 @@ /turf/open/floor/plating, /area/storage/tech) "bDy" = ( -/obj/machinery/camera{ - c_tag = "Tech Storage"; - dir = 2 - }, -/obj/machinery/power/apc{ - dir = 1; - name = "Tech Storage APC"; - areastring = "/area/storage/tech"; - pixel_y = 24 - }, -/obj/structure/cable{ - icon_state = "0-2" +/obj/structure/table, +/obj/item/screwdriver{ + pixel_y = 16 }, +/obj/item/wirecutters, /turf/open/floor/plating, /area/storage/tech) "bDz" = ( -/obj/machinery/airalarm{ - pixel_y = 23 +/obj/structure/table, +/obj/item/aicard, +/obj/item/aiModule/reset, +/obj/structure/cable{ + icon_state = "1-2" }, /turf/open/floor/plating, /area/storage/tech) "bDA" = ( /obj/structure/disposalpipe/segment, /obj/machinery/power/apc{ + areastring = "/area/medical/sleeper"; dir = 4; name = "Treatment Center APC"; - areastring = "/area/medical/sleeper"; pixel_x = 26 }, /obj/structure/cable{ @@ -35129,9 +36407,6 @@ /turf/open/floor/plasteel/white, /area/medical/sleeper) "bDD" = ( -/obj/structure/sign/warning/nosmoking{ - pixel_x = -28 - }, /obj/structure/bed, /obj/item/bedsheet/medical, /obj/effect/turf_decal/tile/blue{ @@ -35145,8 +36420,8 @@ }, /obj/machinery/camera{ c_tag = "Medbay Recovery Room"; - network = list("ss13","medbay"); - dir = 8 + dir = 8; + network = list("ss13","medbay") }, /obj/machinery/iv_drip, /turf/open/floor/plasteel/white, @@ -35164,9 +36439,7 @@ /area/medical/medbay/central) "bDG" = ( /obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/yellow{ - dir = 2 - }, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/plasteel, /area/hallway/primary/aft) "bDH" = ( @@ -35182,8 +36455,9 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "bDJ" = ( -/obj/item/storage/box/lights/mixed, -/obj/item/storage/box/lights/mixed, +/obj/structure/sign/poster/contraband/lizard{ + pixel_x = -32 + }, /turf/open/floor/plasteel, /area/janitor) "bDK" = ( @@ -35197,8 +36471,17 @@ /turf/open/floor/plasteel, /area/janitor) "bDL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, /turf/open/floor/plasteel, -/area/janitor) +/area/crew_quarters/fitness) "bDM" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, @@ -35212,11 +36495,15 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "bDO" = ( -/obj/structure/cable{ - icon_state = "2-4" +/obj/machinery/vending/snack/orange, +/obj/machinery/light{ + dir = 1 }, -/turf/open/floor/plating, -/area/maintenance/aft) +/obj/structure/sign/poster/contraband/donut_corp{ + pixel_y = 32 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "bDP" = ( /obj/machinery/navbeacon{ codes_txt = "delivery;dir=8"; @@ -35290,6 +36577,13 @@ }, /turf/open/floor/plasteel/white, /area/medical/sleeper) +"bDX" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) "bDY" = ( /obj/structure/cable{ icon_state = "4-8" @@ -35418,8 +36712,8 @@ }, /obj/machinery/camera{ c_tag = "Chief Medical Office"; - network = list("ss13","medbay"); dir = 8; + network = list("ss13","medbay"); pixel_y = -22 }, /obj/effect/turf_decal/tile/blue{ @@ -35436,7 +36730,6 @@ "bEn" = ( /obj/machinery/camera{ c_tag = "Xenobiology Test Chamber"; - dir = 2; network = list("xeno","rd") }, /obj/machinery/light{ @@ -35459,9 +36752,9 @@ /area/science/storage) "bEq" = ( /obj/machinery/power/apc{ + areastring = "/area/science/research"; dir = 8; name = "Misc Research APC"; - areastring = "/area/science/research"; pixel_x = -25 }, /obj/structure/cable{ @@ -35491,9 +36784,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/white, /area/science/mixing) "bEv" = ( @@ -35501,9 +36792,7 @@ /obj/machinery/light_switch{ pixel_y = 28 }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/white, /area/science/mixing) "bEw" = ( @@ -35511,9 +36800,7 @@ /obj/item/radio/intercom{ pixel_y = 25 }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/white, /area/science/mixing) "bEx" = ( @@ -35522,17 +36809,13 @@ dir = 8 }, /obj/machinery/firealarm{ - dir = 2; pixel_y = 24 }, /obj/machinery/camera{ c_tag = "Toxins Lab West"; - dir = 2; network = list("ss13","rd") }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/white, /area/science/mixing) "bEy" = ( @@ -35540,9 +36823,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/white, /area/science/mixing) "bEz" = ( @@ -35688,15 +36969,8 @@ /turf/open/floor/plasteel, /area/quartermaster/miningdock) "bER" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/techstorage/rnd, /turf/open/floor/plating, /area/storage/tech) "bES" = ( @@ -35746,9 +37020,12 @@ /turf/open/floor/plating, /area/storage/tech) "bEX" = ( -/obj/structure/table, -/obj/item/aicard, -/obj/item/aiModule/reset, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, /turf/open/floor/plating, /area/storage/tech) "bEY" = ( @@ -35844,18 +37121,20 @@ /turf/open/floor/plasteel, /area/hallway/primary/aft) "bFk" = ( -/obj/item/mop, -/obj/item/reagent_containers/glass/bucket, -/turf/open/floor/plasteel, -/area/janitor) +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) "bFl" = ( /obj/structure/cable{ icon_state = "1-2" }, /obj/machinery/power/apc{ + areastring = "/area/janitor"; dir = 8; name = "Custodial Closet APC"; - areastring = "/area/janitor"; pixel_x = -24 }, /obj/structure/cable{ @@ -35893,9 +37172,7 @@ /area/maintenance/aft) "bFq" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/yellow{ - dir = 2 - }, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/plasteel, /area/hallway/primary/aft) "bFr" = ( @@ -35989,21 +37266,14 @@ /turf/open/floor/plasteel, /area/medical/sleeper) "bFC" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/condiment/peppermill{ - pixel_x = 5; - pixel_y = -2 +/obj/structure/door_assembly/door_assembly_mai, +/obj/item/electronics/airlock, +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) "bFD" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -36070,6 +37340,9 @@ "bFJ" = ( /obj/structure/bed, /obj/item/bedsheet/medical, +/obj/structure/sign/warning/nosmoking{ + pixel_x = -28 + }, /turf/open/floor/plasteel/white, /area/medical/sleeper) "bFK" = ( @@ -36224,12 +37497,8 @@ /obj/machinery/doppler_array/research/science{ dir = 4 }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plasteel{ - dir = 2 - }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, /area/science/mixing) "bGe" = ( /turf/closed/wall, @@ -36238,6 +37507,22 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating/airless, /area/science/test_area) +"bGg" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"bGh" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/starboard/fore) "bGi" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -36321,8 +37606,7 @@ /area/storage/tech) "bGs" = ( /obj/machinery/camera{ - c_tag = "Secure Tech Storage"; - dir = 2 + c_tag = "Secure Tech Storage" }, /obj/structure/cable{ icon_state = "1-2" @@ -36347,11 +37631,12 @@ /turf/open/floor/plating, /area/storage/tech) "bGw" = ( -/obj/structure/rack, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 }, -/obj/effect/spawner/lootdrop/techstorage/rnd, /turf/open/floor/plating, /area/storage/tech) "bGx" = ( @@ -36382,18 +37667,14 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "bGB" = ( -/obj/structure/table, -/obj/item/grenade/chem_grenade/cleaner, -/obj/item/grenade/chem_grenade/cleaner, -/obj/item/grenade/chem_grenade/cleaner, -/obj/machinery/requests_console{ - department = "Janitorial"; - departmentType = 1; - pixel_y = -29 +/obj/structure/cable{ + icon_state = "2-4" }, -/obj/item/reagent_containers/spray/cleaner, -/turf/open/floor/plasteel, -/area/janitor) +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "bGC" = ( /obj/structure/cable{ icon_state = "4-8" @@ -36516,9 +37797,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/yellow{ - dir = 2 - }, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/plasteel, /area/hallway/primary/aft) "bGP" = ( @@ -36544,15 +37823,34 @@ /area/maintenance/aft) "bGR" = ( /obj/structure/table, -/obj/item/hand_labeler, -/obj/item/storage/box/rxglasses, -/obj/item/storage/box/bodybags{ - pixel_x = 3; - pixel_y = 3 +/obj/item/storage/belt/medical{ + pixel_y = 2 }, -/obj/item/gun/syringe, +/obj/item/storage/belt/medical{ + pixel_y = 2 + }, +/obj/item/storage/belt/medical{ + pixel_y = 2 + }, +/obj/item/clothing/neck/stethoscope, /turf/open/floor/plasteel/white, /area/medical/sleeper) +"bGS" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "bGT" = ( /obj/structure/table, /obj/item/folder/white, @@ -36649,9 +37947,9 @@ /area/maintenance/aft) "bHe" = ( /obj/machinery/power/apc{ + areastring = "/area/science/storage"; dir = 8; name = "Toxins Storage APC"; - areastring = "/area/science/storage"; pixel_x = -25 }, /obj/structure/cable{ @@ -36671,6 +37969,22 @@ }, /turf/open/floor/plasteel/white, /area/science/research) +"bHg" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/sign/departments/restroom{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "bHh" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 @@ -36706,9 +38020,7 @@ "bHl" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/obj/effect/turf_decal/tile/yellow{ - dir = 2 - }, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/plasteel, /area/hallway/primary/aft) "bHm" = ( @@ -36764,9 +38076,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/corner{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/plasteel, /area/science/mixing) "bHt" = ( @@ -36799,6 +38109,16 @@ }, /turf/open/floor/plating, /area/science/test_area) +"bHx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/structure/table, +/obj/item/kitchen/rollingpin, +/obj/item/shovel/spade, +/obj/item/reagent_containers/glass/bucket, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) "bHy" = ( /obj/structure/closet/crate, /obj/machinery/light/small{ @@ -36830,6 +38150,19 @@ }, /turf/open/floor/plasteel, /area/quartermaster/miningdock) +"bHB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/table, +/obj/item/storage/box/beakers{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) "bHC" = ( /obj/effect/landmark/blobstart, /turf/open/floor/plating, @@ -36845,12 +38178,17 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "bHF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/wood, -/area/crew_quarters/theatre) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) "bHG" = ( /obj/structure/rack, /obj/machinery/light/small{ @@ -36927,9 +38265,7 @@ /turf/open/floor/plating, /area/storage/tech) "bHP" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 2 - }, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/plasteel, /area/hallway/primary/aft) "bHQ" = ( @@ -36972,9 +38308,9 @@ /area/maintenance/aft) "bHV" = ( /obj/machinery/power/apc{ + areastring = "/area/maintenance/aft"; dir = 8; name = "Aft Maintenance APC"; - areastring = "/area/maintenance/aft"; pixel_x = -24 }, /obj/structure/cable{ @@ -37003,6 +38339,18 @@ }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) +"bHZ" = ( +/obj/structure/table, +/obj/item/book/manual/hydroponics_pod_people{ + pixel_x = -4; + pixel_y = 5 + }, +/obj/item/paper/guides/jobs/hydroponics{ + pixel_x = -5; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/hydroponics) "bIa" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -37034,8 +38382,8 @@ }, /obj/machinery/camera{ c_tag = "Surgery Operating"; - network = list("ss13","medbay"); dir = 1; + network = list("ss13","medbay"); pixel_x = 22 }, /obj/machinery/light, @@ -37133,6 +38481,9 @@ /obj/item/clothing/glasses/hud/health, /obj/item/clothing/glasses/hud/health, /obj/item/clothing/glasses/hud/health, +/obj/item/hand_labeler, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, /turf/open/floor/plasteel/white, /area/medical/sleeper) "bIk" = ( @@ -37474,9 +38825,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 }, -/obj/effect/turf_decal/stripes/corner{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/plasteel, /area/science/mixing) "bIV" = ( @@ -37872,6 +39221,10 @@ }, /turf/closed/wall, /area/science/storage) +"bJS" = ( +/obj/structure/sign/departments/restroom, +/turf/closed/wall, +/area/crew_quarters/toilet) "bJT" = ( /obj/machinery/vending/cigarette, /turf/open/floor/plasteel/white, @@ -37954,9 +39307,9 @@ /area/science/mixing) "bKa" = ( /obj/machinery/power/apc{ + areastring = "/area/science/mixing"; dir = 4; name = "Toxins Lab APC"; - areastring = "/area/science/mixing"; pixel_x = 26 }, /obj/structure/cable, @@ -38252,9 +39605,9 @@ icon_state = "0-8" }, /obj/machinery/power/apc{ + areastring = "/area/medical/medbay/central"; dir = 4; name = "Medbay APC"; - areastring = "/area/medical/medbay/central"; pixel_x = 24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -38331,9 +39684,9 @@ /area/medical/medbay/central) "bKS" = ( /obj/machinery/power/apc{ + areastring = "/area/crew_quarters/heads/cmo"; dir = 1; name = "CM Office APC"; - areastring = "/area/crew_quarters/heads/cmo"; pixel_y = 24 }, /obj/structure/cable{ @@ -38377,9 +39730,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/science/xenobiology) "bKX" = ( @@ -38408,9 +39759,7 @@ pixel_y = 2 }, /obj/structure/table/reinforced, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/science/xenobiology) "bKZ" = ( @@ -38431,18 +39780,14 @@ name = "Test Chamber"; req_access_txt = "55" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/science/xenobiology) "bLb" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/science/xenobiology) "bLc" = ( @@ -38452,9 +39797,7 @@ /obj/item/clothing/glasses/science, /obj/item/clothing/glasses/science, /obj/structure/table, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/science/xenobiology) "bLd" = ( @@ -38568,10 +39911,18 @@ dir = 8 }, /turf/open/floor/plating{ - luminosity = 2; - initial_gas_mix = "o2=0.01;n2=0.01" + initial_gas_mix = "o2=0.01;n2=0.01"; + luminosity = 2 }, /area/science/test_area) +"bLs" = ( +/obj/structure/reagent_dispensers/keg/milk, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bLt" = ( +/obj/structure/reagent_dispensers/keg/gargle, +/turf/open/floor/wood, +/area/crew_quarters/bar) "bLu" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance, @@ -38596,6 +39947,10 @@ /obj/item/stock_parts/subspace/treatment, /obj/item/stock_parts/subspace/treatment, /obj/item/stock_parts/subspace/treatment, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, /turf/open/floor/plating, /area/storage/tech) "bLy" = ( @@ -38627,6 +39982,10 @@ /obj/item/clothing/gloves/color/yellow, /obj/item/t_scanner, /obj/item/multitool, +/obj/machinery/camera{ + c_tag = "Tech Storage"; + dir = 1 + }, /turf/open/floor/plating, /area/storage/tech) "bLB" = ( @@ -38658,9 +40017,8 @@ "bLF" = ( /obj/structure/filingcabinet/filingcabinet, /obj/machinery/power/apc{ - dir = 2; - name = "Delivery Office APC"; areastring = "/area/quartermaster/sorting"; + name = "Delivery Office APC"; pixel_x = 1; pixel_y = -24 }, @@ -38857,9 +40215,9 @@ /area/science/misc_lab) "bMg" = ( /obj/machinery/power/apc{ + areastring = "/area/science/xenobiology"; dir = 8; name = "Xenobiology APC"; - areastring = "/area/science/xenobiology"; pixel_x = -25 }, /obj/structure/cable{ @@ -38900,7 +40258,6 @@ "bMm" = ( /obj/machinery/monkey_recycler, /obj/machinery/firealarm{ - dir = 2; pixel_y = 24 }, /obj/effect/turf_decal/stripes/line{ @@ -38966,7 +40323,6 @@ /area/science/mixing) "bMw" = ( /obj/machinery/sparker/toxmix{ - dir = 2; pixel_x = 25 }, /obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output{ @@ -39041,6 +40397,10 @@ }, /turf/open/floor/plating/airless, /area/science/test_area) +"bMF" = ( +/obj/structure/reagent_dispensers/keg/mead, +/turf/open/floor/wood, +/area/crew_quarters/bar) "bMG" = ( /obj/structure/cable{ icon_state = "1-2" @@ -39103,7 +40463,6 @@ /area/engine/atmos) "bMP" = ( /obj/machinery/firealarm{ - dir = 2; pixel_y = 24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -39144,9 +40503,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bMV" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/visible{ - dir = 2 - }, +/obj/machinery/atmospherics/pipe/manifold/supply/visible, /obj/machinery/meter/atmos/distro_loop, /turf/open/floor/plasteel, /area/engine/atmos) @@ -39175,6 +40532,13 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) +"bNa" = ( +/obj/machinery/door/firedoor, +/obj/structure/sign/departments/evac{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) "bNb" = ( /obj/item/airlock_painter, /obj/structure/lattice, @@ -39339,9 +40703,7 @@ /turf/open/floor/engine, /area/science/mixing) "bNw" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix{ - dir = 2 - }, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix, /turf/open/floor/engine, /area/science/mixing) "bNx" = ( @@ -39406,9 +40768,7 @@ /turf/open/floor/plating/airless, /area/science/test_area) "bNF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plating/airless, /area/science/test_area) "bNG" = ( @@ -39446,11 +40806,30 @@ /turf/open/floor/plasteel, /area/quartermaster/office) "bNL" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, /obj/machinery/airalarm{ - pixel_y = 23 + dir = 1; + pixel_y = -22 }, /turf/open/floor/plating, /area/construction) +"bNM" = ( +/obj/machinery/light, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/sign/directions/evac{ + dir = 4; + pixel_y = -25 + }, +/obj/structure/sign/directions/science{ + dir = 4; + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) "bNN" = ( /obj/structure/cable{ icon_state = "1-2" @@ -39472,8 +40851,6 @@ dir = 6 }, /obj/item/radio/intercom{ - freerange = 0; - frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30 }, @@ -39494,8 +40871,7 @@ pixel_y = 23 }, /obj/machinery/camera{ - c_tag = "Atmospherics Monitoring"; - dir = 2 + c_tag = "Atmospherics Monitoring" }, /obj/machinery/light{ dir = 4 @@ -39662,8 +41038,7 @@ /obj/structure/closet/emcloset, /obj/machinery/camera{ c_tag = "Virology Airlock"; - network = list("ss13","medbay"); - dir = 2 + network = list("ss13","medbay") }, /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -39775,7 +41150,6 @@ /area/tcommsat/computer) "bOE" = ( /obj/machinery/sparker/toxmix{ - dir = 2; pixel_x = 25 }, /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input{ @@ -39850,12 +41224,21 @@ /area/quartermaster/office) "bOM" = ( /obj/structure/table, -/obj/item/paper_bin, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 7 }, +/obj/item/clothing/head/welding{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/multitool, +/obj/item/clothing/glasses/welding, /turf/open/floor/plasteel, -/area/tcommsat/computer) +/area/engine/atmos) "bON" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -39866,9 +41249,9 @@ /area/security/detectives_office) "bOO" = ( /obj/machinery/power/apc{ + areastring = "/area/security/checkpoint/engineering"; dir = 8; name = "Engineering Security APC"; - areastring = "/area/security/checkpoint/engineering"; pixel_x = -24 }, /obj/structure/cable{ @@ -39949,7 +41332,6 @@ /obj/effect/turf_decal/delivery, /obj/machinery/door/window/northleft{ dir = 4; - icon_state = "left"; name = "Atmospherics Desk"; req_access_txt = "24" }, @@ -40181,6 +41563,13 @@ }, /turf/open/floor/plasteel/white, /area/medical/virology) +"bPv" = ( +/obj/machinery/door/firedoor, +/obj/structure/sign/departments/evac{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) "bPw" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 @@ -40416,6 +41805,36 @@ }, /turf/open/floor/plasteel, /area/tcommsat/computer) +"bPR" = ( +/obj/structure/sign/mining{ + pixel_y = 7 + }, +/turf/closed/wall, +/area/quartermaster/miningdock) +"bPS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/departments/custodian{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bPT" = ( +/obj/structure/reagent_dispensers/foamtank, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/box, +/turf/open/floor/plasteel, +/area/engine/atmos) "bPU" = ( /obj/item/shard, /turf/open/floor/plating, @@ -40784,7 +42203,6 @@ /obj/item/clothing/ears/earmuffs, /obj/machinery/camera{ c_tag = "Testing Lab North"; - dir = 2; network = list("ss13","rd") }, /turf/open/floor/plasteel, @@ -40793,7 +42211,6 @@ /obj/machinery/requests_console{ department = "Science"; departmentType = 2; - dir = 2; name = "Science Requests Console"; pixel_y = 30; receive_ore_updates = 1 @@ -40824,6 +42241,21 @@ }, /turf/open/floor/engine, /area/science/misc_lab) +"bQX" = ( +/obj/structure/reagent_dispensers/watertank/high, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/box, +/turf/open/floor/plasteel, +/area/engine/atmos) "bQY" = ( /obj/structure/table/reinforced, /obj/item/integrated_circuit_printer, @@ -40844,6 +42276,50 @@ /obj/item/stack/sheet/metal/ten, /turf/open/floor/plasteel/white, /area/science/circuit) +"bRb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/structure/sign/departments/engineering{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"bRc" = ( +/obj/structure/sign/poster/contraband/space_cola{ + pixel_x = -32 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bRd" = ( +/obj/structure/sign/poster/contraband/space_up{ + pixel_x = -32; + pixel_y = 32 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bRe" = ( +/obj/machinery/computer/slot_machine{ + balance = 15; + money = 500; + pixel_x = -5 + }, +/obj/structure/sign/poster/contraband/robust_softdrinks{ + pixel_x = -32 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bRf" = ( +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) "bRg" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance{ @@ -40957,7 +42433,6 @@ /obj/machinery/door/firedoor/heavy, /obj/machinery/door/window/northleft{ dir = 4; - icon_state = "left"; name = "Atmospherics Desk"; req_access_txt = "24" }, @@ -41122,7 +42597,7 @@ /area/medical/virology) "bRO" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/plasteel/white, @@ -41342,6 +42817,14 @@ /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plating, /area/maintenance/port/aft) +"bSr" = ( +/obj/structure/sign/poster/official/fruit_bowl{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/hallway/primary/starboard) "bSs" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, @@ -41356,6 +42839,18 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/tcommsat/computer) +"bSu" = ( +/obj/machinery/camera{ + c_tag = "Starboard Primary Hallway 2" + }, +/obj/structure/sign/poster/contraband/eat{ + pixel_y = 32; + poster_item_desc = "This poster promotes obesity, it also promotes giving the Chef a reason to keep their job." + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/hallway/primary/starboard) "bSv" = ( /obj/machinery/camera{ c_tag = "Construction Area"; @@ -41459,20 +42954,13 @@ /area/engine/atmos) "bSF" = ( /obj/structure/table, -/obj/item/clothing/head/welding{ - pixel_x = -3; - pixel_y = 7 +/obj/item/paper_bin, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 }, -/obj/item/clothing/head/welding{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/item/multitool, +/obj/item/pen/fountain, /turf/open/floor/plasteel, -/area/engine/atmos) +/area/tcommsat/computer) "bSG" = ( /obj/structure/table, /obj/item/stack/sheet/metal/fifty, @@ -41513,6 +43001,12 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/engine/atmos) +"bSL" = ( +/obj/structure/sign/poster/contraband/red_rum{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) "bSM" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 @@ -41528,6 +43022,15 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/engine/atmos) +"bSO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/sign/poster/official/cohiba_robusto_ad{ + pixel_y = -32 + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) "bSP" = ( /obj/machinery/atmospherics/pipe/manifold/cyan/visible{ dir = 4 @@ -41611,9 +43114,9 @@ /area/medical/virology) "bSX" = ( /obj/machinery/power/apc/highcap/five_k{ + areastring = "/area/medical/virology"; dir = 1; name = "Virology APC"; - areastring = "/area/medical/virology"; pixel_y = 24 }, /obj/structure/cable{ @@ -41629,6 +43132,15 @@ /obj/machinery/vending/medical, /turf/open/floor/plasteel/white, /area/medical/virology) +"bSZ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/sign/poster/contraband/have_a_puff{ + pixel_y = -32 + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) "bTa" = ( /obj/machinery/door/window/northleft{ dir = 4; @@ -41810,6 +43322,13 @@ /obj/item/pen, /turf/open/floor/plasteel/white, /area/science/circuit) +"bTq" = ( +/obj/structure/sign/poster/contraband/smoke{ + desc = "This poster reminds us all that the Detective is a parasite. Year after year, they must get replacement lungs because of their addiction. "; + pixel_y = -32 + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) "bTr" = ( /obj/structure/cable{ icon_state = "1-2" @@ -41818,6 +43337,68 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"bTs" = ( +/obj/structure/sign/poster/official/help_others{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"bTt" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/maintenance/port) +"bTu" = ( +/obj/machinery/recharge_station, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/sign/poster/official/state_laws{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/science/robotics/mechbay) +"bTv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/structure/sign/poster/official/ian{ + pixel_x = 32; + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bTw" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/structure/sign/poster/official/love_ian{ + pixel_x = 32; + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bTx" = ( +/obj/effect/turf_decal/bot, +/obj/structure/sign/poster/official/pda_ad{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bTy" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/sign/poster/contraband/hacking_guide{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/maintenance/aft) "bTz" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -41903,9 +43484,9 @@ /area/tcommsat/computer) "bTJ" = ( /obj/machinery/power/apc{ - name = "Aft Hall APC"; areastring = "/area/hallway/primary/aft"; dir = 8; + name = "Aft Hall APC"; pixel_x = -25; pixel_y = 1 }, @@ -42226,6 +43807,21 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/port/aft) +"bUw" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/sign/poster/contraband/free_drone{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) "bUx" = ( /obj/structure/disposalpipe/junction/yjunction{ dir = 1 @@ -42255,11 +43851,27 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"bUA" = ( +/obj/machinery/door/poddoor/preopen{ + id = "Engineering"; + name = "engineering security door" + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/shower{ + dir = 8 + }, +/obj/structure/sign/warning/enginesafety{ + pixel_x = 32 + }, +/obj/structure/sign/poster/official/safety_eye_protection{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "bUB" = ( /obj/machinery/power/apc{ - dir = 2; - name = "Telecomms Monitoring APC"; areastring = "/area/tcommsat/computer"; + name = "Telecomms Monitoring APC"; pixel_y = -24 }, /obj/structure/cable{ @@ -42404,6 +44016,7 @@ /area/engine/atmos) "bUU" = ( /obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/obj/machinery/atmospherics/miner/n2o, /turf/open/floor/engine/n2o, /area/engine/atmos) "bUV" = ( @@ -42416,6 +44029,13 @@ }, /turf/open/floor/engine/n2o, /area/engine/atmos) +"bUX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/sign/poster/official/safety_eye_protection, +/turf/closed/wall/r_wall, +/area/engine/engineering) "bUY" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -42511,7 +44131,6 @@ /area/hallway/primary/aft) "bVg" = ( /obj/item/radio/intercom{ - broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20 }, @@ -42634,10 +44253,12 @@ }, /turf/open/space, /area/space/nearstation) +"bVw" = ( +/obj/structure/sign/poster/official/safety_eye_protection, +/turf/closed/wall/r_wall, +/area/engine/engineering) "bVx" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 2 - }, +/obj/machinery/atmospherics/components/unary/outlet_injector/on, /turf/open/floor/plating/airless, /area/maintenance/port/aft) "bVy" = ( @@ -42709,6 +44330,19 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"bVH" = ( +/obj/machinery/camera{ + c_tag = "Engineering Storage"; + dir = 4 + }, +/obj/machinery/rnd/production/protolathe/department/engineering, +/obj/structure/sign/poster/contraband/power{ + desc = "Lord Singuloth must feed. Annoyingly, it's really easy for people to sabotage containment and let Lord Singuloth eat the entire station.. For this reason, Nanotrasen prefers Supermatter reactors."; + pixel_x = -32; + poster_item_desc = "This poster depicts Lord Singuloth. Nanotrasen doesn't approve. Nanotrasen wants Supermatter over Singularities, as they are usually much safer." + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "bVI" = ( /turf/closed/wall/r_wall, /area/tcommsat/server) @@ -42719,6 +44353,12 @@ /obj/machinery/vending/snack/random, /turf/open/floor/plasteel, /area/engine/break_room) +"bVL" = ( +/obj/machinery/shower{ + dir = 8 + }, +/turf/open/floor/plasteel/freezer, +/area/security/prison) "bVM" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, @@ -42902,6 +44542,13 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/medical/virology) +"bWk" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel, +/area/quartermaster/office) "bWl" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -42959,9 +44606,7 @@ /turf/open/floor/plasteel, /area/science/misc_lab) "bWq" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 2 - }, +/obj/machinery/atmospherics/components/binary/pump, /turf/open/floor/plasteel, /area/science/misc_lab) "bWr" = ( @@ -43040,9 +44685,9 @@ dir = 1 }, /obj/machinery/power/apc/highcap/five_k{ + areastring = "/area/tcommsat/server"; dir = 1; name = "Telecomms Server APC"; - areastring = "/area/tcommsat/server"; pixel_y = 25 }, /obj/structure/cable{ @@ -43156,8 +44801,6 @@ /area/security/checkpoint/engineering) "bWR" = ( /obj/item/radio/intercom{ - freerange = 0; - frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30 }, @@ -43447,6 +45090,17 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/science/circuit) +"bXu" = ( +/obj/machinery/camera{ + c_tag = "Bar West"; + dir = 4 + }, +/obj/machinery/computer/arcade/orion_trail, +/obj/structure/sign/poster/official/foam_force_ad{ + pixel_x = -32 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "bXv" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -43611,6 +45265,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/item/cartridge/atmos, /turf/open/floor/plasteel, /area/engine/atmos) "bXS" = ( @@ -43618,23 +45273,15 @@ dir = 4 }, /obj/machinery/portable_atmospherics/canister, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plasteel{ - dir = 2 - }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, /area/engine/atmos) "bXT" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 8 }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plasteel{ - dir = 2 - }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, /area/engine/atmos) "bXU" = ( /obj/machinery/atmospherics/pipe/manifold/yellow/visible{ @@ -43773,12 +45420,8 @@ /area/science/misc_lab) "bYk" = ( /obj/structure/reagent_dispensers/fueltank, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plasteel{ - dir = 2 - }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, /area/science/misc_lab) "bYl" = ( /obj/structure/disposalpipe/segment, @@ -43793,12 +45436,8 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plasteel{ - dir = 2 - }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, /area/science/misc_lab) "bYn" = ( /obj/structure/disposalpipe/segment, @@ -43937,29 +45576,22 @@ /turf/open/floor/plasteel, /area/tcommsat/computer) "bYG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ +/obj/structure/chair{ dir = 8 }, +/obj/machinery/light, +/obj/effect/landmark/start/assistant, /turf/open/floor/plasteel, -/area/hallway/primary/aft) +/area/quartermaster/office) "bYH" = ( /turf/closed/wall, /area/engine/break_room) "bYI" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 2 - }, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/plasteel, /area/hallway/primary/aft) "bYJ" = ( @@ -44046,6 +45678,7 @@ /area/engine/atmos) "bYU" = ( /obj/machinery/portable_atmospherics/canister/toxins, +/obj/machinery/atmospherics/miner/toxins, /turf/open/floor/engine/plasma, /area/engine/atmos) "bYV" = ( @@ -44121,6 +45754,22 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/engine/break_room) +"bZf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) "bZg" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -44256,13 +45905,17 @@ /area/engine/break_room) "bZz" = ( /obj/structure/table, -/obj/machinery/cell_charger, /obj/machinery/light_switch{ pixel_x = -23 }, /obj/machinery/light{ dir = 8 }, +/obj/item/book/manual/wiki/engineering_hacking{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/book/manual/wiki/engineering_construction, /turf/open/floor/plasteel, /area/engine/break_room) "bZA" = ( @@ -44327,9 +45980,9 @@ /area/engine/break_room) "bZF" = ( /obj/machinery/power/apc{ + areastring = "/area/engine/atmos"; dir = 8; name = "Atmospherics APC"; - areastring = "/area/engine/atmos"; pixel_x = -24 }, /obj/structure/cable{ @@ -44513,6 +46166,15 @@ }, /turf/open/floor/plasteel, /area/science/misc_lab) +"cab" = ( +/obj/structure/table, +/obj/item/storage/pill_bottle/dice{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/reagent_containers/food/snacks/cherrycupcake, +/turf/open/floor/wood, +/area/crew_quarters/bar) "cac" = ( /obj/structure/chair/stool, /turf/open/floor/plating, @@ -44555,6 +46217,18 @@ }, /turf/open/floor/circuit/telecomms/mainframe, /area/tcommsat/server) +"caj" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/soda_cans/starkist{ + pixel_x = 5; + pixel_y = 7 + }, +/obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb{ + pixel_x = -3; + pixel_y = 2 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "cak" = ( /obj/machinery/telecomms/hub/preset, /obj/effect/turf_decal/tile/neutral{ @@ -44592,6 +46266,18 @@ }, /turf/open/floor/plasteel/dark, /area/tcommsat/computer) +"cam" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchen"; + name = "kitchen shutters" + }, +/obj/item/reagent_containers/food/snacks/bluecherrycupcake{ + pixel_y = 5 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) "can" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 @@ -44690,13 +46376,20 @@ /area/hallway/primary/aft) "caw" = ( /obj/structure/table, +/obj/item/storage/box/lights/mixed, /obj/item/clothing/glasses/meson, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -22 +/obj/item/clothing/glasses/meson, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 }, /turf/open/floor/plasteel, -/area/engine/break_room) +/area/engine/engineering) "cax" = ( /obj/structure/closet/wardrobe/black, /obj/effect/decal/cleanable/cobweb, @@ -44733,6 +46426,18 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/security/checkpoint/engineering) +"caB" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchen"; + name = "kitchen shutters" + }, +/obj/item/reagent_containers/food/snacks/cheesynachos{ + pixel_y = 5 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) "caC" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -44861,9 +46566,7 @@ /obj/machinery/atmospherics/components/binary/valve{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/maintenance/aft) "caQ" = ( @@ -45000,9 +46703,9 @@ /area/science/misc_lab) "cbd" = ( /obj/machinery/power/apc{ + areastring = "/area/science/misc_lab"; dir = 4; name = "Testing Lab APC"; - areastring = "/area/science/misc_lab"; pixel_x = 26 }, /obj/structure/cable{ @@ -45100,13 +46803,11 @@ /turf/open/floor/plating, /area/tcommsat/computer) "cbp" = ( -/obj/structure/closet/secure_closet/engineering_chief{ - req_access_txt = "0" - }, +/obj/structure/closet/secure_closet/engineering_chief, /obj/machinery/power/apc/highcap/five_k{ + areastring = "/area/crew_quarters/heads/chief"; dir = 4; name = "CE Office APC"; - areastring = "/area/crew_quarters/heads/chief"; pixel_x = 24 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -45170,16 +46871,14 @@ dir = 8; pixel_y = -22 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 2 - }, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/plasteel, /area/hallway/primary/aft) "cbu" = ( /obj/machinery/power/apc{ + areastring = "/area/engine/break_room"; dir = 8; name = "Engineering Foyer APC"; - areastring = "/area/engine/break_room"; pixel_x = -24 }, /obj/structure/cable{ @@ -45196,33 +46895,37 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "cbw" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + sortType = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" }, /turf/open/floor/plating, /area/maintenance/port/aft) "cbx" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/maintenance/port/aft) -"cby" = ( /obj/structure/cable{ icon_state = "1-2" }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cby" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, /turf/open/floor/plating, /area/maintenance/port/aft) "cbz" = ( @@ -45419,6 +47122,11 @@ }, /turf/open/floor/plasteel, /area/science/misc_lab) +"cbX" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/machinery/atmospherics/miner/carbon_dioxide, +/turf/open/floor/engine/co2, +/area/engine/atmos) "cbY" = ( /obj/structure/table/reinforced, /obj/item/multitool, @@ -45472,10 +47180,10 @@ /turf/open/space, /area/solar/port/aft) "ccd" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/port/aft) +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/machinery/atmospherics/miner/nitrogen, +/turf/open/floor/engine/n2, +/area/engine/atmos) "cce" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -45638,17 +47346,15 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "ccu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/disposalpipe/segment{ - dir = 5 + icon_state = "1-2" }, /turf/open/floor/plating, /area/maintenance/port/aft) "ccv" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /turf/open/floor/plasteel, @@ -45687,8 +47393,9 @@ /turf/open/floor/plasteel, /area/engine/atmos) "ccB" = ( -/obj/machinery/portable_atmospherics/canister/carbon_dioxide, -/turf/open/floor/engine/co2, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/atmospherics/miner/oxygen, +/turf/open/floor/engine/o2, /area/engine/atmos) "ccC" = ( /obj/machinery/air_sensor/atmos/carbon_tank, @@ -45720,6 +47427,11 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/aft) +"ccH" = ( +/obj/structure/table, +/obj/item/paper/fluff/holodeck/disclaimer, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) "ccI" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -45802,13 +47514,23 @@ /area/science/xenobiology) "ccR" = ( /obj/machinery/portable_atmospherics/pump, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plasteel{ - dir = 2 - }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, /area/science/misc_lab) +"ccS" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/window, +/obj/structure/sign/poster/official/high_class_martini{ + pixel_x = -32 + }, +/obj/effect/landmark/start/assistant, +/obj/structure/chair/sofa/left{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "ccT" = ( /obj/machinery/light{ dir = 4 @@ -45896,38 +47618,30 @@ /turf/open/floor/plasteel, /area/tcommsat/computer) "cdh" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 8; - sortType = 4 +/obj/structure/lattice/catwalk, +/obj/item/stack/marker_beacon{ + anchored = 1; + icon_state = "markerburgundy-on"; + light_power = 3; + light_range = 3; + name = "Docking Beacon"; + picked_color = "Burgundy" }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, -/area/maintenance/port/aft) +/area/space/nearstation) "cdi" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, +/obj/structure/grille, +/obj/structure/lattice, /turf/open/floor/plating, -/area/maintenance/port/aft) +/area/space/nearstation) "cdj" = ( -/obj/structure/cable{ - icon_state = "1-8" +/obj/structure/closet/crate/bin, +/obj/effect/turf_decal/stripes/line{ + dir = 10 }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/port/aft) +/obj/item/cartridge/atmos, +/turf/open/floor/engine, +/area/engine/engineering) "cdk" = ( /obj/machinery/computer/atmos_alert, /obj/effect/turf_decal/tile/neutral{ @@ -45952,6 +47666,7 @@ /obj/item/paper/monitorkey, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/item/pen/fountain, /turf/open/floor/plasteel, /area/crew_quarters/heads/chief) "cdn" = ( @@ -45996,9 +47711,9 @@ /area/maintenance/starboard/aft) "cds" = ( /obj/machinery/power/apc{ + areastring = "/area/maintenance/starboard/aft"; dir = 8; name = "Starboard Quarter Maintenance APC"; - areastring = "/area/maintenance/starboard/aft"; pixel_x = -25 }, /obj/structure/cable{ @@ -46165,6 +47880,13 @@ }, /turf/open/floor/plating, /area/maintenance/aft) +"cdM" = ( +/obj/structure/window, +/obj/structure/chair/sofa/right{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "cdN" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -46179,6 +47901,15 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"cdP" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) "cdQ" = ( /obj/structure/closet/emcloset, /obj/effect/decal/cleanable/cobweb, @@ -46190,12 +47921,8 @@ /area/maintenance/starboard/aft) "cdS" = ( /obj/machinery/portable_atmospherics/scrubber, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plasteel{ - dir = 2 - }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, /area/science/misc_lab) "cdT" = ( /obj/effect/turf_decal/stripes/line{ @@ -46223,9 +47950,9 @@ /area/maintenance/starboard/aft) "cdW" = ( /obj/machinery/power/apc{ + areastring = "/area/maintenance/port/aft"; dir = 8; name = "Port Quarter Maintenance APC"; - areastring = "/area/maintenance/port/aft"; pixel_x = -25; pixel_y = 1 }, @@ -46242,6 +47969,13 @@ }, /turf/open/floor/plasteel/white, /area/science/research) +"cdY" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) "cdZ" = ( /obj/machinery/telecomms/processor/preset_two, /turf/open/floor/plasteel/dark/telecomms, @@ -46316,16 +48050,18 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cek" = ( -/obj/machinery/door/poddoor/preopen{ - id = "Engineering"; - name = "engineering security door" - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/shower{ - dir = 8 +/obj/structure/closet/wardrobe/grey, +/obj/machinery/requests_console{ + department = "Locker Room"; + pixel_x = -32 }, +/obj/item/clothing/under/assistantformal, +/obj/item/clothing/under/assistantformal, +/obj/item/clothing/under/assistantformal, +/obj/item/clothing/under/color/grey, +/obj/item/clothing/under/color/grey, /turf/open/floor/plasteel, -/area/engine/engineering) +/area/crew_quarters/locker) "cel" = ( /obj/machinery/door/poddoor/preopen{ id = "Engineering"; @@ -46402,6 +48138,18 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"ceu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) "cev" = ( /obj/effect/spawner/structure/window, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -46532,12 +48280,8 @@ /area/maintenance/starboard/aft) "ceP" = ( /obj/machinery/portable_atmospherics/canister, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plasteel{ - dir = 2 - }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, /area/science/misc_lab) "ceQ" = ( /obj/structure/cable{ @@ -46607,18 +48351,18 @@ "cfa" = ( /obj/structure/rack, /obj/item/storage/belt/utility, -/obj/item/wrench, -/obj/item/weldingtool, -/obj/item/clothing/head/welding{ - pixel_x = -3; - pixel_y = 5 - }, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/item/weldingtool/largetank, +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/item/clothing/glasses/welding, /turf/open/floor/plasteel, /area/engine/engineering) "cfb" = ( @@ -46637,7 +48381,7 @@ /area/crew_quarters/heads/chief) "cfd" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/structure/closet/radiation, @@ -46661,6 +48405,16 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/port/aft) +"cff" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) "cfg" = ( /obj/structure/cable{ icon_state = "1-4" @@ -46737,10 +48491,9 @@ /area/maintenance/aft) "cfr" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 2; external_pressure_bound = 140; - pressure_checks = 0; - name = "killroom vent" + name = "killroom vent"; + pressure_checks = 0 }, /obj/machinery/camera{ c_tag = "Xenobiology Kill Room"; @@ -46804,14 +48557,33 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"cfB" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/effect/turf_decal/tile/yellow, +"cfA" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, /obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"cfB" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"cfC" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, /turf/open/floor/plasteel, -/area/engine/engineering) +/area/crew_quarters/fitness) "cfD" = ( /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/maintenance{ @@ -46824,6 +48596,18 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/port/aft) +"cfE" = ( +/obj/machinery/button/door{ + desc = "Bolts the doors to the Private Study."; + id = "PrivateStudy"; + name = "Private Study Lock"; + pixel_x = 25; + pixel_y = 25; + req_access_txt = ""; + req_one_access_txt = "28;63" + }, +/turf/open/floor/wood, +/area/library) "cfF" = ( /obj/machinery/suit_storage_unit/ce, /obj/effect/turf_decal/stripes/line{ @@ -46858,17 +48642,15 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/chief) "cfI" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 +/obj/structure/cable{ + icon_state = "1-8" }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/structure/disposalpipe/segment{ + dir = 9 }, +/obj/effect/landmark/start/assistant, /turf/open/floor/plasteel, -/area/engine/engineering) +/area/hallway/primary/central) "cfJ" = ( /obj/machinery/light/small{ dir = 1 @@ -46932,6 +48714,14 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) +"cfS" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 8; + name = "8maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) "cfT" = ( /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 9 @@ -46944,6 +48734,17 @@ }, /turf/closed/wall, /area/maintenance/disposal/incinerator) +"cfV" = ( +/obj/structure/table, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/item/hand_labeler, +/turf/open/floor/plasteel, +/area/engine/break_room) "cfW" = ( /obj/structure/cable{ icon_state = "1-2" @@ -46956,9 +48757,8 @@ /area/maintenance/aft) "cfX" = ( /obj/machinery/power/apc{ - dir = 2; - name = "Incinerator APC"; areastring = "/area/maintenance/disposal/incinerator"; + name = "Incinerator APC"; pixel_y = -24 }, /obj/structure/cable, @@ -47067,7 +48867,6 @@ /area/science/xenobiology) "cgl" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ - dir = 2; external_pressure_bound = 120; name = "killroom vent" }, @@ -47097,11 +48896,11 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "cgp" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 +/obj/structure/rack, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 4; + name = "4maintenance loot spawner" }, /turf/open/floor/plating, /area/maintenance/starboard/aft) @@ -47139,9 +48938,8 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "cgu" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/cobweb/cobweb2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/maintenance/starboard/aft) "cgv" = ( @@ -47239,6 +49037,17 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"cgH" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/item/clothing/under/overalls, +/obj/item/clothing/under/overalls, +/obj/item/radio/headset/headset_eng, +/turf/open/floor/plasteel, +/area/engine/engineering) "cgI" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 @@ -47266,6 +49075,34 @@ }, /turf/open/floor/engine, /area/engine/engineering) +"cgM" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/item/clothing/under/overalls, +/obj/item/clothing/under/overalls, +/obj/item/radio/headset/headset_eng, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cgN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/closet/secure_closet/engineering_electrical, +/obj/item/storage/toolbox/artistic{ + icon_state = "yellow"; + item_state = "toolbox_yellow"; + name = "Cable Toolbox"; + pixel_y = 6 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "cgO" = ( /obj/structure/rack, /obj/item/lighter, @@ -47286,6 +49123,19 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/chief) +"cgP" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/closet/secure_closet/engineering_welding, +/obj/item/clothing/glasses/welding, +/obj/item/clothing/glasses/welding, +/obj/item/clothing/glasses/welding, +/turf/open/floor/plasteel, +/area/engine/engineering) "cgQ" = ( /obj/machinery/camera{ c_tag = "Engineering East"; @@ -47486,7 +49336,6 @@ dir = 1 }, /obj/machinery/atmospherics/components/binary/pump{ - dir = 2; name = "atmospherics mix pump" }, /turf/open/floor/plasteel, @@ -47726,12 +49575,10 @@ /turf/open/space, /area/solar/port/aft) "chM" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/port/aft) +/obj/structure/closet/secure_closet/engineering_personal, +/obj/item/radio/headset/headset_eng, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "chN" = ( /obj/structure/cable{ icon_state = "4-8" @@ -47791,6 +49638,22 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"chU" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/artistic{ + icon_state = "yellow"; + item_state = "toolbox_yellow"; + name = "Cable Toolbox"; + pixel_y = 6 + }, +/obj/item/storage/toolbox/artistic{ + icon_state = "yellow"; + item_state = "toolbox_yellow"; + name = "Cable Toolbox"; + pixel_y = -4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "chV" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -47809,6 +49672,22 @@ }, /turf/open/floor/engine, /area/engine/engineering) +"chW" = ( +/obj/item/wrench, +/obj/structure/rack, +/obj/item/weldingtool/hugetank, +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/item/clothing/glasses/welding, +/obj/item/clothing/glasses/welding, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "chX" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -47825,6 +49704,10 @@ /obj/machinery/shieldgen, /turf/open/floor/plating, /area/engine/engineering) +"chZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/crew_quarters/locker) "cia" = ( /obj/effect/turf_decal/bot{ dir = 1 @@ -47837,6 +49720,14 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"cib" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 8; + name = "8maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) "cic" = ( /obj/effect/turf_decal/bot{ dir = 1 @@ -47859,9 +49750,9 @@ }, /obj/structure/reagent_dispensers/watertank, /obj/machinery/power/apc/highcap/fifteen_k{ + areastring = "/area/engine/engineering"; dir = 1; name = "Engineering APC"; - areastring = "/area/engine/engineering"; pixel_y = 25 }, /obj/structure/cable{ @@ -47903,6 +49794,10 @@ "cig" = ( /turf/closed/wall, /area/engine/engineering) +"cih" = ( +/obj/effect/spawner/lootdrop/keg, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "cii" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -47958,6 +49853,13 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/chief) +"cil" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/light_construct{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "cim" = ( /turf/open/floor/plasteel, /area/crew_quarters/heads/chief) @@ -48029,6 +49931,12 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/engine/atmos) +"ciw" = ( +/obj/structure/light_construct{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "cix" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible, /turf/closed/wall/r_wall, @@ -48118,8 +50026,10 @@ }, /area/maintenance/starboard/aft) "ciK" = ( -/obj/structure/rack, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, /turf/open/floor/plating, /area/maintenance/starboard/aft) "ciL" = ( @@ -48172,17 +50082,16 @@ /obj/machinery/power/solar_control{ dir = 4; id = "portsolar"; - name = "Port Quarter Solar Control"; - track = 0 + name = "Port Quarter Solar Control" }, /obj/structure/cable, /turf/open/floor/plating, /area/maintenance/solars/port/aft) "ciR" = ( /obj/machinery/power/apc{ + areastring = "/area/maintenance/solars/port/aft"; dir = 4; name = "Port Quarter Solar APC"; - areastring = "/area/maintenance/solars/port/aft"; pixel_x = 23; pixel_y = 2 }, @@ -48207,22 +50116,27 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/port/aft) +"ciV" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/light_construct{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "ciW" = ( /obj/effect/landmark/blobstart, /turf/open/floor/plating, /area/engine/engineering) "ciX" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/rods/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/stock_parts/cell/high/plus, -/obj/item/stack/sheet/mineral/plasma{ - amount = 30 +/obj/machinery/light{ + dir = 1 }, -/turf/open/floor/plating, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, /area/engine/engineering) "ciY" = ( /obj/machinery/door/poddoor{ @@ -48698,6 +50612,11 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/heads/chief) +"cjZ" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/turf/open/floor/plasteel, +/area/engine/engineering) "cka" = ( /obj/machinery/door/poddoor/preopen{ id = "testlab"; @@ -48807,14 +50726,22 @@ /turf/closed/wall, /area/maintenance/starboard/aft) "ckp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" + lootcount = 3; + name = "3maintenance loot spawner" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"ckq" = ( +/obj/structure/table, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/rods/fifty, +/turf/open/floor/plasteel, +/area/engine/engineering) "ckr" = ( /obj/structure/reagent_dispensers/fueltank, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -48831,9 +50758,9 @@ /area/maintenance/solars/starboard/aft) "ckt" = ( /obj/machinery/power/apc{ + areastring = "/area/maintenance/solars/starboard/aft"; dir = 8; name = "Starboard Quarter Solar APC"; - areastring = "/area/maintenance/solars/starboard/aft"; pixel_x = -26; pixel_y = 3 }, @@ -48907,6 +50834,14 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"ckE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/maintenance{ + name = "Locker Room Maintenance"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/port) "ckF" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, @@ -48931,6 +50866,15 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"ckJ" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/obj/item/storage/toolbox/electrical, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) "ckK" = ( /obj/structure/tank_dispenser, /obj/effect/turf_decal/bot{ @@ -48995,10 +50939,27 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/heads/chief) +"ckP" = ( +/obj/structure/noticeboard{ + pixel_y = -27 + }, +/obj/structure/chair/sofa/right{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "ckQ" = ( /obj/structure/closet/cardboard, /turf/open/floor/plasteel, /area/quartermaster/warehouse) +"ckR" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/coin/gold, +/obj/item/coin/gold, +/obj/item/coin/gold, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "ckS" = ( /obj/structure/closet/cardboard, /turf/open/floor/plating, @@ -49072,9 +51033,7 @@ /turf/open/floor/plasteel, /area/maintenance/disposal/incinerator) "cle" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 2 - }, +/obj/machinery/atmospherics/pipe/simple/general/visible, /turf/open/floor/plasteel, /area/maintenance/disposal/incinerator) "clf" = ( @@ -49188,13 +51147,10 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "cls" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 3; - name = "3maintenance loot spawner" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, +/turf/closed/wall, /area/maintenance/starboard/aft) "clt" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -49328,6 +51284,12 @@ }, /turf/open/floor/plasteel/dark, /area/engine/engine_smes) +"clH" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "clI" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -49342,23 +51304,33 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/engine/engineering) -"clM" = ( -/obj/structure/table, -/obj/item/crowbar/large, -/obj/item/storage/box/lights/mixed, -/obj/item/clothing/glasses/meson, -/obj/item/clothing/glasses/meson, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 +"clK" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/rods/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/stock_parts/cell/high/plus, +/obj/item/stack/sheet/mineral/plasma{ + amount = 30 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/plasteel, +/obj/item/lightreplacer, +/obj/item/lightreplacer, +/turf/open/floor/plating, /area/engine/engineering) +"clL" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/coin/silver, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"clM" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/coin/silver, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "clN" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/tile/yellow{ @@ -49367,13 +51339,21 @@ /turf/open/floor/plasteel, /area/engine/engineering) "clO" = ( -/obj/machinery/vr_sleeper, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/landmark/start/janitor, +/mob/living/simple_animal/hostile/lizard{ + name = "Wags-His-Tail"; + real_name = "Wags-His-Tail" }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/area/janitor) +"clP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/port) "clQ" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -49381,21 +51361,9 @@ /turf/open/floor/plasteel, /area/engine/engineering) "clR" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/table, -/obj/item/book/manual/wiki/engineering_hacking{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/book/manual/wiki/engineering_construction, -/obj/item/clothing/glasses/meson, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) +/obj/machinery/portable_atmospherics/pump, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "clS" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/machinery/rnd/production/techfab/department/security, @@ -49406,28 +51374,30 @@ /turf/open/floor/plasteel, /area/security/main) "clT" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/open/floor/engine/n2, -/area/engine/atmos) +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "clU" = ( /turf/open/floor/engine/n2, /area/engine/atmos) "clV" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/engine/o2, -/area/engine/atmos) +/obj/item/radio/intercom{ + pixel_y = 25 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "clW" = ( /turf/open/floor/engine/o2, /area/engine/atmos) "clX" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/landmark/xmastree, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ +/obj/machinery/light{ dir = 1 }, +/obj/item/radio/intercom{ + pixel_y = 25 + }, /turf/open/floor/plasteel, -/area/crew_quarters/bar) +/area/hallway/primary/central) "clY" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/engine/air, @@ -49435,17 +51405,28 @@ "clZ" = ( /turf/open/floor/engine/air, /area/engine/atmos) +"cma" = ( +/obj/machinery/hydroponics/constructable, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel/dark, +/area/hydroponics) "cmb" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/maintenance/disposal/incinerator) "cmc" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 2 +/obj/machinery/camera{ + c_tag = "Starboard Primary Hallway" }, -/turf/closed/wall/r_wall, -/area/maintenance/disposal/incinerator) +/obj/item/radio/intercom{ + pixel_y = 25 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) "cmd" = ( /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) @@ -49509,15 +51490,27 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) +"cmm" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/condiment/flour, +/obj/item/kitchen/rollingpin, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) "cmn" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) +/obj/structure/table/wood, +/obj/item/storage/pill_bottle/dice, +/turf/open/floor/plasteel, +/area/security/prison) "cmo" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"cmp" = ( +/obj/structure/table/wood, +/obj/item/toy/cards/deck, +/turf/open/floor/plasteel, +/area/security/prison) "cmq" = ( /obj/effect/landmark/xeno_spawn, /obj/structure/disposalpipe/segment, @@ -49526,21 +51519,18 @@ }, /area/maintenance/starboard/aft) "cmr" = ( -/obj/structure/closet/toolcloset, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 +/obj/structure/chair/comfy/brown{ + dir = 8 }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) +/turf/open/floor/plasteel, +/area/security/prison) "cms" = ( -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" +/obj/structure/chair/comfy/brown{ + color = "#66b266"; + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) +/turf/open/floor/plasteel, +/area/security/prison) "cmt" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -49567,8 +51557,7 @@ /obj/machinery/power/solar_control{ dir = 1; id = "starboardsolar"; - name = "Starboard Quarter Solar Control"; - track = 0 + name = "Starboard Quarter Solar Control" }, /obj/structure/cable{ icon_state = "0-4" @@ -49648,6 +51637,13 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/engine/engineering) +"cmE" = ( +/obj/structure/chair/comfy/brown{ + color = "#596479"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) "cmF" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -49659,7 +51655,7 @@ /area/engine/engineering) "cmG" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/structure/cable{ @@ -49676,6 +51672,34 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"cmH" = ( +/obj/item/electropack/shockcollar, +/obj/item/assembly/signaler, +/turf/open/floor/plating, +/area/security/prison) +"cmI" = ( +/obj/structure/bed, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/plating, +/area/security/prison) +"cmJ" = ( +/obj/machinery/door/airlock/external{ + name = "External Access"; + req_access_txt = "13" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cmK" = ( +/obj/machinery/door/airlock/external{ + name = "External Access"; + req_access_txt = "13" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "cmL" = ( /obj/structure/cable{ icon_state = "4-8" @@ -49725,9 +51749,7 @@ /turf/open/floor/plasteel, /area/construction) "cmY" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 2 - }, +/obj/machinery/atmospherics/components/binary/pump/on, /obj/machinery/light/small{ dir = 8 }, @@ -49877,9 +51899,6 @@ /area/engine/engine_smes) "cnr" = ( /obj/machinery/door/window/southleft{ - base_state = "left"; - dir = 2; - icon_state = "left"; name = "Engineering Delivery"; req_access_txt = "10" }, @@ -49971,7 +51990,6 @@ /area/maintenance/aft) "cnF" = ( /obj/machinery/atmospherics/components/binary/pump/on{ - dir = 2; name = "Waste Out" }, /obj/structure/disposalpipe/segment{ @@ -49996,11 +52014,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"cnJ" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "cnK" = ( /obj/structure/cable{ icon_state = "1-2" @@ -50390,39 +52403,18 @@ pixel_x = 3; pixel_y = -3 }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, +/obj/effect/turf_decal/bot, /obj/structure/window/reinforced{ dir = 1; layer = 2.9 }, -/turf/open/floor/plasteel{ - dir = 2 - }, +/turf/open/floor/plasteel, /area/ai_monitored/security/armory) "coT" = ( /obj/machinery/atmospherics/pipe/simple/general/visible, /obj/machinery/meter, /turf/open/floor/engine, /area/science/misc_lab) -"coZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/structure/closet/secure_closet/engineering_electrical, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cpa" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/structure/closet/secure_closet/engineering_welding, -/turf/open/floor/plasteel, -/area/engine/engineering) "cpb" = ( /obj/structure/closet/emcloset, /obj/machinery/light/small{ @@ -50484,9 +52476,7 @@ /turf/open/floor/plasteel, /area/engine/engine_smes) "cpk" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/plasteel, /area/engine/engine_smes) "cpl" = ( @@ -50542,13 +52532,6 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"cps" = ( -/obj/structure/table, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/glass/fifty, -/turf/open/floor/plasteel, -/area/engine/engineering) "cpt" = ( /obj/structure/table, /obj/item/clothing/gloves/color/yellow, @@ -50648,7 +52631,6 @@ "cpO" = ( /obj/structure/lattice, /obj/machinery/atmospherics/components/binary/pump/on{ - dir = 2; name = "Incinerator Output Pump" }, /turf/open/space, @@ -50672,9 +52654,8 @@ "cpS" = ( /obj/structure/cable, /obj/machinery/power/apc{ - dir = 2; - name = "SMES room APC"; areastring = "/area/engine/engine_smes"; + name = "SMES room APC"; pixel_y = -24 }, /obj/effect/turf_decal/stripes/line{ @@ -50705,25 +52686,12 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/engine/engine_smes) -"cpV" = ( -/obj/machinery/camera{ - c_tag = "Engineering Storage"; - dir = 4 - }, -/obj/machinery/rnd/production/protolathe/department/engineering, -/turf/open/floor/plasteel, -/area/engine/engineering) "cpW" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, /turf/open/floor/plasteel, /area/engine/engineering) -"cpX" = ( -/obj/structure/table, -/obj/item/stack/rods/fifty, -/turf/open/floor/plasteel, -/area/engine/engineering) "cpY" = ( /obj/structure/cable{ icon_state = "2-8" @@ -50905,13 +52873,6 @@ /obj/machinery/door/poddoor/incinerator_atmos_main, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) -"cqu" = ( -/obj/machinery/door/airlock/external{ - name = "External Access"; - req_access_txt = "13" - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "cqv" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plating, @@ -50969,7 +52930,7 @@ dir = 4 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/engine, @@ -51025,11 +52986,6 @@ }, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) -"cqJ" = ( -/obj/structure/cable, -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/starboard/aft) "cqK" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance{ @@ -51044,12 +53000,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) -"cqM" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) "cqN" = ( /obj/structure/table, /obj/item/stack/sheet/metal/fifty, @@ -51079,10 +53029,6 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"cqQ" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plasteel, -/area/engine/engineering) "cqR" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plasteel, @@ -51131,7 +53077,6 @@ /area/engine/supermatter) "crb" = ( /obj/machinery/atmospherics/components/binary/pump{ - dir = 2; name = "Gas to Chamber" }, /obj/effect/decal/cleanable/dirt, @@ -51158,12 +53103,6 @@ }, /turf/open/floor/plating, /area/engine/engineering) -"cri" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "crk" = ( /obj/structure/lattice/catwalk, /turf/open/space, @@ -51252,9 +53191,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/stripes/corner{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/plasteel, /area/hallway/secondary/entry) "crz" = ( @@ -51545,14 +53482,6 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/simple, /turf/open/space, /area/space/nearstation) -"csy" = ( -/obj/structure/table, -/obj/item/weldingtool, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "csA" = ( /obj/machinery/door/poddoor/shutters/preopen{ id = "engsm"; @@ -51570,13 +53499,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) -"csE" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/starboard/aft) "csH" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -51662,27 +53584,6 @@ }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) -"csY" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/structure/cable, -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/starboard/aft) -"csZ" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/starboard/aft) "cta" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -51981,7 +53882,7 @@ pixel_y = 4 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/neutral{ @@ -52034,9 +53935,9 @@ icon_state = "0-8" }, /obj/machinery/power/apc{ + areastring = "/area/ai_monitored/turret_protected/aisat_interior"; dir = 4; name = "MiniSat Foyer APC"; - areastring = "/area/ai_monitored/turret_protected/aisat_interior"; pixel_x = 27 }, /obj/structure/chair, @@ -52101,8 +54002,6 @@ "cud" = ( /obj/machinery/turretid{ control_area = "/area/ai_monitored/turret_protected/aisat_interior"; - enabled = 1; - icon_state = "control_standby"; name = "Antechamber Turret Control"; pixel_y = -24; req_access = null; @@ -52181,7 +54080,6 @@ /area/ai_monitored/turret_protected/aisat/service) "cun" = ( /obj/machinery/atmospherics/components/binary/pump{ - dir = 2; name = "Mix to MiniSat" }, /obj/effect/turf_decal/stripes/line, @@ -52190,12 +54088,10 @@ "cuo" = ( /obj/machinery/portable_atmospherics/canister/air, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, -/obj/effect/turf_decal/stripes/corner{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat/atmos) "cup" = ( @@ -52279,7 +54175,7 @@ amount = 35 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/stripes/corner{ @@ -52347,8 +54243,6 @@ }, /obj/machinery/turretid{ control_area = "/area/ai_monitored/turret_protected/aisat/atmos"; - enabled = 1; - icon_state = "control_standby"; name = "Atmospherics Turret Control"; pixel_x = -27; req_access = null; @@ -52374,8 +54268,6 @@ }, /obj/machinery/turretid{ control_area = "/area/ai_monitored/turret_protected/aisat/service"; - enabled = 1; - icon_state = "control_standby"; name = "Service Bay Turret Control"; pixel_x = 27; req_access = null; @@ -52464,9 +54356,9 @@ /area/ai_monitored/turret_protected/aisat/atmos) "cuM" = ( /obj/machinery/power/apc{ + areastring = "/area/ai_monitored/turret_protected/aisat/atmos"; dir = 8; name = "MiniSat Atmospherics APC"; - areastring = "/area/ai_monitored/turret_protected/aisat/atmos"; pixel_x = -27 }, /obj/structure/cable{ @@ -52590,9 +54482,9 @@ /area/ai_monitored/turret_protected/aisat/service) "cuX" = ( /obj/machinery/power/apc{ + areastring = "/area/ai_monitored/turret_protected/aisat/service"; dir = 4; name = "MiniSat Service Bay APC"; - areastring = "/area/ai_monitored/turret_protected/aisat/service"; pixel_x = 27 }, /obj/structure/cable{ @@ -52677,8 +54569,6 @@ }, /obj/machinery/turretid{ control_area = "/area/ai_monitored/turret_protected/aisat/hallway"; - enabled = 1; - icon_state = "control_standby"; name = "Chamber Hallway Turret Control"; pixel_x = 32; pixel_y = -24; @@ -52796,23 +54686,18 @@ "cvx" = ( /obj/effect/landmark/start/ai/secondary, /obj/item/radio/intercom{ - anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_y = 28 }, /obj/item/radio/intercom{ - broadcasting = 0; freerange = 1; - listening = 1; name = "Common Channel"; pixel_x = -27; pixel_y = 5 }, /obj/item/radio/intercom{ - anyai = 1; - broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; @@ -52835,23 +54720,18 @@ "cvA" = ( /obj/effect/landmark/start/ai/secondary, /obj/item/radio/intercom{ - anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_y = 28 }, /obj/item/radio/intercom{ - broadcasting = 0; freerange = 1; - listening = 1; name = "Common Channel"; pixel_x = 27; pixel_y = 5 }, /obj/item/radio/intercom{ - anyai = 1; - broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; @@ -52950,7 +54830,7 @@ network = list("aicore") }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /turf/open/floor/circuit, @@ -53047,9 +54927,9 @@ "cwa" = ( /obj/structure/cable, /obj/machinery/power/apc{ + areastring = "/area/ai_monitored/turret_protected/aisat/hallway"; dir = 4; name = "MiniSat Chamber Hallway APC"; - areastring = "/area/ai_monitored/turret_protected/aisat/hallway"; pixel_x = 27 }, /turf/open/floor/circuit, @@ -53148,7 +55028,7 @@ dir = 8 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/plasteel/dark, @@ -53246,13 +55126,6 @@ }, /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/ai) -"cwy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table_frame, -/obj/item/wirerod, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "cwz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 @@ -53312,9 +55185,8 @@ icon_state = "0-8" }, /obj/machinery/power/apc/highcap/five_k{ - dir = 2; - name = "AI Chamber APC"; areastring = "/area/ai_monitored/turret_protected/ai"; + name = "AI Chamber APC"; pixel_y = -24 }, /obj/machinery/flasher{ @@ -53454,14 +55326,6 @@ }, /turf/open/floor/plating, /area/security/processing) -"cxW" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/airlock/external{ - name = "External Access"; - req_access_txt = "13" - }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) "cxY" = ( /obj/machinery/camera{ c_tag = "Arrivals Escape Pod 1"; @@ -53740,15 +55604,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel, /area/hallway/secondary/exit) -"czP" = ( -/obj/structure/chair/stool/bar, -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) "czQ" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/disposalpipe/segment, @@ -53995,15 +55850,6 @@ /obj/structure/closet/secure_closet/freezer/kitchen/maintenance, /turf/open/floor/plating, /area/maintenance/port/aft) -"cAz" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/chapel/office) "cAA" = ( /obj/machinery/light/small{ dir = 1 @@ -54049,9 +55895,8 @@ icon_state = "4-8" }, /obj/machinery/power/apc{ - dir = 2; - name = "Head of Personnel APC"; areastring = "/area/crew_quarters/heads/hop"; + name = "Head of Personnel APC"; pixel_y = -24 }, /obj/structure/cable{ @@ -54079,14 +55924,6 @@ /obj/machinery/light/small, /turf/open/floor/plating, /area/maintenance/port/aft) -"cAL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/mob/living/simple_animal/hostile/lizard{ - name = "Wags-His-Tail"; - real_name = "Wags-His-Tail" - }, -/turf/open/floor/plasteel, -/area/janitor) "cAN" = ( /obj/machinery/door/airlock/maintenance{ name = "Security Maintenance"; @@ -54125,23 +55962,18 @@ "cAS" = ( /obj/effect/landmark/start/ai, /obj/item/radio/intercom{ - broadcasting = 0; freerange = 1; - listening = 1; name = "Common Channel"; pixel_x = -27; pixel_y = -9 }, /obj/item/radio/intercom{ - anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_y = -31 }, /obj/item/radio/intercom{ - anyai = 1; - broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; @@ -54236,7 +56068,6 @@ "cBb" = ( /obj/machinery/camera/motion{ c_tag = "MiniSat AI Chamber South"; - dir = 2; network = list("aicore") }, /turf/open/floor/circuit, @@ -54268,7 +56099,6 @@ "cBf" = ( /obj/machinery/camera{ c_tag = "MiniSat External South"; - dir = 2; network = list("minisat"); start_active = 1 }, @@ -54318,14 +56148,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel, /area/hallway/primary/starboard) -"cBn" = ( -/obj/machinery/camera{ - c_tag = "Locker Room Toilets"; - dir = 8 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet/locker) "cBo" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/wood, @@ -54401,7 +56223,6 @@ /area/science/xenobiology) "cBA" = ( /obj/machinery/button/massdriver{ - dir = 2; id = "toxinsdriver"; pixel_y = 24 }, @@ -54540,18 +56361,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat/hallway) -"cBT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"cBU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/emcloset, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "cBV" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security{ @@ -54626,31 +56435,6 @@ }, /turf/closed/wall, /area/security/detectives_office) -"cCl" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"cCm" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"cCn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/power/apc{ - dir = 4; - name = "Detective's Office APC"; - areastring = "/area/security/detectives_office"; - pixel_x = 24 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/maintenance/port) "cCo" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -55138,7 +56922,7 @@ /area/engine/engineering) "cEk" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/plasteel/dark, @@ -55187,7 +56971,6 @@ "cEu" = ( /obj/machinery/camera{ c_tag = "Supermatter Chamber"; - dir = 2; network = list("engine"); pixel_x = 23 }, @@ -55382,7 +57165,6 @@ icon_state = "1-4" }, /obj/machinery/atmospherics/components/binary/pump{ - dir = 2; name = "Cooling Loop Bypass" }, /turf/open/floor/engine, @@ -55547,7 +57329,6 @@ }, /obj/machinery/camera{ c_tag = "Engineering Supermatter Aft"; - dir = 2; network = list("ss13","engine"); pixel_x = 23 }, @@ -55599,13 +57380,6 @@ }, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"cGd" = ( -/obj/structure/closet/crate/bin, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/engine, -/area/engine/engineering) "cGe" = ( /obj/structure/cable{ icon_state = "2-8" @@ -55654,10 +57428,6 @@ /obj/machinery/light, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"cGl" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) "cGr" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 @@ -55913,7 +57683,6 @@ /area/science/robotics/mechbay) "cHF" = ( /obj/machinery/button/door{ - dir = 2; id = "Skynet_launch"; name = "Mech Bay Door Control"; pixel_x = 6; @@ -56262,9 +58031,9 @@ /area/quartermaster/sorting) "cNL" = ( /obj/machinery/power/apc{ + areastring = "/area/maintenance/central"; dir = 1; name = "Central Maintenance APC"; - areastring = "/area/maintenance/central"; pixel_y = 24 }, /obj/structure/cable{ @@ -56299,9 +58068,9 @@ /area/maintenance/starboard) "cNS" = ( /obj/machinery/power/apc{ + areastring = "/area/maintenance/starboard"; dir = 4; name = "Starboard Maintenance APC"; - areastring = "/area/maintenance/starboard"; pixel_x = 26 }, /obj/structure/cable{ @@ -56430,12 +58199,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"cSz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/chapel/main) "cSA" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -56528,7 +58291,6 @@ "cSM" = ( /obj/machinery/computer/station_alert, /obj/item/radio/intercom{ - broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20 }, @@ -56727,7 +58489,6 @@ icon_state = "4-8" }, /obj/machinery/requests_console{ - announcementConsole = 0; department = "Engineering"; departmentType = 4; name = "Engineering RC"; @@ -56746,9 +58507,9 @@ icon_state = "1-2" }, /obj/machinery/power/apc{ + areastring = "/area/maintenance/central/secondary"; dir = 8; name = "Central Maintenance APC"; - areastring = "/area/maintenance/central/secondary"; pixel_x = -24 }, /obj/structure/cable{ @@ -56772,12 +58533,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) -"cTI" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "12" - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "cTJ" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -56808,9 +58563,9 @@ /area/medical/morgue) "cTM" = ( /obj/machinery/power/apc{ + areastring = "/area/maintenance/department/medical/morgue"; dir = 4; name = "Morgue Maintenance APC"; - areastring = "/area/maintenance/department/medical/morgue"; pixel_x = 26 }, /obj/structure/cable{ @@ -57015,13 +58770,6 @@ icon_state = "wood-broken4" }, /area/maintenance/bar) -"fGf" = ( -/obj/machinery/smartfridge/disks{ - pixel_y = 2 - }, -/obj/structure/table, -/turf/open/floor/plasteel, -/area/hydroponics) "fKl" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/landmark/event_spawn, @@ -57032,17 +58780,10 @@ dir = 4 }, /obj/machinery/firealarm{ - dir = 2; pixel_y = 24 }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) -"gbq" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/construction) "gbT" = ( /obj/structure/table, /obj/item/stack/sheet/metal/fifty, @@ -57058,18 +58799,6 @@ "gjl" = ( /turf/closed/wall, /area/quartermaster/warehouse) -"gsz" = ( -/obj/machinery/camera{ - c_tag = "Fitness Room South"; - dir = 1 - }, -/obj/machinery/vr_sleeper, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) "gwd" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -57098,12 +58827,6 @@ }, /turf/open/floor/wood, /area/maintenance/bar) -"gOZ" = ( -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/turf/open/floor/plating, -/area/crew_quarters/fitness) "gWd" = ( /obj/structure/cable{ icon_state = "1-4" @@ -57128,9 +58851,9 @@ icon_state = "1-2" }, /obj/machinery/power/apc{ + areastring = "/area/quartermaster/warehouse"; dir = 4; name = "Cargo Warehouse APC"; - areastring = "/area/quartermaster/warehouse"; pixel_x = 26 }, /obj/structure/cable{ @@ -57138,10 +58861,6 @@ }, /turf/open/floor/plating, /area/maintenance/port) -"hwu" = ( -/obj/machinery/vr_sleeper, -/turf/open/floor/plasteel, -/area/security/prison) "hEm" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-22" @@ -57159,13 +58878,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/white, /area/science/circuit) -"ihn" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/vr_sleeper, -/turf/open/floor/plasteel, -/area/security/prison) "iiW" = ( /turf/open/floor/wood, /area/maintenance/bar) @@ -57255,12 +58967,6 @@ /obj/machinery/rnd/production/techfab/department/cargo, /turf/open/floor/plasteel, /area/quartermaster/office) -"jnR" = ( -/obj/machinery/atmospherics/components/binary/valve{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) "jqv" = ( /obj/structure/chair/wood/normal{ dir = 1 @@ -57311,15 +59017,6 @@ }, /turf/open/floor/wood, /area/maintenance/port/aft) -"jMY" = ( -/obj/structure/table, -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = -7 - }, -/obj/item/stack/cable_coil, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) "jSO" = ( /obj/machinery/light{ dir = 4 @@ -57338,14 +59035,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"khb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/obj/structure/table, -/obj/item/kitchen/rollingpin, -/turf/open/floor/plasteel, -/area/hallway/secondary/service) "khB" = ( /obj/machinery/door/airlock/external{ req_access_txt = "13" @@ -57390,14 +59079,6 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/service) -"kQk" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, -/turf/open/floor/plating, -/area/maintenance/department/medical/morgue) "kQq" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ @@ -57437,14 +59118,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/science/circuit) -"mjr" = ( -/obj/machinery/vending/wardrobe/bar_wardrobe, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"moD" = ( -/obj/effect/landmark/barthpot, -/turf/open/floor/wood, -/area/library) "mpI" = ( /obj/structure/table/wood, /turf/open/floor/wood{ @@ -57500,8 +59173,8 @@ /area/engine/engineering) "nxv" = ( /obj/machinery/power/apc{ - name = "Construction Area APC"; areastring = "/area/construction"; + name = "Construction Area APC"; pixel_y = -24 }, /obj/structure/cable{ @@ -57530,6 +59203,10 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"nWU" = ( +/obj/machinery/smartfridge/organ/preloaded, +/turf/closed/wall, +/area/medical/sleeper) "oce" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 @@ -57556,7 +59233,6 @@ /area/science/circuit) "oKh" = ( /obj/structure/chair/wood/normal{ - icon_state = "wooden_chair"; dir = 8 }, /turf/open/floor/wood, @@ -57597,9 +59273,7 @@ pixel_y = -3 }, /obj/item/radio/intercom{ - freerange = 0; frequency = 1485; - listening = 1; name = "Station Intercom (Medbay)"; pixel_x = 30 }, @@ -57668,12 +59342,6 @@ /obj/item/reagent_containers/food/drinks/beer, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"rsp" = ( -/obj/machinery/atmospherics/components/unary/tank/air{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) "rBq" = ( /obj/item/clothing/head/kitty, /obj/item/clothing/under/maid, @@ -57732,12 +59400,6 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) -"sxs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/table, -/obj/item/shovel/spade, -/turf/open/floor/plasteel, -/area/hallway/secondary/service) "sAM" = ( /turf/open/floor/wood{ icon_state = "wood-broken6" @@ -57817,7 +59479,6 @@ dir = 4 }, /obj/machinery/firealarm{ - dir = 2; pixel_y = 24 }, /turf/open/floor/carpet, @@ -57832,10 +59493,6 @@ /obj/item/restraints/handcuffs/fake, /turf/open/floor/plating, /area/maintenance/bar) -"tyO" = ( -/obj/item/clothing/under/color/grey, -/turf/open/floor/plating, -/area/maintenance/bar) "tMl" = ( /obj/effect/turf_decal/loading_area, /turf/open/floor/plasteel/showroomfloor, @@ -57885,16 +59542,6 @@ /obj/item/flashlight, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"uhH" = ( -/obj/item/wrench, -/obj/item/weldingtool, -/obj/item/clothing/head/welding{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/structure/rack, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) "ujF" = ( /obj/machinery/cryopod{ dir = 4 @@ -57948,9 +59595,7 @@ /turf/open/floor/plasteel, /area/science/circuit) "uPT" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 2 - }, +/obj/machinery/atmospherics/pipe/simple/general/visible, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -58001,13 +59646,6 @@ }, /turf/open/floor/wood, /area/maintenance/bar) -"vpY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/machinery/meter, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) "vsM" = ( /obj/machinery/power/apc/auto_name/south, /obj/structure/cable, @@ -58024,7 +59662,7 @@ "vzp" = ( /obj/structure/table/reinforced, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/item/stock_parts/cell/high, @@ -58119,11 +59757,6 @@ }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) -"wUY" = ( -/obj/structure/table, -/obj/item/reagent_containers/glass/bucket, -/turf/open/floor/plasteel, -/area/hallway/secondary/service) "xgF" = ( /obj/structure/chair/stool/bar, /turf/open/floor/wood{ @@ -64207,6 +65840,11 @@ aaa aaa aaa aaa +cdh +aaa +aaa +aaa +cdh aaa aaa aaa @@ -64219,12 +65857,7 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa +aVw aaa aaa aaa @@ -64458,23 +66091,23 @@ aaa aaa aaa aaa +cdh +aaa +cdh aaa aaa aaa +gXs aaa aaa aaa +gXs aaa aaa aaa +cdh aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +cdh aaa aaa aaa @@ -64715,23 +66348,23 @@ aaa aaa aaa aaa +gXs +aaa +gXs aaa aaa +gXs +apv +gXs +gXs +gXs +apv +gXs aaa aaa +gXs aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +gXs aaa aaa aaa @@ -64971,25 +66604,25 @@ aaa aaa aaa aaa +apv +apv +gXs +aag +apv +gXs +gXs aaa aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aae -aaa +gXs +gXs +apv +apv +aQd +aag +apv aaa aaa aaa @@ -65228,25 +66861,25 @@ aaa aaa aaa aaa +aGk +aQe +aaa +aQe +aRx +gXs +aoV aaa aaa aaa aaa aaa aaa +gXs +aGk +aQe aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aQe +aRx aaa aaa aaa @@ -65485,10 +67118,11 @@ aaa aaa aaa aaa -aaa +aab aaa cpe aaa +asL aaa aaa aaa @@ -65498,12 +67132,11 @@ aaa aaa aaa aaa -aaa -aaa +aab aaa cwV aaa -aaa +asL aaa aaa aaa @@ -65741,14 +67374,12 @@ aaa aaa aaa aae -aaf +alN +gXs aaa aaa aaa -aaa -aaa -aaa -aae +gXs aaa aaa aaa @@ -65758,9 +67389,11 @@ aaa aaa aaa aaa +gXs aaa aaa aaa +gXs aaa aaa aaa @@ -65998,14 +67631,12 @@ aaa aaa aaa aaa -aaf -aaa -aaa -aaa -aaa -aaa -aaa -aaa +alN +gXs +aaa +aaa +aaa +gXs aaa aaa aaa @@ -66015,9 +67646,11 @@ aaa aaa aaa aaa +gXs aaa aaa aaa +gXs aaa aaa aaa @@ -66255,14 +67888,12 @@ aaa aaa aaa aaa -aaf -aaa -aaa -aaa -aaa -aaa -aaa -aaa +alN +gXs +aaa +aaa +aaa +gXs aaa aaa aaa @@ -66272,9 +67903,11 @@ aaa aaa aaa aaa +gXs aaa aaa aaa +gXs aaa aaa aaa @@ -66512,11 +68145,12 @@ aaa aaa aaa aaa -aaf -aaa +alN +gXs aaa cqq aaa +gXs aaa aaa aaa @@ -66526,12 +68160,11 @@ aaa aaa aaa aaa -aaa -aaa +gXs aaa cqq aaa -aaa +gXs aaa aaa aaa @@ -66769,7 +68402,7 @@ aaf aaf aaf aaa -aaf +alN arB asE cyb @@ -68842,7 +70475,7 @@ aaa awW aOh ayl -ayl +bRf aRY awW aaa @@ -68854,7 +70487,7 @@ awW awZ ayl ayl -bgi +aQR awW aaa aaa @@ -71419,7 +73052,7 @@ aUO aUy aWm aWf -aUQ +bcW czK bhN bcl @@ -71702,7 +73335,7 @@ aaa aaa aaa aaa -aae +aaa aaa aaa aaa @@ -71958,7 +73591,7 @@ aaa aaa aaa aaa -aaa +aae aaa aaa aaa @@ -72186,7 +73819,7 @@ aPa aQn ayl czK -aUP +aUO aUO aXL aXZ @@ -72437,7 +74070,7 @@ aHy ayl aKk aLA -aNf +aHD aNf aLA aQD @@ -74463,8 +76096,8 @@ ady ady ady ady -ady ajq +aTp ajW akB alh @@ -74489,7 +76122,7 @@ aBG aAQ aAQ aAQ -aBM +aAQ aAQ aKn aLE @@ -74505,11 +76138,11 @@ aXQ aXQ aXQ aXQ -aXQ -aXQ -aXQ -aXQ -bhQ +aPz +aPz +bcJ +aPz +bkg bjj bkF aaa @@ -74759,14 +76392,14 @@ aPA aPA aPA aXQ -aZt +baO aXQ -aZt -aXQ -aZt -aXQ -aZt -bhQ +bdV +aPz +axS +bgs +biM +bkg bjj bkF aaa @@ -75011,20 +76644,20 @@ aNm aOl aPA aQO -aSh aTw aUU +cek aWn aXQ -aZv -aXQ bbL aXQ -bdJ -aXQ -bgr -bhQ -bjj +bgl +aPz +aEb +bhK +biZ +bvn +bml bkF aaa aaa @@ -75249,7 +76882,7 @@ alU amC arM alU -atT +avc asO avV atO @@ -75257,7 +76890,7 @@ ayw atN aAV aBQ -aDh +bbA aDo aFQ aHe @@ -75274,13 +76907,13 @@ aUn aTy aWy aYe -aZw -aZw bbq -bct -bfa -bfa -bhQ +bcS +aPz +aEc +bhP +bjD +bkg bjk bkE aaa @@ -75524,20 +77157,20 @@ aLk aNo aOo aPA -aQQ +aQS aQN aSV aUo aUX aXp -baO -aZo -baw -bcO -baw -cBn -bgs +bct +bdJ +bgr +aPz +aSG bhQ +bjW +bwP bjk bkF aaa @@ -75781,20 +77414,20 @@ aLE aLE aOn aPA -aQP +aQQ aQN -aTx -aUV +aTz +aUt aWo aXQ aXQ aXQ aXQ -aXQ -aXQ -aXQ -aXQ -bhQ +aPz +aPz +aPz +aPz +bkg bjk aPz aaa @@ -75838,7 +77471,7 @@ ccb ccb ccb aaa -chL +aUf aaa ccb ccb @@ -76030,26 +77663,26 @@ aAY aBQ aDl bxk -aFS +aDo aDo aIX -aBQ +blt aLE aLE aOp aPA -aQR +aMg aQN -aTA -aUq +aQN +aUt aWq -aXs -aYH -aZx +aQN +aQN +aQN +aQN +bfe bbO aPA -bdM -aPz bgt bhS bjk @@ -76095,7 +77728,7 @@ aaa aaf aaa aaa -chL +aUg aaa aaa aaf @@ -76297,16 +77930,16 @@ aOl aPC aQN aQN -aTz -aUp -aWq -aXr -aZx +aTB +aUq +aUV +aXv +bbr +aQN +aQN cBh -bbN +bit aPA -bdL -aPz bgt bhR bjk @@ -76352,7 +77985,7 @@ aaf aaf aaf aaf -chM +aUg aaf aaf aaf @@ -76545,25 +78178,25 @@ aBQ aDn aDo aDo -aHD +aFU aIZ aBQ aLE aLE aOq aPD -aQT -aQT +aQV +aQN aTC -aUs +aUr aUY -aXv -aYS -aZx +aXw +bbU +aQN +aQN +bfe bbO aPA -bdM -aPz aSg bhT bjk @@ -76793,7 +78426,7 @@ amC amC amC alU -aqO +avc amC atJ atO @@ -76804,23 +78437,23 @@ aDo aDo aDo aIY -aBQ +blt aLE aLE aOl aPA -aQS +aQX aQN -aTB +aTC aUr -aWq -aXt +aYX +aXx +bcu +aQN +aQN aPA aPA aPA -aPA -aPA -aPz bel bfI bgq @@ -77047,7 +78680,7 @@ aaf alU alU alU -alU +amC amC alU atM @@ -77058,7 +78691,7 @@ aAY aBQ aDp aDo -aFU +aFS aDo aJb aKp @@ -77066,15 +78699,15 @@ aLE aLE aOl aPE -aQV +aQY +aQN +aTC +aUs +aWB +aXx +bcu +aQN aQN -aSi -aUu -aWq -aXw -aZB -aZB -aZB aZB aPA bfc @@ -77303,8 +78936,8 @@ alU aaf aaH alU -arO -alU +aQT +amC amC avc atO @@ -77323,15 +78956,15 @@ aLH aLE aOl aPA -aQU +aSX +aQN +aTD +aUu +aXk +aXA +bcw aQN aQN -aUt -aWq -aXw -aZA -aZA -aZA aZA aPA aWv @@ -77580,17 +79213,17 @@ aLK aLK aOr aPA -aQX -aQN +aTx aQN +aSi aUv aWp -aXA -aYX -aYX -aYX -bbs -bcw +aTy +aTy +aTy +aTy +bcT +chZ bfd bgw aZE @@ -77837,18 +79470,18 @@ aLJ aLE aOl aPA -aQW -aQW -aTD -aQW +aTA +aQN +aUp aUZ -aXx +aXr aYU aYU aYU -bbr -bcu -bfe +aYU +aYU +ckE +bTt aYb aZE bjm @@ -78098,14 +79731,14 @@ aPG aPG aPG aPG +aZx +aQW +aQW +aQW +aQW +bdL aPA -aPA -aPA -aPA -aPA -aPA -aPA -aWv +clP aYb aZE bjp @@ -78351,19 +79984,19 @@ aLL bDe aOl aPF -aQY -aSk +aSh +aQt aTE aPG -aWu -aYa -aZD -aZD -hcE -aZD -aZD -bff -bfk +aPA +aPA +aPA +aPA +aPA +aPA +aPA +aWv +aYb aZE bjo bjr @@ -78612,17 +80245,17 @@ aRa aRa aTG aPG -aWw -aYc -aZF -aZF -aZF -aZF -aZF -aZF -bgy +aWu +aYa +aZD +aZD +hcE +aZD +aZD +bff +bfk aZE -bjr +bgx bjr ama bmh @@ -78664,7 +80297,7 @@ bHE bUs ceY bCq -bHE +bJP bUs bHE bLu @@ -78869,15 +80502,15 @@ aQZ aRa aTF aPG -aSX -aWC -baS -aZI -baS -baS -bdS -bdU -ckQ +aWw +aYc +aZF +aZF +aZF +aZF +aZF +aZF +bgy gjl bjq bjr @@ -79131,7 +80764,7 @@ aXJ bgA aZp baY -bcJ +aYZ bcF bfg bgA @@ -79420,7 +81053,7 @@ aoV bCq bHE bHE -bSq +bad cdb bCq bVE @@ -79645,7 +81278,7 @@ aXM bfi cBi bbS -bcS +bdM bbt bfi beD @@ -79899,14 +81532,14 @@ aTH aPK aWz aWC +baS +baS +baS +bcR +baS +baS +baS gjl -gjl -gjl -bcT -gjl -gjl -gjl -aZE bju biv bmf @@ -79947,14 +81580,14 @@ mrR dKP odx rBq -tur +bat bCq bUs bLv aaa bLv bJf -ccd +cfS bCq aaa aaa @@ -80154,16 +81787,16 @@ aRc aSm aTJ aPK -cCl -aYh -cCm -cCm -cCm -cCn -aPz +aWA +aWC +baS +aZI +baS bdW -aSg -aZE +bdS +bdU +ckQ +gjl bgz biT boU @@ -80174,7 +81807,7 @@ bbR btu bbR bOL -bxy +bPR byF bwW bGm @@ -80411,11 +82044,11 @@ aPK aSm aTI aPK -aWB +aXs cCj apd apd -bbU +apd cCk apd aZK @@ -80460,7 +82093,7 @@ iiW dfL dKP mqZ -tyO +tur wfR bCq bUs @@ -80668,9 +82301,9 @@ aPK aSn aTK aPK -apd -cCj -asW +aXt +aZo +aYj baW bLE bLG @@ -80929,8 +82562,8 @@ apd aYi aqW aqW -bbQ -bLG +aVT +bSO apd aZH aZK @@ -81208,7 +82841,7 @@ bwY byJ bwe bAc -bBI +bwL bGn bGn bGn @@ -81444,7 +83077,7 @@ aWG aZa baX bcH -bdE +bSZ apd aZH bnL @@ -81642,9 +83275,9 @@ aaa aaa aaa aaa -aaa -aaa -aaa +gXs +gXs +brT abc abu abu @@ -81727,7 +83360,7 @@ bCq bHD bJe bCq -bLu +cib bHE bHE bHE @@ -81898,10 +83531,10 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa +gXs +aai +aai +aai abb abt aca @@ -81954,11 +83587,11 @@ aSa aSr aSr apd -aYZ +asW bLE aqW aqW -bLE +bTq apd beA bqp @@ -82156,9 +83789,9 @@ aaa aaa aaa aaa -aaa -aaa -aaa +aai +cmH +aay abe abw acc @@ -82211,7 +83844,7 @@ aTL aTP aWD apd -aYj +aYh aZL baU baU @@ -82227,8 +83860,8 @@ bnJ bbR bbR bbR -bty -buJ +bWk +bYG bwe bxE byM @@ -82412,10 +84045,10 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa +gXs +aai +cmI +aay abd abv acb @@ -82519,8 +84152,8 @@ bLw bLw bLw caq -cbw -ccu +bCA +bHE ciT bCq bSs @@ -82670,11 +84303,11 @@ aaa aaa aaf aaf -aaH -aai -aai -abg -aby +ctv +acd +aaM +aaP +aaY aby aby aby @@ -82776,10 +84409,10 @@ bVI bVI bVI bTA -bEP -cdi -bCq -bCq +bHF +bHE +bHE +bHE bHE bHE cmD @@ -82787,7 +84420,7 @@ cnr cnU chD cpq -cpV +bVH cqw cqO crp @@ -82928,10 +84561,10 @@ aaf aaf aai aai -aai -aaU abf -abx +aat +aaU +abg acd acC ada @@ -83033,8 +84666,8 @@ bWB bWB bVI cax -cbx -cdh +cbw +cby ciU cjK ckA @@ -83185,7 +84818,7 @@ aai aai aai aaI -aaM +aat aat aat aat @@ -83252,12 +84885,12 @@ aYl bBi aLY bnN -boY +bTv bqw aJq aJq aYl -aKF +bTw aLX aJq aJq @@ -83290,8 +84923,8 @@ cdd cea bVI caz -cby -cdj +cbx +ccu cdv cem cem @@ -83440,8 +85073,8 @@ aaf aai aan aaw -aaB -aat +aaD +aaL aaJ aat abh @@ -83695,9 +85328,9 @@ aaa aag aaa aak -aap -aay -aaD +aao +aaz +aaE aat aat aat @@ -83734,7 +85367,7 @@ ats atY auo axy -ayN +ayM azE aAW aCa @@ -83771,7 +85404,7 @@ bqy cBr bqy buK -bqy +bTx aJw aJq aJq @@ -83803,10 +85436,10 @@ bWB bWB cec bVI -cay +bUw ccw chY -ciX +clK cjM ckB ckB @@ -83817,7 +85450,7 @@ coH cgR cgR cqx -cqR +cgR crp crJ crT @@ -83952,9 +85585,9 @@ aaa aag aaf aaj -aao -aax -aaC +aap +aaB +aaF aat aat adO @@ -83991,7 +85624,7 @@ atu cCi awg axy -ayM +ayN azs aAR aBP @@ -84071,10 +85704,10 @@ ckC ccw cnX coH -cps -cpX +cjZ +ckq cqz -cqQ +cqR ccw crH crT @@ -84209,13 +85842,13 @@ aaa aag aaa aal -aar -aay -aaF -aat -aaO -aaW +aaq +aax +aaN aat +aaV +cmn +cms abB acf abM @@ -84285,11 +85918,11 @@ bqA brW btB buM -bwi +aOJ bmr aMm aJq -bBi +byV bCs bCs bEY @@ -84466,13 +86099,13 @@ aaa aag aaf aaj -aaq -aay -aaE -aaJ -aaN -aaV +aar +aaC +aaO aat +aaW +cmp +cmE aat acd abL @@ -84548,11 +86181,11 @@ aMn aJq bBi bCs -bDv +bDw +bDz +bFb bEX bFa -bHH -bFa bKt bLx bCs @@ -84723,13 +86356,13 @@ aaa aag aaa aal -aat -aay +aau aat aat -aaJ aat aat +cmr +aat abD acd acd @@ -84797,7 +86430,7 @@ bnR bpe bqB bqq -btD +bbQ buO bwk bmr @@ -84981,7 +86614,7 @@ aag aaf aaj aas -aaz +aat aat aat aat @@ -85029,7 +86662,7 @@ aGq aHO aJl ayW -aJq +clV aJq aOE aJn @@ -85062,7 +86695,7 @@ byP aJq bBi bCs -bDw +bDy bEZ bGv bHH @@ -85074,7 +86707,7 @@ bNJ bNJ bKx cjL -gbq +bNL bNI bUz bVJ @@ -85240,10 +86873,10 @@ aam aav aav aav -aaL -aaQ -aaY -ihn +aav +aav +aav +aav abE acg acJ @@ -85319,7 +86952,7 @@ byR bnM bBl bCs -bDz +bFa bFa bFa bHH @@ -85327,7 +86960,7 @@ bFa bFa bFa bCs -bNL +bNJ bNJ apV cjL @@ -85366,7 +86999,7 @@ cEL cFb cFu cFI -cGd +cdj cGs cGr ccw @@ -85494,14 +87127,14 @@ aaa aag aaf aai -aau +aaA aaA aaG -aaK -aaP +aaA +aaQ aaX -hwu -aat +abj +abG acd acD acY @@ -85576,10 +87209,10 @@ byQ aJq aJq bCs -bDy -bFb -bGw +bFa +bFa bER +bGw bJk bFa bLA @@ -85611,7 +87244,7 @@ cTa ceZ clQ cgR -cgx +bUX coM cpv cqb @@ -85626,11 +87259,11 @@ cqb cAo cGt cgx -jMY +chU csd cHa csd -uhH +chW ccw aaa aaT @@ -85757,8 +87390,8 @@ aai aai aai aai -abj -abG +abx +abF acd acd acd @@ -85831,7 +87464,7 @@ aaa aJn aXf aJq -byV +aJq bCs bAM bFa @@ -85850,7 +87483,7 @@ bNI bEP bVJ bVJ -bOM +bSF bQd bQP bSt @@ -86015,7 +87648,7 @@ aaa aaf aai abi -abF +bVL ach acK adf @@ -86536,11 +88169,11 @@ cpg acv adi adi -aaZ +arl aeW agQ ahv -ahQ +agX aiI aiH ajB @@ -86553,7 +88186,7 @@ anw anz aov aph -aph +ayY ard ard ard @@ -86793,7 +88426,7 @@ acl ajC acL adi -aaZ +anq agp agT ahx @@ -86808,7 +88441,7 @@ afM amR anw anz -aov +aJN apk anw anw @@ -86817,9 +88450,9 @@ anw aVh avj awl -axC -ayY -azZ +ayZ +aCf +aDh azZ azZ azZ @@ -87322,7 +88955,7 @@ agj amS anx anz -aoz +aKS apm aqd anA @@ -87331,9 +88964,9 @@ atd anA avk awk -axE -ayZ -aAa +aCe +aCV +aHZ aBu aAa aAa @@ -87568,7 +89201,7 @@ aeY agt agt ahz -aie +ahQ aiN ajc ajI @@ -87656,7 +89289,7 @@ bYH bYH bVg bXn -bYG +bRb cfb cfF cfb @@ -87664,7 +89297,7 @@ cik cjg cjU cfb -clM +caw cfz cgR ccw @@ -87890,7 +89523,7 @@ aJq bBu bCv bAT -bDL +bDJ bDq bCv bJs @@ -87909,7 +89542,7 @@ bWO bXK bYH bZz -caw +cfV bYH bVo bXq @@ -88148,7 +89781,7 @@ bBt bCv bDH bFf -bGB +aNJ bCv bJs bKy @@ -88337,7 +89970,7 @@ adg aeu alt agu -agX +agt ahB aij agn @@ -88354,14 +89987,14 @@ aoB aod aqe arf -aqa -atf +aqU +awy arf -aqa -atf +aqU +awy arf -aqa -atf +aqU +awy dgz tqg ujF @@ -88611,13 +90244,13 @@ aoz aod aqe arf -apY +ari ate arf -apY +ari ath arf -apY +ari ath dgz fvY @@ -88658,9 +90291,9 @@ bsh bqH aJq aJq -aXf +bPS bCv -bDJ +aNI bCt bGD bCv @@ -88695,7 +90328,7 @@ ckO ckH cja cny -ccw +bVw cip cnx cDx @@ -88906,7 +90539,7 @@ bjF blc bmz bnY -bpk +aOH bqJ bsj btI @@ -88949,7 +90582,7 @@ ciq cfb cfb cfb -clR +ciX cgR cgR cMm @@ -89119,7 +90752,7 @@ akY afM amp aiX -anA +axC anz aoC aod @@ -89129,19 +90762,19 @@ asd atg arf asd -awo +axT arf asd -aAb +aFe dgz iVU aDK vHj eVC dgz +aBM +aEs aJv -aKG -aMg bHt aOE aJn @@ -89175,7 +90808,7 @@ aJq aXf bCv bAU -cAL +clO bFg bFs bJt @@ -89382,18 +91015,18 @@ aoF apo aqh arh -asg +auA atj aul -auR +axQ atj -aul +azl +aNH +atj +aJQ azc atj -aAX -azc -atj -aFe +aMq aul aHT aJy @@ -89419,7 +91052,7 @@ bim bjG aZV bmB -bnZ +aDH bpl bqH bsl @@ -89432,8 +91065,8 @@ aLY bBx bCv apG -bFk -bDs +aPZ +aQa bCv bJs bHo @@ -89642,15 +91275,15 @@ aun asf ati auk -aux -avt -axL +arQ +aus +aJk bbl -azT -auk -auk -aDG -aFd +avt +aJR +aya +aLs +aMr auk aHH aJg @@ -89700,8 +91333,8 @@ bNT bOV bQj bRw -bSF -bOd +bOM +bPT bTP bRA bWQ @@ -89717,12 +91350,12 @@ cap ctR ccn cdo -cek +bUA ccw cet cfd -cfB -cfI +cgH +cgM cgQ cjS cjN @@ -89735,7 +91368,7 @@ cEW cse cse csu -cGl +chM ccw aaa aaa @@ -89899,15 +91532,15 @@ arf arf arf arf -auU -avG +arf +auC +aKg awr awr -azV +aKr +aAh aAh aAh -aFg -aFh aAh aAh aAh @@ -89941,7 +91574,7 @@ btL buY buY bqH -aJq +clV aJq aXf bCv @@ -89958,7 +91591,7 @@ bOV bQo bRz bSH -bOd +bQX bTP bRA bWQ @@ -90153,23 +91786,23 @@ aoG cSA aqe arf -aqo -asp +auu +atm +atm arf -auS -avv -awu -awr aAd +auW +awr +aXH +aXO aAh -aCm -aDL -aFf -aGk -aHU -alN +aSp aAh -aLQ +aUP +aAh +bbN +aAh +aOL aJq aOE aJn @@ -90202,7 +91835,7 @@ aJq aJq bBy bzs -bDO +bTy bFl bGH bHU @@ -90215,7 +91848,7 @@ bOV bQj bRy bSG -bOd +bPT bUK bVT bWR @@ -90410,23 +92043,23 @@ aoH cSA aqe arf -asm +aqC blU -atQ -avg -awp -axN +blU +awA +auy +aKh awr -aAg +awr +aKJ aAh -aDO -aDQ -aFi -aGl -aBy -aBy +apH aAh -aMn +apQ +aAh +aqt +aAh +clX aJq aOE aJn @@ -90495,7 +92128,7 @@ clU clU bOh ccw -coZ +cgN cgU cgU cDK @@ -90667,21 +92300,21 @@ ajo cSA aqe arf -ari +aqD +ask asu aun -auW -avR -axM -awu -aAf +awv +aKg +aYI +awr +bHg aAh -aCn -aDM -aGx -aAh -aAh -aBy +aop +bwi +aop +aop +aop aAh aMm aJq @@ -90714,7 +92347,7 @@ bqH bqH aJq bHt -bBz +bgi bzs bzs bFm @@ -90748,11 +92381,11 @@ bMQ aaf bQA ckU -clT +ccd cmU bOh ccw -cpa +cgP cjc cqo cDL @@ -90927,19 +92560,19 @@ arf arf arf arf -avm -aws -axP -azb -aAi -aAh -aCn -aDM -aGx -aGm -aHV -aBy -aAh +arf +auC +aKN +aYP +baa +aKM +aKP +aFE +aDY +aLQ +aYS +aop +aMw aJq aJq aJq @@ -90970,9 +92603,9 @@ bva bwu bwu bwu -bwu -bBB -aJv +bke +cfI +bBz bzs bFp bGJ @@ -91181,21 +92814,21 @@ ajo app aqi arf -ask +ars +atm atm arf -avl -awq -axO -aza +aHt +aKO +aZb +bab +aSj aAh aAh aAh -aDS -aGx aAh aAh -aDN +aMu aAh aMo aNC @@ -91227,7 +92860,7 @@ aJq aJq aJq aJq -bAj +bnZ aJq aKG bzs @@ -91438,22 +93071,22 @@ ajo aps aqk arf -asm +auv +blU aHw -aup -avn -awv -axX -aze +awX +axR +aKq +aZZ +awr +bac aAh -aBz -aBz -aDU -aGx -aGn -aHW -aBy +aVK +azm +azm aAh +aAZ +bJS aJq aJq aJq @@ -91484,9 +93117,9 @@ aJq aJq bxL byX -aJq -aJq -bCA +aXh +bmE +bAj bzs bCC bDA @@ -91695,31 +93328,31 @@ ajo apr aqj arf -ark -asL +ary +ask +aua aun -avu -awt -axV -azd -azX -aAZ -aCe -aDT -aGx +axU +awr +awr +axW +aHb +aLh +aUj +aMv +aMv +aMx +aZt aAh -aAh -aBy -aAh -aCr -aCr -aCr aJC +aJC +aJC +aQg bYP -aQg aJC aQg aJC +aJC aQg aJC aJC @@ -91776,7 +93409,7 @@ bMQ aaf bQA ckX -clV +ccB cmV bOh cig @@ -91950,35 +93583,35 @@ ajp ajp ajo apt -aqm -arj -arj -arj -arj -avx -awz -axR -avx +arn +arf +arf +arf +arf +arf +asX +awr +awr +avG +axP aAh -aBA -aBA -aDP -aBx -aGp -aHX -aBy +aCh +azo +azo aAh -aMq -adq -aQb -aPZ -aRu -aQc -aUf -aQc -aXi -aQc -amB +aAM +aMH +bRc +bRe +bty +aFj +ccS +bXu +aKR +aFd +aDM +cab +bfa aJC bcq bcq @@ -92207,16 +93840,17 @@ ajo aoa ajo apt -aql -apv -arl -asM -atV -avw -awy -axQ -azj -arj +aqr +aoJ +aoJ +aoJ +aoJ +arr +auN +awr +awr +avG +aNt aAh aAh aAh @@ -92224,19 +93858,18 @@ aAh aAh aAh aAh -aAh -aMp -aMr -aOH -aPY -aQc -aRx -aQc -aQc -aPY -aQc -aZZ -aJC +aKR +aKR +buJ +aDU +aDX +aEt +aKR +aFf +aDN +aDU +aFF +aQg aYV aYV aYV @@ -92464,35 +94097,35 @@ ahT anb ahT anZ -apu -arj -asb -asV -aus -aus -awA -axT -azl -aAl -arj -aCq -aDR +aqo +arf +arf +arf +arf +arf +aDW +avl +avm +avg +awE +aCr +azP aFl aGD -aHZ +bdE aCr -aKJ -aMr -aMr -aOH -aQc -aQd -aQa -aRv -aPY -aVw -aPY -bac +boY +bRd +aKR +aDO +aFC +cdM +aEu +aKR +aFg +aDO +caj +ckP aJC aYV aYV @@ -92714,44 +94347,44 @@ aif aif aif aif -aif -aif -alK -aif bkV -anc -anD -aoI -apX -arn -asN -aur -avy -avy -axS -azk -aAk -arj -aCf -aDY -aFj +adq +amB +aif +aif +apw +aqH +aqI +arf +apu +atl +avw +aut +axM +avx +avn +awp +aNG +aCr +aLS +aUC aGr aHI -aJk -aMr -aMr -aNt -aOH -aQc -aQc -aSq -aQc -aQc -aPY -aQc -bab +aOK +aKR +aKR +aKR +aKR +aKR +aKR +aKR +aKR +aKR +aKR +aKR +asq aJC -aYV +bSL aYV ber bfF @@ -92963,11 +94596,7 @@ abp afo abp abp -ahn -ahn -aiA -aiA -aiA +aSq ahn aiA aiA @@ -92979,38 +94608,42 @@ aod ahn apx ahn -arj -asr -asN -aut -avz -aXF -axU -azn -aAn -arj -aCh -aEc -aFk -aGw +ahn +ahn +ahn +ahn +arf +aoI +aqF +awo +arf +aoY +awr +awr +awt +aXj +aCr +aQb +aVA +bcO aHK aCr -aKr -aMr -bHF -aOH -aQc -aQc -aSo -clX -aVx -aQc -aQc -aQc +bDO +aKR +aKR +aDP +aDP +aEo +aKR +aKR +aKR +aDP +aKR +aKR bbx aYV aYV -aYV +bTs bfF bhd bis @@ -93216,16 +94849,12 @@ aaf aaf aaf abp -aaa +aRw afp -aaa +aRw abp -aaa -aaa -aaa -aaf -aaf -aaf +aqa +ahn aaa aaf aaf @@ -93234,36 +94863,40 @@ ahn anE aod aoK -apw +amI aqp -arj -asq -asN -aut -avz -avz -axU -azm -aAm -arj +ahn +anc +anr +anM +aqF +aqF +aqF +aur +aun +aEr +awr +awr +awt +aSo aCr -aEb aCr +aVD aGv aCr aCr -aKq -aLS -aNF -aOH -aQc -aQc -aSH -aQc -aQc -aRx -aQc -aQc +aCm +aKR +aDu +aDT +aDV +aEp +aHX +aKR +aIs +atT +aFD +aKR aQg aYV aYV @@ -93288,7 +94921,7 @@ bvj bvj bvd bFu -bvj +nWU bvj bvd bKH @@ -93477,12 +95110,8 @@ aaa aaa aaa adR -aaa -aaa -aaa -aaf -aaf -aaa +ahn +ahn aaa aaa aaa @@ -93493,43 +95122,47 @@ aoe aoL apy aqq -arj -ast -asN -auv -avA -avA -axW -azo -aAp +ahn +aql +aqN +arf +aqE +ark +aqF +axN +arf +aKi +avm +aAn +aIG +aXl aBC aCt aEA -aCt aGz aIb aCr -aKN -aMv -aNH -aOJ -aQc -aPY -aSG -aPY -aUg -bFC -aRw -aQc +aCn +aKR +aKR +axV +aFh +arC +aKR +aKR +aNn +avR +aFD +aKR bbx aYV aYV bet bfH bhf +bkl bhh -bhh -bhh +bkl bmJ bof bpu @@ -93729,15 +95362,11 @@ aaa aaa aaa aaa +gXs aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa +gXs aaa aaa aaa @@ -93750,43 +95379,47 @@ ahn ahn ahn ahn -arj -ass -asX -auu -att -att -att -azf +ahn +arf +arf +arf +asd +arf +arf +arf +arf +aMJ +azn aAo -apX +aJz +amP aBB aBB aBB aGy aIa cNE -aKM -aMu -aNG -aKM -aKM -aKM -aSp -aQc -aQc -aSq -aQc -bad +aQP +awB +awB +aaK +aFi +awB +awB +awB +aIi +aOu +aKR +asD bby aYV aYV bet bfG bhe -bit +blN bjS -bli +bnd bli boe bli @@ -93986,15 +95619,11 @@ aaa aaa aaa aaa +gXs aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa +gXs aaa aaa aaa @@ -94004,37 +95633,41 @@ aaa aag aag aag -aaa -aaa -aaf -arj -clO -asZ -aua -clO -awB -axY -azh -gsz -arj -aaf -aaa +arf +amJ +axO +arf +apu +acN +amP +atz +axL +atQ +awu +aEv +azj +aAb +aAr +amN +amN +aza +azX alP aGI aId aJD -aKP -aMx -aNJ -aQe -aOL -aOL -aOL -aOL -aOL -aOL -aXO -aZb +aCx +awC +awC +bbs +aHW +awC +awC +awC +awC +aIw +aKR +asG aJC aYV aYV @@ -94243,10 +95876,11 @@ aaa aaa aaa aaa -aaa +aab aaa aqG aaa +asL aaa aaa aaa @@ -94256,44 +95890,43 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aqr -arm -arm -asY +arf +amO +anr +anM +aqF +alK +arf +axZ +amN atZ -auB -auB -atZ -azg -azp -azp -aCu -aaf +amN +amN +bBB +cdP +ceu +cfA +amN +azb +aUk alP aGH aIc aJC -aKO -aMw -aNI -aMw -aOK -acN -acN -acN -acN -acN -aQc -bae +aCy +aTN +aDS +aKR +aKR +aEq +aEq +aEq +aEq +aEq +aKR +aKR aJC -bcr +cmc aYV bet bfG @@ -94336,7 +95969,7 @@ bYU bXW bOh cbH -ccB +cbX cbH bOh aaf @@ -94500,6 +96133,11 @@ aaa aaa aaa aaa +aac +apK +aaa +apK +atX aaa aaa aaa @@ -94509,30 +96147,25 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aqs -aro -aro -aro -aro -aro -aro -aro -aro -aro -aro -aCv -aaa +arf +arf +arf +arf +aoI +anD +arj +art +amN +amN +amN +amN +bDL +amN +aAX +cfB +amN +azd +aAf alP aGJ aIe @@ -94542,13 +96175,13 @@ aJC aJC aJC aJC -aXj -aVy -aSY -aVy -aVy -aYI -bah +aXF +aEw +aEx +aEw +aNF +aEq +aHU aJC aYV bdo @@ -94757,8 +96390,11 @@ aaa aaa aaa aaa -aaa -aae +apv +apv +gXs +apv +apv aaa aaa aaa @@ -94770,42 +96406,39 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aqs -aro -aro -aro -aro -aro -aro -aro -aro -aro -aro -aCv -aaf +arf +aqm +aqF +axX +arf +asb +asr +avu +amN +amN +bDL +amN +aAX +cfB +amN +aze +aAg alP aGJ aIe -aJE -aKQ +asm aLU -aNu +aKQ +aYH aJC aPw -aQc +aZw aQc aSZ aQc -aVy -czP -bag +aFk +aEq +aHV aJC aYV aYV @@ -95015,6 +96648,9 @@ aaa aaa aaa aaa +gXs +aaa +gXs aaa aaa aaa @@ -95027,26 +96663,23 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aqs -aro -aro -aro -aro -aro -aro -aro -aro -aro -aro -aCv -aaa +arf +ast +arD +apX +arf +arO +aup +atV +amN +asg +bZf +cdY +cff +cfC +amN +azb +bvG alP aGA aHS @@ -95060,9 +96693,9 @@ aRz aSF aQc aQc -aXl -aQc -bai +aFp +aKR +atk aJC aYV aYV @@ -95272,9 +96905,9 @@ aaa aaa aaa aaa +apT aaa -aaa -aaa +apT aaa aaa aaa @@ -95287,43 +96920,43 @@ aaa aae aaa aaa -aaa -aaa -aaa -aaa -aqs -aro -aro -aro -aro -aro -aro -aro -aro -aro -aro -aCv -aaf +arf +arf +arf +arf +arf +asZ +att +avA +awq +aVy +aVG +amN +aRu +aVP +aXi +azV +aPj alP aGL aHM -aJm +asp aKz -mjr +bLs aND aJC -aab +aZv aRg aQc -aac -aQc -aXk -aQc +bai aQc +aFt +aKR +aKR aJC aYV aYV -bev +bNM bfK bhi bhi @@ -95521,6 +97154,7 @@ aaa aaa aaa aaa +aae aaa aaa aaa @@ -95546,34 +97180,33 @@ aaa aaa aaa aaa -aaa -aaa +gXs aqs -aro -aro -aro -aro -aro -aro -aro -aro -aro -aro +asY +asY +auB +aws +avy +avy +aws +azp +aCu +aCu aCv -aaa +auR alP aGL aIe aJC -aKS -aMC +atf +bLt aJC aJC aJI aJI aSI aJI -aVA +baw aJI aYK aJI @@ -95803,27 +97436,27 @@ aaa aaa aaa aaa -aaa -aaa +gXs +gXs aqu -arm -arm -arm -auy -auB -auB -axZ -azp -azp -azp +aro +aro +aro +aro +aro +aro +aro +aro +aro +aro aCw -aaf +aaa alP aGL aIg aJH aKR -aMB +bMF aJC aOP aJI @@ -95834,7 +97467,7 @@ aVz aVz aYJ aJI -bbz +bSr aYV aYV aYV @@ -96059,22 +97692,22 @@ aaa aaa aaa aaa +gXs +gXs aaa +aqu +aro +aro +aro +aro +aro +aro +aro +aro +aro +aro +aCw aaf -aaf -aaf -arj -arj -arj -auA -avD -awC -ayb -arj -alP -alP -aaa -aaa alP aGL aIe @@ -96315,23 +97948,23 @@ aaa aaa aaa aaa +gXs +gXs +aaa +aaa +aqu +aro +aro +aro +aro +aro +aro +aro +aro +aro +aro +aCw aaa -aaf -aaf -aaf -aaf -aaf -aaf -arj -auz -avC -avC -aya -arj -arA -alP -alP -alP alP aGN aIh @@ -96351,7 +97984,7 @@ baj bbz aYV bdp -aYV +bDv bfK bfK bfK @@ -96404,7 +98037,7 @@ cle cli uPT cmY -cmc +cme cop cmd cmd @@ -96571,24 +98204,24 @@ aaa aaa aaa aaa +gXs +gXs aaa +aaa +aaa +aqu +aro +aro +aro +aro +aro +aro +aro +aro +aro +aro +aCw aaf -aaf -aaa -aaa -aaa -aaa -aaf -arj -auB -auB -arj -gOZ -arj -anf -anf -rsp -rsp alP aGB aIf @@ -96600,11 +98233,11 @@ aON aQk aRD aSM -aVD +aEy aVE aXm aVz -bak +cam bbz aYV bdp @@ -96827,25 +98460,25 @@ aaa aaa aaa aaa -aaa -aaf -aaf -aaa -aaa -aaa -aaa -aaa -aaf -aaa gXs -aoV -alP -anf -anf -anf -anf -aDW -aDV +gXs +aaa +aaa +aaa +aaa +aqu +aro +aro +aro +aro +aro +aro +aro +aro +aro +aro +aCw +aaa alP aGL aHY @@ -96857,7 +98490,7 @@ aOM aQj aRB aSL -aTN +cmm cCq aVz cAg @@ -97083,7 +98716,6 @@ aaa aaa aaa aaa -aaa aaf aaf aaa @@ -97091,18 +98723,19 @@ aaa aaa aaa aaa -aaa -aaf -aaa -gXs -aoV -alP -awD -anf -anf -anf -aCy -jnR +arm +asY +asY +asY +awz +avy +avy +aAm +aCu +aCu +aCu +aVx +auR alP aGL avI @@ -97118,7 +98751,7 @@ aTO cCq aVz aVz -bak +caB bbz aYV bdp @@ -97134,8 +98767,8 @@ boo bqQ bhg bua -bvn -bwL +bne +bpk bxX bsL bua @@ -97339,7 +98972,6 @@ aaS aaS aaS aaS -aaa aaf aaf aaa @@ -97347,21 +98979,22 @@ aaa aaa aaa aaa -aaf -aaf -alO -alO -alO +aaa +aaa +aaa +aaa +auR +azg +avz +ccH +aAX +aAp +aAk +aAl +aCq +aDR alP -alP -alP -alP -alP -alP -alP -vpY -aFn -aGP +aGJ avI aJI aJI @@ -97376,7 +99009,7 @@ aVF aVF aYM aJI -bbA +bSu aYV bdr bdb @@ -97597,26 +99230,26 @@ aaf aaa aaS aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaf -aaa -aaa -aaa -aaa -aaa -aag -alO -arp -alO -awD -anf -anf -awD -anf -aoP -alP -aBE -alP -aDX +aaf +auR +auS +ayb +azk +atZ +amN +amN +aAs +amN +amN alP aGJ avI @@ -97648,7 +99281,7 @@ boq boq brj bpE -btk +bop bum bvq bzn @@ -97853,22 +99486,22 @@ adS aeG aaa aaS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaf -aaa -aaa -aaa -aaa -aaa -aaa -aag -cxW -anf -aqv -anf -anf -anf -aEl -anf +aaf +alO +auR +auR +auR +azT +aAi cVb cVb cVb @@ -97905,7 +99538,7 @@ bpE bpE bpE bpE -bti +bot bul bvp bzm @@ -98119,11 +99752,11 @@ aaa aaa aag alO -alO +arp alO anf -auC -alP +anf +anf anf anf cVb @@ -98145,7 +99778,7 @@ aSR aUi aVJ aOX -aYP +aPP bal bam aYV @@ -98374,20 +100007,20 @@ aaa aaa aaa aaa -aaa -aaa -aaa -alO -aqy -anf -alP -awE +aag +ass anf +aqv +ayf +aux +auU +avv +avC cVb vCb -wUY -khb -sxs +bBI +bHx +bHB tal aCI aIj @@ -98631,15 +100264,15 @@ aaf aaf aaf aaf -aaf -apC -apC -apC -apC -apC -apC +aag +alO +anf +alO +aud +auz alP anf +aCG cVb cVb cVb @@ -98652,12 +100285,12 @@ aIq aKK aMy aIp -aOX +arg aQm -aRJ -aRJ -aRJ -aVK +aBx +aGp +aGp +aHc aRJ aRJ aRJ @@ -98890,18 +100523,18 @@ aof aof aof aof -arq -asv -atv -auD -apC -awF -anf alP -arA -anf +alP +alP +alP +alP +awF +aCG +alP +bBM +aBE aCz -asw +aQU aCJ aGT aIn @@ -98911,10 +100544,10 @@ aMt aIp aOW aQm -aRJ -aSS -aUj -aRJ +aGm +aGw +aGP +aHr aRJ aYQ cBg @@ -99147,35 +100780,35 @@ aoh aoN apA aof -ars -anf -arx -anf -apC +arq +asv +atv +auD +alP aoQ -cqM -asw -asw -asw -aCA -anf -aFp +avD +ayg +ayg +ayg +azf +aFn +aAq aGW anf aIp -fGf +bcr aMA aIp aOX aQm -aRJ -aST -aUk -aRJ +aGm +aGx +aGR +aHr aRJ aYQ bam -aYV +bBT aYV aYV aYV @@ -99392,10 +101025,10 @@ adU adU adU adU -adU -adU -adU alg +aTq +aTq +aTq acx amv ane @@ -99404,11 +101037,11 @@ aog aoM apz aqw -arr +asM asw asw auE -apC +alP awG auF alP @@ -99425,14 +101058,14 @@ aMz aNQ aOX aQm -aRJ -aRJ -aRJ -aRJ +aGn +aGK +aGK +aHs aRJ aYR ban -aYV +bCI aYV aYV bez @@ -99489,7 +101122,7 @@ bAw cmk cnf bzs -aaa +aaf aaa aaa aaa @@ -99661,22 +101294,22 @@ aoi aoO apB aqx -art +asN anf anf auF -apC +alP awH auF alP -aAr -anf +axd +aBF alP aaa aFq aGX aIp -aJO +bHZ aKU aME aNN @@ -99689,13 +101322,13 @@ aXo aXo aYO bap -aYV +bCI aYV bci beB bfS bfS -kQk +ckJ ipA gbT cTO @@ -99918,35 +101551,35 @@ aof aof aof aof -anf +asV aoP atw auF -apC +alP aoP auF azr -anf +aRv atw alP alP aFo aGV aIp -aJN +aJO aLd aMN aNQ aOZ aOX aOX -aOX +cma aUz aVM aOX aYT bam -aYV +bDs baR bcb bdl @@ -100003,7 +101636,7 @@ bAw bAw clp aag -aaa +apv aaa aaa aaa @@ -100179,9 +101812,9 @@ anf anf aty auF -apC alP -auF +aAt +aAu alP alP alP @@ -100260,7 +101893,7 @@ bPn bPn bPn aag -aaa +gXs aaa aaa aaa @@ -100432,16 +102065,16 @@ aaa aaa apC anf -anf +aRv alP atx auF -apC +alP auD auF -alP -aAs -anf +apE +axJ +awL alP aCG aFr @@ -100515,9 +102148,9 @@ czY cOT aaa aaa +gXs aaa -aaa -aaa +gXs aaa aaa aaa @@ -100693,13 +102326,13 @@ alP alP apE auG -apC -aoP +alP +clM auF apE anf anf -alP +azh aCG aDZ aFu @@ -100772,9 +102405,9 @@ czY cOT aaa aaa +gXs aaa -aaa -aaa +gXs aaa aaa aaa @@ -100960,12 +102593,12 @@ aCB aEB aFs bbE -aIr +amd bav aLf -aIt -aNS -aPb +aCU +aDG +aRO aQp aRN aIt @@ -100987,7 +102620,7 @@ bls bfT boD bpY -bsP +aPY box btw buT @@ -101028,11 +102661,11 @@ cQB czY cOT aaa -aaa -aaa -aaa -aaa -aaa +apv +apv +apv +apv +apv aaa aaa aaa @@ -101205,24 +102838,24 @@ apC alP alP alP -anf +ciw auH avF awI ayc +ciV asw -aAu asw aCD aEa aFv aGG aIu -aJQ -bCI +aBA aIt aIt -aPb +aDG +aRO aIt aRN aIt @@ -101468,17 +103101,17 @@ avE anf anf awD -aAt +anf aty aCC aDZ +anf aFu -aFu -aIs -aJP -aLg -aMH +aBy +aJJ +aCA aIt +aDJ aYW aYW aYW @@ -101497,7 +103130,7 @@ cHJ cHL blw bjP -blt +bTu bfT boG bqa @@ -101545,10 +103178,10 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa +bsP +bti +btk +buh aaa aaa aaa @@ -101730,12 +103363,12 @@ alP aCE aDZ aFu -aHc -aIw +aFu +aBz aJS -aJS -aMJ +aCS aNP +aDL aOS aOS aOS @@ -101798,15 +103431,15 @@ cOT cQB cAa cOT +gXs +bqb +brl aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bsP +bsP +bsP +buh aaa aaa aaa @@ -101974,7 +103607,7 @@ aaf aaf alO aqA -anf +arz alP anf anf @@ -101983,25 +103616,25 @@ awJ anf alP aAv -anf +cih aCE aDZ aFu -aHb +aIy aIv -aJR -aJR +aBD aIt aIt +aDG +aRO +aIt aPd aIt -aRO -aRO -aUC -aVP +aPb +aIt aXu aYW -bat +aVS bbD aYV aXq @@ -102056,14 +103689,14 @@ czU czZ cOT aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +apv +brT +brT +bsP +bsP +bsP +buA +bti aaa aaa aaa @@ -102247,15 +103880,15 @@ aFu aHd aIx aJF -aLh +aQq +aNS +aDG +aRO aIt -aNV aPd aIt -aRO -aRO +aPb aIt -aVQ aXu aYW aVQ @@ -102312,15 +103945,15 @@ cOT cgm czY cOT +gXs +bqb +brl +bsB +brT +brT aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bsB aaa aaa aaa @@ -102485,8 +104118,8 @@ aaf aaf aaa aaa -alO -apD +alP +aie aEl anf arx @@ -102500,22 +104133,22 @@ alP alP aCF aDZ +alP aFw aFw aFw aFw aFw -aFw -aFw +aFu aPf aQq aRP +cfE aIt aIt -moD aWd aXV -aIt +aGl bbD aYV aXq @@ -102572,11 +104205,11 @@ cNW aaa aaa aaa -aaa -aaa -aaa -aaa -aaa +bsB +bsB +bti +bsP +gXs aaa aaa aaa @@ -102742,15 +104375,15 @@ aaa aaf aaf aaa -alP +alO anf anf arw -asA -asA +bxh +clL anf alP -awL +aqB anf anf apE @@ -102759,17 +104392,17 @@ aCH aED aFy aGO -aIB -aJJ +aIA +aJM aKZ -aMW aFw aFu aFu aFu +aFu aTc aUD -aVS +aSk aYW aYW bax @@ -102833,10 +104466,10 @@ aaa aaa aaa aaa -cOT -cOT -cOT -aag +aaa +aaa +aaa +aaa aaa aaa aaa @@ -103016,17 +104649,17 @@ aCk aEC aFx aGM -aIy +aIB aJG -cAz aMK aFw -aPg +aMW +aPi aQr aFu aTb aIt -aVR +aLg aYW aYW aUD @@ -103087,13 +104720,13 @@ aaa aaa aaa aaa +apv +apv +apv +apv aaa aaa aaa -cOT -cOe -cqu -aag aaa aaa aaa @@ -103255,16 +104888,16 @@ aaa aaa aaa aaa +gXs alP -alP -alP -aqB -arx -anf -anf -anf -alP -awM +apD +ayf +bev +cil +aFn +aFn +aBB +bGB ayg ayg ayg @@ -103277,9 +104910,9 @@ aFw aLo aLb aFw -aFw -aPi -aQt +aPg +aYW +aYW aRQ aIt aUF @@ -103340,17 +104973,17 @@ cOT cgm czY cOT -aaf -aaf -aaf -aaf -aaf -cNW -cNW -cOT -cqu -cOT -aag +aaa +aaa +aaa +aaa +gXs +aaa +aaa +gXs +aaa +aaa +aaa aaa aaa aaa @@ -103511,13 +105144,13 @@ aaa aaa aaa aaa -aaa -alP -aoP -alP -alP -apE -alP +amx +amx +amx +amx +aMB +amx +amx atB alP alP @@ -103531,16 +105164,16 @@ aEd aFw aHf aIz -aJM +aJP aLa -cBZ aFw aPh +aYW aQs aFu aTd aUE -aVT +aVR aYW aYW aZd @@ -103600,13 +105233,13 @@ cOT aaa aaa aaa -aaf -aaf -cNW -cwy -cmn -cmn -cOT +aaa +gXs +aaa +aaa +gXs +aaa +aaa aaa aaa aaa @@ -103761,36 +105394,35 @@ aaa aaa aaa aaa -aaf -aaf -aaf -aaf -alP -alP -alP -alP -alP -anf -anf -anf -anf -anf -anf -aty -anf -awx +aaa +aaa +aaa +aaa +aaa +aaa +aaa +amx +axE +aIr +aJm +aNV +bDX +bFC +bGg +bGh +bGg +bGS avI asA apE -arx aCo +aCG aEf aFw aGU aIC aJU aLe -aMX aFw aCR aCR @@ -103798,6 +105430,7 @@ aCR aCR aCR aCR +aCR aWe aWe aCR @@ -103860,10 +105493,10 @@ cNW cNW cNW cNW -cmn -cmn -cmn cOT +cOT +aag +aaa aaa aaa aaa @@ -104022,15 +105655,15 @@ aaa aaa aaa aaa -alO -amx -anf -anf -anf -anf -alP -alP -alP +aaa +aaa +aaa +apY +aIr +aIr +aIr +aIr +aMC asB asB asB @@ -104044,13 +105677,13 @@ aCK aEf aFw aHg -aIA +cBZ aJT aLc -aMX aFw aFz aFz +aFz aRR aTe aUG @@ -104114,14 +105747,14 @@ cko clq cmq ciI -cnJ -cri -cTI -cmn -cBT -cBU -cOT -aaa +bae +cmJ +cOe +cOe +cmK +aag +gXs +apv aaa aaa aaa @@ -104279,15 +105912,15 @@ aaa aaa aaa aaa -alP -alP -alP -alP -alP -anf -alP -aqD -arz +aaa +aaa +aaa +apY +aIr +aIr +aIr +aIr +aNu asB atD auJ @@ -104304,8 +105937,8 @@ aGY aII aJW aMX -aMX aNW +aFz aPl aQv aPl @@ -104371,13 +106004,13 @@ cNW cOx cBL cOe -cOe cvO cNW cNW -cNW -cNW -cNW +cOT +cOT +aag +aaa aaa aaa aaa @@ -104534,17 +106167,17 @@ aaa aaa aaa aaa -aaf -aaf -aaf -aaf -aaf -aaf -alP -anf -alP -aqC -ary +aaa +aaa +aaa +aaa +aaa +amx +aIr +aIr +aIr +aIr +aIr asB atC auI @@ -104562,7 +106195,7 @@ aHi aJV aFw aFw -aFw +aFz aPk aQu aPk @@ -104627,9 +106260,9 @@ cNW cNW cNW cNW -cNW cOe -csy +bag +clH cko cAf aaa @@ -104796,12 +106429,12 @@ aaa aaa aaa aaa -aaf -alP -anf -alP -alP -alP +apY +aIr +aIr +aIr +aIr +aIr asB atE auI @@ -104811,7 +106444,7 @@ avM azv aAA asB -cSz +aCE aEi aFw aHl @@ -104879,14 +106512,14 @@ ceO cNW cgm chw -ciK +cgp cjC +cgu ckp cls -cmr -cNW cOe -cmo +cOe +cou cNW aaf aaf @@ -105051,20 +106684,20 @@ aaa aaa aaa aaa -aaf -aaf -aaf -alP -anf -apE -anf -anf +aaa +aaa +apY +aIr +aIr +aIr +aIr +aIr asB asB asB avL awR -auI +aMp azu aAz asB @@ -105104,7 +106737,7 @@ buo bvJ bCk byo -aDH +btD bxP bCf bvK @@ -105134,16 +106767,16 @@ bQZ cdR ceN cNW -cgp +axY chv ciJ cbf -cbf +ciK clr -bnt -cNW +bah cOe -cou +cOe +bMB cOT aaa aaa @@ -105310,12 +106943,12 @@ aaa aaa aaa aaa -aaf -alP -aoQ -alP -aqE -arA +amx +awM +aIr +aJE +aIr +bFk asB atG auL @@ -105397,10 +107030,10 @@ cNW cNW cNW clt -bnt -cNW +cQw cOe -bMB +cOe +bNA cOT aaa aaa @@ -105566,13 +107199,13 @@ aaa aaa aaa aaa -aaf -aaf -alP -alP -alP -alP -alP +aaa +amx +amx +amx +amx +amx +amx asB atF auK @@ -105653,11 +107286,11 @@ chx cNW aaa cNW -cgr -cms +clt +cQw +cNW +cNW cNW -cOe -bNA cNW aaf aaf @@ -105858,9 +107491,9 @@ aXB aZh baB aCR -bcq +bNa bdx -bcq +bPv bgc bgc biX @@ -105911,10 +107544,10 @@ cOT aaa cOT clt -bnt +cQw +cOe cOe cOe -cNW cNW aaa aaa @@ -106169,18 +107802,18 @@ aaa cOT clt cQw -cNW -cNW -cNW -aaa -aaa -aaS -aaS -aaS -aaS -aaS -aaS -aaS +cOe +cOe +cOe +cOe +sQX +cdi +cdi +cdi +cdi +cdi +cdi +cdi aaS aaS aba @@ -106366,7 +107999,7 @@ aCR aCR aCR aTl -amd +aUL aVW aXD aZj @@ -106419,17 +108052,17 @@ ccT bSc bSc cfu -cgu +bnt chA cNW aaa cNW clt cQw -aaf -aaf -aaf -aaf +cOe +cOe +cOe +cNW aaf aaS aaa @@ -106683,10 +108316,10 @@ cNW cNW clt cQw -aaa -aaa -aaa -aaa +cOe +cOe +cOe +cNW aaa aaS aaa @@ -106932,18 +108565,18 @@ cbZ bSl cmo cNW -cOx +ckR cNW chC ciL cOe cOe clv -cmt -aaa -aaa -aaa -aaa +cQw +cNW +cNW +cNW +cNW aaa aba aaf @@ -107199,7 +108832,7 @@ clu cmt aaa aaa -aaa +gXs aaa aaa aaf @@ -107713,7 +109346,7 @@ cjD cjD cnj aaa -aaa +gXs aaa aaa aaf @@ -107984,7 +109617,7 @@ crD aaa aaa aaa -csZ +aSY aaa aaa aaa @@ -108231,18 +109864,18 @@ cyU cpi cpi cpi -cqJ +aSH +aSS crk crk crk crk crk +aST +aSH +aSS crk -crk -csE -cpi -csY -cpi +aST cpi cpi ctB @@ -108498,7 +110131,7 @@ crF aaa aaa aaa -csZ +aTa aaa aaa aaa @@ -108979,8 +110612,8 @@ cbf cbf cbf cbf -cbf bYr +cbf clr cad cbi @@ -109237,7 +110870,7 @@ cNW cNW cNW cNW -cNW +clR clt cac cbh @@ -109503,7 +111136,7 @@ cbf cbf ceT cNW -cOe +clT chH cNW aaf diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index d9d46066bf..821672a9b4 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -1800,7 +1800,7 @@ pixel_y = -32 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/item/twohanded/required/kirbyplants/random, @@ -15186,7 +15186,7 @@ /area/crew_quarters/bar) "aGc" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24; pixel_y = 32 }, @@ -15457,7 +15457,7 @@ pixel_y = 32 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/light_switch{ @@ -16828,7 +16828,7 @@ /area/maintenance/disposal/incinerator) "aIy" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/light_switch{ @@ -17791,7 +17791,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -21486,7 +21486,7 @@ "aQl" = ( /obj/structure/table/wood, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/item/camera, @@ -23602,7 +23602,7 @@ /area/crew_quarters/theatre) "aTy" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/light_switch{ @@ -26869,6 +26869,7 @@ /area/engine/atmos) "aXW" = ( /obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/machinery/atmospherics/miner/carbon_dioxide, /turf/open/floor/engine/co2, /area/engine/atmos) "aXX" = ( @@ -27337,7 +27338,7 @@ /area/crew_quarters/bar/atrium) "aYF" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/light{ @@ -27513,7 +27514,7 @@ "aYR" = ( /obj/item/twohanded/required/kirbyplants/random, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24; pixel_y = -32 }, @@ -27639,7 +27640,7 @@ "aZb" = ( /obj/machinery/photocopier, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24; pixel_y = -32 }, @@ -29257,6 +29258,7 @@ /area/engine/atmos) "bbO" = ( /obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/atmospherics/miner/oxygen, /turf/open/floor/engine/o2, /area/engine/atmos) "bbP" = ( @@ -29336,7 +29338,7 @@ pixel_y = 22 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/chem_master/condimaster{ @@ -29603,7 +29605,7 @@ /obj/item/clipboard, /obj/item/toy/figure/miner, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/light{ @@ -30753,6 +30755,7 @@ /area/engine/atmos) "bev" = ( /obj/machinery/portable_atmospherics/canister/toxins, +/obj/machinery/atmospherics/miner/toxins, /turf/open/floor/engine/plasma, /area/engine/atmos) "bew" = ( @@ -30819,7 +30822,7 @@ /obj/effect/decal/cleanable/dirt, /obj/item/twohanded/required/kirbyplants/random, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -31057,7 +31060,7 @@ "beY" = ( /obj/structure/kitchenspike, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -32494,6 +32497,7 @@ /area/engine/atmos) "bhw" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/machinery/atmospherics/miner/nitrogen, /turf/open/floor/engine/n2, /area/engine/atmos) "bhx" = ( @@ -32627,7 +32631,7 @@ /area/crew_quarters/kitchen) "bhL" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24; pixel_y = 32 }, @@ -34606,6 +34610,7 @@ /obj/machinery/portable_atmospherics/canister/nitrous_oxide{ valve_open = 1 }, +/obj/machinery/atmospherics/miner/n2o, /turf/open/floor/engine/n2o, /area/engine/atmos) "bkI" = ( @@ -37308,7 +37313,6 @@ /obj/item/clothing/accessory/armband/deputy, /obj/item/clothing/accessory/armband/deputy, /obj/item/clothing/accessory/armband/deputy, -/obj/item/reagent_containers/food/snacks/donut/jelly/cherryjelly, /obj/effect/turf_decal/tile/red{ dir = 1 }, @@ -40095,7 +40099,7 @@ /area/crew_quarters/heads/hos) "bty" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24; pixel_y = -32 }, @@ -40782,7 +40786,7 @@ /area/security/main) "buM" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24; pixel_y = -32 }, @@ -41844,7 +41848,7 @@ dir = 8 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/light_switch{ @@ -43216,7 +43220,7 @@ "byI" = ( /obj/item/twohanded/required/kirbyplants/random, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/red{ @@ -43230,7 +43234,7 @@ /area/security/execution/transfer) "byJ" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -48755,7 +48759,7 @@ /area/engine/gravity_generator) "bGg" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/item/twohanded/required/kirbyplants/random, @@ -48794,7 +48798,7 @@ /area/engine/break_room) "bGk" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/airalarm{ @@ -48935,7 +48939,7 @@ "bGt" = ( /obj/item/twohanded/required/kirbyplants/random, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/light_switch{ @@ -49890,7 +49894,7 @@ /area/engine/gravity_generator) "bHS" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/light_switch{ @@ -50406,7 +50410,7 @@ "bIG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/neutral, @@ -51881,7 +51885,7 @@ "bKU" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/neutral{ @@ -52445,7 +52449,7 @@ "bLK" = ( /obj/item/twohanded/required/kirbyplants/random, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/button/door{ @@ -55374,7 +55378,7 @@ "bQh" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/yellow{ @@ -57009,7 +57013,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/red{ @@ -57153,7 +57157,7 @@ pixel_y = -3 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/neutral{ @@ -57248,7 +57252,7 @@ layer = 2.9 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/light/small{ @@ -60797,7 +60801,7 @@ "bXY" = ( /obj/item/twohanded/required/kirbyplants/random, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -60899,7 +60903,7 @@ "bYh" = ( /obj/item/twohanded/required/kirbyplants/random, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -60920,7 +60924,7 @@ "bYi" = ( /obj/structure/window/reinforced, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -62280,7 +62284,7 @@ /area/ai_monitored/turret_protected/aisat_interior) "caj" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/porta_turret/ai, @@ -64037,7 +64041,7 @@ "cdk" = ( /obj/machinery/vending/wardrobe/law_wardrobe, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/wood, @@ -64076,7 +64080,7 @@ /area/security/brig) "cdn" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/light{ @@ -67030,7 +67034,7 @@ /area/engine/engineering) "chF" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24; pixel_y = -32 }, @@ -67361,7 +67365,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/neutral, @@ -69328,7 +69332,7 @@ pixel_x = -26 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24; pixel_y = 32 }, @@ -70711,7 +70715,7 @@ }, /obj/item/camera_film, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/plasteel/grimy, @@ -76603,7 +76607,7 @@ }, /obj/item/crowbar, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/structure/table/reinforced, @@ -77602,7 +77606,7 @@ "czP" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/neutral{ @@ -77888,7 +77892,7 @@ dir = 8 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/structure/cable/white{ @@ -78794,7 +78798,7 @@ "cBL" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/item/twohanded/required/kirbyplants/random, @@ -80798,7 +80802,7 @@ /obj/item/radio, /obj/item/radio, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/decal/cleanable/dirt, @@ -81427,7 +81431,7 @@ /obj/item/clothing/head/welding, /obj/effect/decal/cleanable/dirt, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24; pixel_y = -32 }, @@ -82645,7 +82649,7 @@ /area/crew_quarters/dorms) "cIk" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -87477,7 +87481,7 @@ "cQE" = ( /obj/structure/closet/secure_closet/security/science, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/status_display{ @@ -88838,7 +88842,7 @@ pixel_y = 32 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/light_switch{ @@ -95618,7 +95622,7 @@ /obj/item/paper_bin, /obj/item/pen, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/item/storage/bag/bio, @@ -96554,7 +96558,7 @@ /obj/item/reagent_containers/glass/bottle/epinephrine, /obj/item/reagent_containers/dropper, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/light{ @@ -100259,7 +100263,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/door/firedoor, @@ -100623,7 +100627,7 @@ /area/science/explab) "dmJ" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/bot, @@ -100634,7 +100638,7 @@ dir = 4 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/bot, @@ -103278,7 +103282,7 @@ pixel_x = 36 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/vending/assist, @@ -103445,7 +103449,7 @@ pixel_y = 6 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/camera{ @@ -103794,10 +103798,10 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "dsI" = ( -/obj/structure/sign/warning/nosmoking, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/machinery/smartfridge/organ/preloaded, /turf/closed/wall, /area/medical/surgery) "dsJ" = ( @@ -104055,7 +104059,7 @@ "dti" = ( /obj/structure/closet/bombcloset, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/stripes/line{ @@ -104389,7 +104393,7 @@ /area/medical/surgery) "dtQ" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/blue{ @@ -105002,7 +105006,7 @@ "duZ" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24; pixel_y = -26 }, @@ -105033,7 +105037,7 @@ "dvd" = ( /obj/item/twohanded/required/kirbyplants/random, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/bot, @@ -107185,7 +107189,7 @@ "dyD" = ( /obj/structure/table, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/status_display/ai{ @@ -108398,7 +108402,7 @@ /obj/item/clothing/glasses/welding, /obj/structure/table/reinforced, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/bot, @@ -111492,7 +111496,7 @@ dir = 5 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/plasteel, @@ -111886,7 +111890,7 @@ pixel_y = 26 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24; pixel_y = -26 }, @@ -112582,7 +112586,7 @@ /area/science/robotics/lab) "dHC" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/structure/disposalpipe/segment, @@ -113983,7 +113987,7 @@ "dJO" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -114247,7 +114251,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/neutral, @@ -116746,7 +116750,7 @@ "dOC" = ( /obj/structure/filingcabinet/medical, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/blue{ @@ -117626,7 +117630,7 @@ name = "emergency shower" }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -118825,7 +118829,7 @@ /area/medical/virology) "dSd" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/light{ @@ -119657,7 +119661,7 @@ dir = 8 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/structure/sign/poster/official/work_for_a_future{ @@ -119868,7 +119872,7 @@ dir = 4 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -121622,7 +121626,7 @@ "dXI" = ( /obj/structure/chair/wood, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/camera{ @@ -122148,7 +122152,7 @@ /area/medical/virology) "dYV" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/structure/closet/secure_closet/medical1, @@ -125155,7 +125159,7 @@ }, /obj/item/camera_film, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/status_display{ @@ -125251,7 +125255,7 @@ "eeH" = ( /obj/structure/filingcabinet/security, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/light_switch{ @@ -125960,7 +125964,7 @@ "egb" = ( /obj/structure/table/wood, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/item/clipboard, @@ -127428,6 +127432,10 @@ /obj/item/assembly/signaler, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) +"mMC" = ( +/obj/structure/sign/warning/nosmoking, +/turf/closed/wall, +/area/medical/surgery) "mQE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -174919,7 +174927,7 @@ dkv dma dma dma -dma +mMC dsI dro dvz diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index f72a787214..8e1a3b618d 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -1445,7 +1445,7 @@ icon_state = "1-2" }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/machinery/light{ @@ -3882,7 +3882,7 @@ /obj/item/clothing/head/helmet/riot, /obj/item/clothing/head/helmet/riot, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/effect/turf_decal/tile/neutral{ @@ -4020,7 +4020,7 @@ "ahJ" = ( /obj/machinery/disposal/bin, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/light_switch{ @@ -4158,7 +4158,7 @@ icon_state = "1-2" }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/neutral{ @@ -4903,7 +4903,7 @@ name = "Evidence Closet 5" }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/effect/turf_decal/tile/neutral{ @@ -7192,7 +7192,7 @@ /obj/item/reagent_containers/glass/bottle/morphine, /obj/machinery/light/small, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -26 }, /obj/effect/turf_decal/bot, @@ -7248,7 +7248,7 @@ "anu" = ( /obj/machinery/vending/security, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /turf/open/floor/plasteel/showroomfloor, @@ -7733,7 +7733,7 @@ "aot" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/effect/turf_decal/tile/red{ @@ -7780,7 +7780,7 @@ /area/maintenance/port/fore) "aoy" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/structure/closet/secure_closet/warden, @@ -9298,7 +9298,7 @@ }, /obj/structure/table/wood, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /turf/open/floor/plasteel/grimy, @@ -9456,7 +9456,7 @@ /area/engine/gravity_generator) "arS" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/structure/cable{ @@ -11192,7 +11192,7 @@ dir = 5 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -26 }, /obj/effect/turf_decal/tile/neutral{ @@ -13469,7 +13469,7 @@ /area/security/brig) "azQ" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/structure/filingcabinet, @@ -14063,7 +14063,7 @@ /area/hallway/primary/fore) "aAX" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/machinery/light/small{ @@ -14112,7 +14112,7 @@ "aBc" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -26 }, /obj/effect/turf_decal/tile/red{ @@ -14609,7 +14609,7 @@ maxcharge = 2000 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/spawner/lootdrop/maintenance, @@ -15124,7 +15124,7 @@ /area/maintenance/port/fore) "aDh" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/light{ @@ -16127,7 +16127,7 @@ "aFc" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/camera{ @@ -16225,7 +16225,7 @@ "aFo" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/effect/turf_decal/tile/neutral{ @@ -16236,7 +16236,7 @@ "aFp" = ( /obj/structure/reagent_dispensers/watertank, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/light_switch{ @@ -16584,7 +16584,7 @@ icon_state = "2-4" }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -26 }, /obj/machinery/camera{ @@ -16858,7 +16858,7 @@ }, /obj/item/pen, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/structure/reagent_dispensers/peppertank{ @@ -17616,7 +17616,7 @@ /area/maintenance/starboard/fore) "aHX" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/stripes/line{ @@ -18710,7 +18710,7 @@ icon_state = "1-8" }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/wood, @@ -19722,7 +19722,7 @@ /area/storage/primary) "aMF" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -19794,7 +19794,7 @@ /area/hallway/primary/fore) "aMK" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -20623,7 +20623,7 @@ /area/lawoffice) "aOs" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/structure/table, @@ -21207,7 +21207,7 @@ "aPA" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/camera{ @@ -21396,7 +21396,7 @@ pixel_y = 32 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -26 }, /obj/effect/turf_decal/tile/neutral{ @@ -23473,7 +23473,7 @@ icon_state = "1-2" }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/stripes/line{ @@ -23863,7 +23863,7 @@ /area/crew_quarters/locker) "aUL" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/neutral{ @@ -25956,7 +25956,7 @@ pixel_x = -38 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/loading_area{ @@ -28079,7 +28079,7 @@ "bcn" = ( /obj/structure/rack, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -26 }, /obj/item/clothing/gloves/color/fyellow, @@ -28277,7 +28277,7 @@ /area/storage/tech) "bcE" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -26 }, /obj/structure/disposalpipe/segment{ @@ -28446,7 +28446,7 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/structure/cable/yellow{ @@ -28566,7 +28566,7 @@ }, /obj/structure/closet/secure_closet/security, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/red{ @@ -28783,7 +28783,7 @@ dir = 9 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/neutral{ @@ -29276,7 +29276,7 @@ "beo" = ( /obj/structure/closet/secure_closet/security/engine, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/structure/cable/yellow{ @@ -30114,7 +30114,7 @@ pixel_y = 7 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -26 }, /turf/open/floor/plasteel/dark, @@ -30613,7 +30613,7 @@ /obj/item/mop, /obj/structure/disposalpipe/segment, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/plasteel, @@ -31943,7 +31943,7 @@ /area/hallway/primary/starboard) "bjE" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -32353,7 +32353,7 @@ "bkn" = ( /obj/structure/table, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -26 }, /obj/effect/turf_decal/tile/brown{ @@ -33024,7 +33024,7 @@ /obj/machinery/computer/teleporter, /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -26 }, /obj/effect/turf_decal/tile/neutral{ @@ -34207,7 +34207,7 @@ /area/ai_monitored/storage/satellite) "bnK" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -34637,7 +34637,7 @@ /area/bridge) "boC" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/item/storage/fancy/donut_box, @@ -36458,7 +36458,7 @@ dir = 4 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/blue{ @@ -37243,7 +37243,7 @@ /obj/structure/table, /obj/item/camera_film, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /turf/open/floor/plasteel, @@ -38242,7 +38242,7 @@ pixel_x = 4 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -26 }, /turf/open/floor/plasteel/dark, @@ -38729,7 +38729,7 @@ "bwr" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/camera{ @@ -38821,7 +38821,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/blue{ @@ -38943,7 +38943,7 @@ "bwK" = ( /obj/structure/table, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -26 }, /obj/machinery/chem_dispenser/drinks, @@ -39807,7 +39807,7 @@ "byv" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/neutral{ @@ -39973,7 +39973,7 @@ dir = 4 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/blue, @@ -40671,7 +40671,7 @@ dir = 4 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /turf/open/floor/carpet, @@ -41103,7 +41103,7 @@ pixel_y = -30 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/item/paper_bin{ @@ -41614,7 +41614,7 @@ /area/crew_quarters/theatre) "bCd" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/structure/table/wood, @@ -41949,7 +41949,7 @@ /area/crew_quarters/toilet/auxiliary) "bCS" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/plasteel, @@ -44190,7 +44190,7 @@ dir = 5 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/yellow{ @@ -45223,7 +45223,7 @@ /area/security/vacantoffice) "bJx" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/wood, @@ -45233,7 +45233,7 @@ dir = 8 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/decal/cleanable/cobweb, @@ -45319,7 +45319,7 @@ "bJH" = ( /obj/machinery/suit_storage_unit/standard_unit, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/neutral{ @@ -45855,6 +45855,7 @@ /obj/machinery/portable_atmospherics/canister/nitrous_oxide{ valve_open = 1 }, +/obj/machinery/atmospherics/miner/n2o, /turf/open/floor/engine/n2o, /area/engine/atmos) "bKJ" = ( @@ -45967,7 +45968,7 @@ icon_state = "1-2" }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/camera{ @@ -46985,7 +46986,7 @@ "bMW" = ( /obj/machinery/teleport/station, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /turf/open/floor/plating, @@ -47352,7 +47353,7 @@ /area/crew_quarters/kitchen) "bNC" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/vending/dinnerware, @@ -47447,7 +47448,7 @@ dir = 4 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/plasteel/dark, @@ -48899,6 +48900,7 @@ /area/engine/atmos) "bQY" = ( /obj/machinery/portable_atmospherics/canister/toxins, +/obj/machinery/atmospherics/miner/toxins, /turf/open/floor/engine/plasma, /area/engine/atmos) "bQZ" = ( @@ -49198,7 +49200,7 @@ name = "novelty HoS hat" }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/light/small{ @@ -49294,7 +49296,7 @@ "bRO" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/neutral{ @@ -49729,7 +49731,7 @@ "bSD" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/neutral{ @@ -51342,6 +51344,7 @@ /area/engine/atmos) "bVO" = ( /obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/machinery/atmospherics/miner/carbon_dioxide, /turf/open/floor/engine/co2, /area/engine/atmos) "bVP" = ( @@ -52408,7 +52411,7 @@ /area/hallway/primary/central) "bXZ" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/item/twohanded/required/kirbyplants{ @@ -53733,7 +53736,7 @@ dir = 1 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/camera{ @@ -53817,7 +53820,7 @@ }, /obj/item/pen, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/red{ @@ -53831,7 +53834,7 @@ /area/security/checkpoint/science/research) "caG" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/structure/sink{ @@ -55905,7 +55908,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -26; pixel_y = 28 }, @@ -57091,7 +57094,7 @@ icon_state = "2-8" }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/structure/reagent_dispensers/cooking_oil, @@ -57265,7 +57268,7 @@ /area/medical/sleeper) "cgT" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -57892,7 +57895,7 @@ /area/maintenance/port/aft) "cie" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -58454,6 +58457,7 @@ /area/engine/atmos) "cjd" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/machinery/atmospherics/miner/nitrogen, /turf/open/floor/engine/n2, /area/engine/atmos) "cje" = ( @@ -58468,6 +58472,7 @@ /area/engine/atmos) "cjg" = ( /obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/atmospherics/miner/oxygen, /turf/open/floor/engine/o2, /area/engine/atmos) "cjh" = ( @@ -59031,7 +59036,7 @@ /area/maintenance/starboard/aft) "ckm" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/structure/sink{ @@ -59626,7 +59631,7 @@ dir = 8 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/neutral{ @@ -59730,7 +59735,7 @@ /area/science/research) "clI" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/structure/closet/firecloset, @@ -61045,7 +61050,7 @@ /area/science/research) "cok" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -26 }, /obj/structure/disposalpipe/segment, @@ -62766,7 +62771,7 @@ dir = 8 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/plasteel/white/side{ @@ -62776,6 +62781,9 @@ "cro" = ( /obj/structure/bed/roller, /obj/machinery/iv_drip, +/obj/structure/sign/warning/nosmoking{ + pixel_x = -28 + }, /turf/open/floor/plasteel/white, /area/medical/surgery) "crq" = ( @@ -63296,9 +63304,6 @@ dir = 1; pixel_y = -22 }, -/obj/structure/sign/warning/nosmoking{ - pixel_x = -28 - }, /obj/machinery/iv_drip, /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ @@ -63319,7 +63324,7 @@ "csq" = ( /obj/structure/bed, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/item/bedsheet/medical, @@ -63349,7 +63354,7 @@ /area/medical/cryo) "cst" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/camera{ @@ -64556,7 +64561,7 @@ pixel_y = 2 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/structure/sign/warning/nosmoking{ @@ -64778,7 +64783,7 @@ }, /obj/item/storage/secure/briefcase, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/plasteel/cafeteria{ @@ -65130,7 +65135,7 @@ /area/medical/genetics) "cvC" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/item/storage/box/syringes, @@ -65705,7 +65710,7 @@ "cwF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/blue{ @@ -65785,7 +65790,7 @@ "cwO" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/blue{ @@ -66781,7 +66786,7 @@ /area/science/circuit) "cyN" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/airalarm{ @@ -67430,7 +67435,7 @@ }, /obj/item/paper, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/structure/table/glass, @@ -68105,7 +68110,7 @@ "cBi" = ( /obj/structure/reagent_dispensers/fueltank, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/effect/turf_decal/delivery, @@ -68521,7 +68526,7 @@ /area/medical/medbay/aft) "cCb" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/structure/closet/secure_closet/personal/patient, @@ -69596,7 +69601,7 @@ dir = 4 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/neutral{ @@ -70136,7 +70141,7 @@ /area/science/robotics/lab) "cFj" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28; pixel_y = 5 }, @@ -70649,7 +70654,7 @@ "cGi" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/plasteel/white/side{ @@ -72046,7 +72051,7 @@ dir = 9 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -26 }, /obj/machinery/vending/wardrobe/viro_wardrobe, @@ -73267,7 +73272,7 @@ dir = 9 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/stripes/line{ @@ -73902,7 +73907,7 @@ "cLS" = ( /obj/structure/chair/stool, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/green, @@ -73931,7 +73936,7 @@ pixel_y = 25 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -26 }, /obj/structure/table/wood, @@ -77869,7 +77874,7 @@ /area/hallway/primary/central) "cVi" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/wood, @@ -79683,7 +79688,7 @@ network = list("ss13","engine") }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -26 }, /turf/open/floor/plasteel/dark, @@ -81295,7 +81300,7 @@ /area/crew_quarters/theatre) "dis" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/disposal/bin, @@ -83997,6 +84002,10 @@ }, /turf/open/floor/plating, /area/maintenance/port) +"qnB" = ( +/obj/machinery/smartfridge/organ/preloaded, +/turf/closed/wall, +/area/medical/surgery) "qqg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -84064,7 +84073,7 @@ /area/library) "qXt" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /turf/open/floor/plasteel/dark, @@ -104229,7 +104238,7 @@ cia cia cpX cia -cia +qnB cia ceu dyg diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index a7ab212bd6..175edcede4 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -1094,7 +1094,7 @@ dir = 8 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/purple{ @@ -3052,7 +3052,7 @@ "afp" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/camera{ @@ -3138,7 +3138,7 @@ dir = 8 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/camera{ @@ -4288,7 +4288,7 @@ /area/maintenance/starboard/fore) "ahk" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/light_switch{ @@ -4440,7 +4440,7 @@ "ahy" = ( /obj/machinery/suit_storage_unit/security, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -4475,7 +4475,7 @@ "ahB" = ( /obj/machinery/photocopier, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/structure/cable/white{ @@ -7740,7 +7740,7 @@ /obj/item/stack/packageWrap, /obj/item/hand_labeler, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/camera{ @@ -7886,7 +7886,7 @@ "anj" = ( /obj/machinery/suit_storage_unit/standard_unit, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/stripes/end{ @@ -8367,7 +8367,7 @@ "anZ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/neutral{ @@ -8554,7 +8554,7 @@ }, /obj/structure/table/reinforced, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/red{ @@ -9965,7 +9965,7 @@ icon_state = "plant-21" }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/light{ @@ -10216,7 +10216,7 @@ pixel_y = -22 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/item/paper_bin, @@ -11445,7 +11445,7 @@ "atj" = ( /obj/machinery/vending/coffee, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/light{ @@ -12887,7 +12887,7 @@ /area/hallway/primary/port) "avX" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/item/twohanded/required/kirbyplants{ @@ -12902,7 +12902,7 @@ /obj/item/stock_parts/cell/high, /obj/machinery/cell_charger, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/light_switch{ @@ -14105,7 +14105,7 @@ /area/engine/atmos) "ayl" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/stripes/line{ @@ -14116,7 +14116,7 @@ "aym" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/delivery, @@ -16093,7 +16093,7 @@ "aCh" = ( /obj/machinery/vending/snack/random, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/bot, @@ -16186,11 +16186,13 @@ "aCs" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/machinery/light/small, +/obj/machinery/atmospherics/miner/oxygen, /turf/open/floor/engine/o2, /area/engine/atmos) "aCw" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /obj/machinery/light/small, +/obj/machinery/atmospherics/miner/nitrogen, /turf/open/floor/engine/n2, /area/engine/atmos) "aCz" = ( @@ -16503,7 +16505,7 @@ /obj/item/clipboard, /obj/item/toy/figure/chef, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/camera{ @@ -16714,7 +16716,7 @@ /area/engine/break_room) "aDw" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -17444,7 +17446,7 @@ "aEK" = ( /obj/machinery/vending/clothing, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/bot, @@ -17977,7 +17979,7 @@ dir = 1 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/structure/cable{ @@ -18209,7 +18211,7 @@ /area/hallway/primary/port) "aFL" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -20148,7 +20150,7 @@ /obj/structure/table, /obj/item/storage/pill_bottle/dice, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/light{ @@ -21489,7 +21491,7 @@ "aLg" = ( /obj/machinery/vending/snack/random, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -22597,7 +22599,7 @@ /area/maintenance/starboard/central) "aNF" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -23062,7 +23064,7 @@ /area/engine/engineering) "aOG" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/stripes/line{ @@ -23834,7 +23836,7 @@ "aPW" = ( /obj/machinery/vending/snack/random, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -25049,7 +25051,7 @@ name = "emergency shower" }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -26916,7 +26918,7 @@ /obj/item/storage/box/bodybags, /obj/item/pen, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -28252,7 +28254,7 @@ dir = 1 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -29794,7 +29796,7 @@ /area/hallway/primary/aft) "baN" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -30100,7 +30102,7 @@ /area/medical/medbay/zone3) "bbu" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/light{ @@ -31241,7 +31243,7 @@ dir = 4 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -32128,7 +32130,7 @@ /area/security/checkpoint) "beK" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -34456,7 +34458,7 @@ pixel_y = -22 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/light/small{ @@ -37099,7 +37101,7 @@ "dai" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/blue{ @@ -37669,6 +37671,7 @@ /obj/machinery/light/small{ dir = 1 }, +/obj/machinery/atmospherics/miner/n2o, /turf/open/floor/engine/n2o, /area/engine/atmos) "gcw" = ( @@ -37974,6 +37977,7 @@ /obj/machinery/light/small{ dir = 1 }, +/obj/machinery/atmospherics/miner/carbon_dioxide, /turf/open/floor/engine/co2, /area/engine/atmos) "hTn" = ( @@ -38421,6 +38425,7 @@ /obj/machinery/light/small{ dir = 1 }, +/obj/machinery/atmospherics/miner/toxins, /turf/open/floor/engine/plasma, /area/engine/atmos) "kiw" = ( @@ -40387,7 +40392,7 @@ /area/maintenance/starboard) "sHf" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /turf/open/floor/plasteel, @@ -42215,6 +42220,7 @@ }, /obj/structure/table, /obj/machinery/firealarm{ + dir = 1; pixel_y = -26 }, /obj/effect/turf_decal/tile/neutral, @@ -42280,6 +42286,7 @@ }, /obj/effect/turf_decal/delivery, /obj/machinery/firealarm{ + dir = 1; pixel_y = -26 }, /obj/effect/turf_decal/tile/neutral, @@ -42880,6 +42887,12 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) +"uvp" = ( +/obj/machinery/smartfridge/organ/preloaded{ + pixel_y = 2 + }, +/turf/closed/wall, +/area/medical/medbay/zone3) "uxJ" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -81595,7 +81608,7 @@ aSh bcf bcW blt -aSh +uvp aOL bfA bfX diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index d70bc0187b..97befd1551 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -174,7 +174,6 @@ pixel_x = -27 }, /obj/machinery/firealarm{ - dir = 1; pixel_y = 26 }, /turf/open/floor/circuit, @@ -672,7 +671,7 @@ /obj/item/pen, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/item/paper_bin, @@ -2453,7 +2452,7 @@ dir = 6 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -27 }, /turf/open/floor/plasteel/showroomfloor, @@ -3387,7 +3386,7 @@ /obj/item/gun/energy/e_gun, /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -27 }, /turf/open/floor/plasteel/dark, @@ -4248,7 +4247,7 @@ }, /obj/machinery/atmospherics/pipe/simple/cyan/hidden, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -27 }, /obj/effect/turf_decal/tile/red{ @@ -4964,7 +4963,7 @@ dir = 4 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /turf/open/floor/plasteel/showroomfloor, @@ -8228,7 +8227,7 @@ dir = 10 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/plasteel/dark, @@ -8715,7 +8714,7 @@ /area/crew_quarters/dorms) "avl" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/machinery/computer/cryopod{ @@ -9674,7 +9673,7 @@ light_color = "#e8eaff" }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/machinery/computer/rdconsole{ @@ -11431,7 +11430,6 @@ "aBB" = ( /obj/machinery/computer/cargo/request, /obj/machinery/firealarm{ - dir = 1; pixel_y = 29 }, /turf/open/floor/wood, @@ -12379,7 +12377,7 @@ /area/storage/primary) "aDB" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/effect/turf_decal/tile/neutral, @@ -14356,7 +14354,6 @@ dir = 4 }, /obj/machinery/firealarm{ - dir = 1; pixel_y = 29 }, /obj/effect/turf_decal/tile/blue{ @@ -17508,7 +17505,7 @@ dir = 10 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /turf/open/floor/plasteel, @@ -18556,7 +18553,7 @@ /area/maintenance/department/crew_quarters/bar) "aSA" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -28 }, /obj/machinery/hydroponics/constructable, @@ -18775,7 +18772,6 @@ dir = 4 }, /obj/machinery/firealarm{ - dir = 1; pixel_y = 29 }, /obj/effect/turf_decal/tile/brown{ @@ -19108,7 +19104,7 @@ "aTP" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/effect/turf_decal/tile/neutral, @@ -21328,7 +21324,7 @@ dir = 4 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/effect/turf_decal/tile/brown, @@ -21725,7 +21721,7 @@ dir = 1 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /turf/open/floor/plasteel/dark, @@ -22077,7 +22073,7 @@ dir = 8 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -28 }, /obj/effect/turf_decal/tile/green{ @@ -24433,7 +24429,6 @@ "bfx" = ( /obj/structure/reagent_dispensers/fueltank, /obj/machinery/firealarm{ - dir = 1; pixel_y = 24 }, /obj/effect/turf_decal/delivery, @@ -24819,7 +24814,6 @@ /area/hallway/primary/central) "bgx" = ( /obj/machinery/firealarm{ - dir = 1; pixel_y = 27 }, /obj/structure/chair, @@ -26683,7 +26677,7 @@ "bly" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -26; pixel_y = 28 }, @@ -27994,7 +27988,6 @@ "boz" = ( /obj/machinery/vending/clothing, /obj/machinery/firealarm{ - dir = 1; pixel_y = 27 }, /obj/effect/turf_decal/tile/blue{ @@ -30024,7 +30017,7 @@ "bsB" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -26 }, /obj/structure/sign/poster/official/random{ @@ -30231,7 +30224,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/effect/turf_decal/tile/green, @@ -30360,7 +30353,7 @@ /obj/item/crowbar, /obj/item/wrench, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -28 }, /obj/item/multitool, @@ -30810,7 +30803,7 @@ /area/medical/chemistry) "bun" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/effect/turf_decal/tile/yellow{ @@ -30848,7 +30841,7 @@ network = list("ss13","rd") }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/machinery/light{ @@ -31469,7 +31462,7 @@ dir = 1 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -28 }, /obj/effect/turf_decal/tile/purple{ @@ -34270,7 +34263,7 @@ /area/science/storage) "bBH" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -28 }, /obj/effect/turf_decal/tile/purple{ @@ -34299,7 +34292,7 @@ "bBK" = ( /obj/structure/closet/bombcloset, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/structure/sign/poster/official/random{ @@ -35599,7 +35592,7 @@ dir = 4 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/machinery/light{ @@ -35961,8 +35954,7 @@ dir = 1 }, /obj/machinery/vending/wallmed{ - pixel_y = 28; - products = list(/obj/item/reagent_containers/syringe = 3, /obj/item/reagent_containers/pill/patch/styptic = 1, /obj/item/reagent_containers/pill/patch/silver_sulf = 1, /obj/item/reagent_containers/medspray/sterilizine = 1) + pixel_y = 28 }, /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/effect/landmark/blobstart, @@ -36644,7 +36636,7 @@ "bGe" = ( /obj/machinery/portable_atmospherics/scrubber, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/effect/turf_decal/tile/neutral{ @@ -36690,7 +36682,7 @@ network = list("ss13","rd") }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /turf/open/floor/engine, @@ -37123,7 +37115,7 @@ dir = 4 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -37749,6 +37741,9 @@ /obj/effect/turf_decal/tile/blue{ dir = 8 }, +/obj/machinery/light_switch{ + pixel_x = -22 + }, /turf/open/floor/plasteel/white, /area/medical/surgery) "bIp" = ( @@ -37795,8 +37790,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/vending/wallmed{ - pixel_y = 28; - products = list(/obj/item/reagent_containers/syringe = 3, /obj/item/reagent_containers/pill/patch/styptic = 1, /obj/item/reagent_containers/pill/patch/silver_sulf = 1, /obj/item/reagent_containers/medspray/sterilizine = 1) + pixel_y = 28 }, /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -38757,8 +38751,7 @@ /area/medical/medbay/central) "bKw" = ( /obj/machinery/vending/wallmed{ - pixel_y = 28; - products = list(/obj/item/reagent_containers/syringe = 3, /obj/item/reagent_containers/pill/patch/styptic = 1, /obj/item/reagent_containers/pill/patch/silver_sulf = 1, /obj/item/reagent_containers/medspray/sterilizine = 1) + pixel_y = 28 }, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 @@ -38828,10 +38821,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -26 - }, /obj/effect/turf_decal/tile/blue{ dir = 1 }, @@ -39305,15 +39294,16 @@ /obj/item/clothing/gloves/color/latex, /obj/item/clothing/mask/surgical, /obj/item/clothing/suit/apron/surgical, -/obj/machinery/light_switch{ - pixel_x = -22 - }, /obj/effect/turf_decal/tile/blue{ dir = 1 }, /obj/effect/turf_decal/tile/blue{ dir = 8 }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -26 + }, /turf/open/floor/plasteel/white, /area/medical/surgery) "bLN" = ( @@ -40977,7 +40967,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/yellow{ @@ -41115,6 +41105,7 @@ /area/engine/atmos) "bQa" = ( /obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/obj/machinery/atmospherics/miner/n2o, /turf/open/floor/engine/n2o, /area/engine/atmos) "bQb" = ( @@ -41200,7 +41191,6 @@ }, /obj/effect/turf_decal/stripes/line, /obj/machinery/firealarm{ - dir = 1; pixel_y = 29 }, /turf/open/floor/plasteel/dark, @@ -41252,7 +41242,6 @@ }, /obj/item/stock_parts/cell/high/plus, /obj/machinery/firealarm{ - dir = 1; pixel_y = 29 }, /obj/effect/turf_decal/tile/green{ @@ -42523,6 +42512,7 @@ /area/engine/atmos) "bSX" = ( /obj/machinery/portable_atmospherics/canister/toxins, +/obj/machinery/atmospherics/miner/toxins, /turf/open/floor/engine/plasma, /area/engine/atmos) "bSY" = ( @@ -42923,7 +42913,6 @@ dir = 4 }, /obj/machinery/firealarm{ - dir = 1; pixel_y = 29 }, /obj/effect/turf_decal/tile/yellow{ @@ -44029,6 +44018,7 @@ /area/engine/atmos) "bWf" = ( /obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/machinery/atmospherics/miner/carbon_dioxide, /turf/open/floor/engine/co2, /area/engine/atmos) "bWg" = ( @@ -45325,7 +45315,6 @@ dir = 4 }, /obj/machinery/firealarm{ - dir = 1; pixel_y = 29 }, /obj/effect/turf_decal/stripes/corner{ @@ -46143,6 +46132,7 @@ /area/engine/atmos) "cbt" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/machinery/atmospherics/miner/nitrogen, /turf/open/floor/engine/n2, /area/engine/atmos) "cbu" = ( @@ -46150,6 +46140,7 @@ /area/engine/atmos) "cbv" = ( /obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/atmospherics/miner/oxygen, /turf/open/floor/engine/o2, /area/engine/atmos) "cbw" = ( @@ -47520,7 +47511,7 @@ /area/engine/engineering) "cgV" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/stripes/line{ @@ -48339,7 +48330,7 @@ "ckD" = ( /obj/structure/chair/wood/normal, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -28 }, /turf/open/floor/plasteel/dark, @@ -52165,7 +52156,6 @@ network = list("ss13","monastery") }, /obj/machinery/firealarm{ - dir = 1; pixel_y = 29 }, /turf/open/floor/plasteel/dark, @@ -53839,7 +53829,7 @@ /area/maintenance/department/security/brig) "ePS" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -28 }, /obj/machinery/light{ @@ -54224,7 +54214,7 @@ "fFv" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /turf/open/floor/plasteel/dark, @@ -54362,7 +54352,7 @@ "gdL" = ( /obj/structure/disposalpipe/segment, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -28 }, /obj/effect/turf_decal/tile/purple{ @@ -55674,6 +55664,10 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"jdA" = ( +/obj/machinery/smartfridge/organ/preloaded, +/turf/closed/wall, +/area/medical/surgery) "jeq" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -56359,7 +56353,7 @@ dir = 8 }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -27 }, /obj/effect/turf_decal/tile/green{ @@ -59446,7 +59440,6 @@ pixel_y = 6 }, /obj/machinery/firealarm{ - dir = 1; pixel_y = 27 }, /turf/open/floor/plasteel/cafeteria, @@ -59847,7 +59840,6 @@ dir = 4 }, /obj/machinery/firealarm{ - dir = 1; pixel_y = 29 }, /obj/effect/turf_decal/tile/red{ @@ -60089,7 +60081,7 @@ }, /obj/item/hand_labeler, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 28 }, /obj/machinery/light{ @@ -61752,7 +61744,6 @@ dir = 4 }, /obj/machinery/firealarm{ - dir = 1; pixel_y = 29 }, /obj/effect/turf_decal/tile/neutral{ @@ -92221,7 +92212,7 @@ bFU bFU bIn bJt -bFU +jdA bFU bFU bFU diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 80e80cd6a9..6a323ee86f 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -3398,7 +3398,7 @@ /area/centcom/supply) "iS" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/brown{ @@ -3883,7 +3883,7 @@ /area/centcom/control) "jV" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/stripes/line{ @@ -4231,7 +4231,7 @@ icon_state = "plant-22" }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/neutral{ @@ -5775,7 +5775,7 @@ req_access_txt = "109" }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/neutral{ @@ -5799,7 +5799,7 @@ req_access_txt = "109" }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/neutral{ @@ -6866,7 +6866,7 @@ /area/centcom/ferry) "pM" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -6893,7 +6893,7 @@ /obj/item/clothing/gloves/color/black, /obj/item/clothing/glasses/eyepatch, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /turf/open/floor/plasteel/grimy, @@ -9214,7 +9214,7 @@ pixel_y = -32 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/neutral{ @@ -11017,7 +11017,7 @@ dir = 8 }, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/blue{ @@ -12323,7 +12323,7 @@ /obj/item/book/manual/wiki/security_space_law, /obj/item/taperecorder, /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/tile/neutral{ @@ -12390,7 +12390,7 @@ "CM" = ( /obj/structure/filingcabinet/medical, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/neutral{ @@ -14511,7 +14511,7 @@ /area/tdome/tdomeobserve) "Hq" = ( /obj/machinery/firealarm{ - dir = 4; + dir = 8; pixel_x = 24 }, /turf/open/floor/plasteel/white, @@ -14554,7 +14554,7 @@ /area/tdome/tdomeobserve) "Hu" = ( /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/bar, @@ -15835,7 +15835,7 @@ icon_state = "plant-21" }, /obj/machinery/firealarm{ - dir = 8; + dir = 4; pixel_x = -24 }, /obj/effect/turf_decal/tile/neutral{ diff --git a/_maps/map_files/generic/City_of_Cogs.dmm b/_maps/map_files/generic/City_of_Cogs.dmm index e1e7659ce3..1195ad62c5 100644 --- a/_maps/map_files/generic/City_of_Cogs.dmm +++ b/_maps/map_files/generic/City_of_Cogs.dmm @@ -379,15 +379,6 @@ /obj/item/camera, /turf/open/indestructible/clock_spawn_room, /area/reebe/city_of_cogs) -"Nz" = ( -/obj/structure/table/bronze, -/obj/item/implantcase, -/obj/item/implantcase, -/obj/item/implantcase, -/obj/item/implanter, -/obj/item/storage/backpack/duffelbag/sec/surgery, -/turf/open/floor/clockwork/reebe, -/area/reebe/city_of_cogs) "NH" = ( /obj/structure/table/bronze, /obj/item/taperecorder, @@ -409,10 +400,6 @@ "WT" = ( /turf/closed/wall/clockwork, /area/reebe) -"Yy" = ( -/obj/structure/table/optable, -/turf/open/floor/clockwork/reebe, -/area/reebe/city_of_cogs) (1,1,1) = {" zb @@ -33918,7 +33905,7 @@ ab ai bE aj -Yy +aj aj aj aA @@ -34175,7 +34162,7 @@ ab ah al aj -Nz +aj aj aC ah diff --git a/_maps/shuttles/emergency_raven.dmm b/_maps/shuttles/emergency_raven.dmm index 2c04837c79..05446968e7 100644 --- a/_maps/shuttles/emergency_raven.dmm +++ b/_maps/shuttles/emergency_raven.dmm @@ -56,7 +56,7 @@ /turf/open/floor/plasteel/dark, /area/shuttle/escape) "ah" = ( -/obj/machinery/computer/shuttle, +/obj/machinery/computer/emergency_shuttle, /turf/open/floor/plasteel/dark, /area/shuttle/escape) "ai" = ( diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index b875998f0a..bded562a3c 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -69,6 +69,7 @@ #define ADMIN_PUNISHMENT_BSA "Bluespace Artillery Device" #define ADMIN_PUNISHMENT_FIREBALL "Fireball" #define ADMIN_PUNISHMENT_ROD "Immovable Rod" +#define ADMIN_PUNISHMENT_SUPPLYPOD_QUICK "Supply Pod (Quick)" #define ADMIN_PUNISHMENT_SUPPLYPOD "Supply Pod" #define ADMIN_PUNISHMENT_MAZING "Puzzle" #define ADMIN_PUNISHMENT_PIE "Cream Pie" diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm index b2f05fd5f8..cabcc0a17d 100644 --- a/code/__DEFINES/antagonists.dm +++ b/code/__DEFINES/antagonists.dm @@ -12,6 +12,7 @@ #define APPRENTICE_BLUESPACE "bluespace" #define APPRENTICE_ROBELESS "robeless" #define APPRENTICE_HEALING "healing" +#define APPRENTICE_MARTIAL "martial" //ERT Types @@ -40,3 +41,19 @@ #define NOT_DOMINATING -1 #define MAX_LEADERS_GANG 4 #define INITIAL_DOM_ATTEMPTS 3 + +//Bloodsucker defines +// Bloodsucker related antag datums +#define ANTAG_DATUM_BLOODSUCKER /datum/antagonist/bloodsucker +#define ANTAG_DATUM_VASSAL /datum/antagonist/vassal +//#define ANTAG_DATUM_HUNTER /datum/antagonist/vamphunter Disabled for now + +// BLOODSUCKER +#define BLOODSUCKER_LEVEL_TO_EMBRACE 3 +#define BLOODSUCKER_FRENZY_TIME 25 // How long the vamp stays in frenzy. +#define BLOODSUCKER_FRENZY_OUT_TIME 300 // How long the vamp goes back into frenzy. +#define BLOODSUCKER_STARVE_VOLUME 5 // Amount of blood, below which a Vamp is at risk of frenzy. + +#define CAT_STRUCTURE "Structures" + +#define MARTIALART_HUNTER "hunter-fu" diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index 41b5deb302..74a6796bd2 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -9,12 +9,13 @@ #define META_GAS_FUSION_POWER 7 //ATMOS //stuff you should probably leave well alone! -#define R_IDEAL_GAS_EQUATION 8.31 //kPa*L/(K*mol) -#define ONE_ATMOSPHERE 101.325 //kPa -#define TCMB 2.7 // -270.3degC -#define TCRYO 225 // -48.15degC -#define T0C 273.15 // 0degC -#define T20C 293.15 // 20degC +#define R_IDEAL_GAS_EQUATION 8.31446261815324 //kPa*L/(K*mol) +#define ONE_ATMOSPHERE 101.325 //kPa +#define TCMB 2.7 // -270.3degC +#define TCRYO 225 // -48.15degC +#define T0C 273.15 // 0degC +#define T20C 293.15 // 20degC +#define STEFANBOLTZMANN (5.670373*10e-8) // W/(m^2*K^4) #define MOLES_CELLSTANDARD (ONE_ATMOSPHERE*CELL_VOLUME/(T20C*R_IDEAL_GAS_EQUATION)) //moles in a 2.5 m^3 cell at 101.325 Pa and 20 degC #define M_CELL_WITH_RATIO (MOLES_CELLSTANDARD * 0.005) //compared against for superconductivity @@ -149,9 +150,9 @@ //OPEN TURF ATMOS #define OPENTURF_DEFAULT_ATMOS "o2=22;n2=82;TEMP=293.15" //the default air mix that open turfs spawn -#define TCOMMS_ATMOS "n2=100;TEMP=80" //-193,15C telecommunications. also used for xenobiology slime killrooms +#define TCOMMS_ATMOS "n2=100;TEMP=80" //-193,15°C telecommunications. also used for xenobiology slime killrooms #define AIRLESS_ATMOS "TEMP=2.7" //space -#define FROZEN_ATMOS "o2=22;n2=82;TEMP=180" //-93.15C snow and ice turfs +#define FROZEN_ATMOS "o2=22;n2=82;TEMP=180" //-93.15°C snow and ice turfs #define BURNMIX_ATMOS "o2=2500;plasma=5000;TEMP=370" //used in the holodeck burn test program //ATMOSPHERICS DEPARTMENT GAS TANK TURFS diff --git a/code/__DEFINES/atom_hud.dm b/code/__DEFINES/atom_hud.dm index 0e4f0f3a6e..322a150617 100644 --- a/code/__DEFINES/atom_hud.dm +++ b/code/__DEFINES/atom_hud.dm @@ -58,6 +58,7 @@ #define ANTAG_HUD_SOULLESS 21 #define ANTAG_HUD_CLOCKWORK 22 #define ANTAG_HUD_BROTHER 23 +#define ANTAG_HUD_BLOODSUCKER 24 // Notification action types #define NOTIFY_JUMP "jump" diff --git a/code/__DEFINES/cargo.dm b/code/__DEFINES/cargo.dm index 0d07ef353a..52a2d56697 100644 --- a/code/__DEFINES/cargo.dm +++ b/code/__DEFINES/cargo.dm @@ -11,6 +11,7 @@ #define STYLE_FRUIT 11 #define STYLE_INVISIBLE 12 #define STYLE_GONDOLA 13 +#define STYLE_SEETHROUGH 14 #define POD_ICON_STATE 1 #define POD_NAME 2 @@ -29,5 +30,6 @@ list("honkpod", "\improper HONK pod", "A brightly-colored supply pod. It likely originated from the Clown Federation."),\ list("fruitpod", "\improper Orange", "An angry orange."),\ list("", "\improper S.T.E.A.L.T.H. pod MKVII", "A supply pod that, under normal circumstances, is completely invisible to conventional methods of detection. How are you even seeing this?"),\ - list("gondolapod", "gondola", "The silent walker. This one seems to be part of a delivery agency.")\ + list("gondolapod", "gondola", "The silent walker. This one seems to be part of a delivery agency."),\ + list("", "", "")\ ) \ No newline at end of file diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index e3cafd4613..47b5c2f602 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -57,9 +57,9 @@ #define BALLS_SACK_SIZE_DEF 8 #define BALLS_SACK_SIZE_MAX 40 -#define CUM_RATE 0.035 +#define CUM_RATE 2 // holy shit what a really shitty define name - relates to units per arbitrary measure of time? #define CUM_RATE_MULT 1 -#define CUM_EFFICIENCY 1//amount of nutrition required per life() +#define CUM_EFFICIENCY 1 //amount of nutrition required per life() #define EGG_GIRTH_MIN 1//inches #define EGG_GIRTH_DEF 6 diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 3664da4a5d..2d40d91023 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -98,6 +98,7 @@ //the define for visible message range in combat #define COMBAT_MESSAGE_RANGE 3 +#define DEFAULT_MESSAGE_RANGE 7 //Shove knockdown lengths (deciseconds) #define SHOVE_KNOCKDOWN_SOLID 30 diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index b79f1c2e59..f95ff93ac3 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -5,6 +5,17 @@ #define COMPONENT_INCOMPATIBLE 1 #define COMPONENT_NOTRANSFER 2 +#define ELEMENT_INCOMPATIBLE 1 // Return value to cancel attaching + +// /datum/element flags +/// Causes the detach proc to be called when the host object is being deleted +#define ELEMENT_DETACH (1 << 0) +/** + * Only elements created with the same arguments given after `id_arg_index` share an element instance + * The arguments are the same when the text and number values are the same and all other values have the same ref + */ +#define ELEMENT_BESPOKE (1 << 1) + // How multiple components of the exact same type are handled in the same datum #define COMPONENT_DUPE_HIGHLANDER 0 //old component is deleted (default) @@ -25,10 +36,12 @@ ////////////////////////////////////////////////////////////////// // /datum signals -#define COMSIG_COMPONENT_ADDED "component_added" //when a component is added to a datum: (/datum/component) -#define COMSIG_COMPONENT_REMOVING "component_removing" //before a component is removed from a datum because of RemoveComponent: (/datum/component) +#define COMSIG_COMPONENT_ADDED "component_added" //sent to the new datum parent when a component is added to them: (/datum/component) +#define COMSIG_COMPONENT_REMOVING "component_removing" //sent to the datum parent before a component is removed from them because of RemoveComponent: (/datum/component) +#define COMSIG_COMPONENT_UNREGISTER_PARENT "component_unregister_parent" //sent to the component itself when unregistered from a parent +#define COMSIG_COMPONENT_REGISTER_PARENT "component_register_parent" //sent to the component itself when registered to a parent #define COMSIG_PARENT_PREQDELETED "parent_preqdeleted" //before a datum's Destroy() is called: (force), returning a nonzero value will cancel the qdel operation -#define COMSIG_PARENT_QDELETED "parent_qdeleted" //after a datum's Destroy() is called: (force, qdel_hint), at this point none of the other components chose to interrupt qdel and Destroy has been called +#define COMSIG_PARENT_QDELETING "parent_qdeleting" //just before a datum's Destroy() is called: (force), at this point none of the other components chose to interrupt qdel and Destroy will be called // /atom signals #define COMSIG_PARENT_ATTACKBY "atom_attackby" //from base of atom/attackby(): (/obj/item, /mob/living, params) @@ -122,25 +135,29 @@ #define COMSIG_MOVABLE_POST_THROW "movable_post_throw" //from base of atom/movable/throw_at(): (datum/thrownthing, spin) #define COMSIG_MOVABLE_Z_CHANGED "movable_ztransit" //from base of atom/movable/onTransitZ(): (old_z, new_z) #define COMSIG_MOVABLE_SECLUDED_LOCATION "movable_secluded" //called when the movable is placed in an unaccessible area, used for stationloving: () -#define COMSIG_MOVABLE_HEAR "movable_hear" //from base of atom/movable/Hear(): (message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) +#define COMSIG_MOVABLE_HEAR "movable_hear" //from base of atom/movable/Hear(): (message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode, atom/movable/source) #define HEARING_MESSAGE 1 #define HEARING_SPEAKER 2 // #define HEARING_LANGUAGE 3 #define HEARING_RAW_MESSAGE 4 /* #define HEARING_RADIO_FREQ 5 #define HEARING_SPANS 6 - #define HEARING_MESSAGE_MODE 7 */ + #define HEARING_MESSAGE_MODE 7 + #define HEARING_SOURCE 8*/ #define COMSIG_MOVABLE_DISPOSING "movable_disposing" //called when the movable is added to a disposal holder object for disposal movement: (obj/structure/disposalholder/holder, obj/machinery/disposal/source) #define COMSIG_MOVABLE_TELEPORTED "movable_teleported" //from base of do_teleport(): (channel, turf/origin, turf/destination) // /mind signals -#define COMSIG_MIND_TRANSFER "mind_transfer" //from base of mind/transfer_to(): (new_character, old_character) +#define COMSIG_PRE_MIND_TRANSFER "pre_mind_transfer" //from base of mind/transfer_to() before it's done: (new_character, old_character) + #define COMPONENT_STOP_MIND_TRANSFER 1 //stops the mind transfer from happening. +#define COMSIG_MIND_TRANSFER "mind_transfer" //from base of mind/transfer_to() when it's done: (new_character, old_character) // /mob signals #define COMSIG_MOB_EXAMINATE "mob_examinate" //from base of /mob/verb/examinate(): (atom/A) #define COMPONENT_ALLOW_EXAMINE 1 #define COMSIG_MOB_DEATH "mob_death" //from base of mob/death(): (gibbed) -#define COMSIG_MOB_GHOSTIZE "mob_ghostize" //from base of mob/Ghostize(): (can_reenter_corpse) + #define COMPONENT_BLOCK_DEATH_BROADCAST 1 //stops the death from being broadcasted in deadchat. +#define COMSIG_MOB_GHOSTIZE "mob_ghostize" //from base of mob/Ghostize(): (can_reenter_corpse, special, penalize) #define COMPONENT_BLOCK_GHOSTING 1 #define COMSIG_MOB_ALLOWED "mob_allowed" //from base of obj/allowed(mob/M): (/obj) returns bool, if TRUE the mob has id access to the obj #define COMSIG_MOB_RECEIVE_MAGIC "mob_receive_magic" //from base of mob/anti_magic_check(): (mob/user, magic, holy, tinfoil, chargecost, self, protection_sources) @@ -148,10 +165,13 @@ #define COMSIG_MOB_HUD_CREATED "mob_hud_created" //from base of mob/create_mob_hud(): () #define COMSIG_MOB_ATTACK_HAND "mob_attack_hand" //from base of #define COMSIG_MOB_ITEM_ATTACK "mob_item_attack" //from base of /obj/item/attack(): (mob/M, mob/user) + #define COMPONENT_ITEM_NO_ATTACK 1 #define COMSIG_MOB_ITEM_AFTERATTACK "mob_item_afterattack" //from base of obj/item/afterattack(): (atom/target, mob/user, proximity_flag, click_parameters) #define COMSIG_MOB_ATTACK_RANGED "mob_attack_ranged" //from base of mob/RangedAttack(): (atom/A, params) #define COMSIG_MOB_THROW "mob_throw" //from base of /mob/throw_item(): (atom/target) -#define COMSIG_MOB_KEY_CHANGE "mob_key_change" //from base of /mob/transfer_ckey() +#define COMSIG_MOB_KEY_CHANGE "mob_key_change" //from base of /mob/transfer_ckey(): (new_character, old_character) +#define COMSIG_MOB_PRE_PLAYER_CHANGE "mob_pre_player_change" //sent to the target mob from base of /mob/transfer_ckey() and /mind/transfer_to(): (our_character, their_character) +// #define COMPONENT_STOP_MIND_TRANSFER 1 #define COMSIG_MOB_UPDATE_SIGHT "mob_update_sight" //from base of /mob/update_sight(): () #define COMSIG_MOB_SAY "mob_say" // from /mob/living/say(): (proc args list) #define COMPONENT_UPPERCASE_SPEECH 1 @@ -313,3 +333,11 @@ //Ouch my toes! #define CALTROP_BYPASS_SHOES 1 #define CALTROP_IGNORE_WALKERS 2 + +//Xenobio hotkeys +#define COMSIG_XENO_SLIME_CLICK_CTRL "xeno_slime_click_ctrl" //from slime CtrlClickOn(): (/mob) +#define COMSIG_XENO_SLIME_CLICK_ALT "xeno_slime_click_alt" //from slime AltClickOn(): (/mob) +#define COMSIG_XENO_SLIME_CLICK_SHIFT "xeno_slime_click_shift" //from slime ShiftClickOn(): (/mob) +#define COMSIG_XENO_TURF_CLICK_SHIFT "xeno_turf_click_shift" //from turf ShiftClickOn(): (/mob) +#define COMSIG_XENO_TURF_CLICK_CTRL "xeno_turf_click_alt" //from turf AltClickOn(): (/mob) +#define COMSIG_XENO_MONKEY_CLICK_CTRL "xeno_monkey_click_ctrl" //from monkey CtrlClickOn(): (/mob) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 9e8a4f71c2..55962bf78c 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -32,6 +32,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define TESLA_IGNORE_1 (1<<13) // TESLA_IGNORE grants immunity from being targeted by tesla-style electricity #define INITIALIZED_1 (1<<14) //Whether /atom/Initialize() has already run for the object #define ADMIN_SPAWNED_1 (1<<15) //was this spawned by an admin? used for stat tracking stuff. +#define PREVENT_CONTENTS_EXPLOSION_1 (1<<16) /// should not get harmed if this gets caught by an explosion? //turf-only flags #define NOJAUNT_1 (1<<0) diff --git a/code/__DEFINES/food.dm b/code/__DEFINES/food.dm index 15c7af5749..72e6a12f84 100644 --- a/code/__DEFINES/food.dm +++ b/code/__DEFINES/food.dm @@ -11,6 +11,7 @@ #define GROSS (1<<10) #define TOXIC (1<<11) #define PINEAPPLE (1<<12) +#define BREAKFAST (1<<13) #define DRINK_NICE 1 #define DRINK_GOOD 2 diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 6f433374e7..09ef814f68 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -118,6 +118,8 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list( #define ismouse(A) (istype(A, /mob/living/simple_animal/mouse)) +#define iscow(A) (istype(A, /mob/living/simple_animal/cow)) + #define isslime(A) (istype(A, /mob/living/simple_animal/slime)) #define isdrone(A) (istype(A, /mob/living/simple_animal/drone)) diff --git a/code/__DEFINES/lighting.dm b/code/__DEFINES/lighting.dm index 13dccc74fe..89c702e605 100644 --- a/code/__DEFINES/lighting.dm +++ b/code/__DEFINES/lighting.dm @@ -59,11 +59,13 @@ #define LIGHT_RANGE_FIRE 3 //How many tiles standard fires glow. #define LIGHTING_PLANE_ALPHA_VISIBLE 255 -#define LIGHTING_PLANE_ALPHA_NV_TRAIT 250 +#define LIGHTING_PLANE_ALPHA_NV_TRAIT 223 #define LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE 192 #define LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE 128 //For lighting alpha, small amounts lead to big changes. even at 128 its hard to figure out what is dark and what is light, at 64 you almost can't even tell. #define LIGHTING_PLANE_ALPHA_INVISIBLE 0 +#define NIGHT_VISION_DARKSIGHT_RANGE 3 + //lighting area defines #define DYNAMIC_LIGHTING_DISABLED 0 //dynamic lighting disabled (area stays at full brightness) #define DYNAMIC_LIGHTING_ENABLED 1 //dynamic lighting enabled @@ -80,4 +82,4 @@ #define FLASH_LIGHT_DURATION 2 #define FLASH_LIGHT_POWER 3 -#define FLASH_LIGHT_RANGE 3.8 \ No newline at end of file +#define FLASH_LIGHT_RANGE 3.8 diff --git a/code/__DEFINES/movespeed_modification.dm b/code/__DEFINES/movespeed_modification.dm index 50e1a10fa1..1883df6e8e 100644 --- a/code/__DEFINES/movespeed_modification.dm +++ b/code/__DEFINES/movespeed_modification.dm @@ -57,6 +57,7 @@ #define MOVESPEED_ID_PRONE_DRAGGING "PRONE_DRAG" #define MOVESPEED_ID_HUMAN_CARRYING "HUMAN_CARRY" +#define MOVESPEED_ID_SHRINK_RAY "SHRUNKEN_SPEED_MODIFIER" #define MOVESPEED_ID_TASED_STATUS "TASED" diff --git a/code/__DEFINES/obj_flags.dm b/code/__DEFINES/obj_flags.dm index d3e724aefb..94c2c372f0 100644 --- a/code/__DEFINES/obj_flags.dm +++ b/code/__DEFINES/obj_flags.dm @@ -25,23 +25,22 @@ #define NO_MAT_REDEMPTION (1<<5) //Stops you from putting things like an RCD or other items into an ORM or protolathe for materials. #define DROPDEL (1<<6) //When dropped, it calls qdel on itself #define NOBLUDGEON (1<<7) //when an item has this it produces no "X has been hit by Y with Z" message in the default attackby() -#define ABSTRACT (1<<8) //for all things that are technically items but used for various different stuff +#define ABSTRACT (1<<8) //for all things that are technically items but used for various different stuff #define IMMUTABLE_SLOW (1<<9) //When players should not be able to change the slowdown of the item (Speed potions, ect) #define SURGICAL_TOOL (1<<10) //Tool commonly used for surgery: won't attack targets in an active surgical operation on help intent (in case of mistakes) -#define NO_UNIFORM_REQUIRED (1<<11) //Can be worn on certain slots (currently belt and id) that would otherwise require an uniform. +#define NO_UNIFORM_REQUIRED (1<<11) //Can be worn on certain slots (currently belt and id) that would otherwise require an uniform. // Flags for the clothing_flags var on /obj/item/clothing #define LAVAPROTECT (1<<0) #define STOPSPRESSUREDAMAGE (1<<1) //SUIT and HEAD items which stop pressure damage. To stop you taking all pressure damage you must have both a suit and head item with this flag. #define BLOCK_GAS_SMOKE_EFFECT (1<<2) //blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY! -#define ALLOWINTERNALS (1<<3) //mask allows internals +#define ALLOWINTERNALS (1<<3) //mask allows internals #define NOSLIP (1<<4) //prevents from slipping on wet floors, in space etc #define THICKMATERIAL (1<<5) //prevents syringes, parapens and hypos if the external suit or helmet (if targeting head) has this flag. Example: space suits, biosuit, bombsuits, thick suits that cover your body. #define VOICEBOX_TOGGLABLE (1<<6) //The voicebox in this clothing can be toggled. #define VOICEBOX_DISABLED (1<<7) //The voicebox is currently turned off. -#define SNUG_FIT (1<<8) //Prevents knock-off from things like hat-throwing. -#define ANTI_TINFOIL_MANEUVER (1<<9) //Hats with negative effects when worn (i.e the tinfoil hat). +#define IGNORE_HAT_TOSS (1<<8) //Hats with negative effects when worn (i.e the tinfoil hat). // Flags for the organ_flags var on /obj/item/organ @@ -50,4 +49,4 @@ #define ORGAN_FAILING (1<<2) //Failing organs perform damaging effects until replaced or fixed #define ORGAN_EXTERNAL (1<<3) //Was this organ implanted/inserted/etc, if true will not be removed during species change. #define ORGAN_VITAL (1<<4) //Currently only the brain -#define ORGAN_NO_SPOIL (1<<5) //Do not spoil under any circumstances \ No newline at end of file +#define ORGAN_NO_SPOIL (1<<5) //Do not spoil under any circumstances diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index b316c003a9..d5e3f828b8 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -35,6 +35,8 @@ #define ROLE_LAVALAND "lavaland" #define ROLE_INTERNAL_AFFAIRS "internal affairs agent" #define ROLE_GANG "gangster" +#define ROLE_BLOODSUCKER "bloodsucker" +//#define ROLE_MONSTERHUNTER "monster hunter" Disabled for now //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 @@ -60,7 +62,9 @@ GLOBAL_LIST_INIT(special_roles, list( ROLE_OVERTHROW = /datum/game_mode/overthrow, ROLE_INTERNAL_AFFAIRS = /datum/game_mode/traitor/internal_affairs, ROLE_SENTIENCE, - ROLE_GANG = /datum/game_mode/gang + ROLE_GANG = /datum/game_mode/gang, + ROLE_BLOODSUCKER = /datum/game_mode/bloodsucker + //ROLE_MONSTERHUNTER Disabled for now )) //Job defines for what happens when you fail to qualify for any job during job selection diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm index af06a5a2d0..beeee22df9 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -75,8 +75,16 @@ #define LINGHIVE_LING 2 #define LINGHIVE_LINK 3 +//whether the emote is visible or audible. +#define EMOTE_VISIBLE 1 +#define EMOTE_AUDIBLE 2 + //Don't set this very much higher then 1024 unless you like inviting people in to dos your server with message spam #define MAX_MESSAGE_LEN 2048 //Citadel edit: What's the WORST that could happen? #define MAX_NAME_LEN 42 #define MAX_BROADCAST_LEN 512 #define MAX_CHARTER_LEN 80 + +// Audio/Visual Flags. Used to determine what sense are required to notice a message. +#define MSG_VISUAL (1<<0) +#define MSG_AUDIBLE (1<<1) \ No newline at end of file diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index 0f1a36d663..6d52f4640c 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -46,7 +46,7 @@ #define STATUS_EFFECT_SLEEPING /datum/status_effect/incapacitating/sleeping //the affected is asleep -#define STATUS_EFFECT_TASED /datum/status_effect/electrode //the affected has been tased, preventing fine muscle control +#define STATUS_EFFECT_TASED /datum/status_effect/no_combat_mode/electrode/ //the affected has been tased, preventing fine muscle control #define STATUS_EFFECT_PACIFY /datum/status_effect/pacify //the affected is pacified, preventing direct hostile actions @@ -58,6 +58,8 @@ #define MAX_MANIA_SEVERITY 100 //how high the mania severity can go #define MANIA_DAMAGE_TO_CONVERT 90 //how much damage is required before it'll convert affected targets +#define STATUS_EFFECT_CHOKINGSTRAND /datum/status_effect/strandling //Choking Strand + #define STATUS_EFFECT_HISWRATH /datum/status_effect/his_wrath //His Wrath. #define STATUS_EFFECT_SUMMONEDGHOST /datum/status_effect/cultghost //is a cult ghost and can't use manifest runes @@ -66,6 +68,8 @@ #define STATUS_EFFECT_SAWBLEED /datum/status_effect/saw_bleed //if the bleed builds up enough, takes a ton of damage +#define STATUS_EFFECT_NECKSLICE /datum/status_effect/neck_slice //Creates the flavor messages for the neck-slice + #define STATUS_EFFECT_NECROPOLIS_CURSE /datum/status_effect/necropolis_curse #define CURSE_BLINDING 1 //makes the edges of the target's screen obscured #define CURSE_SPAWNING 2 //spawns creatures that attack the target only @@ -81,6 +85,9 @@ #define STATUS_EFFECT_BREASTS_ENLARGEMENT /datum/status_effect/chem/breast_enlarger //Applied slowdown due to the ominous bulk. #define STATUS_EFFECT_PENIS_ENLARGEMENT /datum/status_effect/chem/penis_enlarger //More applied slowdown, just like the above. + +#define STATUS_EFFECT_NO_COMBAT_MODE /datum/status_effect/no_combat_mode //Wont allow combat mode and will disable it +#define STATUS_EFFECT_MESMERIZE /datum/status_effect/no_combat_mode/mesmerize //Just reskinned no_combat_mode ///////////// // NEUTRAL // ///////////// diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 60212385f8..428d569531 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -66,6 +66,7 @@ #define TRAIT_HUSK "husk" #define TRAIT_NOCLONE "noclone" #define TRAIT_CLUMSY "clumsy" +#define TRAIT_CHUNKYFINGERS "chunkyfingers" //means that you can't use weapons with normal trigger guards. #define TRAIT_DUMB "dumb" #define TRAIT_MONKEYLIKE "monkeylike" //sets IsAdvancedToolUser to FALSE #define TRAIT_PACIFISM "pacifism" @@ -117,15 +118,23 @@ #define TRAIT_PARALYSIS_R_ARM "para-r-arm" #define TRAIT_PARALYSIS_L_LEG "para-l-leg" #define TRAIT_PARALYSIS_R_LEG "para-r-leg" +#define TRAIT_DISK_VERIFIER "disk-verifier" #define TRAIT_UNINTELLIGIBLE_SPEECH "unintelligible-speech" #define TRAIT_SOOTHED_THROAT "soothed-throat" #define TRAIT_LAW_ENFORCEMENT_METABOLISM "law-enforcement-metabolism" -#define TRAIT_STRONG_GRABBER "strong_grabber" -#define TRAIT_CALCIUM_HEALER "calcium_healer" +#define TRAIT_STRONG_GRABBER "strong_grabber" +#define TRAIT_CALCIUM_HEALER "calcium_healer" +#define TRAIT_MAGIC_CHOKE "magic_choke" #define TRAIT_CAPTAIN_METABOLISM "captain-metabolism" #define TRAIT_ABDUCTOR_TRAINING "abductor-training" #define TRAIT_ABDUCTOR_SCIENTIST_TRAINING "abductor-scientist-training" #define TRAIT_SURGEON "surgeon" +#define TRAIT_COLDBLOODED "coldblooded" // Your body is literal room temperature. Does not make you immune to the temp. +#define TRAIT_NONATURALHEAL "nonaturalheal" // Only Admins can heal you. NOTHING else does it unless it's given the god tag. +#define TRAIT_NORUNNING "norunning" // You walk! +#define TRAIT_NOMARROW "nomarrow" // You don't make blood, with chemicals or nanites. +#define TRAIT_NOPULSE "nopulse" // Your heart doesn't beat. + //non-mob traits #define TRAIT_PARALYSIS "paralysis" //Used for limb-based paralysis, where replacing the limb will fix it @@ -162,6 +171,7 @@ #define TRAIT_FRIENDLY "friendly" #define TRAIT_ASSBLASTUSA "assblastusa" #define TRAIT_CULT_EYES "cult_eyes" +#define TRAIT_FREESPRINT "free_sprinting" // common trait sources @@ -215,5 +225,8 @@ #define LOCKED_HELMET_TRAIT "locked-helmet" #define NINJA_SUIT_TRAIT "ninja-suit" #define ANTI_DROP_IMPLANT_TRAIT "anti-drop-implant" +#define SLEEPING_CARP_TRAIT "sleeping_carp" #define ABDUCTOR_ANTAGONIST "abductor-antagonist" -#define MADE_UNCLONEABLE "made-uncloneable" \ No newline at end of file +#define MADE_UNCLONEABLE "made-uncloneable" +#define NUKEOP_TRAIT "nuke-op" +#define DEATHSQUAD_TRAIT "deathsquad" diff --git a/code/__HELPERS/cmp.dm b/code/__HELPERS/cmp.dm index c0501b4e41..4a86f57fcd 100644 --- a/code/__HELPERS/cmp.dm +++ b/code/__HELPERS/cmp.dm @@ -23,6 +23,9 @@ GLOBAL_VAR_INIT(cmp_field, "name") /proc/cmp_records_dsc(datum/data/record/a, datum/data/record/b) return sorttext(a.fields[GLOB.cmp_field], b.fields[GLOB.cmp_field]) +/proc/cmp_filter_data_priority(list/A, list/B) + return A["priority"] - B["priority"] + /proc/cmp_ckey_asc(client/a, client/b) return sorttext(b.ckey, a.ckey) @@ -85,8 +88,29 @@ GLOBAL_VAR_INIT(cmp_field, "name") /proc/cmp_job_display_asc(datum/job/A, datum/job/B) return A.display_order - B.display_order +/proc/cmp_uplink_items_dsc(datum/uplink_item/A, datum/uplink_item/B) + return sorttext(initial(B.name), initial(A.name)) + /proc/cmp_numbered_displays_name_asc(datum/numbered_display/A, datum/numbered_display/B) return sorttext(A.sample_object.name, B.sample_object.name) /proc/cmp_numbered_displays_name_dsc(datum/numbered_display/A, datum/numbered_display/B) - return sorttext(B.sample_object.name, A.sample_object.name) \ No newline at end of file + return sorttext(B.sample_object.name, A.sample_object.name) + +/proc/cmp_quirk_asc(datum/quirk/A, datum/quirk/B) + var/a_sign = num2sign(initial(A.value) * -1) + var/b_sign = num2sign(initial(B.value) * -1) + + // Neutral traits go last. + if(a_sign == 0) + a_sign = 2 + if(b_sign == 0) + b_sign = 2 + + var/a_name = initial(A.name) + var/b_name = initial(B.name) + + if(a_sign != b_sign) + return a_sign - b_sign + else + return sorttext(b_name, a_name) \ No newline at end of file diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 7852251230..a7bf5da17f 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -97,6 +97,16 @@ var/datum/emote/E = new path() E.emote_list[E.key] = E + //Uplink Items + for(var/path in subtypesof(/datum/uplink_item)) + var/datum/uplink_item/I = path + if(!initial(I.item)) //We add categories to a separate list. + GLOB.uplink_categories |= initial(I.category) + continue + GLOB.uplink_items += path + //(sub)typesof entries are listed by the order they are loaded in the code, so we'll have to rearrange them here. + GLOB.uplink_items = sortList(GLOB.uplink_items, /proc/cmp_uplink_items_dsc) + init_subtypes(/datum/crafting_recipe, GLOB.crafting_recipes) //creates every subtype of prototype (excluding prototype) and adds it to list L. diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm index 2c92816264..27f1a81fef 100644 --- a/code/__HELPERS/roundend.dm +++ b/code/__HELPERS/roundend.dm @@ -313,14 +313,15 @@ parts += "[FOURSPACES]Threat level: [mode.threat_level]" parts += "[FOURSPACES]Threat left: [mode.threat]" parts += "[FOURSPACES]Executed rules:" + for(var/datum/dynamic_ruleset/rule in mode.executed_rules) + parts += "[FOURSPACES][FOURSPACES][rule.ruletype] - [rule.name]: -[rule.cost + rule.scaled_times * rule.scaling_cost] threat" + parts += "[FOURSPACES]Other threat changes:" for(var/str in mode.threat_log) parts += "[FOURSPACES][FOURSPACES][str]" for(var/entry in mode.threat_tallies) parts += "[FOURSPACES][FOURSPACES][entry] added [mode.threat_tallies[entry]]" - /* - for(var/datum/dynamic_ruleset/rule in mode.executed_rules) - parts += "[FOURSPACES][FOURSPACES][rule.ruletype] - [rule.name]: -[rule.cost + rule.scaled_times * rule.scaling_cost] threat" - */ + SSblackbox.record_feedback("tally","dynamic_threat",mode.threat_level,"Final threat level") + SSblackbox.record_feedback("tally","dynamic_threat",mode.threat,"Threat left") return parts.Join("
    ") /client/proc/roundend_report_file() diff --git a/code/__HELPERS/sorts/__main.dm b/code/__HELPERS/sorts/__main.dm index 768622818f..493f7b2096 100644 --- a/code/__HELPERS/sorts/__main.dm +++ b/code/__HELPERS/sorts/__main.dm @@ -31,58 +31,58 @@ GLOBAL_DATUM_INIT(sortInstance, /datum/sortInstance, new()) var/list/runLens = list() - proc/timSort(start, end) - runBases.Cut() - runLens.Cut() +/datum/sortInstance/proc/timSort(start, end) + runBases.Cut() + runLens.Cut() - var/remaining = end - start + var/remaining = end - start - //If array is small, do a 'mini-TimSort' with no merges - if(remaining < MIN_MERGE) - var/initRunLen = countRunAndMakeAscending(start, end) - binarySort(start, end, start+initRunLen) - return + //If array is small, do a 'mini-TimSort' with no merges + if(remaining < MIN_MERGE) + var/initRunLen = countRunAndMakeAscending(start, end) + binarySort(start, end, start+initRunLen) + return - //March over the array finding natural runs - //Extend any short natural runs to runs of length minRun - var/minRun = minRunLength(remaining) + //March over the array finding natural runs + //Extend any short natural runs to runs of length minRun + var/minRun = minRunLength(remaining) - do - //identify next run - var/runLen = countRunAndMakeAscending(start, end) + do + //identify next run + var/runLen = countRunAndMakeAscending(start, end) - //if run is short, extend to min(minRun, remaining) - if(runLen < minRun) - var/force = (remaining <= minRun) ? remaining : minRun + //if run is short, extend to min(minRun, remaining) + if(runLen < minRun) + var/force = (remaining <= minRun) ? remaining : minRun - binarySort(start, start+force, start+runLen) - runLen = force + binarySort(start, start+force, start+runLen) + runLen = force - //add data about run to queue - runBases.Add(start) - runLens.Add(runLen) + //add data about run to queue + runBases.Add(start) + runLens.Add(runLen) - //maybe merge - mergeCollapse() + //maybe merge + mergeCollapse() - //Advance to find next run - start += runLen - remaining -= runLen + //Advance to find next run + start += runLen + remaining -= runLen - while(remaining > 0) + while(remaining > 0) - //Merge all remaining runs to complete sort - //ASSERT(start == end) - mergeForceCollapse(); - //ASSERT(runBases.len == 1) + //Merge all remaining runs to complete sort + //ASSERT(start == end) + mergeForceCollapse(); + //ASSERT(runBases.len == 1) - //reset minGallop, for successive calls - minGallop = MIN_GALLOP + //reset minGallop, for successive calls + minGallop = MIN_GALLOP - return L + return L - /* +/* Sorts the specified portion of the specified array using a binary insertion sort. This is the best method for sorting small numbers of elements. It requires O(n log n) compares, but O(n^2) data @@ -95,33 +95,33 @@ GLOBAL_DATUM_INIT(sortInstance, /datum/sortInstance, new()) lo the index of the first element in the range to be sorted hi the index after the last element in the range to be sorted start the index of the first element in the range that is not already known to be sorted - */ - proc/binarySort(lo, hi, start) - //ASSERT(lo <= start && start <= hi) - if(start <= lo) - start = lo + 1 +*/ +/datum/sortInstance/proc/binarySort(lo, hi, start) + //ASSERT(lo <= start && start <= hi) + if(start <= lo) + start = lo + 1 - for(,start < hi, ++start) - var/pivot = fetchElement(L,start) + for(,start < hi, ++start) + var/pivot = fetchElement(L,start) - //set left and right to the index where pivot belongs - var/left = lo - var/right = start - //ASSERT(left <= right) + //set left and right to the index where pivot belongs + var/left = lo + var/right = start + //ASSERT(left <= right) - //[lo, left) elements <= pivot < [right, start) elements - //in other words, find where the pivot element should go using bisection search - while(left < right) - var/mid = (left + right) >> 1 //round((left+right)/2) - if(call(cmp)(fetchElement(L,mid), pivot) > 0) - right = mid - else - left = mid+1 + //[lo, left) elements <= pivot < [right, start) elements + //in other words, find where the pivot element should go using bisection search + while(left < right) + var/mid = (left + right) >> 1 //round((left+right)/2) + if(call(cmp)(fetchElement(L,mid), pivot) > 0) + right = mid + else + left = mid+1 - //ASSERT(left == right) - moveElement(L, start, left) //move pivot element to correct location in the sorted range + //ASSERT(left == right) + moveElement(L, start, left) //move pivot element to correct location in the sorted range - /* +/* Returns the length of the run beginning at the specified position and reverses the run if it is back-to-front A run is the longest ascending sequence with: @@ -132,514 +132,514 @@ GLOBAL_DATUM_INIT(sortInstance, /datum/sortInstance, new()) For its intended use in a stable mergesort, the strictness of the definition of "descending" is needed so that the call can safely reverse a descending sequence without violating stability. - */ - proc/countRunAndMakeAscending(lo, hi) - //ASSERT(lo < hi) +*/ +/datum/sortInstance/proc/countRunAndMakeAscending(lo, hi) + //ASSERT(lo < hi) - var/runHi = lo + 1 - if(runHi >= hi) - return 1 + var/runHi = lo + 1 + if(runHi >= hi) + return 1 - var/last = fetchElement(L,lo) - var/current = fetchElement(L,runHi++) + var/last = fetchElement(L,lo) + var/current = fetchElement(L,runHi++) - if(call(cmp)(current, last) < 0) - while(runHi < hi) - last = current - current = fetchElement(L,runHi) - if(call(cmp)(current, last) >= 0) - break - ++runHi - reverseRange(L, lo, runHi) - else - while(runHi < hi) - last = current - current = fetchElement(L,runHi) - if(call(cmp)(current, last) < 0) - break - ++runHi + if(call(cmp)(current, last) < 0) + while(runHi < hi) + last = current + current = fetchElement(L,runHi) + if(call(cmp)(current, last) >= 0) + break + ++runHi + reverseRange(L, lo, runHi) + else + while(runHi < hi) + last = current + current = fetchElement(L,runHi) + if(call(cmp)(current, last) < 0) + break + ++runHi - return runHi - lo + return runHi - lo - //Returns the minimum acceptable run length for an array of the specified length. - //Natural runs shorter than this will be extended with binarySort - proc/minRunLength(n) - //ASSERT(n >= 0) - var/r = 0 //becomes 1 if any bits are shifted off - while(n >= MIN_MERGE) - r |= (n & 1) - n >>= 1 - return n + r +//Returns the minimum acceptable run length for an array of the specified length. +//Natural runs shorter than this will be extended with binarySort +/datum/sortInstance/proc/minRunLength(n) + //ASSERT(n >= 0) + var/r = 0 //becomes 1 if any bits are shifted off + while(n >= MIN_MERGE) + r |= (n & 1) + n >>= 1 + return n + r - //Examines the stack of runs waiting to be merged and merges adjacent runs until the stack invariants are reestablished: - // runLen[i-3] > runLen[i-2] + runLen[i-1] - // runLen[i-2] > runLen[i-1] - //This method is called each time a new run is pushed onto the stack. - //So the invariants are guaranteed to hold for i= 2) - var/n = runBases.len - 1 - if(n > 1 && runLens[n-1] <= runLens[n] + runLens[n+1]) - if(runLens[n-1] < runLens[n+1]) - --n - mergeAt(n) - else if(runLens[n] <= runLens[n+1]) - mergeAt(n) - else - break //Invariant is established - - - //Merges all runs on the stack until only one remains. - //Called only once, to finalise the sort - proc/mergeForceCollapse() - while(runBases.len >= 2) - var/n = runBases.len - 1 - if(n > 1 && runLens[n-1] < runLens[n+1]) +//Examines the stack of runs waiting to be merged and merges adjacent runs until the stack invariants are reestablished: +// runLen[i-3] > runLen[i-2] + runLen[i-1] +// runLen[i-2] > runLen[i-1] +//This method is called each time a new run is pushed onto the stack. +//So the invariants are guaranteed to hold for i= 2) + var/n = runBases.len - 1 + if(n > 1 && runLens[n-1] <= runLens[n] + runLens[n+1]) + if(runLens[n-1] < runLens[n+1]) --n mergeAt(n) - - - //Merges the two consecutive runs at stack indices i and i+1 - //Run i must be the penultimate or antepenultimate run on the stack - //In other words, i must be equal to stackSize-2 or stackSize-3 - proc/mergeAt(i) - //ASSERT(runBases.len >= 2) - //ASSERT(i >= 1) - //ASSERT(i == runBases.len - 1 || i == runBases.len - 2) - - var/base1 = runBases[i] - var/base2 = runBases[i+1] - var/len1 = runLens[i] - var/len2 = runLens[i+1] - - //ASSERT(len1 > 0 && len2 > 0) - //ASSERT(base1 + len1 == base2) - - //Record the legth of the combined runs. If i is the 3rd last run now, also slide over the last run - //(which isn't involved in this merge). The current run (i+1) goes away in any case. - runLens[i] += runLens[i+1] - runLens.Cut(i+1, i+2) - runBases.Cut(i+1, i+2) - - - //Find where the first element of run2 goes in run1. - //Prior elements in run1 can be ignored (because they're already in place) - var/k = gallopRight(fetchElement(L,base2), base1, len1, 0) - //ASSERT(k >= 0) - base1 += k - len1 -= k - if(len1 == 0) - return - - //Find where the last element of run1 goes in run2. - //Subsequent elements in run2 can be ignored (because they're already in place) - len2 = gallopLeft(fetchElement(L,base1 + len1 - 1), base2, len2, len2-1) - //ASSERT(len2 >= 0) - if(len2 == 0) - return - - //Merge remaining runs, using tmp array with min(len1, len2) elements - if(len1 <= len2) - mergeLo(base1, len1, base2, len2) + else if(runLens[n] <= runLens[n+1]) + mergeAt(n) else - mergeHi(base1, len1, base2, len2) + break //Invariant is established - /* - Locates the position to insert key within the specified sorted range - If the range contains elements equal to key, this will return the index of the LEFTMOST of those elements +//Merges all runs on the stack until only one remains. +//Called only once, to finalise the sort +/datum/sortInstance/proc/mergeForceCollapse() + while(runBases.len >= 2) + var/n = runBases.len - 1 + if(n > 1 && runLens[n-1] < runLens[n+1]) + --n + mergeAt(n) - key the element to be inserted into the sorted range - base the index of the first element of the sorted range - len the length of the sorted range, must be greater than 0 - hint the offset from base at which to begin the search, such that 0 <= hint < len; i.e. base <= hint < base+hint - Returns the index at which to insert element 'key' - */ - proc/gallopLeft(key, base, len, hint) - //ASSERT(len > 0 && hint >= 0 && hint < len) +//Merges the two consecutive runs at stack indices i and i+1 +//Run i must be the penultimate or antepenultimate run on the stack +//In other words, i must be equal to stackSize-2 or stackSize-3 +/datum/sortInstance/proc/mergeAt(i) + //ASSERT(runBases.len >= 2) + //ASSERT(i >= 1) + //ASSERT(i == runBases.len - 1 || i == runBases.len - 2) - var/lastOffset = 0 - var/offset = 1 - if(call(cmp)(key, fetchElement(L,base+hint)) > 0) - var/maxOffset = len - hint - while(offset < maxOffset && call(cmp)(key, fetchElement(L,base+hint+offset)) > 0) - lastOffset = offset - offset = (offset << 1) + 1 + var/base1 = runBases[i] + var/base2 = runBases[i+1] + var/len1 = runLens[i] + var/len2 = runLens[i+1] - if(offset > maxOffset) - offset = maxOffset + //ASSERT(len1 > 0 && len2 > 0) + //ASSERT(base1 + len1 == base2) - lastOffset += hint - offset += hint + //Record the legth of the combined runs. If i is the 3rd last run now, also slide over the last run + //(which isn't involved in this merge). The current run (i+1) goes away in any case. + runLens[i] += runLens[i+1] + runLens.Cut(i+1, i+2) + runBases.Cut(i+1, i+2) - else - var/maxOffset = hint + 1 - while(offset < maxOffset && call(cmp)(key, fetchElement(L,base+hint-offset)) <= 0) - lastOffset = offset - offset = (offset << 1) + 1 - if(offset > maxOffset) - offset = maxOffset + //Find where the first element of run2 goes in run1. + //Prior elements in run1 can be ignored (because they're already in place) + var/k = gallopRight(fetchElement(L,base2), base1, len1, 0) + //ASSERT(k >= 0) + base1 += k + len1 -= k + if(len1 == 0) + return - var/temp = lastOffset - lastOffset = hint - offset - offset = hint - temp + //Find where the last element of run1 goes in run2. + //Subsequent elements in run2 can be ignored (because they're already in place) + len2 = gallopLeft(fetchElement(L,base1 + len1 - 1), base2, len2, len2-1) + //ASSERT(len2 >= 0) + if(len2 == 0) + return - //ASSERT(-1 <= lastOffset && lastOffset < offset && offset <= len) + //Merge remaining runs, using tmp array with min(len1, len2) elements + if(len1 <= len2) + mergeLo(base1, len1, base2, len2) + else + mergeHi(base1, len1, base2, len2) - //Now L[base+lastOffset] < key <= L[base+offset], so key belongs somewhere to the right of lastOffset but no farther than - //offset. Do a binary search with invariant L[base+lastOffset-1] < key <= L[base+offset] - ++lastOffset - while(lastOffset < offset) - var/m = lastOffset + ((offset - lastOffset) >> 1) - if(call(cmp)(key, fetchElement(L,base+m)) > 0) - lastOffset = m + 1 - else - offset = m +/* + Locates the position to insert key within the specified sorted range + If the range contains elements equal to key, this will return the index of the LEFTMOST of those elements - //ASSERT(lastOffset == offset) - return offset + key the element to be inserted into the sorted range + base the index of the first element of the sorted range + len the length of the sorted range, must be greater than 0 + hint the offset from base at which to begin the search, such that 0 <= hint < len; i.e. base <= hint < base+hint - /** - * Like gallopLeft, except that if the range contains an element equal to - * key, gallopRight returns the index after the rightmost equal element. - * - * @param key the key whose insertion point to search for - * @param a the array in which to search - * @param base the index of the first element in the range - * @param len the length of the range; must be > 0 - * @param hint the index at which to begin the search, 0 <= hint < n. - * The closer hint is to the result, the faster this method will run. - * @param c the comparator used to order the range, and to search - * @return the int k, 0 <= k <= n such that a[b + k - 1] <= key < a[b + k] - */ - proc/gallopRight(key, base, len, hint) - //ASSERT(len > 0 && hint >= 0 && hint < len) + Returns the index at which to insert element 'key' +*/ +/datum/sortInstance/proc/gallopLeft(key, base, len, hint) + //ASSERT(len > 0 && hint >= 0 && hint < len) - var/offset = 1 - var/lastOffset = 0 - if(call(cmp)(key, fetchElement(L,base+hint)) < 0) //key <= L[base+hint] - var/maxOffset = hint + 1 //therefore we want to insert somewhere in the range [base,base+hint] = [base+,base+(hint+1)) - while(offset < maxOffset && call(cmp)(key, fetchElement(L,base+hint-offset)) < 0) //we are iterating backwards - lastOffset = offset - offset = (offset << 1) + 1 //1 3 7 15 + var/lastOffset = 0 + var/offset = 1 + if(call(cmp)(key, fetchElement(L,base+hint)) > 0) + var/maxOffset = len - hint + while(offset < maxOffset && call(cmp)(key, fetchElement(L,base+hint+offset)) > 0) + lastOffset = offset + offset = (offset << 1) + 1 - if(offset > maxOffset) - offset = maxOffset + if(offset > maxOffset) + offset = maxOffset - var/temp = lastOffset - lastOffset = hint - offset - offset = hint - temp + lastOffset += hint + offset += hint - else //key > L[base+hint] - var/maxOffset = len - hint //therefore we want to insert somewhere in the range (base+hint,base+len) = [base+hint+1, base+hint+(len-hint)) - while(offset < maxOffset && call(cmp)(key, fetchElement(L,base+hint+offset)) >= 0) - lastOffset = offset - offset = (offset << 1) + 1 + else + var/maxOffset = hint + 1 + while(offset < maxOffset && call(cmp)(key, fetchElement(L,base+hint-offset)) <= 0) + lastOffset = offset + offset = (offset << 1) + 1 - if(offset > maxOffset) - offset = maxOffset + if(offset > maxOffset) + offset = maxOffset - lastOffset += hint - offset += hint + var/temp = lastOffset + lastOffset = hint - offset + offset = hint - temp //ASSERT(-1 <= lastOffset && lastOffset < offset && offset <= len) - ++lastOffset - while(lastOffset < offset) - var/m = lastOffset + ((offset - lastOffset) >> 1) + //Now L[base+lastOffset] < key <= L[base+offset], so key belongs somewhere to the right of lastOffset but no farther than + //offset. Do a binary search with invariant L[base+lastOffset-1] < key <= L[base+offset] + ++lastOffset + while(lastOffset < offset) + var/m = lastOffset + ((offset - lastOffset) >> 1) - if(call(cmp)(key, fetchElement(L,base+m)) < 0) //key <= L[base+m] - offset = m - else //key > L[base+m] - lastOffset = m + 1 + if(call(cmp)(key, fetchElement(L,base+m)) > 0) + lastOffset = m + 1 + else + offset = m - //ASSERT(lastOffset == offset) + //ASSERT(lastOffset == offset) + return offset - return offset +/** + * Like gallopLeft, except that if the range contains an element equal to + * key, gallopRight returns the index after the rightmost equal element. + * + * @param key the key whose insertion point to search for + * @param a the array in which to search + * @param base the index of the first element in the range + * @param len the length of the range; must be > 0 + * @param hint the index at which to begin the search, 0 <= hint < n. + * The closer hint is to the result, the faster this method will run. + * @param c the comparator used to order the range, and to search + * @return the int k, 0 <= k <= n such that a[b + k - 1] <= key < a[b + k] + */ +/datum/sortInstance/proc/gallopRight(key, base, len, hint) + //ASSERT(len > 0 && hint >= 0 && hint < len) + + var/offset = 1 + var/lastOffset = 0 + if(call(cmp)(key, fetchElement(L,base+hint)) < 0) //key <= L[base+hint] + var/maxOffset = hint + 1 //therefore we want to insert somewhere in the range [base,base+hint] = [base+,base+(hint+1)) + while(offset < maxOffset && call(cmp)(key, fetchElement(L,base+hint-offset)) < 0) //we are iterating backwards + lastOffset = offset + offset = (offset << 1) + 1 //1 3 7 15 + + if(offset > maxOffset) + offset = maxOffset + + var/temp = lastOffset + lastOffset = hint - offset + offset = hint - temp + + else //key > L[base+hint] + var/maxOffset = len - hint //therefore we want to insert somewhere in the range (base+hint,base+len) = [base+hint+1, base+hint+(len-hint)) + while(offset < maxOffset && call(cmp)(key, fetchElement(L,base+hint+offset)) >= 0) + lastOffset = offset + offset = (offset << 1) + 1 + + if(offset > maxOffset) + offset = maxOffset + + lastOffset += hint + offset += hint + + //ASSERT(-1 <= lastOffset && lastOffset < offset && offset <= len) + + ++lastOffset + while(lastOffset < offset) + var/m = lastOffset + ((offset - lastOffset) >> 1) + + if(call(cmp)(key, fetchElement(L,base+m)) < 0) //key <= L[base+m] + offset = m + else //key > L[base+m] + lastOffset = m + 1 + + //ASSERT(lastOffset == offset) + + return offset - //Merges two adjacent runs in-place in a stable fashion. - //For performance this method should only be called when len1 <= len2! - proc/mergeLo(base1, len1, base2, len2) - //ASSERT(len1 > 0 && len2 > 0 && base1 + len1 == base2) +//Merges two adjacent runs in-place in a stable fashion. +//For performance this method should only be called when len1 <= len2! +/datum/sortInstance/proc/mergeLo(base1, len1, base2, len2) + //ASSERT(len1 > 0 && len2 > 0 && base1 + len1 == base2) - var/cursor1 = base1 - var/cursor2 = base2 + var/cursor1 = base1 + var/cursor2 = base2 - //degenerate cases - if(len2 == 1) - moveElement(L, cursor2, cursor1) - return + //degenerate cases + if(len2 == 1) + moveElement(L, cursor2, cursor1) + return - if(len1 == 1) - moveElement(L, cursor1, cursor2+len2) - return + if(len1 == 1) + moveElement(L, cursor1, cursor2+len2) + return - //Move first element of second run - moveElement(L, cursor2++, cursor1++) - --len2 + //Move first element of second run + moveElement(L, cursor2++, cursor1++) + --len2 - outer: - while(1) - var/count1 = 0 //# of times in a row that first run won - var/count2 = 0 // " " " " " " second run won + outer: + while(1) + var/count1 = 0 //# of times in a row that first run won + var/count2 = 0 // " " " " " " second run won - //do the straightfoward thin until one run starts winning consistently + //do the straightfoward thin until one run starts winning consistently - do - //ASSERT(len1 > 1 && len2 > 0) - if(call(cmp)(fetchElement(L,cursor2), fetchElement(L,cursor1)) < 0) - moveElement(L, cursor2++, cursor1++) - --len2 + do + //ASSERT(len1 > 1 && len2 > 0) + if(call(cmp)(fetchElement(L,cursor2), fetchElement(L,cursor1)) < 0) + moveElement(L, cursor2++, cursor1++) + --len2 - ++count2 - count1 = 0 + ++count2 + count1 = 0 - if(len2 == 0) - break outer - else - ++cursor1 - - ++count1 - count2 = 0 - - if(--len1 == 1) - break outer - - while((count1 | count2) < minGallop) - - - //one run is winning consistently so galloping may provide huge benifits - //so try galloping, until such time as the run is no longer consistently winning - do - //ASSERT(len1 > 1 && len2 > 0) - - count1 = gallopRight(fetchElement(L,cursor2), cursor1, len1, 0) - if(count1) - cursor1 += count1 - len1 -= count1 - - if(len1 <= 1) - break outer - - moveElement(L, cursor2, cursor1) - ++cursor2 - ++cursor1 - if(--len2 == 0) + if(len2 == 0) break outer - - count2 = gallopLeft(fetchElement(L,cursor1), cursor2, len2, 0) - if(count2) - moveRange(L, cursor2, cursor1, count2) - - cursor2 += count2 - cursor1 += count2 - len2 -= count2 - - if(len2 == 0) - break outer - + else ++cursor1 + + ++count1 + count2 = 0 + if(--len1 == 1) break outer - --minGallop - - while((count1|count2) > MIN_GALLOP) - - if(minGallop < 0) - minGallop = 0 - minGallop += 2; // Penalize for leaving gallop mode + while((count1 | count2) < minGallop) - if(len1 == 1) - //ASSERT(len2 > 0) - moveElement(L, cursor1, cursor2+len2) + //one run is winning consistently so galloping may provide huge benifits + //so try galloping, until such time as the run is no longer consistently winning + do + //ASSERT(len1 > 1 && len2 > 0) - //else - //ASSERT(len2 == 0) - //ASSERT(len1 > 1) + count1 = gallopRight(fetchElement(L,cursor2), cursor1, len1, 0) + if(count1) + cursor1 += count1 + len1 -= count1 - - proc/mergeHi(base1, len1, base2, len2) - //ASSERT(len1 > 0 && len2 > 0 && base1 + len1 == base2) - - var/cursor1 = base1 + len1 - 1 //start at end of sublists - var/cursor2 = base2 + len2 - 1 - - //degenerate cases - if(len2 == 1) - moveElement(L, base2, base1) - return - - if(len1 == 1) - moveElement(L, base1, cursor2+1) - return - - moveElement(L, cursor1--, cursor2-- + 1) - --len1 - - outer: - while(1) - var/count1 = 0 //# of times in a row that first run won - var/count2 = 0 // " " " " " " second run won - - //do the straightfoward thing until one run starts winning consistently - do - //ASSERT(len1 > 0 && len2 > 1) - if(call(cmp)(fetchElement(L,cursor2), fetchElement(L,cursor1)) < 0) - moveElement(L, cursor1--, cursor2-- + 1) - --len1 - - ++count1 - count2 = 0 - - if(len1 == 0) - break outer - else - --cursor2 - --len2 - - ++count2 - count1 = 0 - - if(len2 == 1) - break outer - while((count1 | count2) < minGallop) - - //one run is winning consistently so galloping may provide huge benifits - //so try galloping, until such time as the run is no longer consistently winning - do - //ASSERT(len1 > 0 && len2 > 1) - - count1 = len1 - gallopRight(fetchElement(L,cursor2), base1, len1, len1-1) //should cursor1 be base1? - if(count1) - cursor1 -= count1 - - moveRange(L, cursor1+1, cursor2+1, count1) //cursor1+1 == cursor2 by definition - - cursor2 -= count1 - len1 -= count1 - - if(len1 == 0) - break outer - - --cursor2 - - if(--len2 == 1) + if(len1 <= 1) break outer - count2 = len2 - gallopLeft(fetchElement(L,cursor1), cursor1+1, len2, len2-1) - if(count2) - cursor2 -= count2 - len2 -= count2 + moveElement(L, cursor2, cursor1) + ++cursor2 + ++cursor1 + if(--len2 == 0) + break outer - if(len2 <= 1) - break outer + count2 = gallopLeft(fetchElement(L,cursor1), cursor2, len2, 0) + if(count2) + moveRange(L, cursor2, cursor1, count2) + cursor2 += count2 + cursor1 += count2 + len2 -= count2 + + if(len2 == 0) + break outer + + ++cursor1 + if(--len1 == 1) + break outer + + --minGallop + + while((count1|count2) > MIN_GALLOP) + + if(minGallop < 0) + minGallop = 0 + minGallop += 2; // Penalize for leaving gallop mode + + + if(len1 == 1) + //ASSERT(len2 > 0) + moveElement(L, cursor1, cursor2+len2) + + //else + //ASSERT(len2 == 0) + //ASSERT(len1 > 1) + + +/datum/sortInstance/proc/mergeHi(base1, len1, base2, len2) + //ASSERT(len1 > 0 && len2 > 0 && base1 + len1 == base2) + + var/cursor1 = base1 + len1 - 1 //start at end of sublists + var/cursor2 = base2 + len2 - 1 + + //degenerate cases + if(len2 == 1) + moveElement(L, base2, base1) + return + + if(len1 == 1) + moveElement(L, base1, cursor2+1) + return + + moveElement(L, cursor1--, cursor2-- + 1) + --len1 + + outer: + while(1) + var/count1 = 0 //# of times in a row that first run won + var/count2 = 0 // " " " " " " second run won + + //do the straightfoward thing until one run starts winning consistently + do + //ASSERT(len1 > 0 && len2 > 1) + if(call(cmp)(fetchElement(L,cursor2), fetchElement(L,cursor1)) < 0) moveElement(L, cursor1--, cursor2-- + 1) --len1 + ++count1 + count2 = 0 + + if(len1 == 0) + break outer + else + --cursor2 + --len2 + + ++count2 + count1 = 0 + + if(len2 == 1) + break outer + while((count1 | count2) < minGallop) + + //one run is winning consistently so galloping may provide huge benifits + //so try galloping, until such time as the run is no longer consistently winning + do + //ASSERT(len1 > 0 && len2 > 1) + + count1 = len1 - gallopRight(fetchElement(L,cursor2), base1, len1, len1-1) //should cursor1 be base1? + if(count1) + cursor1 -= count1 + + moveRange(L, cursor1+1, cursor2+1, count1) //cursor1+1 == cursor2 by definition + + cursor2 -= count1 + len1 -= count1 + if(len1 == 0) break outer - --minGallop - while((count1|count2) > MIN_GALLOP) + --cursor2 - if(minGallop < 0) - minGallop = 0 - minGallop += 2 // Penalize for leaving gallop mode + if(--len2 == 1) + break outer - if(len2 == 1) - //ASSERT(len1 > 0) + count2 = len2 - gallopLeft(fetchElement(L,cursor1), cursor1+1, len2, len2-1) + if(count2) + cursor2 -= count2 + len2 -= count2 - cursor1 -= len1 - moveRange(L, cursor1+1, cursor2+1, len1) + if(len2 <= 1) + break outer - //else - //ASSERT(len1 == 0) - //ASSERT(len2 > 0) + moveElement(L, cursor1--, cursor2-- + 1) + --len1 + + if(len1 == 0) + break outer + + --minGallop + while((count1|count2) > MIN_GALLOP) + + if(minGallop < 0) + minGallop = 0 + minGallop += 2 // Penalize for leaving gallop mode + + if(len2 == 1) + //ASSERT(len1 > 0) + + cursor1 -= len1 + moveRange(L, cursor1+1, cursor2+1, len1) + + //else + //ASSERT(len1 == 0) + //ASSERT(len2 > 0) - proc/mergeSort(start, end) - var/remaining = end - start +/datum/sortInstance/proc/mergeSort(start, end) + var/remaining = end - start - //If array is small, do an insertion sort - if(remaining < MIN_MERGE) - binarySort(start, end, start/*+initRunLen*/) - return + //If array is small, do an insertion sort + if(remaining < MIN_MERGE) + binarySort(start, end, start/*+initRunLen*/) + return - var/minRun = minRunLength(remaining) + var/minRun = minRunLength(remaining) - do - var/runLen = (remaining <= minRun) ? remaining : minRun + do + var/runLen = (remaining <= minRun) ? remaining : minRun - binarySort(start, start+runLen, start) + binarySort(start, start+runLen, start) - //add data about run to queue - runBases.Add(start) - runLens.Add(runLen) + //add data about run to queue + runBases.Add(start) + runLens.Add(runLen) - //Advance to find next run - start += runLen - remaining -= runLen + //Advance to find next run + start += runLen + remaining -= runLen - while(remaining > 0) + while(remaining > 0) - while(runBases.len >= 2) - var/n = runBases.len - 1 - if(n > 1 && runLens[n-1] <= runLens[n] + runLens[n+1]) - if(runLens[n-1] < runLens[n+1]) - --n - mergeAt2(n) - else if(runLens[n] <= runLens[n+1]) - mergeAt2(n) - else - break //Invariant is established - - while(runBases.len >= 2) - var/n = runBases.len - 1 - if(n > 1 && runLens[n-1] < runLens[n+1]) + while(runBases.len >= 2) + var/n = runBases.len - 1 + if(n > 1 && runLens[n-1] <= runLens[n] + runLens[n+1]) + if(runLens[n-1] < runLens[n+1]) --n mergeAt2(n) + else if(runLens[n] <= runLens[n+1]) + mergeAt2(n) + else + break //Invariant is established - return L + while(runBases.len >= 2) + var/n = runBases.len - 1 + if(n > 1 && runLens[n-1] < runLens[n+1]) + --n + mergeAt2(n) - proc/mergeAt2(i) - var/cursor1 = runBases[i] - var/cursor2 = runBases[i+1] + return L - var/end1 = cursor1+runLens[i] - var/end2 = cursor2+runLens[i+1] +/datum/sortInstance/proc/mergeAt2(i) + var/cursor1 = runBases[i] + var/cursor2 = runBases[i+1] - var/val1 = fetchElement(L,cursor1) - var/val2 = fetchElement(L,cursor2) + var/end1 = cursor1+runLens[i] + var/end2 = cursor2+runLens[i+1] - while(1) - if(call(cmp)(val1,val2) <= 0) - if(++cursor1 >= end1) - break - val1 = fetchElement(L,cursor1) - else - moveElement(L,cursor2,cursor1) + var/val1 = fetchElement(L,cursor1) + var/val2 = fetchElement(L,cursor2) - if(++cursor2 >= end2) - break - ++end1 - ++cursor1 + while(1) + if(call(cmp)(val1,val2) <= 0) + if(++cursor1 >= end1) + break + val1 = fetchElement(L,cursor1) + else + moveElement(L,cursor2,cursor1) - val2 = fetchElement(L,cursor2) + if(++cursor2 >= end2) + break + ++end1 + ++cursor1 + + val2 = fetchElement(L,cursor2) - //Record the legth of the combined runs. If i is the 3rd last run now, also slide over the last run - //(which isn't involved in this merge). The current run (i+1) goes away in any case. - runLens[i] += runLens[i+1] - runLens.Cut(i+1, i+2) - runBases.Cut(i+1, i+2) + //Record the legth of the combined runs. If i is the 3rd last run now, also slide over the last run + //(which isn't involved in this merge). The current run (i+1) goes away in any case. + runLens[i] += runLens[i+1] + runLens.Cut(i+1, i+2) + runBases.Cut(i+1, i+2) #undef MIN_GALLOP #undef MIN_MERGE diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 43791a5642..74c32dd52f 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1538,4 +1538,12 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) /proc/CallAsync(datum/source, proctype, list/arguments) set waitfor = FALSE - return call(source, proctype)(arglist(arguments)) \ No newline at end of file + return call(source, proctype)(arglist(arguments)) + +/proc/num2sign(numeric) + if(numeric > 0) + return 1 + else if(numeric < 0) + return -1 + else + return 0 diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 91f5105553..e0cf8ebdd5 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -142,8 +142,7 @@ GLOBAL_LIST_INIT(bitfields, list( "THICKMATERIAL" = THICKMATERIAL, "VOICEBOX_TOGGLABLE" = VOICEBOX_TOGGLABLE, "VOICEBOX_DISABLED" = VOICEBOX_DISABLED, - "SNUG_FIT" = SNUG_FIT, - "ANTI_TINFOIL_MANEUVER" = ANTI_TINFOIL_MANEUVER, + "IGNORE_HAT_TOSS" = IGNORE_HAT_TOSS, ), "tesla_flags" = list( "TESLA_MOB_DAMAGE" = TESLA_MOB_DAMAGE, diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 14c752613b..fa68fab85f 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -19,6 +19,8 @@ GLOBAL_LIST(chemical_reagents_list) //list of all /datum/reagent datums index GLOBAL_LIST_EMPTY(materials_list) //list of all /datum/material datums indexed by material id. GLOBAL_LIST_EMPTY(tech_list) //list of all /datum/tech datums indexed by id. GLOBAL_LIST_EMPTY(surgeries_list) //list of all surgeries by name, associated with their path. +GLOBAL_LIST_EMPTY(uplink_items) //list of all uplink item typepaths, ascendingly sorted by their initial name. +GLOBAL_LIST_EMPTY(uplink_categories) //list of all uplink categories, listed by the order they are loaded in code. Be careful. GLOBAL_LIST_EMPTY(crafting_recipes) //list of all table craft recipes GLOBAL_LIST_EMPTY(rcd_list) //list of Rapid Construction Devices. GLOBAL_LIST_EMPTY(apcs_list) //list of all Area Power Controller machines, separate from machines for powernet speeeeeeed. diff --git a/code/_globalvars/lists/typecache.dm b/code/_globalvars/lists/typecache.dm index 96807214f2..1ec3de0bc5 100644 --- a/code/_globalvars/lists/typecache.dm +++ b/code/_globalvars/lists/typecache.dm @@ -10,3 +10,5 @@ GLOBAL_LIST_INIT(typecache_living, typecacheof(/mob/living)) GLOBAL_LIST_INIT(typecache_stack, typecacheof(/obj/item/stack)) GLOBAL_LIST_INIT(typecache_machine_or_structure, typecacheof(list(/obj/machinery, /obj/structure))) + +GLOBAL_LIST_INIT(freezing_objects, typecacheof(list(/obj/structure/closet/crate/freezer, /obj/structure/closet/secure_closet/freezer, /obj/structure/bodycontainer, /obj/item/autosurgeon, /obj/machinery/smartfridge/organ))) //list of all cold objects, that freeze organs when inside diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index 7a495b95e7..2a8289697b 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -114,7 +114,8 @@ /mob/living/silicon/ai/CtrlClickOn(var/atom/A) A.AICtrlClick(src) /mob/living/silicon/ai/AltClickOn(var/atom/A) - A.AIAltClick(src) + if(!A.AIAltClick(src)) + altclick_listed_turf(A) /* The following criminally helpful code is just the previous code cleaned up; @@ -125,9 +126,10 @@ /* Atom Procs */ /atom/proc/AICtrlClick() return + /atom/proc/AIAltClick(mob/living/silicon/ai/user) - AltClick(user) - return + return AltClick(user) + /atom/proc/AIShiftClick() return /atom/proc/AICtrlShiftClick() @@ -151,6 +153,7 @@ shock_perm(usr) else shock_restore(usr) + return TRUE /obj/machinery/door/airlock/AIShiftClick() // Opens and closes doors! if(obj_flags & EMAGGED) @@ -185,10 +188,12 @@ return toggle_on() add_fingerprint(usr) + return TRUE /* Holopads */ /obj/machinery/holopad/AIAltClick(mob/living/silicon/ai/user) hangup_all_calls() + return TRUE // // Override TurfAdjacent for AltClicking diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index e9f50d9212..4c477f3872 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -353,8 +353,17 @@ Unused except for AI */ /mob/proc/AltClickOn(atom/A) - A.AltClick(src) - return + if(!A.AltClick(src)) + altclick_listed_turf(A) + +/mob/proc/altclick_listed_turf(atom/A) + var/turf/T = get_turf(A) + if(T == A.loc || T == A) + if(T == listed_turf) + listed_turf = null + else if(TurfAdjacent(T)) + listed_turf = T + client.statpanel = T.name /mob/living/carbon/AltClickOn(atom/A) if(!stat && mind && iscarbon(A) && A != src) @@ -366,18 +375,7 @@ ..() /atom/proc/AltClick(mob/user) - SEND_SIGNAL(src, COMSIG_CLICK_ALT, user) - var/turf/T = get_turf(src) - if(T && user.TurfAdjacent(T)) - user.listed_turf = T - user.client.statpanel = T.name - -// Use this instead of /mob/proc/AltClickOn(atom/A) where you only want turf content listing without additional atom alt-click interaction -/atom/proc/AltClickNoInteract(mob/user, atom/A) - var/turf/T = get_turf(A) - if(T && user.TurfAdjacent(T)) - user.listed_turf = T - user.client.statpanel = T.name + . = SEND_SIGNAL(src, COMSIG_CLICK_ALT, user) /mob/proc/TurfAdjacent(turf/T) return T.Adjacent(src) diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index 7f63b74945..a2d566d566 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -110,7 +110,8 @@ /mob/living/silicon/robot/CtrlClickOn(atom/A) A.BorgCtrlClick(src) /mob/living/silicon/robot/AltClickOn(atom/A) - A.BorgAltClick(src) + if(!A.BorgAltClick(src)) + altclick_listed_turf(A) /atom/proc/BorgCtrlShiftClick(mob/living/silicon/robot/user) //forward to human click if not overridden CtrlShiftClick(user) @@ -154,20 +155,17 @@ ..() /atom/proc/BorgAltClick(mob/living/silicon/robot/user) - AltClick(user) - return + return AltClick(user) /obj/machinery/door/airlock/BorgAltClick(mob/living/silicon/robot/user) // Eletrifies doors. Forwards to AI code. if(get_dist(src,user) <= user.interaction_range) - AIAltClick() - else - ..() + return AIAltClick() + return ..() /obj/machinery/turretid/BorgAltClick(mob/living/silicon/robot/user) //turret lethal on/off. Forwards to AI code. if(get_dist(src,user) <= user.interaction_range) - AIAltClick() - else - ..() + return AIAltClick() + return ..() /* As with AI, these are not used in click code, diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 167fa989b2..9d53703cdd 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -107,6 +107,10 @@ #define ui_internal "EAST-1:28,CENTER+1:19"//CIT CHANGE - moves internal icon up a little bit to accommodate for the stamina meter #define ui_mood "EAST-1:28,CENTER-3:10" +//living +#define ui_living_pull "EAST-1:28,CENTER-2:15" +#define ui_living_health "EAST-1:28,CENTER:15" + //borgs #define ui_borg_health "EAST-1:28,CENTER-1:15" //borgs have the health display where humans have the pressure damage indicator. diff --git a/code/_onclick/hud/action_button.dm b/code/_onclick/hud/action_button.dm index 2b5af9ddb8..858b8dbd06 100644 --- a/code/_onclick/hud/action_button.dm +++ b/code/_onclick/hud/action_button.dm @@ -113,7 +113,7 @@ name = "Show Buttons" else name = "Hide Buttons" - UpdateIcon() + update_icon() usr.update_action_buttons() /obj/screen/movable/action_button/hide_toggle/AltClick(mob/user) @@ -125,6 +125,7 @@ moved = FALSE user.update_action_buttons(TRUE) to_chat(user, "Action button positions have been reset.") + return TRUE /obj/screen/movable/action_button/hide_toggle/proc/InitialiseIcon(datum/hud/owner_hud) @@ -134,9 +135,9 @@ hide_icon = settings["toggle_icon"] hide_state = settings["toggle_hide"] show_state = settings["toggle_show"] - UpdateIcon() + update_icon() -/obj/screen/movable/action_button/hide_toggle/proc/UpdateIcon() +/obj/screen/movable/action_button/hide_toggle/update_icon() cut_overlays() add_overlay(mutable_appearance(hide_icon, hidden ? show_state : hide_state)) diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 391e86f390..c42956bbaa 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -213,6 +213,16 @@ or something covering your eyes." desc = "Whoa man, you're tripping balls! Careful you don't get addicted... if you aren't already." icon_state = "high" +/obj/screen/alert/mind_control + name = "Mind Control" + desc = "Your mind has been hijacked! Click to view the mind control command." + icon_state = "mind_control" + var/command + +/obj/screen/alert/mind_control/Click() + var/mob/living/L = usr + to_chat(L, "[command]") + /obj/screen/alert/hypnosis name = "Hypnosis" desc = "Something's hypnotizing you, but you're not really sure about what." diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 7f2fca9d98..3b5f851333 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -349,6 +349,13 @@ devilsouldisplay = new /obj/screen/devil/soul_counter infodisplay += devilsouldisplay + blood_display = new /obj/screen/bloodsucker/blood_counter // Blood Volume + infodisplay += blood_display + vamprank_display = new /obj/screen/bloodsucker/rank_counter // Vampire Rank + infodisplay += vamprank_display + sunlight_display = new /obj/screen/bloodsucker/sunlight_counter // Sunlight + infodisplay += sunlight_display + zone_select = new /obj/screen/zone_sel() zone_select.icon = ui_style zone_select.update_icon(mymob) diff --git a/code/_onclick/hud/lavaland_elite.dm b/code/_onclick/hud/lavaland_elite.dm new file mode 100644 index 0000000000..277ea8b898 --- /dev/null +++ b/code/_onclick/hud/lavaland_elite.dm @@ -0,0 +1,16 @@ +/datum/hud/lavaland_elite + ui_style = 'icons/mob/screen_elite.dmi' + +/datum/hud/lavaland_elite/New(mob/living/simple_animal/hostile/asteroid/elite) + ..() + + pull_icon = new /obj/screen/pull() + pull_icon.icon = ui_style + pull_icon.update_icon() + pull_icon.screen_loc = ui_living_pull + pull_icon.hud = src + static_inventory += pull_icon + + healths = new /obj/screen/healths/lavaland_elite() + healths.hud = src + infodisplay += healths diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 5f128ff76d..86b4b0c024 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -644,6 +644,12 @@ screen_loc = ui_construct_health mouse_opacity = MOUSE_OPACITY_TRANSPARENT +/obj/screen/healths/lavaland_elite + icon = 'icons/mob/screen_elite.dmi' + icon_state = "elite_health0" + screen_loc = ui_health + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + /obj/screen/healthdoll name = "health doll" screen_loc = ui_healthdoll diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 9107fa9e3e..e6b2a63673 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -39,23 +39,12 @@ if(..()) return TRUE user.changeNext_move(CLICK_CD_MELEE) - if(user.a_intent == INTENT_HARM && stat == DEAD && (butcher_results || guaranteed_butcher_results)) //can we butcher it? - var/datum/component/butchering/butchering = I.GetComponent(/datum/component/butchering) - if(butchering && butchering.butchering_enabled) - to_chat(user, "You begin to butcher [src]...") - playsound(loc, butchering.butcher_sound, 50, TRUE, -1) - if(do_mob(user, src, butchering.speed) && Adjacent(I)) - butchering.Butcher(user, src) - return 1 - else if(I.get_sharpness() && !butchering) //give sharp objects butchering functionality, for consistency - I.AddComponent(/datum/component/butchering, 80 * I.toolspeed) - attackby(I, user, params) //call the attackby again to refresh and do the butchering check again - return return I.attack(src, user) /obj/item/proc/attack(mob/living/M, mob/living/user) - SEND_SIGNAL(src, COMSIG_ITEM_ATTACK, M, user) + if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK, M, user) & COMPONENT_ITEM_NO_ATTACK) + return SEND_SIGNAL(user, COMSIG_MOB_ITEM_ATTACK, M, user) if(item_flags & NOBLUDGEON) return @@ -123,7 +112,7 @@ send_item_attack_message(I, user) if(I.force) apply_damage(totitemdamage, I.damtype) //CIT CHANGE - replaces I.force with totitemdamage - if(I.damtype == BRUTE) + if(I.damtype == BRUTE && !HAS_TRAIT(src, TRAIT_NOMARROW)) if(prob(33)) I.add_mob_blood(src) var/turf/location = get_turf(src) @@ -176,4 +165,3 @@ /obj/item/proc/getweight() return total_mass || w_class * 1.25 - diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm index 299d7f64f8..f76a745fd2 100644 --- a/code/_onclick/observer.dm +++ b/code/_onclick/observer.dm @@ -31,7 +31,7 @@ ShiftClickOn(A) return if(modifiers["alt"]) - AltClickNoInteract(src, A) + altclick_listed_turf(A) return if(modifiers["ctrl"]) CtrlClickOn(A) diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index fdddbda344..21d9d4e093 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -379,3 +379,10 @@ /datum/config_entry/number/auto_transfer_delay config_entry_value = 72000 min_val = 0 + +/datum/config_entry/number/marauder_delay_non_reebe + config_entry_value = 1800 + min_val = 0 + +/datum/config_entry/flag/allow_clockwork_marauder_on_station + config_entry_value = TRUE diff --git a/code/controllers/subsystem/dcs.dm b/code/controllers/subsystem/dcs.dm index c1e101a0e7..faf95fd319 100644 --- a/code/controllers/subsystem/dcs.dm +++ b/code/controllers/subsystem/dcs.dm @@ -1,6 +1,27 @@ -SUBSYSTEM_DEF(dcs) +PROCESSING_SUBSYSTEM_DEF(dcs) name = "Datum Component System" - flags = SS_NO_INIT | SS_NO_FIRE + flags = SS_NO_INIT + var/list/elements_by_type = list() -/datum/controller/subsystem/dcs/Recover() +/datum/controller/subsystem/processing/dcs/Recover() comp_lookup = SSdcs.comp_lookup + +/datum/controller/subsystem/processing/dcs/proc/GetElement(datum/element/eletype, ...) + var/element_id = eletype + + if(initial(eletype.element_flags) & ELEMENT_BESPOKE) + var/list/fullid = list("[eletype]") + for(var/i in initial(eletype.id_arg_index) to length(args)) + var/argument = args[i] + if(istext(argument) || isnum(argument)) + fullid += "[argument]" + else + fullid += "[REF(argument)]" + element_id = fullid.Join("&") + + . = elements_by_type[element_id] + if(.) + return + if(!ispath(eletype, /datum/element)) + CRASH("Attempted to instantiate [eletype] as a /datum/element") + . = elements_by_type[element_id] = new eletype \ No newline at end of file diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index eec9f63a12..f8ca1e7eae 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -98,7 +98,7 @@ SUBSYSTEM_DEF(garbage) state = SS_RUNNING break - + /datum/controller/subsystem/garbage/proc/HandleQueue(level = GC_QUEUE_CHECK) @@ -266,8 +266,8 @@ SUBSYSTEM_DEF(garbage) D.gc_destroyed = GC_CURRENTLY_BEING_QDELETED var/start_time = world.time var/start_tick = world.tick_usage + SEND_SIGNAL(D, COMSIG_PARENT_QDELETING, force) // Let the (remaining) components know about the result of Destroy var/hint = D.Destroy(arglist(args.Copy(2))) // Let our friend know they're about to get fucked up. - SEND_SIGNAL(D, COMSIG_PARENT_QDELETED, force, hint) // Let the (remaining) components know about the result of Destroy if(world.time != start_time) I.slept_destroy++ else diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm index c3db8552c6..8329493818 100644 --- a/code/controllers/subsystem/persistence.dm +++ b/code/controllers/subsystem/persistence.dm @@ -12,6 +12,7 @@ SUBSYSTEM_DEF(persistence) var/list/obj/structure/chisel_message/chisel_messages = list() var/list/saved_messages = list() var/list/saved_modes = list(1,2,3) + var/list/saved_dynamic_rules = list(list(),list(),list()) var/list/saved_threat_levels = list(1,1,1) var/list/saved_maps var/list/saved_trophies = list() @@ -227,7 +228,10 @@ SUBSYSTEM_DEF(persistence) CollectSecretSatchels() CollectTrophies() CollectRoundtype() - CollectThreatLevel() + if(istype(SSticker.mode, /datum/game_mode/dynamic)) + var/datum/game_mode/dynamic/mode = SSticker.mode + CollectThreatLevel(mode) + CollectRulesets(mode) RecordMaps() SavePhotoPersistence() //THIS IS PERSISTENCE, NOT THE LOGGING PORTION. if(CONFIG_GET(flag/use_antag_rep)) @@ -384,17 +388,27 @@ SUBSYSTEM_DEF(persistence) fdel(json_file) WRITE_FILE(json_file, json_encode(file_data)) -/datum/controller/subsystem/persistence/proc/CollectThreatLevel() - if(istype(SSticker.mode, /datum/game_mode/dynamic)) - var/datum/game_mode/dynamic/mode = SSticker.mode - saved_threat_levels[3] = saved_threat_levels[2] - saved_threat_levels[2] = saved_threat_levels [1] - saved_threat_levels[1] = mode.threat_level - var/json_file = file("data/RecentThreatLevels.json") - var/list/file_data = list() - file_data["data"] = saved_threat_levels - fdel(json_file) - WRITE_FILE(json_file, json_encode(file_data)) +/datum/controller/subsystem/persistence/proc/CollectThreatLevel(var/datum/game_mode/dynamic/mode) + saved_threat_levels[3] = saved_threat_levels[2] + saved_threat_levels[2] = saved_threat_levels [1] + saved_threat_levels[1] = mode.threat_level + var/json_file = file("data/RecentThreatLevels.json") + var/list/file_data = list() + file_data["data"] = saved_threat_levels + fdel(json_file) + WRITE_FILE(json_file, json_encode(file_data)) + +/datum/controller/subsystem/persistence/proc/CollectRulesets(var/datum/game_mode/dynamic/mode) + saved_dynamic_rules[3] = saved_dynamic_rules[2] + saved_dynamic_rules[2] = saved_dynamic_rules[1] + saved_dynamic_rules[1] = list() + for(var/datum/dynamic_ruleset/ruleset in mode.executed_rules) + saved_dynamic_rules[1] += ruleset.config_tag + var/json_file = file("data/RecentRulesets.json") + var/list/file_data = list() + file_data["data"] = saved_dynamic_rules + fdel(json_file) + WRITE_FILE(json_file, json_encode(file_data)) /datum/controller/subsystem/persistence/proc/RecordMaps() saved_maps = saved_maps?.len ? list("[SSmapping.config.map_name]") | saved_maps : list("[SSmapping.config.map_name]") diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index 4af54b8c70..0b9284a144 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -12,27 +12,40 @@ PROCESSING_SUBSYSTEM_DEF(quirks) var/list/quirk_names_by_path = list() var/list/quirk_points = list() //Assoc. list of quirk names and their "point cost"; positive numbers are good traits, and negative ones are bad var/list/quirk_objects = list() //A list of all quirk objects in the game, since some may process + var/list/quirk_blacklist = list() //A list a list of quirks that can not be used with each other. Format: list(quirk1,quirk2),list(quirk3,quirk4) /datum/controller/subsystem/processing/quirks/Initialize(timeofday) if(!quirks.len) SetupQuirks() + quirk_blacklist = list(list("Blind","Nearsighted"),list("Jolly","Depression","Apathetic"),list("Ageusia","Deviant Tastes"),list("Ananas Affinity","Ananas Aversion")) return ..() /datum/controller/subsystem/processing/quirks/proc/SetupQuirks() - for(var/V in subtypesof(/datum/quirk)) +// Sort by Positive, Negative, Neutral; and then by name + var/list/quirk_list = sortList(subtypesof(/datum/quirk), /proc/cmp_quirk_asc) + + for(var/V in quirk_list) var/datum/quirk/T = V quirks[initial(T.name)] = T quirk_points[initial(T.name)] = initial(T.value) quirk_names_by_path[T] = initial(T.name) /datum/controller/subsystem/processing/quirks/proc/AssignQuirks(mob/living/user, client/cli, spawn_effects, roundstart = FALSE, datum/job/job, silent = FALSE, mob/to_chat_target) - GenerateQuirks(cli) - var/list/quirks = cli.prefs.character_quirks.Copy() + var/badquirk = FALSE + var/list/my_quirks = cli.prefs.all_quirks.Copy() var/list/cut - if(job && job.blacklisted_quirks) - cut = filter_quirks(quirks, job) - for(var/V in quirks) - user.add_quirk(V, spawn_effects) + if(job?.blacklisted_quirks) + cut = filter_quirks(my_quirks, job) + for(var/V in my_quirks) + var/datum/quirk/Q = quirks[V] + if(Q) + user.add_quirk(Q, spawn_effects) + else + stack_trace("Invalid quirk \"[V]\" in client [cli.ckey] preferences") + cli.prefs.all_quirks -= V + badquirk = TRUE + if(badquirk) + cli.prefs.save_character() if(!silent && LAZYLEN(cut)) to_chat(to_chat_target || user, "All of your non-neutral character quirks have been cut due to these quirks conflicting with your job assignment: [english_list(cut)].") @@ -50,28 +63,28 @@ PROCESSING_SUBSYSTEM_DEF(quirks) for(var/i in quirk_names) . += quirk_points_by_name(i) -/datum/controller/subsystem/processing/quirks/proc/filter_quirks(list/quirks, datum/job/job) +/datum/controller/subsystem/processing/quirks/proc/filter_quirks(list/our_quirks, datum/job/job) var/list/cut = list() var/list/banned_names = list() for(var/i in job.blacklisted_quirks) var/name = quirk_name_by_path(i) if(name) banned_names += name - var/list/blacklisted = quirks & banned_names + var/list/blacklisted = our_quirks & banned_names if(length(blacklisted)) for(var/i in blacklisted) - quirks -= i + our_quirks -= i cut += i /* //Code to automatically reduce positive quirks until balance is even. - var/points_used = total_points(quirks) + var/points_used = total_points(our_quirks) if(points_used > 0) //they owe us points, let's collect. - for(var/i in quirks) + for(var/i in our_quirks) var/points = quirk_points_by_name(i) if(points > 0) cut += i - quirks -= i + our_quirks -= i points_used -= points if(points_used <= 0) break @@ -79,14 +92,9 @@ PROCESSING_SUBSYSTEM_DEF(quirks) //Nah, let's null all non-neutrals out. if(cut.len) - for(var/i in quirks) + for(var/i in our_quirks) if(quirk_points_by_name(i) != 0) //cut += i -- Commented out: Only show the ones that triggered the quirk purge. - quirks -= i + our_quirks -= i return cut - -/datum/controller/subsystem/processing/quirks/proc/GenerateQuirks(client/user) - if(user.prefs.character_quirks.len) - return - user.prefs.character_quirks = user.prefs.all_quirks diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 6f619fef0b..890725fbb1 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -384,8 +384,8 @@ SUBSYSTEM_DEF(ticker) captainless=0 if(player.mind.assigned_role != player.mind.special_role) SSjob.EquipRank(N, player.mind.assigned_role, 0) - if(CONFIG_GET(flag/roundstart_traits) && ishuman(N.new_character)) - SSquirks.AssignQuirks(N.new_character, N.client, TRUE, TRUE, SSjob.GetJob(player.mind.assigned_role), FALSE, N) + if(CONFIG_GET(flag/roundstart_traits) && ishuman(N.new_character)) + SSquirks.AssignQuirks(N.new_character, N.client, TRUE, TRUE, SSjob.GetJob(player.mind.assigned_role), FALSE, N) CHECK_TICK if(captainless) for(var/mob/dead/new_player/N in GLOB.player_list) diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index 33798d74f7..1ad4a15ee7 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -87,13 +87,13 @@ SUBSYSTEM_DEF(traumas) "skeletons" = typecacheof(list(/obj/item/organ/tongue/bone, /obj/item/clothing/suit/armor/bone, /obj/item/stack/sheet/bone, /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton, /obj/effect/decal/remains/human)), - "conspiracies" = typecacheof(list(/obj/item/clothing/under/rank/captain, /obj/item/clothing/under/rank/head_of_security, + "conspiracies" = typecacheof(list(/obj/item/clothing/under/rank/captain, /obj/item/clothing/under/rank/head_of_security, /obj/item/clothing/under/rank/chief_engineer, /obj/item/clothing/under/rank/chief_medical_officer, /obj/item/clothing/under/rank/head_of_personnel, /obj/item/clothing/under/rank/research_director, /obj/item/clothing/under/rank/head_of_security/grey, /obj/item/clothing/under/rank/head_of_security/alt, /obj/item/clothing/under/rank/research_director/alt, /obj/item/clothing/under/rank/research_director/turtleneck, /obj/item/clothing/under/captainparade, /obj/item/clothing/under/hosparademale, /obj/item/clothing/under/hosparadefem, - /obj/item/clothing/head/helmet/abductor, /obj/item/clothing/suit/armor/abductor/vest, /obj/item/abductor_baton, + /obj/item/clothing/head/helmet/abductor, /obj/item/clothing/suit/armor/abductor/vest, /obj/item/abductor/baton, /obj/item/storage/belt/military/abductor, /obj/item/gun/energy/alien, /obj/item/abductor/silencer, /obj/item/abductor/gizmo, /obj/item/clothing/under/rank/centcom_officer, /obj/item/clothing/suit/space/hardsuit/ert, /obj/item/clothing/suit/space/hardsuit/ert/sec, @@ -136,7 +136,7 @@ SUBSYSTEM_DEF(traumas) "aliens" = typecacheof(list(/obj/item/clothing/mask/facehugger, /obj/item/organ/body_egg/alien_embryo, /obj/structure/alien, /obj/item/toy/toy_xeno, /obj/item/clothing/suit/armor/abductor, /obj/item/abductor, /obj/item/gun/energy/alien, - /obj/item/abductor_baton, /obj/item/radio/headset/abductor, /obj/item/scalpel/alien, /obj/item/hemostat/alien, + /obj/item/abductor/baton, /obj/item/radio/headset/abductor, /obj/item/scalpel/alien, /obj/item/hemostat/alien, /obj/item/retractor/alien, /obj/item/circular_saw/alien, /obj/item/surgicaldrill/alien, /obj/item/cautery/alien, /obj/item/clothing/head/helmet/abductor, /obj/structure/bed/abductor, /obj/structure/table_frame/abductor, /obj/structure/table/abductor, /obj/structure/table/optable/abductor, /obj/structure/closet/abductor, /obj/item/organ/heart/gland, diff --git a/code/datums/brain_damage/hypnosis.dm b/code/datums/brain_damage/hypnosis.dm index f937c19658..37aee6df7e 100644 --- a/code/datums/brain_damage/hypnosis.dm +++ b/code/datums/brain_damage/hypnosis.dm @@ -68,4 +68,4 @@ new /datum/hallucination/chat(owner, TRUE, FALSE, "[hypnotic_phrase]") /datum/brain_trauma/hypnosis/handle_hearing(datum/source, list/hearing_args) - hearing_args[HEARING_MESSAGE] = target_phrase.Replace(hearing_args[HEARING_MESSAGE], "$1") + hearing_args[HEARING_RAW_MESSAGE] = target_phrase.Replace(hearing_args[HEARING_RAW_MESSAGE], "$1") diff --git a/code/datums/brain_damage/imaginary_friend.dm b/code/datums/brain_damage/imaginary_friend.dm index 8337a8e4d5..9005a788b7 100644 --- a/code/datums/brain_damage/imaginary_friend.dm +++ b/code/datums/brain_damage/imaginary_friend.dm @@ -149,8 +149,8 @@ friend_talk(message) -/mob/camera/imaginary_friend/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode) - to_chat(src, compose_message(speaker, message_language, raw_message, radio_freq, spans, message_mode)) +/mob/camera/imaginary_friend/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode, atom/movable/source) + to_chat(src, compose_message(speaker, message_language, raw_message, radio_freq, spans, message_mode, FALSE, source)) /mob/camera/imaginary_friend/proc/friend_talk(message) message = capitalize(trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN))) diff --git a/code/datums/brain_damage/mild.dm b/code/datums/brain_damage/mild.dm index 012f771a29..235417d62c 100644 --- a/code/datums/brain_damage/mild.dm +++ b/code/datums/brain_damage/mild.dm @@ -241,7 +241,7 @@ if(prob(25)) var/deja_vu = pick_n_take(hear_dejavu) var/static/regex/quoted_spoken_message = regex("\".+\"", "gi") - hearing_args[HEARING_MESSAGE] = quoted_spoken_message.Replace(hearing_args[HEARING_MESSAGE], "\"[deja_vu]\"") //Quotes included to avoid cases where someone says part of their name + hearing_args[HEARING_RAW_MESSAGE] = quoted_spoken_message.Replace(hearing_args[HEARING_RAW_MESSAGE], "\"[deja_vu]\"") //Quotes included to avoid cases where someone says part of their name return if(hear_dejavu.len >= 15) if(prob(50)) diff --git a/code/datums/brain_damage/phobia.dm b/code/datums/brain_damage/phobia.dm index 034f2baaaf..80a1bd2470 100644 --- a/code/datums/brain_damage/phobia.dm +++ b/code/datums/brain_damage/phobia.dm @@ -88,7 +88,7 @@ if(findtext(hearing_args[HEARING_RAW_MESSAGE], reg)) addtimer(CALLBACK(src, .proc/freak_out, null, word), 10) //to react AFTER the chat message - hearing_args[HEARING_MESSAGE] = reg.Replace(hearing_args[HEARING_MESSAGE], "$1") + hearing_args[HEARING_RAW_MESSAGE] = reg.Replace(hearing_args[HEARING_RAW_MESSAGE], "$1") break /datum/brain_trauma/mild/phobia/handle_speech(datum/source, list/speech_args) diff --git a/code/datums/brain_damage/split_personality.dm b/code/datums/brain_damage/split_personality.dm index dfe63ce141..a1284319f1 100644 --- a/code/datums/brain_damage/split_personality.dm +++ b/code/datums/brain_damage/split_personality.dm @@ -198,9 +198,9 @@ /datum/brain_trauma/severe/split_personality/brainwashing/handle_hearing(datum/source, list/hearing_args) if(HAS_TRAIT(owner, TRAIT_DEAF) || owner == hearing_args[HEARING_SPEAKER]) return - var/message = hearing_args[HEARING_MESSAGE] + var/message = hearing_args[HEARING_RAW_MESSAGE] if(findtext(message, codeword)) - hearing_args[HEARING_MESSAGE] = replacetext(message, codeword, "[codeword]") + hearing_args[HEARING_RAW_MESSAGE] = replacetext(message, codeword, "[codeword]") addtimer(CALLBACK(src, /datum/brain_trauma/severe/split_personality.proc/switch_personalities), 10) /datum/brain_trauma/severe/split_personality/brainwashing/handle_speech(datum/source, list/speech_args) diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index fbe94cbb9e..72b9681f91 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -53,7 +53,7 @@ // If you want/expect to be moving the component around between parents, use this to register on the parent for signals /datum/component/proc/RegisterWithParent() - return + SEND_SIGNAL(src, COMSIG_COMPONENT_REGISTER_PARENT) //CITADEL EDIT /datum/component/proc/Initialize(...) return @@ -85,7 +85,7 @@ UnregisterFromParent() /datum/component/proc/UnregisterFromParent() - return + SEND_SIGNAL(src, COMSIG_COMPONENT_UNREGISTER_PARENT) //CITADEL EDIT /datum/proc/RegisterSignal(datum/target, sig_type_or_types, proctype, override = FALSE) if(QDELETED(src) || QDELETED(target)) @@ -184,6 +184,7 @@ // The type arg is casted so initial works, you shouldn't be passing a real instance into this /datum/proc/GetComponent(datum/component/c_type) + RETURN_TYPE(c_type) if(initial(c_type.dupe_mode) == COMPONENT_DUPE_ALLOWED) stack_trace("GetComponent was called to get a component of which multiple copies could be on an object. This can easily break and should be changed. Type: \[[c_type]\]") var/list/dc = datum_components diff --git a/code/datums/components/bane.dm b/code/datums/components/bane.dm index 84f8010270..bdfcfed517 100644 --- a/code/datums/components/bane.dm +++ b/code/datums/components/bane.dm @@ -19,12 +19,14 @@ src.damage_multiplier = damage_multiplier /datum/component/bane/RegisterWithParent() + . = ..() if(speciestype) RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/speciesCheck) else RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/mobCheck) /datum/component/bane/UnregisterFromParent() + . = ..() UnregisterSignal(parent, COMSIG_ITEM_AFTERATTACK) /datum/component/bane/proc/speciesCheck(obj/item/source, atom/target, mob/user, proximity_flag, click_parameters) diff --git a/code/datums/components/bouncy.dm b/code/datums/components/bouncy.dm index f6a2a89195..c7ca85455b 100644 --- a/code/datums/components/bouncy.dm +++ b/code/datums/components/bouncy.dm @@ -21,9 +21,11 @@ RegisterSignal(parent, bounce, .proc/bounce_up) /datum/component/bouncy/RegisterWithParent() + . = ..() RegisterSignal(parent, bounce_signals, .proc/bounce_up) /datum/component/bouncy/UnregisterFromParent() + . = ..() UnregisterSignal(parent, bounce_signals) /datum/component/bouncy/proc/bounce_up(datum/source) diff --git a/code/datums/components/butchering.dm b/code/datums/components/butchering.dm index 372fa8e283..d5af47ea1f 100644 --- a/code/datums/components/butchering.dm +++ b/code/datums/components/butchering.dm @@ -4,8 +4,9 @@ var/bonus_modifier = 0 //percentage increase to bonus item chance var/butcher_sound = 'sound/weapons/slice.ogg' //sound played when butchering var/butchering_enabled = TRUE + var/can_be_blunt = FALSE -/datum/component/butchering/Initialize(_speed, _effectiveness, _bonus_modifier, _butcher_sound, disabled) +/datum/component/butchering/Initialize(_speed, _effectiveness, _bonus_modifier, _butcher_sound, disabled, _can_be_blunt) if(_speed) speed = _speed if(_effectiveness) @@ -16,6 +17,56 @@ butcher_sound = _butcher_sound if(disabled) butchering_enabled = FALSE + if(_can_be_blunt) + can_be_blunt = _can_be_blunt + if(isitem(parent)) + RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/onItemAttack) + +/datum/component/butchering/proc/onItemAttack(obj/item/source, mob/living/M, mob/living/user) + if(user.a_intent != INTENT_HARM) + return + if(M.stat == DEAD && (M.butcher_results || M.guaranteed_butcher_results)) //can we butcher it? + if(butchering_enabled && (can_be_blunt || source.get_sharpness())) + INVOKE_ASYNC(src, .proc/startButcher, source, M, user) + return COMPONENT_ITEM_NO_ATTACK + + if(ishuman(M) && source.force && source.get_sharpness()) + var/mob/living/carbon/human/H = M + if((H.health <= H.crit_threshold || (user.pulling == H && user.grab_state >= GRAB_NECK) || H.IsSleeping()) && user.zone_selected == BODY_ZONE_HEAD) // Only sleeping, neck grabbed, or crit, can be sliced. + if(H.has_status_effect(/datum/status_effect/neck_slice)) + user.show_message("[H]'s neck has already been already cut, you can't make the bleeding any worse!", 1, \ + "Their neck has already been already cut, you can't make the bleeding any worse!") + return COMPONENT_ITEM_NO_ATTACK + INVOKE_ASYNC(src, .proc/startNeckSlice, source, H, user) + return COMPONENT_ITEM_NO_ATTACK + +/datum/component/butchering/proc/startButcher(obj/item/source, mob/living/M, mob/living/user) + to_chat(user, "You begin to butcher [M]...") + playsound(M.loc, butcher_sound, 50, TRUE, -1) + if(do_mob(user, M, speed) && M.Adjacent(source)) + Butcher(user, M) + +/datum/component/butchering/proc/startNeckSlice(obj/item/source, mob/living/carbon/human/H, mob/living/user) + user.visible_message("[user] is slitting [H]'s throat!", \ + "You start slicing [H]'s throat!", \ + "You hear a cutting noise!", ignored_mobs = H) + H.show_message("Your throat is being slit by [user]!", 1, \ + "Something is cutting into your neck!", NONE) + log_combat(user, H, "starts slicing the throat of") + + playsound(H.loc, butcher_sound, 50, TRUE, -1) + if(do_mob(user, H, CLAMP(500 / source.force, 30, 100)) && H.Adjacent(source)) + if(H.has_status_effect(/datum/status_effect/neck_slice)) + user.show_message("[H]'s neck has already been already cut, you can't make the bleeding any worse!", 1, \ + "Their neck has already been already cut, you can't make the bleeding any worse!") + return + + H.visible_message("[user] slits [H]'s throat!", \ + "[user] slits your throat...") + log_combat(user, H, "finishes slicing the throat of") + H.apply_damage(source.force, BRUTE, BODY_ZONE_HEAD) + H.bleed_rate = CLAMP(H.bleed_rate + 20, 0, 30) + H.apply_status_effect(/datum/status_effect/neck_slice) /datum/component/butchering/proc/Butcher(mob/living/butcher, mob/living/meat) var/turf/T = meat.drop_location() @@ -50,3 +101,23 @@ /datum/component/butchering/proc/ButcherEffects(mob/living/meat) //extra effects called on butchering, override this via subtypes return + +///Special snowflake component only used for the recycler. +/datum/component/butchering/recycler + +/datum/component/butchering/recycler/Initialize(_speed, _effectiveness, _bonus_modifier, _butcher_sound, disabled, _can_be_blunt) + if(!istype(parent, /obj/machinery/recycler)) //EWWW + return COMPONENT_INCOMPATIBLE + . = ..() + if(. == COMPONENT_INCOMPATIBLE) + return + RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, .proc/onCrossed) + +/datum/component/butchering/recycler/proc/onCrossed(datum/source, mob/living/L) + if(!istype(L)) + return + var/obj/machinery/recycler/eater = parent + if(eater.safety_mode || (eater.stat & (BROKEN|NOPOWER))) //I'm so sorry. + return + if(L.stat == DEAD && (L.butcher_results || L.guaranteed_butcher_results)) + Butcher(parent, L) \ No newline at end of file diff --git a/code/datums/components/decal.dm b/code/datums/components/decal.dm index 641dbdb1cf..60317797a7 100644 --- a/code/datums/components/decal.dm +++ b/code/datums/components/decal.dm @@ -17,6 +17,7 @@ apply() /datum/component/decal/RegisterWithParent() + . = ..() if(first_dir) RegisterSignal(parent, COMSIG_ATOM_DIR_CHANGE, .proc/rotate_react) if(cleanable) @@ -25,6 +26,7 @@ RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine) /datum/component/decal/UnregisterFromParent() + . = ..() UnregisterSignal(parent, list(COMSIG_ATOM_DIR_CHANGE, COMSIG_COMPONENT_CLEAN_ACT, COMSIG_PARENT_EXAMINE)) /datum/component/decal/Destroy() diff --git a/code/datums/components/earhealing.dm b/code/datums/components/earhealing.dm deleted file mode 100644 index bd3d57480d..0000000000 --- a/code/datums/components/earhealing.dm +++ /dev/null @@ -1,30 +0,0 @@ -// An item worn in the ear slot with this component will heal your ears each -// Life() tick, even if normally your ears would be too damaged to heal. - -/datum/component/earhealing - var/mob/living/carbon/wearer - -/datum/component/earhealing/Initialize() - if(!isitem(parent)) - return COMPONENT_INCOMPATIBLE - RegisterSignal(parent, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED), .proc/equippedChanged) - -/datum/component/earhealing/proc/equippedChanged(datum/source, mob/living/carbon/user, slot) - if (slot == SLOT_EARS && istype(user)) - if (!wearer) - START_PROCESSING(SSobj, src) - wearer = user - else - if (wearer) - STOP_PROCESSING(SSobj, src) - wearer = null - -/datum/component/earhealing/process() - if (!wearer) - STOP_PROCESSING(SSobj, src) - return - if(!HAS_TRAIT(wearer, TRAIT_DEAF)) - var/obj/item/organ/ears/ears = wearer.getorganslot(ORGAN_SLOT_EARS) - if (ears) - ears.deaf = max(ears.deaf - 1, (ears.damage < ears.maxHealth ? 0 : 1)) // Do not clear deafness if our ears are too damaged - ears.damage = max(ears.damage - 0.1, 0) diff --git a/code/datums/components/fantasy/_fantasy.dm b/code/datums/components/fantasy/_fantasy.dm index 86e016784a..9e8493b6f4 100644 --- a/code/datums/components/fantasy/_fantasy.dm +++ b/code/datums/components/fantasy/_fantasy.dm @@ -30,11 +30,13 @@ return ..() /datum/component/fantasy/RegisterWithParent() + . = ..() var/obj/item/master = parent originalName = master.name modify() /datum/component/fantasy/UnregisterFromParent() + . = ..() unmodify() /datum/component/fantasy/InheritComponent(datum/component/fantasy/newComp, original, list/arguments) diff --git a/code/datums/components/igniter.dm b/code/datums/components/igniter.dm index b40383e828..13944b1200 100644 --- a/code/datums/components/igniter.dm +++ b/code/datums/components/igniter.dm @@ -9,6 +9,7 @@ src.fire_stacks = fire_stacks /datum/component/igniter/RegisterWithParent() + . = ..() if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit) else if(isitem(parent)) @@ -17,6 +18,7 @@ RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget) /datum/component/igniter/UnregisterFromParent() + . = ..() UnregisterSignal(parent, list(COMSIG_ITEM_AFTERATTACK, COMSIG_HOSTILE_ATTACKINGTARGET, COMSIG_PROJECTILE_ON_HIT)) /datum/component/igniter/proc/item_afterattack(obj/item/source, atom/target, mob/user, proximity_flag, click_parameters) diff --git a/code/datums/components/knockback.dm b/code/datums/components/knockback.dm index b4fcaa2dd8..988a0e575e 100644 --- a/code/datums/components/knockback.dm +++ b/code/datums/components/knockback.dm @@ -10,6 +10,7 @@ src.throw_anchored = throw_anchored /datum/component/knockback/RegisterWithParent() + . = ..() if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit) else if(isitem(parent)) @@ -18,6 +19,7 @@ RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget) /datum/component/knockback/UnregisterFromParent() + . = ..() UnregisterSignal(parent, list(COMSIG_ITEM_AFTERATTACK, COMSIG_HOSTILE_ATTACKINGTARGET, COMSIG_PROJECTILE_ON_HIT)) /datum/component/knockback/proc/item_afterattack(obj/item/source, atom/target, mob/user, proximity_flag, click_parameters) diff --git a/code/datums/components/lifesteal.dm b/code/datums/components/lifesteal.dm index c7a78e10a3..9d62d32866 100644 --- a/code/datums/components/lifesteal.dm +++ b/code/datums/components/lifesteal.dm @@ -10,6 +10,7 @@ src.flat_heal = flat_heal /datum/component/lifesteal/RegisterWithParent() + . = ..() if(isgun(parent)) RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit) else if(isitem(parent)) @@ -18,6 +19,7 @@ RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget) /datum/component/lifesteal/UnregisterFromParent() + . = ..() UnregisterSignal(parent, list(COMSIG_ITEM_AFTERATTACK, COMSIG_HOSTILE_ATTACKINGTARGET, COMSIG_PROJECTILE_ON_HIT)) /datum/component/lifesteal/proc/item_afterattack(obj/item/source, atom/target, mob/user, proximity_flag, click_parameters) diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm index b46919a6c6..2ecd77546d 100644 --- a/code/datums/components/mood.dm +++ b/code/datums/components/mood.dm @@ -150,15 +150,6 @@ if(9) setSanity(sanity+0.4, maximum=SANITY_GREAT) - if(HAS_TRAIT(owner, TRAIT_DEPRESSION)) - if(prob(0.05)) - add_event(null, "depression", /datum/mood_event/depression) - clear_event(null, "jolly") - if(HAS_TRAIT(owner, TRAIT_JOLLY)) - if(prob(0.05)) - add_event(null, "jolly", /datum/mood_event/jolly) - clear_event(null, "depression") - HandleNutrition(owner) /datum/component/mood/proc/setSanity(amount, minimum=SANITY_INSANE, maximum=SANITY_NEUTRAL)//I'm sure bunging this in here will have no negative repercussions. @@ -248,7 +239,7 @@ var/datum/hud/hud = owner.hud_used screen_obj = new hud.infodisplay += screen_obj - RegisterSignal(hud, COMSIG_PARENT_QDELETED, .proc/unmodify_hud) + RegisterSignal(hud, COMSIG_PARENT_QDELETING, .proc/unmodify_hud) RegisterSignal(screen_obj, COMSIG_CLICK, .proc/hud_click) /datum/component/mood/proc/unmodify_hud(datum/source) diff --git a/code/datums/components/nanites.dm b/code/datums/components/nanites.dm index 362961a24f..0ef13b514b 100644 --- a/code/datums/components/nanites.dm +++ b/code/datums/components/nanites.dm @@ -34,6 +34,7 @@ cloud_sync() /datum/component/nanites/RegisterWithParent() + . = ..() RegisterSignal(parent, COMSIG_HAS_NANITES, .proc/confirm_nanites) RegisterSignal(parent, COMSIG_NANITE_UI_DATA, .proc/nanite_ui_data) RegisterSignal(parent, COMSIG_NANITE_GET_PROGRAMS, .proc/get_programs) @@ -57,6 +58,7 @@ RegisterSignal(parent, COMSIG_NANITE_SIGNAL, .proc/receive_signal) /datum/component/nanites/UnregisterFromParent() + . = ..() UnregisterSignal(parent, list(COMSIG_HAS_NANITES, COMSIG_NANITE_UI_DATA, COMSIG_NANITE_GET_PROGRAMS, diff --git a/code/datums/components/orbiter.dm b/code/datums/components/orbiter.dm index efa0fd14d5..05174c196b 100644 --- a/code/datums/components/orbiter.dm +++ b/code/datums/components/orbiter.dm @@ -20,12 +20,14 @@ begin_orbit(orbiter, radius, clockwise, rotation_speed, rotation_segments, pre_rotation) /datum/component/orbiter/RegisterWithParent() + . = ..() var/atom/target = parent while(ismovableatom(target)) RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/move_react) target = target.loc /datum/component/orbiter/UnregisterFromParent() + . = ..() var/atom/target = parent while(ismovableatom(target)) UnregisterSignal(target, COMSIG_MOVABLE_MOVED) diff --git a/code/datums/components/rotation.dm b/code/datums/components/rotation.dm index 81ff2d517d..422d73520e 100644 --- a/code/datums/components/rotation.dm +++ b/code/datums/components/rotation.dm @@ -106,6 +106,7 @@ if(!can_be_rotated.Invoke(user, rotation) || !can_user_rotate.Invoke(user, rotation)) return BaseRot(user, rotation) + return TRUE /datum/component/simple_rotation/proc/WrenchRot(datum/source, obj/item/I, mob/living/user) if(!can_be_rotated.Invoke(user,default_rotation_direction) || !can_user_rotate.Invoke(user,default_rotation_direction)) diff --git a/code/datums/components/shrapnel.dm b/code/datums/components/shrapnel.dm index a911221f26..4d1fe21b95 100644 --- a/code/datums/components/shrapnel.dm +++ b/code/datums/components/shrapnel.dm @@ -13,10 +13,12 @@ src.override_projectile_range = override_projectile_range /datum/component/shrapnel/RegisterWithParent() + . = ..() if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit) /datum/component/shrapnel/UnregisterFromParent() + . = ..() UnregisterSignal(parent, list(COMSIG_PROJECTILE_ON_HIT)) /datum/component/shrapnel/proc/projectile_hit(atom/fired_from, atom/movable/firer, atom/target, Angle) diff --git a/code/datums/components/shrink.dm b/code/datums/components/shrink.dm new file mode 100644 index 0000000000..f070d9b22f --- /dev/null +++ b/code/datums/components/shrink.dm @@ -0,0 +1,42 @@ +/datum/component/shrink + var/olddens + var/oldopac + dupe_mode = COMPONENT_DUPE_HIGHLANDER + +/datum/component/shrink/Initialize(shrink_time) + if(!isatom(parent)) + return COMPONENT_INCOMPATIBLE + var/atom/parent_atom = parent + parent_atom.transform = parent_atom.transform.Scale(0.5,0.5) + olddens = parent_atom.density + oldopac = parent_atom.opacity + parent_atom.density = 0 + parent_atom.opacity = 0 + if(isliving(parent_atom)) + var/mob/living/L = parent_atom + L.add_movespeed_modifier(MOVESPEED_ID_SHRINK_RAY, update=TRUE, priority=100, multiplicative_slowdown=4) + if(iscarbon(L)) + var/mob/living/carbon/C = L + C.unequip_everything() + C.visible_message("[C]'s belongings fall off of [C.p_them()] as they shrink down!", + "Your belongings fall away as everything grows bigger!") + if(ishuman(C)) + var/mob/living/carbon/human/H = C + H.physiology.damage_resistance -= 100//carbons take double damage while shrunk + parent_atom.visible_message("[parent_atom] shrinks down to a tiny size!", + "Everything grows bigger!") + QDEL_IN(src, shrink_time) + + +/datum/component/shrink/Destroy() + var/atom/parent_atom = parent + parent_atom.transform = parent_atom.transform.Scale(2,2) + parent_atom.density = olddens + parent_atom.opacity = oldopac + if(isliving(parent_atom)) + var/mob/living/L = parent_atom + L.remove_movespeed_modifier(MOVESPEED_ID_SHRINK_RAY) + if(ishuman(L)) + var/mob/living/carbon/human/H = L + H.physiology.damage_resistance += 100 + ..() \ No newline at end of file diff --git a/code/datums/components/sizzle.dm b/code/datums/components/sizzle.dm new file mode 100644 index 0000000000..5e56dd15cb --- /dev/null +++ b/code/datums/components/sizzle.dm @@ -0,0 +1,25 @@ +/datum/component/sizzle + var/mutable_appearance/sizzling + var/sizzlealpha = 0 + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + +/datum/component/sizzle/Initialize() + if(!isatom(parent)) + return COMPONENT_INCOMPATIBLE + setup_sizzle() + +/datum/component/sizzle/InheritComponent(datum/component/C, i_am_original) + var/atom/food = parent + sizzlealpha += 5 + sizzling.alpha = sizzlealpha + food.cut_overlay(sizzling) + food.add_overlay(sizzling) + +/datum/component/sizzle/proc/setup_sizzle() + var/atom/food = parent + var/icon/grill_marks = icon(initial(food.icon), initial(food.icon_state)) //we only want to apply grill marks to the initial icon_state for each object + grill_marks.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) + grill_marks.Blend(icon('icons/obj/kitchen.dmi', "grillmarks"), ICON_MULTIPLY) //adds grill marks and the remaining white areas become transparent + sizzling = new(grill_marks) + sizzling.alpha = sizzlealpha + food.add_overlay(sizzling) \ No newline at end of file diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm index dd189137a5..76a9b2e6aa 100644 --- a/code/datums/components/storage/storage.dm +++ b/code/datums/components/storage/storage.dm @@ -57,7 +57,7 @@ var/screen_start_x = 4 //These two are where the storage starts being rendered, screen_loc wise. var/screen_start_y = 2 //End - + var/limited_random_access = FALSE //Quick if statement in accessible_items to determine if we care at all about what people can access at once. var/limited_random_access_stack_position = 0 //If >0, can only access top items var/limited_random_access_stack_bottom_up = FALSE //If TRUE, above becomes bottom items @@ -647,9 +647,9 @@ if(M == viewing) to_chat(usr, "You put [I] [insert_preposition]to [parent].") else if(in_range(M, viewing)) //If someone is standing close enough, they can tell what it is... - viewing.show_message("[M] puts [I] [insert_preposition]to [parent].", 1) + viewing.show_message("[M] puts [I] [insert_preposition]to [parent].", MSG_VISUAL) else if(I && I.w_class >= 3) //Otherwise they can only see large or normal items from a distance... - viewing.show_message("[M] puts [I] [insert_preposition]to [parent].", 1) + viewing.show_message("[M] puts [I] [insert_preposition]to [parent].", MSG_VISUAL) /datum/component/storage/proc/update_icon() if(isobj(parent)) @@ -762,7 +762,7 @@ if(!isliving(user) || !user.CanReach(parent)) return if(check_locked(source, user, TRUE)) - return + return TRUE var/atom/A = parent if(!quickdraw) @@ -770,19 +770,20 @@ user_show_to_mob(user) if(rustle_sound) playsound(A, "rustle", 50, 1, -5) - return + return TRUE - if(!user.incapacitated()) + if(user.can_hold_items() && !user.incapacitated()) var/obj/item/I = locate() in real_location() if(!I) return A.add_fingerprint(user) remove_from_storage(I, get_turf(user)) if(!user.put_in_hands(I)) - to_chat(user, "You fumble for [I] and it falls on the floor.") - return + user.visible_message("[user] fumbles with the [parent], letting [I] fall on the floor.", \ + "You fumble with [parent], letting [I] fall on the floor.") + return TRUE user.visible_message("[user] draws [I] from [parent]!", "You draw [I] from [parent].") - return + return TRUE /datum/component/storage/proc/action_trigger(datum/signal_source, datum/action/source) gather_mode_switch(source.owner) diff --git a/code/datums/components/summoning.dm b/code/datums/components/summoning.dm index 552959603d..61718301b3 100644 --- a/code/datums/components/summoning.dm +++ b/code/datums/components/summoning.dm @@ -24,6 +24,7 @@ src.faction = faction /datum/component/summoning/RegisterWithParent() + . = ..() if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit) else if(isitem(parent)) @@ -32,6 +33,7 @@ RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget) /datum/component/summoning/UnregisterFromParent() + . = ..() UnregisterSignal(parent, list(COMSIG_ITEM_AFTERATTACK, COMSIG_HOSTILE_ATTACKINGTARGET, COMSIG_PROJECTILE_ON_HIT)) /datum/component/summoning/proc/item_afterattack(obj/item/source, atom/target, mob/user, proximity_flag, click_parameters) diff --git a/code/datums/components/tactical.dm b/code/datums/components/tactical.dm index 5917fc3009..ba028e2fd5 100644 --- a/code/datums/components/tactical.dm +++ b/code/datums/components/tactical.dm @@ -9,10 +9,12 @@ src.allowed_slot = allowed_slot /datum/component/tactical/RegisterWithParent() + . = ..() RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/modify) RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/unmodify) /datum/component/tactical/UnregisterFromParent() + . = ..() UnregisterSignal(parent, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED)) unmodify() diff --git a/code/datums/components/virtual_reality.dm b/code/datums/components/virtual_reality.dm index f8f0679e9b..2f0405af2e 100644 --- a/code/datums/components/virtual_reality.dm +++ b/code/datums/components/virtual_reality.dm @@ -1,128 +1,245 @@ +/** + * The virtual reality turned component. + * Originally created to overcome issues of mob polymorphing locking the player inside virtual reality + * and allow for a more "immersive" virtual reality in a virtual reality experience. + * It relies on comically complex order of logic, expect things to break if procs such as mind/transfer_to() are revamped. + * In short, a barebone not so hardcoded VR framework. + * If you plan to add more devices that make use of this component, remember to isolate their code outta here where possible. + */ /datum/component/virtual_reality can_transfer = TRUE - var/datum/mind/mastermind // where is my mind t. pixies + //the player's mind (not the parent's), should something happen to them or to their mob. + var/datum/mind/mastermind + //the current mob's mind, which we need to keep track for mind transfer. var/datum/mind/current_mind - var/obj/machinery/vr_sleeper/vr_sleeper + //the action datum used by the mob to quit the vr session. var/datum/action/quit_vr/quit_action + //This one's name should be self explainatory, currently used for emags. var/you_die_in_the_game_you_die_for_real = FALSE - var/datum/component/virtual_reality/inception //The component works on a very fragile link betwixt mind, ckey and death. + //Used to allow people to play recursively playing vr while playing vr without many issues. + var/datum/component/virtual_reality/level_below + var/datum/component/virtual_reality/level_above + //Used to stop the component from executing certain functions that'd cause us some issues otherwise. + //FALSE if there is a connected player, otherwise TRUE. + var/session_paused = TRUE + //Used to stop unwarranted behaviour from happening in cases where the master mind transference is unsupported. Set on Initialize(). + var/allow_mastermind_transfer = FALSE -/datum/component/virtual_reality/Initialize(mob/M, obj/machinery/vr_sleeper/gaming_pod, yolo = FALSE, new_char = TRUE) - if(!ismob(parent) || !istype(M)) +/datum/component/virtual_reality/Initialize(yolo = FALSE, _allow_mastermind_transfer = FALSE) + var/mob/M = parent + if(!istype(M) || !M.mind) return COMPONENT_INCOMPATIBLE - var/mob/vr_M = parent - mastermind = M.mind - RegisterSignal(M, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETED), .proc/game_over) - RegisterSignal(M, COMSIG_MOB_KEY_CHANGE, .proc/switch_player) - RegisterSignal(mastermind, COMSIG_MIND_TRANSFER, .proc/switch_player) you_die_in_the_game_you_die_for_real = yolo - quit_action = new() - if(gaming_pod) - vr_sleeper = gaming_pod - RegisterSignal(vr_sleeper, COMSIG_ATOM_EMAG_ACT, .proc/you_only_live_once) - RegisterSignal(vr_sleeper, COMSIG_MACHINE_EJECT_OCCUPANT, .proc/revert_to_reality) - vr_M.ckey = M.ckey - var/datum/component/virtual_reality/clusterfk = M.GetComponent(/datum/component/virtual_reality) - if(clusterfk && !clusterfk.inception) - clusterfk.inception = src - SStgui.close_user_uis(M, src) + allow_mastermind_transfer = _allow_mastermind_transfer + quit_action = new + +/datum/component/virtual_reality/Destroy() + QDEL_NULL(quit_action) + if(level_above) + level_above.level_below = null + level_above = null + if(level_below) + level_below.level_above = null + level_below = null + return ..() /datum/component/virtual_reality/RegisterWithParent() + . = ..() var/mob/M = parent current_mind = M.mind + if(!quit_action) + quit_action = new quit_action.Grant(M) - RegisterSignal(quit_action, COMSIG_ACTION_TRIGGER, .proc/revert_to_reality) - RegisterSignal(M, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETED), .proc/game_over) + RegisterSignal(quit_action, COMSIG_ACTION_TRIGGER, .proc/action_trigger) + RegisterSignal(M, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING), .proc/game_over) RegisterSignal(M, COMSIG_MOB_GHOSTIZE, .proc/be_a_quitter) - RegisterSignal(M, COMSIG_MOB_KEY_CHANGE, .proc/pass_me_the_remote) - RegisterSignal(current_mind, COMSIG_MIND_TRANSFER, .proc/pass_me_the_remote) - mastermind.current.audiovisual_redirect = M - if(vr_sleeper) - vr_sleeper.vr_mob = M + RegisterSignal(M, COMSIG_MOB_KEY_CHANGE, .proc/on_player_transfer) + RegisterSignal(current_mind, COMSIG_MIND_TRANSFER, .proc/on_player_transfer) + RegisterSignal(current_mind, COMSIG_PRE_MIND_TRANSFER, .proc/pre_player_transfer) + if(mastermind?.current) + mastermind.current.audiovisual_redirect = M /datum/component/virtual_reality/UnregisterFromParent() - quit_action.Remove(parent) - UnregisterSignal(parent, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETED, COMSIG_MOB_KEY_CHANGE, COMSIG_MOB_GHOSTIZE)) - UnregisterSignal(current_mind, COMSIG_MIND_TRANSFER) - UnregisterSignal(quit_action, COMSIG_ACTION_TRIGGER) + . = ..() + if(quit_action) + quit_action.Remove(parent) + UnregisterSignal(quit_action, COMSIG_ACTION_TRIGGER) + UnregisterSignal(parent, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING, COMSIG_MOB_KEY_CHANGE, COMSIG_MOB_GHOSTIZE)) + UnregisterSignal(current_mind, list(COMSIG_MIND_TRANSFER, COMSIG_PRE_MIND_TRANSFER)) current_mind = null - mastermind.current.audiovisual_redirect = null + if(mastermind?.current) + mastermind.current.audiovisual_redirect = null -/datum/component/virtual_reality/proc/switch_player(datum/source, mob/new_mob, mob/old_mob) - if(vr_sleeper || !new_mob.mind) - // Machineries currently don't deal up with the occupant being polymorphed et similar... Or did something fuck up? - revert_to_reality() - return - old_mob.audiovisual_redirect = null - new_mob.audiovisual_redirect = parent - -/datum/component/virtual_reality/proc/action_trigger(datum/signal_source, datum/action/source) - if(source != quit_action) - return COMPONENT_ACTION_BLOCK_TRIGGER - revert_to_reality(signal_source) +/** + * Called when attempting to connect a mob to a virtual reality mob. + * This will return FALSE if the mob is without player or dead. TRUE otherwise + */ +/datum/component/virtual_reality/proc/connect(mob/M) + var/mob/vr_M = parent + if(!M.mind || M.stat == DEAD || !vr_M.mind || vr_M.stat == DEAD) + return FALSE + var/datum/component/virtual_reality/VR = M.GetComponent(/datum/component/virtual_reality) + if(VR) + VR.level_below = src + level_above = VR + M.transfer_ckey(vr_M, FALSE) + mastermind = M.mind + mastermind.current.audiovisual_redirect = parent + RegisterSignal(mastermind, COMSIG_PRE_MIND_TRANSFER, .proc/switch_player) + RegisterSignal(M, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING), .proc/game_over) + RegisterSignal(M, COMSIG_MOB_PRE_PLAYER_CHANGE, .proc/player_hijacked) + SStgui.close_user_uis(vr_M, src) + session_paused = FALSE + return TRUE +/** + * emag_act() hook. Makes the game deadlier, killing the mastermind mob too should the parent die. + */ /datum/component/virtual_reality/proc/you_only_live_once() - if(you_die_in_the_game_you_die_for_real || vr_sleeper?.only_current_user_can_interact) + if(you_die_in_the_game_you_die_for_real) return FALSE you_die_in_the_game_you_die_for_real = TRUE return TRUE -/datum/component/virtual_reality/proc/pass_me_the_remote(datum/source, mob/new_mob) - if(new_mob == mastermind.current) - revert_to_reality(source) - return TRUE - new_mob.TakeComponent(src) - return TRUE +/** + * Called when the mastermind mind is transferred to another mob. + * This is pretty much just going to simply quit the session until machineries support polymorphed occupants etcetera. + */ +/datum/component/virtual_reality/proc/switch_player(datum/source, mob/new_mob, mob/old_mob) + if(session_paused) + return + if(!allow_mastermind_transfer) + quit() + return COMPONENT_STOP_MIND_TRANSFER + UnregisterSignal(old_mob, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING, COMSIG_MOB_PRE_PLAYER_CHANGE)) + RegisterSignal(new_mob, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING), .proc/game_over) + RegisterSignal(new_mob, COMSIG_MOB_PRE_PLAYER_CHANGE, .proc/player_hijacked) + old_mob.audiovisual_redirect = null + new_mob.audiovisual_redirect = parent +/** + * Called to stop the player mind from being transferred should the new mob happen to be one of our masterminds'. + * Since the target's mind.current is going to be null'd in the mind transfer process, + * This has to be done in a different signal proc than on_player_transfer(), by then the mastermind.current will be null. + */ +/datum/component/virtual_reality/proc/pre_player_transfer(datum/source, mob/new_mob, mob/old_mob) + if(!mastermind || session_paused) + return + if(new_mob == mastermind.current) + quit() + return COMPONENT_STOP_MIND_TRANSFER + if(!level_above) + return + var/datum/component/virtual_reality/VR = level_above + while(VR) + if(VR.mastermind.current == new_mob) + VR.quit() //this will revert the ckey back to new_mob. + return COMPONENT_STOP_MIND_TRANSFER + VR = VR.level_above + +/** + * Called when someone or something else is somewhat about to replace the mastermind's mob key somehow. + * And potentially lock the player in a broken virtual reality plot. Not really something to be proud of. + */ +/datum/component/virtual_reality/proc/player_hijacked(datum/source, mob/our_character, mob/their_character) + if(session_paused) + return + if(!their_character) + quit(cleanup = TRUE) + return + var/will_it_be_handled_in_their_pre_player_transfer = FALSE + var/datum/component/virtual_reality/VR = src + while(VR) + if(VR.parent == their_character) + will_it_be_handled_in_their_pre_player_transfer = TRUE + break + VR = VR.level_below + if(!will_it_be_handled_in_their_pre_player_transfer) //it's not the player playing shenanigeans, abandon all ships. + quit(cleanup = TRUE) + +/** + * Takes care of moving the component from a mob to another when their mind or ckey is transferred. + * The very reason this component even exists (else one would be stuck playing as a monky if monkyified) + */ +/datum/component/virtual_reality/proc/on_player_transfer(datum/source, mob/new_mob, mob/old_mob) + new_mob.TakeComponent(src) + +/** + * Required for the component to be transferable from mob to mob. + */ /datum/component/virtual_reality/PostTransfer() if(!ismob(parent)) return COMPONENT_INCOMPATIBLE +/** + *The following procs simply acts as hooks for quit(), since components do not use callbacks anymore + */ +/datum/component/virtual_reality/proc/action_trigger(datum/signal_source, datum/action/source) + quit() + return COMPONENT_ACTION_BLOCK_TRIGGER + /datum/component/virtual_reality/proc/revert_to_reality(datum/source) - quit_it() + quit() /datum/component/virtual_reality/proc/game_over(datum/source) - quit_it(TRUE, TRUE) + quit(you_die_in_the_game_you_die_for_real, TRUE) + return COMPONENT_BLOCK_DEATH_BROADCAST -/datum/component/virtual_reality/proc/be_a_quitter(datum/source, can_reenter_corpse) - quit_it() - return COMPONENT_BLOCK_GHOSTING +/datum/component/virtual_reality/proc/be_a_quitter(datum/source, can_reenter_corpse, special = FALSE, penalize = FALSE) + if(!special) + quit() + return COMPONENT_BLOCK_GHOSTING -/datum/component/virtual_reality/proc/virtual_reality_in_a_virtual_reality(mob/player, killme = FALSE, datum/component/virtual_reality/yo_dawg) +/datum/component/virtual_reality/proc/machine_destroyed(datum/source) + quit(cleanup = TRUE) + +/** + * Takes care of deleting itself, moving the player back to the mastermind's current and queueing the parent for deletion. + * It supports nested virtual realities by recursively calling vr_in_a_vr(), which in turns calls quit(), + * up to the deepest level, where the ckey will be transferred back to our mastermind's mob instead. + * The above operation is skipped when session_paused is TRUE (ergo no player in control of the current mob). + * vars: + * * deathcheck is used to kill the master, you want this FALSE unless for stuff that doesn't involve emagging. + * * cleanup is used to queue the parent for the next vr_clean_master's run, where they'll be deleted should they be dead. + * * mob/override is used for the recursive virtual reality explained above and shouldn't be used outside of vr_in_a_vr(). + */ +/datum/component/virtual_reality/proc/quit(deathcheck = FALSE, cleanup = FALSE, mob/override) var/mob/M = parent - quit_it(FALSE, killme, player, yo_dawg) - yo_dawg.inception = null - if(killme) - M.death(FALSE) - -/datum/component/virtual_reality/proc/quit_it(deathcheck = FALSE, cleanup = FALSE, mob/override) - var/mob/M = parent - var/mob/dreamer = override ? override : mastermind.current - if(!mastermind) - to_chat(M, "You feel a dreadful sensation, something terrible happened. You try to wake up, but you find yourself unable to...") - else - var/key_transfer = FALSE - if(inception?.parent) - inception.virtual_reality_in_a_virtual_reality(dreamer, cleanup, src) + if(!session_paused) + session_paused = TRUE + var/mob/dreamer = override || mastermind.current + if(!dreamer) //This shouldn't happen. + stack_trace("virtual reality component quit() called without a mob to transfer the parent ckey to.") + to_chat(M, "You feel a dreadful sensation, something terrible happened. You try to wake up, but you find yourself unable to...") + qdel(src) + return + if(level_below?.parent) + level_below.vr_in_a_vr(dreamer, deathcheck, (deathcheck && cleanup)) else - key_transfer = TRUE - if(key_transfer) M.transfer_ckey(dreamer, FALSE) - dreamer.stop_sound_channel(CHANNEL_HEARTBEAT) - dreamer.audiovisual_redirect = null - if(deathcheck && you_die_in_the_game_you_die_for_real) - to_chat(mastermind, "You feel everything fading away...") - dreamer.death(FALSE) - if(cleanup) - var/obj/effect/vr_clean_master/cleanbot = locate() in get_area(M) - if(cleanbot) - LAZYADD(cleanbot.corpse_party, M) - if(vr_sleeper) - vr_sleeper.vr_mob = null - vr_sleeper = null - qdel(src) + if(deathcheck) + to_chat(dreamer, "You feel everything fading away...") + dreamer.death(FALSE) + mastermind.current.audiovisual_redirect = null + if(!cleanup) + if(level_above) + level_above.level_below = null + level_above = null + UnregisterSignal(mastermind.current, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING, COMSIG_MOB_PRE_PLAYER_CHANGE)) + UnregisterSignal(mastermind, COMSIG_PRE_MIND_TRANSFER) + mastermind = null + if(cleanup) + var/obj/effect/vr_clean_master/cleanbot = locate() in get_area(M) + if(cleanbot) + LAZYOR(cleanbot.corpse_party, M) + qdel(src) -/datum/component/virtual_reality/Destroy() - var/datum/action/quit_vr/delet_me = quit_action - . = ..() - qdel(delet_me) \ No newline at end of file +/** + * Used for recursive virtual realities shenanigeans and should be called only through the above proc. + */ +/datum/component/virtual_reality/proc/vr_in_a_vr(mob/player, deathcheck = FALSE, lethal_cleanup = FALSE) + var/mob/M = parent + quit(deathcheck, lethal_cleanup, player) + M.audiovisual_redirect = null + if(lethal_cleanup) + M.death(FALSE) diff --git a/code/datums/components/wet_floor.dm b/code/datums/components/wet_floor.dm index 38b17993d8..d6c5c0bf83 100644 --- a/code/datums/components/wet_floor.dm +++ b/code/datums/components/wet_floor.dm @@ -34,10 +34,12 @@ last_process = world.time /datum/component/wet_floor/RegisterWithParent() + . = ..() RegisterSignal(parent, COMSIG_TURF_IS_WET, .proc/is_wet) RegisterSignal(parent, COMSIG_TURF_MAKE_DRY, .proc/dry) /datum/component/wet_floor/UnregisterFromParent() + . = ..() UnregisterSignal(parent, list(COMSIG_TURF_IS_WET, COMSIG_TURF_MAKE_DRY)) /datum/component/wet_floor/Destroy() diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 60bb24c8c2..cf33fa3633 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -255,7 +255,7 @@ M.fields["alg_d"] = "No allergies have been detected in this patient." M.fields["cdi"] = "None" M.fields["cdi_d"] = "No diseases have been diagnosed at the moment." - M.fields["notes"] = "No notes." + M.fields["notes"] = H.get_trait_string(medical) medical += M //Security Record diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index e44134f01f..feac1de972 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -1398,3 +1398,29 @@ var/mob/living/carbon/human/H = locate(href_list["copyoutfit"]) in GLOB.carbon_list if(istype(H)) H.copy_outfit() + else if(href_list["modquirks"]) + if(!check_rights(R_SPAWN)) + return + + var/mob/living/carbon/human/H = locate(href_list["modquirks"]) in GLOB.mob_list + if(!istype(H)) + to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human") + return + + var/list/options = list("Clear"="Clear") + for(var/x in subtypesof(/datum/quirk)) + var/datum/quirk/T = x + var/qname = initial(T.name) + options[H.has_quirk(T) ? "[qname] (Remove)" : "[qname] (Add)"] = T + + var/result = input(usr, "Choose quirk to add/remove","Quirk Mod") as null|anything in options + if(result) + if(result == "Clear") + for(var/datum/quirk/q in H.roundstart_quirks) + H.remove_quirk(q.type) + else + var/T = options[result] + if(H.has_quirk(T)) + H.remove_quirk(T) + else + H.add_quirk(T,TRUE) diff --git a/code/datums/dna.dm b/code/datums/dna.dm index 8a3fd82cb9..ccc5d97cf8 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -254,7 +254,6 @@ if(icon_update) update_body() update_hair() - update_body_parts() update_mutations_overlay()// no lizard with human hulk overlay please. diff --git a/code/datums/dog_fashion.dm b/code/datums/dog_fashion.dm index c798f35218..b9e774aa50 100644 --- a/code/datums/dog_fashion.dm +++ b/code/datums/dog_fashion.dm @@ -174,3 +174,13 @@ /datum/dog_fashion/back/deathsquad name = "Trooper REAL_NAME" desc = "That's not red paint. That's real corgi blood." + +/datum/dog_fashion/head/colour + name = "Stylish REAL_NAME" + desc = "From the tips of their paws to the top of their head, they look like a made bed." + emote_see = list("tries to tap dances.","looks sadly at others outfits...","barks at bad fashion!") + +/datum/dog_fashion/head/telegram + name = "Messenger REAL_NAME" + desc = "Dont shoot the messenger..." + emote_see = list("licks an envelope.","looks ready to set off to send a letter...","works on barking!") diff --git a/code/datums/elements/_element.dm b/code/datums/elements/_element.dm new file mode 100644 index 0000000000..8f9b97db22 --- /dev/null +++ b/code/datums/elements/_element.dm @@ -0,0 +1,39 @@ +/datum/element + var/element_flags = NONE + /** + * The index of the first attach argument to consider for duplicate elements + * Is only used when flags contains ELEMENT_BESPOKE + * This is infinity so you must explicitly set this + */ + var/id_arg_index = INFINITY + +/datum/element/proc/Attach(datum/target) + if(type == /datum/element) + return ELEMENT_INCOMPATIBLE + if(element_flags & ELEMENT_DETACH) + RegisterSignal(target, COMSIG_PARENT_QDELETING, .proc/Detach) + +/datum/element/proc/Detach(datum/source, force) + UnregisterSignal(source, COMSIG_PARENT_QDELETING) + +/datum/element/Destroy(force) + if(!force) + return QDEL_HINT_LETMELIVE + SSdcs.elements_by_type -= type + return ..() + +//DATUM PROCS + +/datum/proc/AddElement(eletype, ...) + var/datum/element/ele = SSdcs.GetElement(arglist(args)) + args[1] = src + if(ele.Attach(arglist(args)) == ELEMENT_INCOMPATIBLE) + CRASH("Incompatible [eletype] assigned to a [type]! args: [json_encode(args)]") + +/** + * Finds the singleton for the element type given and detaches it from src + * You only need additional arguments beyond the type if you're using ELEMENT_BESPOKE + */ +/datum/proc/RemoveElement(eletype, ...) + var/datum/element/ele = SSdcs.GetElement(arglist(args)) + ele.Detach(src) \ No newline at end of file diff --git a/code/datums/components/cleaning.dm b/code/datums/elements/cleaning.dm similarity index 79% rename from code/datums/components/cleaning.dm rename to code/datums/elements/cleaning.dm index 5324a87fee..e4fb3edd48 100644 --- a/code/datums/components/cleaning.dm +++ b/code/datums/elements/cleaning.dm @@ -1,13 +1,15 @@ -/datum/component/cleaning - dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS +/datum/element/cleaning/Attach(datum/target) + . = ..() + if(!ismovableatom(target)) + return ELEMENT_INCOMPATIBLE + RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/Clean) -/datum/component/cleaning/Initialize() - if(!ismovableatom(parent)) - return COMPONENT_INCOMPATIBLE - RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), .proc/Clean) +/datum/element/cleaning/Detach(datum/target) + . = ..() + UnregisterSignal(target, COMSIG_MOVABLE_MOVED) -/datum/component/cleaning/proc/Clean() - var/atom/movable/AM = parent +/datum/element/cleaning/proc/Clean(datum/source) + var/atom/movable/AM = source var/turf/T = AM.loc SEND_SIGNAL(T, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) for(var/A in T) @@ -43,4 +45,4 @@ cleaned_human.clean_blood() cleaned_human.wash_cream() cleaned_human.regenerate_icons() - to_chat(cleaned_human, "[src] cleans your face!") \ No newline at end of file + to_chat(cleaned_human, "[src] cleans your face!") diff --git a/code/datums/elements/earhealing.dm b/code/datums/elements/earhealing.dm new file mode 100644 index 0000000000..7477742673 --- /dev/null +++ b/code/datums/elements/earhealing.dm @@ -0,0 +1,37 @@ + +/datum/element/earhealing + element_flags = ELEMENT_DETACH + var/list/user_by_item = list() + +/datum/element/earhealing/New() + START_PROCESSING(SSdcs, src) + +/datum/element/earhealing/Attach(datum/target) + . = ..() + if(!isitem(target)) + return ELEMENT_INCOMPATIBLE + + RegisterSignal(target, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED), .proc/equippedChanged) + +/datum/element/earhealing/Detach(datum/target) + . = ..() + UnregisterSignal(target, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED)) + user_by_item -= target + +/datum/element/earhealing/proc/equippedChanged(datum/source, mob/living/carbon/user, slot) + if(slot == SLOT_EARS && istype(user)) + user_by_item[source] = user + else + user_by_item -= source + +/datum/element/earhealing/process() + for(var/i in user_by_item) + var/mob/living/carbon/user = user_by_item[i] + if(HAS_TRAIT(user, TRAIT_DEAF)) + continue + var/obj/item/organ/ears/ears = user.getorganslot(ORGAN_SLOT_EARS) + if(!ears) + continue + ears.deaf = max(ears.deaf - 0.25, (ears.damage < ears.maxHealth ? 0 : 1)) // Do not clear deafness if our ears are too damaged + ears.damage = max(ears.damage - 0.025, 0) + CHECK_TICK diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm index 6c91cc3a7d..f0fca5db5a 100644 --- a/code/datums/emotes.dm +++ b/code/datums/emotes.dm @@ -1,6 +1,3 @@ -#define EMOTE_VISIBLE 1 -#define EMOTE_AUDIBLE 2 - /datum/emote var/key = "" //What calls the emote var/key_third_person = "" //This will also call the emote diff --git a/code/datums/explosion.dm b/code/datums/explosion.dm index b3c57e4838..7be4489e86 100644 --- a/code/datums/explosion.dm +++ b/code/datums/explosion.dm @@ -198,7 +198,7 @@ GLOBAL_LIST_EMPTY(explosions) var/list/items = list() for(var/I in T) var/atom/A = I - if (!A.prevent_content_explosion()) //The atom/contents_explosion() proc returns null if the contents ex_acting has been handled by the atom, and TRUE if it hasn't. + if (!(A.flags_1 & PREVENT_CONTENTS_EXPLOSION_1)) //The atom/contents_explosion() proc returns null if the contents ex_acting has been handled by the atom, and TRUE if it hasn't. items += A.GetAllContents() for(var/O in items) var/atom/A = O diff --git a/code/datums/hud.dm b/code/datums/hud.dm index 32bce89f4d..169b08dc98 100644 --- a/code/datums/hud.dm +++ b/code/datums/hud.dm @@ -27,6 +27,7 @@ GLOBAL_LIST_INIT(huds, list( ANTAG_HUD_SOULLESS = new/datum/atom_hud/antag/hidden(), ANTAG_HUD_CLOCKWORK = new/datum/atom_hud/antag(), ANTAG_HUD_BROTHER = new/datum/atom_hud/antag/hidden(), + ANTAG_HUD_BLOODSUCKER = new/datum/atom_hud/antag/bloodsucker() )) /datum/atom_hud diff --git a/code/datums/looping_sounds/machinery_sounds.dm b/code/datums/looping_sounds/machinery_sounds.dm index b84133faf7..f9a9e07aed 100644 --- a/code/datums/looping_sounds/machinery_sounds.dm +++ b/code/datums/looping_sounds/machinery_sounds.dm @@ -4,7 +4,7 @@ mid_sounds = list('sound/machines/shower/shower_mid1.ogg'=1,'sound/machines/shower/shower_mid2.ogg'=1,'sound/machines/shower/shower_mid3.ogg'=1) mid_length = 10 end_sound = 'sound/machines/shower/shower_end.ogg' - volume = 20 + volume = 10 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -32,7 +32,7 @@ mid_sounds = list('sound/machines/fryer/deep_fryer_1.ogg' = 1, 'sound/machines/fryer/deep_fryer_2.ogg' = 1) mid_length = 2 end_sound = 'sound/machines/fryer/deep_fryer_emerge.ogg' - volume = 15 + volume = 5 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -43,3 +43,12 @@ mid_length = 10 end_sound = 'sound/machines/microwave/microwave-end.ogg' volume = 90 + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/looping_sound/grill + mid_length = 2 + mid_sounds = list('sound/machines/fryer/deep_fryer_1.ogg' = 1, 'sound/machines/fryer/deep_fryer_2.ogg' = 1) + volume = 10 + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/code/datums/martial.dm b/code/datums/martial.dm index 26a709590c..32850c69df 100644 --- a/code/datums/martial.dm +++ b/code/datums/martial.dm @@ -8,9 +8,7 @@ var/deflection_chance = 0 //Chance to deflect projectiles var/reroute_deflection = FALSE //Delete the bullet, or actually deflect it in some direction? var/block_chance = 0 //Chance to block melee attacks using items while on throw mode. - var/restraining = 0 //used in cqc's disarm_act to check if the disarmed is being restrained and so whether they should be put in a chokehold or not var/help_verb - var/no_guns = FALSE var/pacifism_check = TRUE //are the martial arts combos/attacks unable to be used by pacifist. var/allow_temp_override = TRUE //if this martial art can be overridden by temporary martial arts @@ -28,14 +26,16 @@ /datum/martial_art/proc/add_to_streak(element,mob/living/carbon/human/D) if(D != current_target) - current_target = D - streak = "" - restraining = 0 + reset_streak(D) streak = streak+element if(length(streak) > max_streak_length) streak = copytext(streak,2) return +/datum/martial_art/proc/reset_streak(mob/living/carbon/human/new_target) + current_target = new_target + streak = "" + /datum/martial_art/proc/basic_hit(mob/living/carbon/human/A,mob/living/carbon/human/D) var/damage = rand(A.dna.species.punchdamagelow, A.dna.species.punchdamagehigh) @@ -81,7 +81,7 @@ D.forcesay(GLOB.hit_appends) return 1 -/datum/martial_art/proc/teach(mob/living/carbon/human/H,make_temporary=0) +/datum/martial_art/proc/teach(mob/living/carbon/human/H, make_temporary = FALSE) if(!istype(H) || !H.mind) return FALSE if(H.mind.martial_art) diff --git a/code/datums/martial/cqc.dm b/code/datums/martial/cqc.dm index 73173a4a9a..09a493a670 100644 --- a/code/datums/martial/cqc.dm +++ b/code/datums/martial/cqc.dm @@ -9,24 +9,13 @@ id = MARTIALART_CQC help_verb = /mob/living/carbon/human/proc/CQC_help block_chance = 75 - var/just_a_cook = FALSE - var/static/list/areas_under_siege = typecacheof(list(/area/crew_quarters/kitchen, - /area/crew_quarters/cafeteria, - /area/crew_quarters/bar)) + var/old_grab_state = null + var/restraining = FALSE -/datum/martial_art/cqc/under_siege - name = "Close Quarters Cooking" - just_a_cook = TRUE - -/datum/martial_art/cqc/proc/drop_restraining() +/datum/martial_art/cqc/reset_streak(mob/living/carbon/human/new_target) + . = ..() restraining = FALSE -/datum/martial_art/cqc/can_use(mob/living/carbon/human/H) - var/area/A = get_area(H) - if(just_a_cook && !(is_type_in_typecache(A, areas_under_siege))) - return FALSE - return ..() - /datum/martial_art/cqc/proc/check_streak(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!can_use(A)) return FALSE @@ -75,6 +64,7 @@ D.apply_damage(10, BRUTE) log_combat(A, D, "kicked (CQC)") if(D.IsKnockdown() && !D.stat) + log_combat(A, D, "knocked out (Head kick)(CQC)") D.visible_message("[A] kicks [D]'s head, knocking [D.p_them()] out!", \ "[A] kicks your head, knocking you out!") playsound(get_turf(A), 'sound/weapons/genhit1.ogg', 50, 1, -1) @@ -85,7 +75,8 @@ /datum/martial_art/cqc/proc/Pressure(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!can_use(A)) return FALSE - D.visible_message("[A] forces their arm on [D]'s neck!") + log_combat(A, D, "pressured (CQC)") + D.visible_message("[A] punches [D]'s neck!") D.adjustStaminaLoss(60) playsound(get_turf(A), 'sound/weapons/cqchit1.ogg', 50, 1, -1) return TRUE @@ -96,18 +87,20 @@ if(!can_use(A)) return FALSE if(!D.stat) + log_combat(A, D, "restrained (CQC)") D.visible_message("[A] locks [D] into a restraining position!", \ "[A] locks you into a restraining position!") D.adjustStaminaLoss(20) D.Stun(100) restraining = TRUE - addtimer(CALLBACK(src, .proc/drop_restraining), 50, TIMER_UNIQUE) + addtimer(VARSET_CALLBACK(src, restraining, FALSE), 50, TIMER_UNIQUE) return TRUE /datum/martial_art/cqc/proc/Consecutive(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!can_use(A)) return FALSE if(!D.stat) + log_combat(A, D, "consecutive CQC'd (CQC)") D.visible_message("[A] strikes [D]'s abdomen, neck and back consecutively", \ "[A] strikes your abdomen, neck and back consecutively!") playsound(get_turf(D), 'sound/weapons/cqchit2.ogg', 50, 1, -1) @@ -119,23 +112,20 @@ return TRUE /datum/martial_art/cqc/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(!can_use(A)) - return FALSE - add_to_streak("G",D) - if(check_streak(A,D)) - return TRUE - if(A == D) // no self grab. - return FALSE - if(A.grab_state >= GRAB_AGGRESSIVE) + if(A.a_intent == INTENT_GRAB && A!=D && can_use(A)) // A!=D prevents grabbing yourself + add_to_streak("G",D) + if(check_streak(A,D)) //if a combo is made no grab upgrade is done + return TRUE + old_grab_state = A.grab_state D.grabbedby(A, 1) - else - A.start_pulling(D, 1) - if(A.pulling) - D.stop_pulling() + if(old_grab_state == GRAB_PASSIVE) + D.drop_all_held_items() + A.grab_state = GRAB_AGGRESSIVE //Instant agressive grab if on grab intent log_combat(A, D, "grabbed", addition="aggressively") - A.grab_state = GRAB_AGGRESSIVE //Instant aggressive grab - - return TRUE + D.visible_message("[A] violently grabs [D]!", \ + "[A] violently grabs you!") + return TRUE + return FALSE /datum/martial_art/cqc/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!can_use(A)) @@ -190,6 +180,7 @@ playsound(D, 'sound/weapons/punchmiss.ogg', 25, 1, -1) log_combat(A, D, "disarmed (CQC)", "[I ? " grabbing \the [I]" : ""]") if(restraining && A.pulling == D) + log_combat(A, D, "knocked out (Chokehold)(CQC)") D.visible_message("[A] puts [D] into a chokehold!", \ "[A] puts you into a chokehold!") D.SetSleeping(400) @@ -208,9 +199,19 @@ to_chat(usr, "You try to remember some of the basics of CQC.") to_chat(usr, "Slam: Grab Harm. Slam opponent into the ground, knocking them down.") - to_chat(usr, "CQC Kick: Disarm Harm Harm. Knocks opponent away. Knocks out stunned or knocked down opponents.") - to_chat(usr, "Restrain: Grab Grab. Locks opponents into a restraining position, disarm to knock them out with a choke hold.") + to_chat(usr, "CQC Kick: Harm Harm. Knocks opponent away. Knocks out stunned or knocked down opponents.") + to_chat(usr, "Restrain: Grab Grab. Locks opponents into a restraining position, disarm to knock them out with a chokehold.") to_chat(usr, "Pressure: Disarm Grab. Decent stamina damage.") to_chat(usr, "Consecutive CQC: Disarm Disarm Harm. Mainly offensive move, huge damage and decent stamina damage.") to_chat(usr, "In addition, by having your throw mode on when being attacked, you enter an active defense mode where you have a chance to block and sometimes even counter attacks done to you.") + +///Subtype of CQC. Only used for the chef. +/datum/martial_art/cqc/under_siege + name = "Close Quarters Cooking" + +///Prevents use if the cook is not in the kitchen. +/datum/martial_art/cqc/under_siege/can_use(mob/living/carbon/human/H) //this is used to make chef CQC only work in kitchen + if(!istype(get_area(H), /area/crew_quarters/kitchen)) + return FALSE + return ..() diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index f89374dc2a..bb652208ee 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -9,35 +9,36 @@ id = MARTIALART_SLEEPINGCARP deflection_chance = 100 reroute_deflection = TRUE - no_guns = TRUE allow_temp_override = FALSE help_verb = /mob/living/carbon/human/proc/sleeping_carp_help + var/old_grab_state = null /datum/martial_art/the_sleeping_carp/proc/check_streak(mob/living/carbon/human/A, mob/living/carbon/human/D) if(findtext(streak,WRIST_WRENCH_COMBO)) streak = "" wristWrench(A,D) - return 1 + return TRUE if(findtext(streak,BACK_KICK_COMBO)) streak = "" backKick(A,D) - return 1 + return TRUE if(findtext(streak,STOMACH_KNEE_COMBO)) streak = "" kneeStomach(A,D) - return 1 + return TRUE if(findtext(streak,HEAD_KICK_COMBO)) streak = "" headKick(A,D) - return 1 + return TRUE if(findtext(streak,ELBOW_DROP_COMBO)) streak = "" elbowDrop(A,D) - return 1 - return 0 + return TRUE + return FALSE /datum/martial_art/the_sleeping_carp/proc/wristWrench(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!D.stat && !D.IsStun() && !D.IsKnockdown()) + log_combat(A, D, "wrist wrenched (Sleeping Carp)") A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) D.visible_message("[A] grabs [D]'s wrist and wrenches it sideways!", \ "[A] grabs your wrist and violently wrenches it to the side!") @@ -46,24 +47,29 @@ D.dropItemToGround(D.get_active_held_item()) D.apply_damage(5, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) D.Knockdown(60)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun() - return 1 - log_combat(A, D, "wrist wrenched (Sleeping Carp)") + return TRUE return basic_hit(A,D) /datum/martial_art/the_sleeping_carp/proc/backKick(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(A.dir == D.dir && !D.stat && !D.IsKnockdown()) - A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) - D.visible_message("[A] kicks [D] in the back!", \ - "[A] kicks you in the back, making you stumble and fall!") - step_to(D,get_step(D,D.dir),1) - D.Knockdown(80) - playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) - return 1 - log_combat(A, D, "back-kicked (Sleeping Carp)") + if(!D.stat && !D.IsKnockdown()) + if(A.dir == D.dir) + log_combat(A, D, "back-kicked (Sleeping Carp)") + A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) + D.visible_message("[A] kicks [D] in the back!", \ + "[A] kicks you in the back, making you stumble and fall!") + step_to(D,get_step(D,D.dir),1) + D.Knockdown(80) + playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) + return TRUE + else + log_combat(A, D, "missed a back-kick (Sleeping Carp) on") + D.visible_message("[A] tries to kick [D] in the back, but misses!", \ + "[A] tries to kick you in the back, but misses!") return basic_hit(A,D) /datum/martial_art/the_sleeping_carp/proc/kneeStomach(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!D.stat && !D.IsKnockdown()) + log_combat(A, D, "stomach kneed (Sleeping Carp)") A.do_attack_animation(D, ATTACK_EFFECT_KICK) D.visible_message("[A] knees [D] in the stomach!", \ "[A] winds you with a knee in the stomach!") @@ -71,12 +77,12 @@ D.losebreath += 3 D.Knockdown(40)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun() playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) - return 1 - log_combat(A, D, "stomach kneed (Sleeping Carp)") + return TRUE return basic_hit(A,D) /datum/martial_art/the_sleeping_carp/proc/headKick(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!D.stat && !D.IsKnockdown()) + log_combat(A, D, "head kicked (Sleeping Carp)") A.do_attack_animation(D, ATTACK_EFFECT_KICK) D.visible_message("[A] kicks [D] in the head!", \ "[A] kicks you in the jaw!") @@ -84,12 +90,12 @@ D.drop_all_held_items() playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) D.Knockdown(80)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun() - return 1 - log_combat(A, D, "head kicked (Sleeping Carp)") + return TRUE return basic_hit(A,D) /datum/martial_art/the_sleeping_carp/proc/elbowDrop(mob/living/carbon/human/A, mob/living/carbon/human/D) if(D.IsKnockdown() || D.resting || D.stat) + log_combat(A, D, "elbow dropped (Sleeping Carp)") A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) D.visible_message("[A] elbow drops [D]!", \ "[A] piledrives you with their elbow!") @@ -97,37 +103,29 @@ D.death() //FINISH HIM! D.apply_damage(50, BRUTE, BODY_ZONE_CHEST) playsound(get_turf(D), 'sound/weapons/punch1.ogg', 75, 1, -1) - return 1 - log_combat(A, D, "elbow dropped (Sleeping Carp)") + return TRUE return basic_hit(A,D) /datum/martial_art/the_sleeping_carp/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D) - add_to_streak("G",D) - if(check_streak(A,D)) - return 1 - if(A == D) //no self grab stun - return FALSE - if(A.grab_state >= GRAB_AGGRESSIVE) + if(A.a_intent == INTENT_GRAB && A!=D) // A!=D prevents grabbing yourself + add_to_streak("G",D) + if(check_streak(A,D)) //if a combo is made no grab upgrade is done + return TRUE + old_grab_state = A.grab_state D.grabbedby(A, 1) - else - A.start_pulling(D, 1) - if(A.pulling) + if(old_grab_state == GRAB_PASSIVE) D.drop_all_held_items() - D.stop_pulling() - if(A.a_intent == INTENT_GRAB) - log_combat(A, D, "grabbed", addition="aggressively") - D.visible_message("[A] violently grabs [D]!", \ - "[A] violently grabs you!") - A.grab_state = GRAB_AGGRESSIVE //Instant aggressive grab - else - log_combat(A, D, "grabbed", addition="passively") - A.grab_state = GRAB_PASSIVE - return 1 + A.grab_state = GRAB_AGGRESSIVE //Instant agressive grab if on grab intent + log_combat(A, D, "grabbed", addition="aggressively") + D.visible_message("[A] violently grabs [D]!", \ + "[A] violently grabs you!") + return TRUE + return FALSE /datum/martial_art/the_sleeping_carp/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) add_to_streak("H",D) if(check_streak(A,D)) - return 1 + return TRUE A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) var/atk_verb = pick("punches", "kicks", "chops", "hits", "slams") D.visible_message("[A] [atk_verb] [D]!", \ @@ -138,15 +136,25 @@ D.visible_message("[D] stumbles and falls!", "The blow sends you to the ground!") D.Knockdown(80) log_combat(A, D, "[atk_verb] (Sleeping Carp)") - return 1 + return TRUE /datum/martial_art/the_sleeping_carp/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) add_to_streak("D",D) if(check_streak(A,D)) - return 1 + return TRUE return ..() +/datum/martial_art/the_sleeping_carp/teach(mob/living/carbon/human/H, make_temporary = FALSE) + . = ..() + if(!.) + return + ADD_TRAIT(H, TRAIT_NOGUNS, SLEEPING_CARP_TRAIT) + +/datum/martial_art/the_sleeping_carp/on_remove(mob/living/carbon/human/H) + . = ..() + REMOVE_TRAIT(H, TRAIT_NOGUNS, SLEEPING_CARP_TRAIT) + /mob/living/carbon/human/proc/sleeping_carp_help() set name = "Recall Teachings" set desc = "Remember the martial techniques of the Sleeping Carp clan." @@ -233,4 +241,4 @@ /obj/item/twohanded/bostaff/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) if(wielded) return ..() - return 0 + return FALSE diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 5cf03e2684..d1b4e51a7d 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -88,10 +88,16 @@ /datum/mind/proc/transfer_to(mob/new_character, var/force_key_move = 0) var/old_character = current + var/signals = SEND_SIGNAL(new_character, COMSIG_MOB_PRE_PLAYER_CHANGE, new_character, old_character) | SEND_SIGNAL(src, COMSIG_PRE_MIND_TRANSFER, new_character, old_character) + if(signals & COMPONENT_STOP_MIND_TRANSFER) + return if(current) // remove ourself from our old body's mind variable current.mind = null SStgui.on_transfer(current, new_character) - + if(iscarbon(current)) + var/mob/living/carbon/C = current + if(C.combatmode) + C.toggle_combat_mode(TRUE, TRUE) if(!language_holder) var/datum/language_holder/mob_holder = new_character.get_language_holder(shadow = FALSE) language_holder = mob_holder.copy(src) @@ -122,7 +128,6 @@ transfer_martial_arts(new_character) if(active || force_key_move) new_character.key = key //now transfer the key to link the client to our new body - SEND_SIGNAL(src, COMSIG_MIND_TRANSFER, new_character, old_character) //CIT CHANGE - makes arousal update when transfering bodies if(isliving(new_character)) //New humans and such are by default enabled arousal. Let's always use the new mind's prefs. @@ -131,6 +136,8 @@ L.canbearoused = L.client.prefs.arousable //Technically this should make taking over a character mean the body gain the new minds setting... L.update_arousal_hud() //Removes the old icon + SEND_SIGNAL(src, COMSIG_MIND_TRANSFER, new_character, old_character) + /datum/mind/proc/store_memory(new_text) if((length(memory) + length(new_text)) <= MAX_MESSAGE_LEN) memory += "[new_text]
    " diff --git a/code/datums/mood_events/drug_events.dm b/code/datums/mood_events/drug_events.dm index 469bf80979..1a681a8a4d 100644 --- a/code/datums/mood_events/drug_events.dm +++ b/code/datums/mood_events/drug_events.dm @@ -53,3 +53,63 @@ mood_change = -20 timeout = 300 //special_screen_obj = "mood_happiness_bad" Originally in tg + +/datum/mood_event/eigenstate + mood_change = -3 + description = "Where the hell am I? Is this an alternative dimension ?\n" + +/datum/mood_event/enthrall + mood_change = 5 + +/datum/mood_event/enthrall/add_effects(message) + description = "[message]\n" + +/datum/mood_event/enthrallpraise + mood_change = 10 + timeout = 1 MINUTES + +/datum/mood_event/enthrallpraise/add_effects(message) + description = "[message]\n" + +/datum/mood_event/enthrallscold + mood_change = -10 + timeout = 1 MINUTES + +/datum/mood_event/enthrallscold/add_effects(message) + description = "[message]\n"//aaa I'm not kinky enough for this + +/datum/mood_event/enthrallmissing1 + mood_change = -5 + +/datum/mood_event/enthrallmissing1/add_effects(message) + description = "[message]\n" + +/datum/mood_event/enthrallmissing2 + mood_change = -10 + +/datum/mood_event/enthrallmissing2/add_effects(message) + description = "[message]\n" + +/datum/mood_event/enthrallmissing3 + mood_change = -15 + +/datum/mood_event/enthrallmissing3/add_effects(message) + description = "[message]\n" + +/datum/mood_event/enthrallmissing4 + mood_change = -25 + +/datum/mood_event/enthrallmissing4/add_effects(message) + description = "[message]\n" + +/datum/mood_event/InLove + mood_change = 10 + +/datum/mood_event/InLove/add_effects(message) + description = "[message]\n" + +/datum/mood_event/MissingLove + mood_change = -10 + +/datum/mood_event/MissingLove/add_effects(message) + description = "[message]\n" diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm index f4ca3a8ebd..a6e4c8ed4f 100644 --- a/code/datums/mood_events/generic_negative_events.dm +++ b/code/datums/mood_events/generic_negative_events.dm @@ -176,3 +176,70 @@ /datum/mood_event/revenant_blight/add_effects() description = "Just give up, [pick("no one will miss you", "there is nothing you can do to help", "even a clown would be more useful than you", "does it even matter in the end?")]...\n" + +/datum/mood_event/plushjack + description = "I have butchered a plush recently.\n" + mood_change = -1 + timeout = 2 MINUTES + +/datum/mood_event/plush_nostuffing + description = "A plush I tried to pet had no stuffing...\n" + mood_change = -1 + timeout = 2 MINUTES + +//Cursed stuff below + +/datum/mood_event/emptypred + description = "I had to let someone out.\n" + mood_change = -2 + timeout = 1 MINUTES + +/datum/mood_event/emptyprey + description = "It feels quite cold out here.\n" + mood_change = -2 + timeout = 1 MINUTES + +/datum/mood_event/vampcandle + description = "Something is making your mind feel... loose...\n" + mood_change = -10 + timeout = 1 MINUTES + +/datum/mood_event/drankblood_bad + description = "I drank the blood of a lesser creature. Disgusting.\n" + mood_change = -4 + timeout = 900 + +/datum/mood_event/drankblood_dead + description = "I drank dead blood. I am better than this.\n" + mood_change = -7 + timeout = 900 + +/datum/mood_event/drankblood_synth + description = "I drank synthetic blood. What is wrong with me?\n" + mood_change = -7 + timeout = 900 + +/datum/mood_event/drankkilled + description = "I drank from my victim until they died. I feel...less human.\n" + mood_change = -12 + timeout = 6000 + +/datum/mood_event/madevamp + description = "A soul has been cursed to undeath by my own hand.\n" + mood_change = -10 + timeout = 10000 + +/datum/mood_event/vampatefood + description = "Mortal nourishment no longer sustains me. I feel unwell.\n" + mood_change = -6 + timeout = 1000 + +/datum/mood_event/daylight_1 + description = "I slept poorly in a makeshift coffin during the day.\n" + mood_change = -3 + timeout = 1000 + +/datum/mood_event/daylight_2 + description = "I have been scorched by the unforgiving rays of the sun.\n" + mood_change = -6 + timeout = 1200 diff --git a/code/datums/mood_events/generic_positive_events.dm b/code/datums/mood_events/generic_positive_events.dm index 678802aed9..94fd08535f 100644 --- a/code/datums/mood_events/generic_positive_events.dm +++ b/code/datums/mood_events/generic_positive_events.dm @@ -113,3 +113,59 @@ /datum/mood_event/happy_empath/add_effects(var/mob/happytarget) description = "[happytarget.name]'s happiness is infectious!\n" + +/datum/mood_event/headpat + description = "Headpats are nice.\n" + mood_change = 2 + timeout = 2 MINUTES + +/datum/mood_event/hugbox + description = "I hugged a box of hugs recently.\n" + mood_change = 1 + timeout = 2 MINUTES + +/datum/mood_event/plushpet + description = "I pet a plush recently.\n" + mood_change = 1 + timeout = 3000 + +/datum/mood_event/plushplay + description = "I've played with plushes recently.\n" + mood_change = 3 + timeout = 3000 + +/datum/mood_event/breakfast + description = "Nothing like a hearty breakfast to start the shift.\n" + mood_change = 2 + timeout = 15 MINUTES + +//Power gamer stuff below +/datum/mood_event/drankblood + description = "I have fed greedly from that which nourishes me.\n" + mood_change = 10 + timeout = 900 + +/datum/mood_event/coffinsleep + description = "I slept in a coffin during the day. I feel whole again.\n" + mood_change = 8 + timeout = 1200 + +//Cursed stuff below. + +/datum/mood_event/orgasm + description = "I came!\n" //funny meme haha + mood_change = 3 + timeout = 100 SECONDS + +/datum/mood_event/fedpred + description = "I've devoured someone!\n" + mood_change = 3 + +/datum/mood_event/fedprey + description = "It feels quite cozy in here.\n" + mood_change = 3 + +/datum/mood_event/hope_lavaland + description = "What a peculiar emblem. It makes me feel hopeful for my future.\n" + mood_change = 5 + diff --git a/code/datums/mutations/hulk.dm b/code/datums/mutations/hulk.dm index 85cecca489..c536196e95 100644 --- a/code/datums/mutations/hulk.dm +++ b/code/datums/mutations/hulk.dm @@ -5,7 +5,7 @@ get_chance = 15 lowest_value = 256 * 12 text_gain_indication = "Your muscles hurt!" - species_allowed = list("human") //no skeleton/lizard hulk + species_allowed = list("fly") //no skeleton/lizard hulk health_req = 25 /datum/mutation/human/hulk/on_acquiring(mob/living/carbon/human/owner) @@ -13,6 +13,7 @@ return ADD_TRAIT(owner, TRAIT_STUNIMMUNE, TRAIT_HULK) ADD_TRAIT(owner, TRAIT_PUSHIMMUNE, TRAIT_HULK) + ADD_TRAIT(owner, TRAIT_CHUNKYFINGERS, TRAIT_HULK) owner.update_body_parts() SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "hulk", /datum/mood_event/hulk) RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech) @@ -31,6 +32,7 @@ return REMOVE_TRAIT(owner, TRAIT_STUNIMMUNE, TRAIT_HULK) REMOVE_TRAIT(owner, TRAIT_PUSHIMMUNE, TRAIT_HULK) + ADD_TRAIT(owner, TRAIT_CHUNKYFINGERS, TRAIT_HULK) owner.update_body_parts() SEND_SIGNAL(owner, COMSIG_CLEAR_MOOD_EVENT, "hulk") UnregisterSignal(owner, COMSIG_MOB_SAY) diff --git a/code/datums/mutations/speech.dm b/code/datums/mutations/speech.dm index f02b7f185f..82138e6e34 100644 --- a/code/datums/mutations/speech.dm +++ b/code/datums/mutations/speech.dm @@ -95,6 +95,7 @@ message = replacetext(message," ugly "," beautiful ") message = replacetext(message," douchbag "," nice guy ") message = replacetext(message," whore "," lady ") + message = replacetext(message," gamer "," intellectual ") message = replacetext(message," nerd "," smarty pants ") message = replacetext(message," moron "," fun person ") message = replacetext(message," IT'S LOOSE "," EVERYTHING IS FINE ") diff --git a/code/datums/ruins/lavaland.dm b/code/datums/ruins/lavaland.dm index 4f18e6fd62..7ea2d2615d 100644 --- a/code/datums/ruins/lavaland.dm +++ b/code/datums/ruins/lavaland.dm @@ -229,4 +229,13 @@ id = "puzzle" description = "Mystery to be solved." suffix = "lavaland_surface_puzzle.dmm" - cost = 5 \ No newline at end of file + cost = 5 + +/datum/map_template/ruin/lavaland/elite_tumor + name = "Pulsating Tumor" + id = "tumor" + description = "A strange tumor which houses a powerful beast..." + suffix = "lavaland_surface_elite_tumor.dmm" + cost = 5 + always_place = TRUE + allow_duplicates = TRUE diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index 84ed012b82..f5f012e7f9 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -80,34 +80,55 @@ desc = "You've fallen asleep. Wait a bit and you should wake up. Unless you don't, considering how helpless you are." icon_state = "asleep" -//TASER -/datum/status_effect/electrode - id = "tased" +/datum/status_effect/no_combat_mode/ + id = "no_combat_mode" blocks_combatmode = TRUE - status_type = STATUS_EFFECT_REPLACE alert_type = null + status_type = STATUS_EFFECT_REPLACE -/datum/status_effect/electrode/on_creation(mob/living/new_owner, set_duration) +/datum/status_effect/no_combat_mode/on_creation(mob/living/new_owner, set_duration) if(isnum(set_duration)) duration = set_duration . = ..() + if(iscarbon(owner)) + var/mob/living/carbon/C = owner + if(C.combatmode) + C.toggle_combat_mode(TRUE) + +/datum/status_effect/no_combat_mode/mesmerize + id = "Mesmerize" + alert_type = /obj/screen/alert/status_effect/mesmerized + +/obj/screen/alert/status_effect/mesmerized + name = "Mesmerized" + desc = "You cant tear your sight from who is in front of you...Their gaze is simply too enthralling.." + icon = 'icons/mob/actions/bloodsucker.dmi' + icon_state = "power_mez" + +/datum/status_effect/no_combat_mode/electrode + id = "tased" + +/datum/status_effect/no_combat_mode/electrode/on_creation(mob/living/new_owner, set_duration) + if(isnum(set_duration)) //TODO, figure out how to grab from subtype + duration = set_duration + . = ..() if(iscarbon(owner)) var/mob/living/carbon/C = owner if(C.combatmode) C.toggle_combat_mode(TRUE) C.add_movespeed_modifier(MOVESPEED_ID_TASED_STATUS, TRUE, override = TRUE, multiplicative_slowdown = 8) -/datum/status_effect/electrode/on_remove() +/datum/status_effect/no_combat_mode/electrode/on_remove() if(iscarbon(owner)) var/mob/living/carbon/C = owner C.remove_movespeed_modifier(MOVESPEED_ID_TASED_STATUS) . = ..() -/datum/status_effect/electrode/tick() +/datum/status_effect/no_combat_mode/electrode/tick() if(owner) owner.adjustStaminaLoss(5) //if you really want to try to stamcrit someone with a taser alone, you can, but it'll take time and good timing. -/datum/status_effect/electrode/nextmove_modifier() //why is this a proc. its no big deal since this doesnt get called often at all but literally w h y +/datum/status_effect/no_combat_mode/electrode/nextmove_modifier() //why is this a proc. its no big deal since this doesnt get called often at all but literally w h y return 2 //OTHER DEBUFFS @@ -388,6 +409,19 @@ else new /obj/effect/temp_visual/bleed(get_turf(owner)) +/datum/status_effect/neck_slice + id = "neck_slice" + status_type = STATUS_EFFECT_UNIQUE + alert_type = null + duration = -1 + +/datum/status_effect/neck_slice/tick() + var/mob/living/carbon/human/H = owner + if(H.stat == DEAD || H.bleed_rate <= 8) + H.remove_status_effect(/datum/status_effect/neck_slice) + if(prob(10)) + H.emote(pick("gasp", "gag", "choke")) + /mob/living/proc/apply_necropolis_curse(set_curse, duration = 10 MINUTES) var/datum/status_effect/necropolis_curse/C = has_status_effect(STATUS_EFFECT_NECROPOLIS_CURSE) if(!set_curse) @@ -481,7 +515,7 @@ deltimer(timerid) -//Kindle: Used by servants of Ratvar. 10-second knockdown, reduced by 1 second per 5 damage taken while the effect is active. +//Kindle: Used by servants of Ratvar. 10-second knockdown, reduced by 1 second per 5 damage taken while the effect is active. Does not take into account Oxy-damage /datum/status_effect/kindle id = "kindle" status_type = STATUS_EFFECT_UNIQUE @@ -489,6 +523,7 @@ duration = 100 alert_type = /obj/screen/alert/status_effect/kindle var/old_health + var/old_oxyloss /datum/status_effect/kindle/tick() owner.Knockdown(15, TRUE, FALSE, 15) @@ -498,7 +533,9 @@ C.stuttering = max(5, C.stuttering) if(!old_health) old_health = owner.health - var/health_difference = old_health - owner.health + if(!old_oxyloss) + old_oxyloss = owner.getOxyLoss() + var/health_difference = old_health - owner.health - CLAMP(owner.getOxyLoss() - old_oxyloss,0, owner.getOxyLoss()) if(!health_difference) return owner.visible_message("The light in [owner]'s eyes dims as [owner.p_theyre()] harmed!", \ @@ -506,6 +543,7 @@ health_difference *= 2 //so 10 health difference translates to 20 deciseconds of stun reduction duration -= health_difference old_health = owner.health + old_oxyloss = owner.getOxyLoss() /datum/status_effect/kindle/on_remove() owner.visible_message("The light in [owner]'s eyes fades!", \ @@ -541,6 +579,38 @@ icon_state = "ichorial_stain" alerttooltipstyle = "clockcult" + +//GOLEM GANG + +/datum/status_effect/strandling //get it, strand as in durathread strand + strangling = strandling hahahahahahahahahahhahahaha i want to die + id = "strandling" + status_type = STATUS_EFFECT_UNIQUE + alert_type = /obj/screen/alert/status_effect/strandling + +/datum/status_effect/strandling/on_apply() + ADD_TRAIT(owner, TRAIT_MAGIC_CHOKE, "dumbmoron") + return ..() + +/datum/status_effect/strandling/on_remove() + REMOVE_TRAIT(owner, TRAIT_MAGIC_CHOKE, "dumbmoron") + return ..() + +/obj/screen/alert/status_effect/strandling + name = "Choking strand" + desc = "A magical strand of Durathread is wrapped around your neck, preventing you from breathing! Click this icon to remove the strand." + icon_state = "his_grace" + alerttooltipstyle = "hisgrace" + +/obj/screen/alert/status_effect/strandling/Click(location, control, params) + . = ..() + to_chat(mob_viewer, "You attempt to remove the durathread strand from around your neck.") + if(do_after(mob_viewer, 35, null, mob_viewer)) + if(isliving(mob_viewer)) + var/mob/living/L = mob_viewer + to_chat(mob_viewer, "You succesfuly remove the durathread strand.") + L.remove_status_effect(STATUS_EFFECT_CHOKINGSTRAND) + + datum/status_effect/pacify id = "pacify" status_type = STATUS_EFFECT_REPLACE @@ -666,4 +736,4 @@ datum/status_effect/pacify if(LAZYLEN(targets) && I) to_chat(owner, "Your arm spasms!") owner.log_message("threw [I] due to a Muscle Spasm", LOG_ATTACK) - owner.throw_item(pick(targets)) \ No newline at end of file + owner.throw_item(pick(targets)) diff --git a/code/datums/traits/good.dm b/code/datums/traits/good.dm index 80a5f24250..b74f24c469 100644 --- a/code/datums/traits/good.dm +++ b/code/datums/traits/good.dm @@ -8,12 +8,14 @@ mob_trait = TRAIT_ALCOHOL_TOLERANCE gain_text = "You feel like you could drink a whole keg!" lose_text = "You don't feel as resistant to alcohol anymore. Somehow." + medical_record_text = "Patient demonstrates a high tolerance for alcohol." /datum/quirk/apathetic name = "Apathetic" desc = "You just don't care as much as other people. That's nice to have in a place like this, I guess." value = 1 mood_quirk = TRUE + medical_record_text = "Patient was administered the Apathy Evaluation Scale but did not bother to complete it." /datum/quirk/apathetic/add() var/datum/component/mood/mood = quirk_holder.GetComponent(/datum/component/mood) @@ -42,6 +44,7 @@ mob_trait = TRAIT_EMPATH gain_text = "You feel in tune with those around you." lose_text = "You feel isolated from others." + medical_record_text = "Patient is highly perceptive of and sensitive to social cues, or may possibly have ESP. Further testing needed." /datum/quirk/freerunning name = "Freerunning" @@ -50,6 +53,7 @@ mob_trait = TRAIT_FREERUNNING gain_text = "You feel lithe on your feet!" lose_text = "You feel clumsy again." + medical_record_text = "Patient scored highly on cardio tests." /datum/quirk/friendly name = "Friendly" @@ -59,6 +63,7 @@ gain_text = "You want to hug someone." lose_text = "You no longer feel compelled to hug others." mood_quirk = TRUE + medical_record_text = "Patient demonstrates low-inhibitions for physical contact and well-developed arms. Requesting another doctor take over this case." /datum/quirk/jolly name = "Jolly" @@ -66,6 +71,11 @@ value = 1 mob_trait = TRAIT_JOLLY mood_quirk = TRUE + medical_record_text = "Patient demonstrates constant euthymia irregular for environment. It's a bit much, to be honest." + +/datum/quirk/jolly/on_process() + if(prob(0.05)) + SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "jolly", /datum/mood_event/jolly) /datum/quirk/light_step name = "Light Step" @@ -74,6 +84,7 @@ mob_trait = TRAIT_LIGHT_STEP gain_text = "You walk with a little more litheness." lose_text = "You start tromping around like a barbarian." + medical_record_text = "Patient's dexterity belies a strong capacity for stealth." /datum/quirk/quick_step name = "Quick Step" @@ -82,6 +93,7 @@ mob_trait = TRAIT_SPEEDY_STEP gain_text = "You feel determined. No time to lose." lose_text = "You feel less determined. What's the rush, man?" + medical_record_text = "Patient scored highly on racewalking tests." /datum/quirk/musician name = "Musician" @@ -90,6 +102,7 @@ mob_trait = TRAIT_MUSICIAN gain_text = "You know everything about musical instruments." lose_text = "You forget how musical instruments work." + medical_record_text = "Patient brain scans show a highly-developed auditory pathway." /datum/quirk/musician/on_spawn() var/mob/living/carbon/human/H = quirk_holder @@ -101,21 +114,6 @@ H.equip_to_slot(musicaltuner, SLOT_IN_BACKPACK) H.regenerate_icons() -/datum/quirk/night_vision - name = "Night Vision" - desc = "You can see slightly more clearly in full darkness than most people." - value = 1 - mob_trait = TRAIT_NIGHT_VISION - gain_text = "The shadows seem a little less dark." - lose_text = "Everything seems a little darker." - -/datum/quirk/night_vision/on_spawn() - var/mob/living/carbon/human/H = quirk_holder - var/obj/item/organ/eyes/eyes = H.getorgan(/obj/item/organ/eyes) - if(!eyes || eyes.lighting_alpha) - return - eyes.Insert(H) //refresh their eyesight and vision - /datum/quirk/photographer name = "Photographer" desc = "You know how to handle a camera, shortening the delay between each shot." @@ -123,6 +121,7 @@ mob_trait = TRAIT_PHOTOGRAPHER gain_text = "You know everything about photography." lose_text = "You forget how photo cameras work." + medical_record_text = "Patient mentions photography as a stress-relieving hobby." /datum/quirk/photographer/on_spawn() var/mob/living/carbon/human/H = quirk_holder @@ -136,12 +135,14 @@ desc = "You know your body well, and can accurately assess the extent of your wounds." value = 2 mob_trait = TRAIT_SELF_AWARE + medical_record_text = "Patient demonstrates an uncanny knack for self-diagnosis." /datum/quirk/skittish name = "Skittish" desc = "You can conceal yourself in danger. Ctrl-shift-click a closed locker to jump into it, as long as you have access." value = 2 mob_trait = TRAIT_SKITTISH + medical_record_text = "Patient demonstrates a high aversion to danger and has described hiding in containers out of fear." /datum/quirk/spiritual name = "Spiritual" @@ -150,6 +151,7 @@ mob_trait = TRAIT_SPIRITUAL gain_text = "You feel a little more faithful to the gods today." lose_text = "You feel less faithful in the gods." + medical_record_text = "Patient reports a belief in a higher power." /datum/quirk/tagger name = "Tagger" @@ -158,6 +160,7 @@ mob_trait = TRAIT_TAGGER gain_text = "You know how to tag walls efficiently." lose_text = "You forget how to tag walls properly." + medical_record_text = "Patient was recently seen for possible paint huffing incident." /datum/quirk/tagger/on_spawn() var/mob/living/carbon/human/H = quirk_holder @@ -173,6 +176,7 @@ mob_trait = TRAIT_VORACIOUS gain_text = "You feel HONGRY." lose_text = "You no longer feel HONGRY." + medical_record_text = "Patient demonstrates a disturbing capacity for eating." /datum/quirk/trandening name = "High Luminosity Eyes" @@ -194,6 +198,7 @@ mob_trait = TRAIT_HIGH_BLOOD gain_text = "You feel full of blood!" lose_text = "You feel like your blood pressure went down." + medical_record_text = "Patient's blood tests report an abnormal concentration of red blood cells in their bloodstream." /datum/quirk/bloodpressure/add() var/mob/living/M = quirk_holder @@ -203,3 +208,15 @@ /datum/quirk/bloodpressure/remove() var/mob/living/M = quirk_holder M.blood_ratio = 1 + +/datum/quirk/night_vision + name = "Night Vision" + desc = "You can see slightly more clearly in full darkness than most people." + value = 1 + mob_trait = TRAIT_NIGHT_VISION + gain_text = "The shadows seem a little less dark." + lose_text = "Everything seems a little darker." + +/datum/quirk/night_vision/on_spawn() + var/mob/living/carbon/human/H = quirk_holder + H.update_sight() diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index 178e1aaeb0..3319259381 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -22,14 +22,19 @@ value = -1 gain_text = "You start feeling depressed." lose_text = "You no longer feel depressed." //if only it were that easy! - medical_record_text = "Patient has a severe mood disorder causing them to experience sudden moments of sadness." + medical_record_text = "Patient has a severe mood disorder, causing them to experience acute episodes of depression." mood_quirk = TRUE +/datum/quirk/depression/on_process() + if(prob(0.05)) + SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "depression", /datum/mood_event/depression) + /datum/quirk/family_heirloom name = "Family Heirloom" desc = "You are the current owner of an heirloom, passed down for generations. You have to keep it safe!" value = -1 mood_quirk = TRUE + medical_record_text = "Patient demonstrates an unnatural attachment to a family heirloom." var/obj/item/heirloom var/where @@ -143,6 +148,7 @@ name = "Nyctophobia" desc = "As far as you can remember, you've always been afraid of the dark. While in the dark without a light source, you instinctually act careful, and constantly feel a sense of dread." value = -1 + medical_record_text = "Patient demonstrates a fear of the dark. (Seriously?)" /datum/quirk/nyctophobia/on_process() var/mob/living/carbon/human/H = quirk_holder @@ -163,7 +169,8 @@ desc = "Bright lights irritate you. Your eyes start to water, your skin feels itchy against the photon radiation, and your hair gets dry and frizzy. Maybe it's a medical condition. If only Nanotrasen was more considerate of your needs..." value = -1 gain_text = "The safty of light feels off..." - lose_text = "Enlighing." + lose_text = "Enlightening." + medical_record_text = "Despite my warnings, the patient refuses turn on the lights, only to end up rolling down a full flight of stairs and into the cellar." /datum/quirk/lightless/on_process() var/turf/T = get_turf(quirk_holder) @@ -332,16 +339,19 @@ medical_record_text = "Patient has an extreme or irrational fear and aversion to an undefined stimuli." var/datum/brain_trauma/mild/phobia/phobia -/datum/quirk/phobia/add() +/datum/quirk/phobia/post_add() var/mob/living/carbon/human/H = quirk_holder phobia = new - H.gain_trauma(phobia, TRAUMA_RESILIENCE_SURGERY) + H.gain_trauma(phobia, TRAUMA_RESILIENCE_ABSOLUTE) + +/datum/quirk/phobia/remove() + var/mob/living/carbon/human/H = quirk_holder + H?.cure_trauma_type(phobia, TRAUMA_RESILIENCE_ABSOLUTE) /datum/quirk/mute name = "Mute" desc = "Due to some accident, medical condition, or simply by choice, you are completely unable to speak." value = -2 //HALP MAINTS - mob_trait = TRAIT_MUTE gain_text = "You find yourself unable to speak!" lose_text = "You feel a growing strength in your vocal chords." medical_record_text = "Functionally mute, patient is unable to use their voice in any capacity." @@ -350,14 +360,17 @@ /datum/quirk/mute/add() var/mob/living/carbon/human/H = quirk_holder mute = new - H.gain_trauma(mute, TRAUMA_RESILIENCE_SURGERY) + H.gain_trauma(mute, TRAUMA_RESILIENCE_ABSOLUTE) + +/datum/quirk/mute/remove() + var/mob/living/carbon/human/H = quirk_holder + H?.cure_trauma_type(mute, TRAUMA_RESILIENCE_ABSOLUTE) /datum/quirk/mute/on_process() if(quirk_holder.mind && LAZYLEN(quirk_holder.mind.antag_datums)) to_chat(quirk_holder, "Your antagonistic nature has caused your voice to be heard.") qdel(src) - /datum/quirk/unstable name = "Unstable" desc = "Due to past troubles, you are unable to recover your sanity if you lose it. Be very careful managing your mood!" @@ -373,7 +386,7 @@ value = -4 gain_text = "You can't see anything." lose_text = "You miraculously gain back your vision." - medical_record_text = "Subject has permanent blindness." + medical_record_text = "Patient has permanent blindness." /datum/quirk/blindness/add() quirk_holder.become_blind(ROUNDSTART_TRAIT) @@ -384,3 +397,6 @@ if(!H.equip_to_slot_if_possible(glasses, SLOT_GLASSES, bypass_equip_delay_self = TRUE)) //if you can't put it on the user's eyes, put it in their hands, otherwise put it on their eyes eyes H.put_in_hands(glasses) H.regenerate_icons() + +/datum/quirk/blindness/remove() + quirk_holder?.cure_blind(ROUNDSTART_TRAIT) diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index 9e05af03b6..eae2db6a5f 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -16,6 +16,7 @@ value = 0 gain_text = "You feel an intense craving for pineapple." lose_text = "Your feelings towards pineapples seem to return to a lukewarm state." + medical_record_text = "Patient demonstrates a pathological love of pineapple." /datum/quirk/pineapple_liker/add() var/mob/living/carbon/human/H = quirk_holder @@ -34,6 +35,7 @@ value = 0 gain_text = "You find yourself pondering what kind of idiot actually enjoys pineapples..." lose_text = "Your feelings towards pineapples seem to return to a lukewarm state." + medical_record_text = "Patient is correct to think that pineapple is disgusting." /datum/quirk/pineapple_hater/add() var/mob/living/carbon/human/H = quirk_holder @@ -52,6 +54,7 @@ value = 0 gain_text = "You start craving something that tastes strange." lose_text = "You feel like eating normal food again." + medical_record_text = "Patient demonstrates irregular nutrition preferences." /datum/quirk/deviant_tastes/add() var/mob/living/carbon/human/H = quirk_holder @@ -92,7 +95,7 @@ value = 0 gain_text = "You feel more prudish." lose_text = "You don't feel as prudish as before." - medical_record_text = "Patient exhibits a special gene that makes them immune to Crocin and Hexacrocin." + medical_record_text = "Patient exhibits a special gene that makes them immune to aphrodisiacs." /datum/quirk/libido name = "Nymphomania" @@ -134,6 +137,7 @@ value = 0 mob_trait = TRAIT_PHARMA lose_text = "Your liver feels different." + medical_record_text = "Non-invasive tests report that the patient's metabolism is indeed incompatible with a certain \"stimulants\"." var/active = FALSE var/power = 0 var/cachedmoveCalc = 1 diff --git a/code/datums/weather/weather_types/radiation_storm.dm b/code/datums/weather/weather_types/radiation_storm.dm index 6765cdf2cd..0d763aa5ad 100644 --- a/code/datums/weather/weather_types/radiation_storm.dm +++ b/code/datums/weather/weather_types/radiation_storm.dm @@ -22,27 +22,17 @@ target_trait = ZTRAIT_STATION immunity_type = "rad" + + var/radiation_intensity = 100 /datum/weather/rad_storm/telegraph() ..() status_alarm(TRUE) - /datum/weather/rad_storm/weather_act(mob/living/L) var/resist = L.getarmor(null, "rad") - if(prob(40)) - if(ishuman(L)) - var/mob/living/carbon/human/H = L - if(H.dna && !HAS_TRAIT(H, TRAIT_RADIMMUNE)) - if(prob(max(0,100-resist))) - H.randmuti() - if(prob(50)) - if(prob(90)) - H.randmutb() - else - H.randmutg() - H.domutcheck() - L.rad_act(20) + var/ratio = 1 - (min(resist, 100) / 100) + L.rad_act(radiation_intensity * ratio) /datum/weather/rad_storm/end() if(..()) diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 612c3cba42..f5e285a5c2 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -327,7 +327,7 @@ GLOBAL_LIST_EMPTY(teleportlocs) for(var/obj/machinery/light/L in src) L.update() -/area/proc/updateicon() +/area/proc/update_icon() var/weather_icon for(var/V in SSweather.processing) var/datum/weather/W = V @@ -337,7 +337,7 @@ GLOBAL_LIST_EMPTY(teleportlocs) if(!weather_icon) icon_state = null -/area/space/updateicon() +/area/space/update_icon() icon_state = null /* @@ -370,7 +370,7 @@ GLOBAL_LIST_EMPTY(teleportlocs) /area/proc/power_change() for(var/obj/machinery/M in src) // for each machine in the area M.power_change() // reverify power status (to update icons etc.) - updateicon() + update_icon() /area/proc/usage(chan) var/used = 0 diff --git a/code/game/atoms.dm b/code/game/atoms.dm index a5e13d8e4f..0c6be84c64 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -316,9 +316,6 @@ to_chat(user, "You can't move while buckled to [src]!") return -/atom/proc/prevent_content_explosion() - return FALSE - /atom/proc/contents_explosion(severity, target) return //For handling the effects of explosions on contents that would not normally be effected @@ -812,8 +809,7 @@ Proc for attack log creation, because really why not // Filter stuff /atom/movable/proc/add_filter(name,priority,list/params) - if(!filter_data) - filter_data = list() + LAZYINITLIST(filter_data) var/list/p = params.Copy() p["priority"] = priority filter_data[name] = p @@ -821,7 +817,7 @@ Proc for attack log creation, because really why not /atom/movable/proc/update_filters() filters = null - sortTim(filter_data,associative = TRUE) + filter_data = sortTim(filter_data, /proc/cmp_filter_data_priority, TRUE) for(var/f in filter_data) var/list/data = filter_data[f] var/list/arguments = data.Copy() diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 65a7c6a954..1a57cf5051 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -189,7 +189,13 @@ if(tod) var/tdelta = round(world.time - timeofdeath) if(tdelta < (DEFIB_TIME_LIMIT * 10)) - holder.icon_state = "huddefib" + var/obj/item/organ/heart/He = getorgan(/obj/item/organ/heart) + if(He) + holder.icon_state = "huddefib" + if(He.organ_flags & ORGAN_FAILING) + holder.icon_state = "huddefibheart" + else + holder.icon_state = "huddefibheart" return holder.icon_state = "huddead" else diff --git a/code/game/gamemodes/bloodsucker/bloodsucker.dm b/code/game/gamemodes/bloodsucker/bloodsucker.dm new file mode 100644 index 0000000000..e784fd836d --- /dev/null +++ b/code/game/gamemodes/bloodsucker/bloodsucker.dm @@ -0,0 +1,292 @@ + +/datum/game_mode + var/list/datum/mind/bloodsuckers = list() // List of minds belonging to this game mode. + var/list/datum/mind/vassals = list() // List of minds that have been turned into Vassals. + //var/list/datum/mind/vamphunters = list() // List of minds hunting vampires. Disabled at the moment + var/obj/effect/sunlight/bloodsucker_sunlight // Sunlight Timer. Created on first Bloodsucker assign. Destroyed on last removed Bloodsucker. + + // LISTS // + var/list/vassal_allowed_antags = list(/datum/antagonist/brother, /datum/antagonist/traitor, /datum/antagonist/traitor/internal_affairs, /datum/antagonist/survivalist, \ + /datum/antagonist/rev, /datum/antagonist/nukeop, /datum/antagonist/pirate, /datum/antagonist/cult, /datum/antagonist/abductee) + // The antags you're allowed to be if turning Vassal. + +/datum/game_mode/bloodsucker + name = "bloodsucker" + config_tag = "bloodsucker" + traitor_name = "Bloodsucker" + antag_flag = ROLE_BLOODSUCKER + false_report_weight = 1 + restricted_jobs = list("AI","Cyborg") + protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") + required_players = 20 + required_enemies = 2 + recommended_enemies = 4 + reroll_friendly = FALSE + enemy_minimum_age = 7 + round_ends_with_antag_death = FALSE + + + announce_span = "danger" + announce_text = "Filthy, bloodsucking vampires are crawling around disguised as crewmembers!\n\ + Bloodsuckers: The crew are cattle, while you are both shepherd and slaughterhouse.\n\ + Crew: Put an end to the undead infestation before the station is overcome!" + +/datum/game_mode/bloodsucker/generate_report() + return "Reports indicate that some of your crew may have toppled statues in the past week, angering the gods and becoming cursed with undeath and a desire for blood. Watch out for crewmembers that seem to shun the light or are found pale and delirious." + +// Seems to be run by game ONCE, and finds all potential players to be antag. +/datum/game_mode/bloodsucker/pre_setup() + + // Set Restricted Jobs + if(CONFIG_GET(flag/protect_roles_from_antagonist)) + restricted_jobs += protected_jobs + + if(CONFIG_GET(flag/protect_assistant_from_antagonist)) + restricted_jobs += "Assistant" + + // Set number of Vamps + recommended_enemies = CLAMP(round(num_players()/10), 1, 6); + + // Select Antags + for(var/i = 0, i < recommended_enemies, i++) + if (!antag_candidates.len) + break + var/datum/mind/bloodsucker = pick(antag_candidates) + // Can we even BE a bloodsucker? + //if (can_make_bloodsucker(bloodsucker, display_warning=FALSE)) + bloodsuckers += bloodsucker + bloodsucker.restricted_roles = restricted_jobs + log_game("[bloodsucker.key] (ckey) has been selected as a Bloodsucker.") + antag_candidates.Remove(bloodsucker) // Apparently you can also write antag_candidates -= bloodsucker + + // Assign Hunters (as many as monsters, plus one) + //assign_monster_hunters(bloodsuckers.len, TRUE, bloodsuckers) // Disabled for now + + // Do we have enough vamps to continue? + return bloodsuckers.len >= required_enemies + + +// Gamemode is all done being set up. We have all our Vamps. We now pick objectives and let them know what's happening. +/datum/game_mode/bloodsucker/post_setup() + + // Sunlight (Creating Bloodsuckers manually will check to create this, too) + check_start_sunlight() + + // Vamps + for(var/datum/mind/bloodsucker in bloodsuckers) + // spawn() --> Run block of code but game continues on past it. + // sleep() --> Run block of code and freeze code there (including whoever called us) until it's resolved. + + //Clean Bloodsucker Species (racist?) + //clean_invalid_species(bloodsucker) + // TO-DO !!! + + // Add Bloodsucker Antag Datum (or remove from list on Fail) + if (!make_bloodsucker(bloodsucker)) + bloodsuckers -= bloodsucker + + // NOTE: Hunters are done in ..() parent proc + + return ..() + +// Checking for ACTUALLY Dead Vamps +/datum/game_mode/bloodsucker/are_special_antags_dead() + // Bloodsucker not Final Dead + for(var/datum/mind/bloodsucker in bloodsuckers) + if(!bloodsucker.AmFinalDeath()) + return FALSE + return TRUE + + +// Init Sunlight (called from datum_bloodsucker.on_gain(), in case game mode isn't even Bloodsucker +/datum/game_mode/proc/check_start_sunlight() + // Already Sunlight (and not about to cancel) + if (istype(bloodsucker_sunlight) && !bloodsucker_sunlight.cancel_me) + return + bloodsucker_sunlight = new () + +// End Sun (last bloodsucker removed) +/datum/game_mode/proc/check_cancel_sunlight() + // No Sunlight + if (!istype(bloodsucker_sunlight)) + return + if (bloodsuckers.len <= 0) + bloodsucker_sunlight.cancel_me = TRUE + qdel(bloodsucker_sunlight) + bloodsucker_sunlight = null + +/datum/game_mode/proc/is_daylight() + return istype(bloodsucker_sunlight) && bloodsucker_sunlight.amDay + +////////////////////////////////////////////////////////////////////////////// + + +/datum/game_mode/proc/can_make_bloodsucker(datum/mind/bloodsucker, datum/mind/creator, display_warning=TRUE) // Creator is just here so we can display fail messages to whoever is turning us. + // No Mind + if(!bloodsucker || !bloodsucker.key) // KEY is client login? + //if(creator) // REMOVED. You wouldn't see their name if there is no mind, so why say anything? + // to_chat(creator, "[bloodsucker] isn't self-aware enough to be raised as a Bloodsucker!") + return FALSE + // Current body is invalid + if(!ishuman(bloodsucker.current))// && !ismonkey(bloodsucker.current)) + if(display_warning && creator) + to_chat(creator, "[bloodsucker] isn't evolved enough to be raised as a Bloodsucker!") + return FALSE + // Species Must have a HEART (Sorry Plasmabois) + var/mob/living/carbon/human/H = bloodsucker.current + if(NOBLOOD in H.dna.species.species_traits) + if(display_warning && creator) + to_chat(creator, "[bloodsucker]'s DNA isn't compatible!") + return FALSE + // Already a Non-Human Antag + if(bloodsucker.has_antag_datum(/datum/antagonist/abductor) || bloodsucker.has_antag_datum(/datum/antagonist/devil) || bloodsucker.has_antag_datum(/datum/antagonist/changeling)) + return FALSE + // Already a vamp + if(bloodsucker.has_antag_datum(ANTAG_DATUM_BLOODSUCKER)) + if(display_warning && creator) + to_chat(creator, "[bloodsucker] is already a Bloodsucker!") + return FALSE + // Not High Enough + if(creator) + var/datum/antagonist/bloodsucker/creator_bloodsucker = creator.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) + if(!istype(creator_bloodsucker) || creator_bloodsucker.vamplevel < BLOODSUCKER_LEVEL_TO_EMBRACE) + to_chat(creator, "Your blood is too thin to turn this corpse!") + return FALSE + return TRUE + + +/datum/game_mode/proc/make_bloodsucker(datum/mind/bloodsucker, datum/mind/creator = null) // NOTE: This is a game_mode/proc, NOT a game_mode/bloodsucker/proc! We need to access this function despite the game mode. + if (!can_make_bloodsucker(bloodsucker)) + return FALSE + + // Create Datum: Fledgling + var/datum/antagonist/bloodsucker/A + + // [FLEDGLING] + if (creator) + A = new (bloodsucker) + A.creator = creator + bloodsucker.add_antag_datum(A) + // Log + message_admins("[bloodsucker] has become a Bloodsucker, and was created by [creator].") + log_admin("[bloodsucker] has become a Bloodsucker, and was created by [creator].") + + // [MASTER] + else + A = bloodsucker.add_antag_datum(ANTAG_DATUM_BLOODSUCKER) + + + return TRUE + + +/datum/game_mode/proc/remove_bloodsucker(datum/mind/bloodsucker) + bloodsucker.remove_antag_datum(ANTAG_DATUM_BLOODSUCKER) + + +/datum/game_mode/proc/clean_invalid_species(datum/mind/bloodsucker) + // Only checking for Humans here + if (!ishuman(bloodsucker.current) || !bloodsucker.current.client) + return + var/am_valid = TRUE + var/mob/living/carbon/human/H = bloodsucker.current + + // Check if PLASMAMAN? + if(NOBLOOD in H.dna.species.species_traits) + am_valid = FALSE + + // PROBLEM: + // + // Setting species leaves clothes on. If you were a plasmaman, we need to reassign your entire outfit. Otherwise + // everyone will wonder why you're a human with Plasma clothes (jk they'll know you're antag) + + // Convert to HUMAN (along with ID and PDA) + if (!am_valid) + H.set_species(/datum/species/human) + H.real_name = H.client.prefs.custom_names["human"] + var/obj/item/card/id/ID = H.wear_id?.GetID() + if(ID) + ID.registered_name = H.real_name + ID.update_label() + + +/datum/game_mode/proc/can_make_vassal(mob/living/target, datum/mind/creator, display_warning=TRUE)//, check_antag_or_loyal=FALSE) + // Not Correct Type: Abort + if (!iscarbon(target) || !creator) + return FALSE + if (target.stat > UNCONSCIOUS) + return FALSE + // Check Overdose: Am I even addicted to blood? Do I even have any in me? + //if (!target.reagents.addiction_list || !target.reagents.reagent_list) + //message_admins("DEBUG2: can_make_vassal() Abort: No reagents") + // return 0 + // Check Overdose: Did my current volume go over the Overdose threshold? + //var/am_addicted = 0 + //for (var/datum/reagent/blood/vampblood/blood in target.reagents.addiction_list) // overdosed is tracked in reagent_list, not addiction_list. + //message_admins("DEBUG3: can_make_vassal() Found Blood! [blood] [blood.overdose]") + //if (blood.overdosed) + // am_addicted = 1 // Blood is present in addiction? That's all we need. + // break + + //if (!am_addicted) + //message_admins("DEBUG4: can_make_vassal() Abort: No Blood") + // return 0 + // No Mind! + if (!target.mind || !target.mind.key) + if (display_warning) + to_chat(creator, "[target] isn't self-aware enough to be made into a Vassal.") + return FALSE + // Already MY Vassal + var/datum/antagonist/vassal/V = target.mind.has_antag_datum(ANTAG_DATUM_VASSAL) + if (istype(V) && V.master) + if (V.master.owner == creator) + if (display_warning) + to_chat(creator, "[target] is already your loyal Vassal!") + else + if (display_warning) + to_chat(creator, "[target] is the loyal Vassal of another Bloodsucker!") + return FALSE + // Already Antag or Loyal (Vamp Hunters count as antags) + if (target.mind.enslaved_to || AmInvalidAntag(target.mind)) //!VassalCheckAntagValid(target.mind, check_antag_or_loyal)) // HAS_TRAIT(target, TRAIT_MINDSHIELD, "implant") || + if (display_warning) + to_chat(creator, "[target] resists the power of your blood to dominate their mind!") + return FALSE + return TRUE + + +/datum/game_mode/proc/AmValidAntag(datum/mind/M) + // No List? + if(!islist(M.antag_datums) || M.antag_datums.len == 0) + return FALSE + // Am I NOT an invalid Antag? NOTE: We already excluded non-antags above. Don't worry about the "No List?" check in AmInvalidIntag() + return !AmInvalidAntag(M) + +/datum/game_mode/proc/AmInvalidAntag(datum/mind/M) + // No List? + if(!islist(M.antag_datums) || M.antag_datums.len == 0) + return FALSE + // Does even ONE antag appear in this mind that isn't in the list? Then FAIL! + for(var/datum/antagonist/antag_datum in M.antag_datums) + if (!(antag_datum.type in vassal_allowed_antags)) // vassal_allowed_antags is a list stored in the game mode, above. + //message_admins("DEBUG VASSAL: Found Invalid: [antag_datum] // [antag_datum.type]") + return TRUE + //message_admins("DEBUG VASSAL: Valid Antags! (total of [M.antag_datums.len])") + // WHEN YOU DELETE THE ABOVE: Remove the 3 second timer on converting the vassal too. + return FALSE + +/datum/game_mode/proc/make_vassal(mob/living/target, datum/mind/creator) + if (!can_make_vassal(target,creator)) + return FALSE + // Make Vassal + var/datum/antagonist/vassal/V = new (target.mind) + var/datum/antagonist/bloodsucker/B = creator.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) + V.master = B + target.mind.add_antag_datum(V, V.master.get_team()) + // Update Bloodsucker Title (we're a daddy now) + B.SelectTitle(am_fledgling = FALSE) // Only works if you have no title yet. + // Log + message_admins("[target] has become a Vassal, and is enslaved to [creator].") + log_admin("[target] has become a Vassal, and is enslaved to [creator].") + return TRUE + +/datum/game_mode/proc/remove_vassal(datum/mind/vassal) + vassal.remove_antag_datum(ANTAG_DATUM_VASSAL) diff --git a/code/game/gamemodes/bloodsucker/hunter.dm b/code/game/gamemodes/bloodsucker/hunter.dm new file mode 100644 index 0000000000..cec990e9c3 --- /dev/null +++ b/code/game/gamemodes/bloodsucker/hunter.dm @@ -0,0 +1,50 @@ + + +/* +// Called from game mode pre_setup() +/datum/game_mode/proc/assign_monster_hunters(monster_count = 4, guaranteed_hunters = FALSE, list/datum/mind/exclude_from_hunter) + + // Not all game modes GUARANTEE a hunter + if (rand(0,2) == 0) // 50% of the time, we get fewer or NO Hunters + if (!guaranteed_hunters) + return + else + monster_count /= 2 + + var/list/no_hunter_jobs = list("AI","Cyborg") + + // Set Restricted Jobs + if(CONFIG_GET(flag/protect_roles_from_antagonist)) + no_hunter_jobs += list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") + + if(CONFIG_GET(flag/protect_assistant_from_antagonist)) + no_hunter_jobs += "Assistant" + + // Find Valid Hunters + var/list/datum/mind/hunter_candidates = get_players_for_role(ROLE_MONSTERHUNTER) + + // Assign Hunters (as many as vamps, plus one) + for(var/i = 1, i < monster_count, i++) // Start at 1 so we skip Hunters if there's only one sucker. + if (!hunter_candidates.len) + break + // Assign Hunter + var/datum/mind/hunter = pick(hunter_candidates) + hunter_candidates.Remove(hunter) // Remove Either Way + // Already Antag? Skip + if (islist(exclude_from_hunter) && (locate(hunter) in exclude_from_hunter)) //if (islist(hunter.antag_datums) && hunter.antag_datums.len) + i -- + continue + // NOTE: + vamphunters += hunter + hunter.restricted_roles = no_hunter_jobs + log_game("[hunter.key] (ckey) has been selected as a Hunter.") + +// Called from game mode post_setup() +/datum/game_mode/proc/finalize_monster_hunters(monster_count = 4) + var/amEvil = TRUE // First hunter is always an evil boi + for(var/datum/mind/hunter in vamphunters) + var/datum/antagonist/vamphunter/A = new (hunter) + A.bad_dude = amEvil + hunter.add_antag_datum(A) + amEvil = FALSE // Every other hunter is just a boring greytider +*/ diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index ee96d1fa10..9b52ddda1e 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -265,6 +265,7 @@ armor = list("melee" = 40, "bullet" = 40, "laser" = 50, "energy" = 35, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) max_temperature = 35000 operation_req_access = list(ACCESS_SYNDICATE) + internals_req_access = list(ACCESS_SYNDICATE) wreckage = /obj/structure/mecha_wreckage/honker/dark max_equip = 3 spawn_tracked = FALSE diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm index 25edd0c68b..075184046d 100644 --- a/code/game/gamemodes/dynamic/dynamic.dm +++ b/code/game/gamemodes/dynamic/dynamic.dm @@ -236,6 +236,9 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) return rule.round_result() return ..() +/datum/game_mode/dynamic/generate_report() + return "Mysterious signals that demonstrate strange dynamics have been detected in your sector. Watch out for oddities." + /datum/game_mode/dynamic/send_intercept() . = "Central Command Status Summary
    " switch(round(threat_level)) @@ -297,6 +300,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) /datum/game_mode/dynamic/proc/log_threat(var/log_str,var/verbose = FALSE) threat_log_verbose += ("[worldtime2text()]: "+log_str) + SSblackbox.record_feedback("tally","dynamic_threat_log",1,log_str) if(!verbose) threat_log += log_str @@ -326,6 +330,10 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) peaceful_percentage = round(LORENTZ_CUMULATIVE_DISTRIBUTION(relative_threat, GLOB.dynamic_curve_centre, GLOB.dynamic_curve_width), 0.01)*100 threat = threat_level + SSblackbox.record_feedback("tally","dynamic_threat",threat_level,"Initial threat level") + SSblackbox.record_feedback("tally","dynamic_threat",GLOB.dynamic_curve_centre,"Curve centre") + SSblackbox.record_feedback("tally","dynamic_threat",GLOB.dynamic_curve_width,"Curve width") + SSblackbox.record_feedback("tally","dynamic_threat",peaceful_percentage,"Percent of same-vote rounds that are more peaceful") /datum/game_mode/dynamic/can_start() message_admins("Dynamic mode parameters for the round:") @@ -337,6 +345,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) if(GLOB.dynamic_forced_threat_level >= 0) threat_level = round(GLOB.dynamic_forced_threat_level, 0.1) threat = threat_level + SSblackbox.record_feedback("tally","dynamic_threat",threat_level,"Threat level (forced by admins)") else generate_threat() @@ -381,7 +390,8 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) if (roundstart_rules.len <= 0) log_game("DYNAMIC: [roundstart_rules.len] rules.") return TRUE - + SSblackbox.record_feedback("tally","dynamic",roundstart_rules.len,"Roundstart rules considered") + SSblackbox.record_feedback("tally","dynamic",roundstart_rules.len,"Players readied up") if(GLOB.dynamic_forced_roundstart_ruleset.len > 0) rigged_roundstart() else @@ -510,7 +520,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) var/added_threat = starting_rule.scale_up(extra_rulesets_amount, threat) if (starting_rule.pre_execute()) spend_threat(starting_rule.cost + added_threat) - log_threat("[starting_rule.ruletype] - [starting_rule.name] -[starting_rule.cost + starting_rule.scaled_times * starting_rule.scaling_cost] threat") + log_threat("[starting_rule.ruletype] - [starting_rule.name] -[starting_rule.cost + starting_rule.scaled_times * starting_rule.scaling_cost] threat", verbose = TRUE) if(starting_rule.flags & HIGHLANDER_RULESET) highlander_executed = TRUE else if(starting_rule.flags & ONLY_RULESET) @@ -534,6 +544,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) if(rule.execute()) if(rule.persistent) current_rules += rule + SSblackbox.record_feedback("associative","dynamic_rulesets",1,rule.get_blackbox_info()) return TRUE rule.clean_up() // Refund threat, delete teams and so on. executed_rules -= rule @@ -605,13 +616,14 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) new_rule.trim_candidates() if (new_rule.ready(forced)) spend_threat(new_rule.cost) - log_threat("[new_rule.ruletype] - [new_rule.name] -[new_rule.cost] threat") + log_threat("[new_rule.ruletype] - [new_rule.name] -[new_rule.cost] threat", verbose = TRUE) if (new_rule.execute()) // This should never fail since ready() returned 1 if(new_rule.flags & HIGHLANDER_RULESET) highlander_executed = TRUE else if(new_rule.flags & ONLY_RULESET) only_ruleset_executed = TRUE log_game("DYNAMIC: Making a call to a specific ruleset...[new_rule.name]!") + SSblackbox.record_feedback("associative","dynamic_rulesets",1,new_rule.get_blackbox_info()) executed_rules += new_rule if (new_rule.persistent) current_rules += new_rule @@ -626,7 +638,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) if (rule.execute()) log_game("DYNAMIC: Injected a [rule.ruletype == "latejoin" ? "latejoin" : "midround"] ruleset [rule.name].") spend_threat(rule.cost) - log_threat("[rule.ruletype] [rule.name] spent [rule.cost]") + log_threat("[rule.ruletype] [rule.name] spent [rule.cost]", verbose = TRUE) if(rule.flags & HIGHLANDER_RULESET) highlander_executed = TRUE else if(rule.flags & ONLY_RULESET) @@ -636,6 +648,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) message_admins("[key_name(M)] joined the station, and was selected by the [rule.name] ruleset.") log_game("DYNAMIC: [key_name(M)] joined the station, and was selected by the [rule.name] ruleset.") executed_rules += rule + SSblackbox.record_feedback("associative","dynamic_rulesets",1,rule.get_blackbox_info()) rule.candidates.Cut() if (rule.persistent) current_rules += rule @@ -652,6 +665,8 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) for (var/datum/dynamic_ruleset/rule in current_rules) if(rule.rule_process() == RULESET_STOP_PROCESSING) // If rule_process() returns 1 (RULESET_STOP_PROCESSING), stop processing. current_rules -= rule + SSblackbox.record_feedback("tally","dynamic",1,"Rulesets finished") + SSblackbox.record_feedback("associative","dynamic_rulesets_finished",1,rule.get_blackbox_info()) if (midround_injection_cooldown < world.time) if (GLOB.dynamic_forced_extended) @@ -670,6 +685,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) update_playercounts() if (get_injection_chance()) + SSblackbox.record_feedback("tally","dynamic",1,"Attempted midround injections") var/cur_threat_frac = threat/threat_level var/list/drafted_rules = list() var/antag_num = current_players[CURRENT_LIVING_ANTAGS].len @@ -685,12 +701,16 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) drafted_rules[rule] = round(rule.get_weight() + (rule.cost * cur_threat_frac)) else drafted_rules[rule] = rule.get_weight() + else if(threat < rule.cost) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough threat to spend") if (drafted_rules.len > 0) + SSblackbox.record_feedback("tally","dynamic",1,"Successful midround injections") picking_midround_latejoin_rule(drafted_rules) else midround_injection_cooldown = (midround_injection_cooldown + world.time)/2 if(event_injection_cooldown < world.time) + SSblackbox.record_feedback("tally","dynamic",1,"Attempted event injections") var/event_injection_cooldown_middle = 0.5*(GLOB.dynamic_event_delay_max + GLOB.dynamic_event_delay_min) event_injection_cooldown = (round(CLAMP(EXP_DISTRIBUTION(event_injection_cooldown_middle), GLOB.dynamic_event_delay_min, GLOB.dynamic_event_delay_max)) + world.time) message_admins("DYNAMIC: Doing event injection.") @@ -701,7 +721,10 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) if(rule.acceptable(current_players[CURRENT_LIVING_PLAYERS].len, threat_level) && threat >= rule.cost) if(rule.ready()) drafted_rules[rule] = rule.get_weight() + else if(threat < rule.cost) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough threat to spend") if(drafted_rules.len > 0) + SSblackbox.record_feedback("tally","dynamic",1,"Successful event injections") picking_midround_latejoin_rule(drafted_rules) /// Updates current_players. @@ -792,6 +815,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) forced_latejoin_rule = null else if (latejoin_injection_cooldown < world.time && prob(get_injection_chance())) + SSblackbox.record_feedback("tally","dynamic",1,"Attempted latejoin injections") var/list/drafted_rules = list() for (var/datum/dynamic_ruleset/latejoin/rule in latejoin_rules) if (rule.acceptable(current_players[CURRENT_LIVING_PLAYERS].len, threat_level) && threat >= rule.cost) @@ -809,22 +833,29 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) drafted_rules[rule] = rule.get_weight() if (drafted_rules.len > 0 && picking_midround_latejoin_rule(drafted_rules)) + SSblackbox.record_feedback("tally","dynamic",1,"Successful latejoin injections") var/latejoin_injection_cooldown_middle = 0.5*(GLOB.dynamic_latejoin_delay_max + GLOB.dynamic_latejoin_delay_min) latejoin_injection_cooldown = round(CLAMP(EXP_DISTRIBUTION(latejoin_injection_cooldown_middle), GLOB.dynamic_latejoin_delay_min, GLOB.dynamic_latejoin_delay_max)) + world.time /// Refund threat, but no more than threat_level. /datum/game_mode/dynamic/proc/refund_threat(regain) threat = min(threat_level,threat+regain) + SSblackbox.record_feedback("tally","dynamic_threat",regain,"Refunded threat") + log_threat("[regain] refunded. Threat is now [threat].", verbose = TRUE) /// Generate threat and increase the threat_level if it goes beyond, capped at 100 /datum/game_mode/dynamic/proc/create_threat(gain) threat = min(100, threat+gain) if(threat > threat_level) threat_level = threat + SSblackbox.record_feedback("tally","dynamic_threat",gain,"Created threat") + log_threat("[gain] created. Threat is now [threat] and threat level is now [threat_level].", verbose = TRUE) /// Expend threat, can't fall under 0. /datum/game_mode/dynamic/proc/spend_threat(cost) threat = max(threat-cost,0) + SSblackbox.record_feedback("tally","dynamic_threat",cost,"Threat spent") + log_threat("[cost] spent. Threat is now [threat].", verbose = TRUE) /// Turns the value generated by lorentz distribution to threat value between 0 and 100. /datum/game_mode/dynamic/proc/lorentz_to_threat(x) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets.dm b/code/game/gamemodes/dynamic/dynamic_rulesets.dm index 0c8ec0a2b8..7f6ea088a1 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets.dm @@ -80,6 +80,9 @@ /// Delay for when execute will get called from the time of post_setup (roundstart) or process (midround/latejoin). /// Make sure your ruleset works with execute being called during the game when using this, and that the clean_up proc reverts it properly in case of faliure. var/delay = 0 + /// Whether or not recent-round weight values are taken into account for this ruleset. + /// Weight reduction uses the same values as secret's recent-round mode weight reduction. + var/always_max_weight = FALSE /datum/dynamic_ruleset/New() ..() @@ -91,8 +94,15 @@ var/costs = CONFIG_GET(keyed_list/dynamic_cost) var/requirementses = CONFIG_GET(keyed_list/dynamic_requirements) // can't damn well use requirements var/high_population_requirements = CONFIG_GET(keyed_list/dynamic_high_population_requirement) + var/list/repeated_mode_adjust = CONFIG_GET(number_list/repeated_mode_adjust) if(config_tag in weights) - weight = weights[config_tag] + var/weight_mult = 1 + if(!always_max_weight && SSpersistence.saved_dynamic_rules.len == 3 && repeated_mode_adjust.len == 3) + var/saved_dynamic_rules = SSpersistence.saved_dynamic_rules + for(var/i in 1 to 3) + if(config_tag in saved_dynamic_rules[i]) + weight_mult -= (repeated_mode_adjust[i]/100) + weight = weights[config_tag] * weight_mult if(config_tag in costs) cost = costs[config_tag] if(config_tag in requirementses) @@ -115,12 +125,15 @@ /// If your rule has extra checks, such as counting security officers, do that in ready() instead /datum/dynamic_ruleset/proc/acceptable(population = 0, threat_level = 0) if(minimum_players > population) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to low pop") return FALSE if(maximum_players > 0 && population > maximum_players) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to high pop") return FALSE if (population >= GLOB.dynamic_high_pop_limit) indice_pop = 10 if(threat_level < high_population_requirement) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough threat level") log_game("DYNAMIC: [name] did not reach threat level threshold: [threat_level]/[high_population_requirement]") return FALSE else @@ -132,6 +145,7 @@ log_game("DYNAMIC: requirements and antag_cap lists have different lengths in ruleset [name]. Likely config issue, report this.") indice_pop = min(requirements.len,round(population/pop_per_requirement)+1) if(threat_level < requirements[indice_pop]) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough threat level") log_game("DYNAMIC: [name] did not reach threat level threshold: [threat_level]/[requirements[indice_pop]]") return FALSE else @@ -178,6 +192,7 @@ /// IMPORTANT: If ready() returns TRUE, that means pre_execute() or execute() should never fail! /datum/dynamic_ruleset/proc/ready(forced = 0) if (required_candidates > candidates.len) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough candidates") return FALSE return TRUE @@ -212,6 +227,24 @@ /datum/dynamic_ruleset/proc/check_finished() return FALSE +/// Returns a list to be displayed on statbus. +/datum/dynamic_ruleset/proc/get_blackbox_info() + var/list/ruleset_data = list() + ruleset_data["name"] = name + ruleset_data["rule_type"] = ruletype + ruleset_data["cost"] = total_cost + ruleset_data["weight"] = weight + ruleset_data["scaled_times"] = scaled_times + ruleset_data["antagonist_type"] = antag_datum + ruleset_data["population_tier"] = indice_pop + ruleset_data["assigned"] = list() + for (var/datum/mind/M in assigned) + var/assigned_data = list() + assigned_data["key"] = M.key + assigned_data["name"] = M.name + ruleset_data["assigned"] += list(assigned_data) + return ruleset_data + ////////////////////////////////////////////// // // // ROUNDSTART RULESETS // diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm index 4ac8cc91d3..b6cd313bfc 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm @@ -3,6 +3,17 @@ var/typepath // typepath of the event var/triggering +/datum/dynamic_ruleset/event/get_blackbox_info() + var/list/ruleset_data = list() + ruleset_data["name"] = name + ruleset_data["rule_type"] = ruletype + ruleset_data["cost"] = total_cost + ruleset_data["weight"] = weight + ruleset_data["scaled_times"] = scaled_times + ruleset_data["event_type"] = typepath + ruleset_data["population_tier"] = indice_pop + return ruleset_data + /datum/dynamic_ruleset/event/execute() var/datum/round_event/E = new typepath() E.current_players = get_active_player_count(alive_check = 1, afk_check = 1, human_check = 1) @@ -26,6 +37,7 @@ var/threat = round(mode.threat_level/10) if (job_check < required_enemies[threat]) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough enemy roles") return FALSE return TRUE @@ -125,6 +137,7 @@ requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 5 repeatable = TRUE + always_max_weight = TRUE ////////////////////////////////////////////// // // @@ -146,12 +159,15 @@ /datum/dynamic_ruleset/event/meteor_wave/ready() if(mode.threat_level > 40 && mode.threat >= 25 && prob(20)) + name = "Meteor Wave: Threatening" cost = 25 typepath = /datum/round_event/meteor_wave/threatening else if(mode.threat_level > 50 && mode.threat >= 40 && prob(30)) + name = "Meteor Wave: Catastrophic" cost = 40 typepath = /datum/round_event/meteor_wave/catastrophic else + name = "Meteor Wave: Normal" cost = 15 typepath = /datum/round_event/meteor_wave return ..() @@ -280,6 +296,7 @@ requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 5 repeatable = TRUE + always_max_weight = TRUE /datum/dynamic_ruleset/event/space_dust name = "Minor Space Dust" @@ -293,6 +310,7 @@ requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 5 repeatable = TRUE + always_max_weight = TRUE /datum/dynamic_ruleset/event/major_dust name = "Major Space Dust" @@ -332,6 +350,7 @@ requirements = list(101,101,101,5,5,5,5,5,5,5) high_population_requirement = 5 repeatable = TRUE + always_max_weight = TRUE /datum/dynamic_ruleset/event/radiation_storm name = "Radiation Storm" diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm index 5810fd0ae0..fe9347d9d5 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm @@ -36,9 +36,9 @@ continue // Dead players cannot count as opponents if (M.mind && M.mind.assigned_role && (M.mind.assigned_role in enemy_roles) && (!(M in candidates) || (M.mind.assigned_role in restricted_roles))) job_check++ // Checking for "enemies" (such as sec officers). To be counters, they must either not be candidates to that rule, or have a job that restricts them from it - var/threat = round(mode.threat_level/10) if (job_check < required_enemies[threat]) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough enemy roles") return FALSE return ..() @@ -69,6 +69,7 @@ high_population_requirement = 15 repeatable = TRUE flags = TRAITOR_RULESET + always_max_weight = TRUE ////////////////////////////////////////////// // // diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index 8cda402ebf..91ac73d142 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -87,6 +87,7 @@ var/threat = round(mode.threat_level/10) if (job_check < required_enemies[threat]) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough enemy roles") return FALSE return TRUE @@ -94,11 +95,8 @@ var/list/possible_candidates = list() possible_candidates.Add(dead_players) possible_candidates.Add(list_observers) - send_applications(possible_candidates) - if(assigned.len > 0) - return TRUE - else - return FALSE + var/application_successful = send_applications(possible_candidates) + return assigned.len > 0 && application_successful /// This sends a poll to ghosts if they want to be a ghost spawn from a ruleset. /datum/dynamic_ruleset/midround/from_ghosts/proc/send_applications(list/possible_volunteers = list()) @@ -113,25 +111,18 @@ if(!candidates || candidates.len <= required_candidates) message_admins("The ruleset [name] did not receive enough applications.") log_game("DYNAMIC: The ruleset [name] did not receive enough applications.") - mode.refund_threat(cost) - mode.log_threat("Rule [name] refunded [cost] (not receive enough applications)",verbose=TRUE) - mode.executed_rules -= src - return + return FALSE message_admins("[candidates.len] players volunteered for the ruleset [name].") log_game("DYNAMIC: [candidates.len] players volunteered for [name].") review_applications() + return TRUE /// Here is where you can check if your ghost applicants are valid for the ruleset. /// Called by send_applications(). /datum/dynamic_ruleset/midround/from_ghosts/proc/review_applications() for (var/i = 1, i <= required_candidates, i++) if(candidates.len <= 0) - if(i == 1) - // We have found no candidates so far and we are out of applicants. - mode.refund_threat(cost) - mode.log_threat("Rule [name] refunded [cost] (all applications invalid)",verbose=TRUE) - mode.executed_rules -= src break var/mob/applicant = pick(candidates) candidates -= applicant @@ -189,6 +180,7 @@ repeatable = TRUE high_population_requirement = 15 flags = TRAITOR_RULESET + always_max_weight = TRUE /datum/dynamic_ruleset/midround/autotraitor/acceptable(population = 0, threat = 0) var/player_count = mode.current_players[CURRENT_LIVING_PLAYERS].len @@ -301,6 +293,7 @@ /datum/dynamic_ruleset/midround/from_ghosts/wizard/ready(forced = FALSE) if (required_candidates > (dead_players.len + list_observers.len)) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough ghosts") return FALSE if(GLOB.wizardstart.len == 0) log_admin("Cannot accept Wizard ruleset. Couldn't find any wizard spawn points.") @@ -363,6 +356,7 @@ /datum/dynamic_ruleset/midround/from_ghosts/nuclear/ready(forced = FALSE) if (required_candidates > (dead_players.len + list_observers.len)) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough ghosts") return FALSE return ..() @@ -399,6 +393,7 @@ /datum/dynamic_ruleset/midround/from_ghosts/blob/ready(forced = FALSE) if (required_candidates > (dead_players.len + list_observers.len)) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough ghosts") return FALSE return ..() @@ -430,6 +425,7 @@ /datum/dynamic_ruleset/midround/from_ghosts/xenomorph/ready(forced = FALSE) if (required_candidates > (dead_players.len + list_observers.len)) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough ghosts") return FALSE return ..() @@ -529,6 +525,7 @@ /datum/dynamic_ruleset/midround/from_ghosts/sentient_disease/ready(forced = FALSE) if (required_candidates > (dead_players.len + list_observers.len)) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough ghosts") return FALSE return ..() @@ -567,6 +564,7 @@ if(deadMobs < REVENANT_SPAWN_THRESHOLD) return FALSE if(required_candidates > (dead_players.len + list_observers.len)) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough ghosts") return FALSE for(var/mob/living/L in GLOB.dead_mob_list) //look for any dead bodies var/turf/T = get_turf(L) @@ -614,6 +612,7 @@ /datum/dynamic_ruleset/midround/from_ghosts/slaughter_demon/ready(forced = FALSE) if(required_candidates > (dead_players.len + list_observers.len)) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough ghosts") return FALSE for(var/obj/effect/landmark/carpspawn/L in GLOB.landmarks_list) if(isturf(L.loc)) @@ -665,6 +664,7 @@ /datum/dynamic_ruleset/midround/from_ghosts/abductors/ready(forced = FALSE) if(required_candidates > (dead_players.len + list_observers.len)) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough ghosts") return FALSE team = new /datum/team/abductor_team if(team.team_number > ABDUCTOR_MAX_TEAMS) @@ -704,6 +704,7 @@ /datum/dynamic_ruleset/midround/from_ghosts/ninja/ready(forced = FALSE) if(required_candidates > (dead_players.len + list_observers.len)) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough ghosts") return FALSE if(!spawn_loc) var/list/spawn_locs = list() @@ -744,3 +745,31 @@ #undef ABDUCTOR_MAX_TEAMS #undef REVENANT_SPAWN_THRESHOLD + +////////////////////////////////////////////// +// // +// BLOODSUCKERS // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/latejoin/bloodsucker + name = "Bloodsucker Infiltrator" + config_tag = "latejoin_bloodsucker" + antag_datum = ANTAG_DATUM_BLOODSUCKER + antag_flag = ROLE_TRAITOR + restricted_roles = list("AI", "Cyborg") + protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") + required_candidates = 1 + weight = 3 + cost = 10 + requirements = list(90,80,70,60,55,50,45,40,35,30) + high_population_requirement = 30 + repeatable = TRUE + +/datum/dynamic_ruleset/latejoin/bloodsucker/execute() + var/mob/M = pick(candidates) + assigned += M.mind + M.mind.special_role = antag_flag + if(mode.make_bloodsucker(M.mind)) + mode.bloodsuckers += M + return TRUE diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index 56b02a1364..e5bb0af464 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -21,6 +21,7 @@ requirements = list(50,50,50,50,50,50,50,50,50,50) high_population_requirement = 40 antag_cap = list(1,1,1,1,2,2,2,2,3,3) + always_max_weight = TRUE var/autotraitor_cooldown = 450 // 15 minutes (ticks once per 2 sec) /datum/dynamic_ruleset/roundstart/traitor/pre_execute() @@ -778,3 +779,42 @@ var/ramp_up_final = CLAMP(round(meteorminutes/rampupdelta), 1, 10) spawn_meteors(ramp_up_final, wavetype) + +////////////////////////////////////////////// +// // +// BLOODSUCKERS // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/roundstart/bloodsucker + name = "Bloodsuckers" + config_tag = "bloodsucker" + persistent = TRUE + antag_flag = ROLE_BLOODSUCKER + antag_datum = ANTAG_DATUM_BLOODSUCKER + minimum_required_age = 0 + protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") + restricted_roles = list("Cyborg", "AI") + required_candidates = 1 + weight = 2 + cost = 15 + scaling_cost = 10 + requirements = list(90,80,70,60,50,50,50,50,50,50) + high_population_requirement = 50 + antag_cap = list(1,1,1,1,1,2,2,2,2,2) + +/datum/dynamic_ruleset/roundstart/bloodsucker/pre_execute() + var/num_bloodsuckers = antag_cap[indice_pop] * (scaled_times + 1) + for (var/i = 1 to num_bloodsuckers) + var/mob/M = pick_n_take(candidates) + assigned += M.mind + M.mind.special_role = ROLE_BLOODSUCKER + M.mind.restricted_roles = restricted_roles + return TRUE + +/datum/dynamic_ruleset/roundstart/bloodsucker/execute() + mode.check_start_sunlight() + for(var/datum/mind/M in assigned) + if(mode.make_bloodsucker(M)) + mode.bloodsuckers += M + return TRUE diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 4d7b346241..3a258599b7 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -81,6 +81,7 @@ ///Everyone should now be on the station and have their normal gear. This is the place to give the special roles extra things /datum/game_mode/proc/post_setup(report) //Gamemodes can override the intercept report. Passing TRUE as the argument will force a report. + //finalize_monster_hunters() Disabled for now if(!report) report = !CONFIG_GET(flag/no_intercept_report) addtimer(CALLBACK(GLOBAL_PROC, .proc/display_roundstart_logout_report), ROUNDSTART_LOGOUT_REPORT_TIME) @@ -305,48 +306,88 @@ // The odds become: // Player A: 150 / 250 = 0.6 = 60% // Player B: 100 / 250 = 0.4 = 40% -/datum/game_mode/proc/antag_pick(list/datum/candidates) + +//Use return list if you want a list, with the arg being the number you want returned. +//WARNING: THIS PROC DOES NOT TAKE INTO ACCOUNT WHAT SSPersistence ALREADY HAS FOR "ADJUST ANTAG REP". If this is used more than once +//and the person rolls more than once, they will not get even more deduction! +//More efficient if you use return list instead of calling this multiple times +//fail_default_pick makes it use pick() instead of antag rep if it can't find anyone +//allow_zero_if_insufficient allows it to pick people with zero rep if there isn't enough antags +/datum/game_mode/proc/antag_pick(list/datum/mind/candidates, return_list = FALSE, fail_default_pick = TRUE, allow_zero_if_insufficient = TRUE) if(!CONFIG_GET(flag/use_antag_rep)) // || candidates.len <= 1) return pick(candidates) - // Tickets start at 100 - var/DEFAULT_ANTAG_TICKETS = CONFIG_GET(number/default_antag_tickets) + //whoever named the config entries is a bad person :( - // You may use up to 100 extra tickets (double your odds) - var/MAX_TICKETS_PER_ROLL = CONFIG_GET(number/max_tickets_per_roll) - - - var/total_tickets = 0 - - MAX_TICKETS_PER_ROLL += DEFAULT_ANTAG_TICKETS - - var/p_ckey - var/p_rep - - for(var/datum/mind/mind in candidates) - p_ckey = ckey(mind.key) - total_tickets += min(SSpersistence.antag_rep[p_ckey] + DEFAULT_ANTAG_TICKETS, MAX_TICKETS_PER_ROLL) - - var/antag_select = rand(1,total_tickets) - var/current = 1 - - for(var/datum/mind/mind in candidates) - p_ckey = ckey(mind.key) - p_rep = SSpersistence.antag_rep[p_ckey] - - var/previous = current - var/spend = min(p_rep + DEFAULT_ANTAG_TICKETS, MAX_TICKETS_PER_ROLL) - current += spend - - if(antag_select >= previous && antag_select <= (current-1)) - SSpersistence.antag_rep_change[p_ckey] = -(spend - DEFAULT_ANTAG_TICKETS) - -// WARNING("AR_DEBUG: Player [mind.key] won spending [spend] tickets from starting value [SSpersistence.antag_rep[p_ckey]]") - - return mind - - WARNING("Something has gone terribly wrong. /datum/game_mode/proc/antag_pick failed to select a candidate. Falling back to pick()") - return pick(candidates) + //Tickets you get for free + var/free_tickets = CONFIG_GET(number/default_antag_tickets) + //Max extra tickets you can use + var/additional_tickets = CONFIG_GET(number/max_tickets_per_roll) + + var/list/ckey_to_mind = list() //this is admittedly shitcode but I'm webediting + var/list/prev_tickets = SSpersistence.antag_rep //cache for hyper-speed in theory. how many tickets someone has stored + var/list/curr_tickets = list() //how many tickets someone has for *this* antag roll, so with the free tickets + var/list/datum/mind/insufficient = list() //who got cucked out of an antag roll due to not having *any* tickets + for(var/datum/mind/M in candidates) + var/mind_ckey = ckey(M.key) + var/can_spend = min(prev_tickets[mind_ckey], additional_tickets) //they can only spend up to config/max_tickets_per_roll + var/amount = can_spend + free_tickets //but they get config/default_antag_tickets for free + if(amount <= 0) //if they don't have any + insufficient += M //too bad! + continue + curr_tickets[mind_ckey] = amount + ckey_to_mind[mind_ckey] = M //make sure we can look them up after picking + + if(!return_list) //return a single guy + var/ckey + if(length(curr_tickets)) + ckey = pickweight(curr_tickets) + SSpersistence.antag_rep_change[ckey] = -(curr_tickets[ckey] - free_tickets) //deduct what they spent + var/mind = ckey_to_mind[ckey] || (allow_zero_if_insufficient? pick(insufficient) : null) //we want their mind + if(!mind) //no mind + var/warning = "WARNING: No antagonists were successfully picked by /datum/gamemode/proc/antag_pick()![fail_default_pick? " Defaulting to pick()!":""]" + message_admins(warning) + log_game(warning) + if(fail_default_pick) + mind = pick(candidates) + return mind + else //the far more efficient and proper use of this, to get a list + var/list/rolled = list() + var/list/spend_tickets = list() + for(var/i in 1 to return_list) + if(!length(curr_tickets)) //ah heck, we're out of candidates.. + break + var/ckey = pickweight(curr_tickets) //pick + rolled += ckey //add + spend_tickets[ckey] = curr_tickets[ckey] - free_tickets + curr_tickets -= ckey //don't roll them again + var/missing = return_list - length(rolled) + var/list/add + if((missing > 0) && allow_zero_if_insufficient) //need more.. + for(var/i in 1 to missing) + if(!length(insufficient)) + break //still not enough + var/datum/mind/M = pick_n_take(insufficient) + add += M + if(!length(rolled) && !length(add)) //if no one could normally roll AND no one can zero roll + var/warning = "WARNING: No antagonists were successfully picked by /datum/gamemode/proc/antag_pick()![fail_default_pick? " Defaulting to pick()!":""]" + message_admins(warning) + log_game(warning) + var/list/failed = list() + if(fail_default_pick) + var/list/C = candidates.Copy() + for(var/i in 1 to return_list) + if(!length(C)) + break + failed += pick_n_take(C) + return failed //Wew, no one qualified! + for(var/i in 1 to length(rolled)) + var/ckey = rolled[i] + SSpersistence.antag_rep_change[ckey] = -(spend_tickets[ckey]) //deduct what all of the folks who rolled spent + rolled[i] = ckey_to_mind[ckey] //whoever called us wants minds, not ckeys + if(add) + rolled += add + return rolled /datum/game_mode/proc/get_players_for_role(role) var/list/players = list() diff --git a/modular_citadel/code/game/gamemodes/gangs/dominator.dm b/code/game/gamemodes/gangs/dominator.dm similarity index 100% rename from modular_citadel/code/game/gamemodes/gangs/dominator.dm rename to code/game/gamemodes/gangs/dominator.dm diff --git a/modular_citadel/code/game/gamemodes/gangs/dominator_countdown.dm b/code/game/gamemodes/gangs/dominator_countdown.dm similarity index 100% rename from modular_citadel/code/game/gamemodes/gangs/dominator_countdown.dm rename to code/game/gamemodes/gangs/dominator_countdown.dm diff --git a/modular_citadel/code/game/gamemodes/gangs/gang.dm b/code/game/gamemodes/gangs/gang.dm similarity index 100% rename from modular_citadel/code/game/gamemodes/gangs/gang.dm rename to code/game/gamemodes/gangs/gang.dm diff --git a/modular_citadel/code/game/gamemodes/gangs/gang_datums.dm b/code/game/gamemodes/gangs/gang_datums.dm similarity index 100% rename from modular_citadel/code/game/gamemodes/gangs/gang_datums.dm rename to code/game/gamemodes/gangs/gang_datums.dm diff --git a/modular_citadel/code/game/gamemodes/gangs/gang_decals.dm b/code/game/gamemodes/gangs/gang_decals.dm similarity index 100% rename from modular_citadel/code/game/gamemodes/gangs/gang_decals.dm rename to code/game/gamemodes/gangs/gang_decals.dm diff --git a/modular_citadel/code/game/gamemodes/gangs/gang_hud.dm b/code/game/gamemodes/gangs/gang_hud.dm similarity index 100% rename from modular_citadel/code/game/gamemodes/gangs/gang_hud.dm rename to code/game/gamemodes/gangs/gang_hud.dm diff --git a/modular_citadel/code/game/gamemodes/gangs/gang_items.dm b/code/game/gamemodes/gangs/gang_items.dm similarity index 100% rename from modular_citadel/code/game/gamemodes/gangs/gang_items.dm rename to code/game/gamemodes/gangs/gang_items.dm diff --git a/modular_citadel/code/game/gamemodes/gangs/gang_pen.dm b/code/game/gamemodes/gangs/gang_pen.dm similarity index 100% rename from modular_citadel/code/game/gamemodes/gangs/gang_pen.dm rename to code/game/gamemodes/gangs/gang_pen.dm diff --git a/modular_citadel/code/game/gamemodes/gangs/gangs.dm b/code/game/gamemodes/gangs/gangs.dm similarity index 100% rename from modular_citadel/code/game/gamemodes/gangs/gangs.dm rename to code/game/gamemodes/gangs/gangs.dm diff --git a/modular_citadel/code/game/gamemodes/gangs/gangtool.dm b/code/game/gamemodes/gangs/gangtool.dm similarity index 100% rename from modular_citadel/code/game/gamemodes/gangs/gangtool.dm rename to code/game/gamemodes/gangs/gangtool.dm diff --git a/modular_citadel/code/game/gamemodes/gangs/implant_gang.dm b/code/game/gamemodes/gangs/implant_gang.dm similarity index 100% rename from modular_citadel/code/game/gamemodes/gangs/implant_gang.dm rename to code/game/gamemodes/gangs/implant_gang.dm diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 8459819b5b..74554ac9f8 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -14,8 +14,8 @@ false_report_weight = 10 restricted_jobs = list("AI", "Cyborg") protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") - required_players = 30 - required_enemies = 2 + required_players = 20 + required_enemies = 1 recommended_enemies = 3 enemy_minimum_age = 14 diff --git a/code/game/machinery/Beacon.dm b/code/game/machinery/Beacon.dm index 3d0931d534..c98795c90b 100644 --- a/code/game/machinery/Beacon.dm +++ b/code/game/machinery/Beacon.dm @@ -25,10 +25,10 @@ // update the invisibility and icon /obj/machinery/bluespace_beacon/hide(intact) invisibility = intact ? INVISIBILITY_MAXIMUM : 0 - updateicon() + update_icon() // update the icon_state -/obj/machinery/bluespace_beacon/proc/updateicon() +/obj/machinery/bluespace_beacon/update_icon() var/state="floor_beacon" if(invisibility) @@ -45,4 +45,4 @@ else if (Beacon.loc != loc) Beacon.forceMove(loc) - updateicon() + update_icon() diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 68f7327551..520721560a 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -36,12 +36,11 @@ RefreshParts() add_inital_chems() -/obj/machinery/sleeper/Destroy() - var/obj/item/reagent_containers/sleeper_buffer/buffer = new /obj/item/reagent_containers/sleeper_buffer(loc) +/obj/machinery/sleeper/on_deconstruction() + var/obj/item/reagent_containers/sleeper_buffer/buffer = new (loc) buffer.volume = reagents.maximum_volume buffer.reagents.maximum_volume = reagents.maximum_volume reagents.trans_to(buffer.reagents, reagents.total_volume) - ..() /obj/machinery/sleeper/proc/add_inital_chems() for(var/i in available_chems) @@ -182,12 +181,14 @@ open_machine() /obj/machinery/sleeper/AltClick(mob/user) + . = ..() if(!user.canUseTopic(src, !issilicon(user))) return if(state_open) close_machine() else open_machine() + return TRUE /obj/machinery/sleeper/examine(mob/user) . = ..() diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index ff7383cd9e..5f44fccdac 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -181,8 +181,9 @@ Class Procs: if(isliving(A)) var/mob/living/L = A L.update_canmove() - SEND_SIGNAL(src, COMSIG_MACHINE_EJECT_OCCUPANT, occupant) - occupant = null + if(occupant) + SEND_SIGNAL(src, COMSIG_MACHINE_EJECT_OCCUPANT, occupant) + occupant = null /obj/machinery/proc/can_be_occupant(atom/movable/am) return occupant_typecache ? is_type_in_typecache(am, occupant_typecache) : isliving(am) diff --git a/code/game/machinery/aug_manipulator.dm b/code/game/machinery/aug_manipulator.dm index b9d63e5771..b41910f010 100644 --- a/code/game/machinery/aug_manipulator.dm +++ b/code/game/machinery/aug_manipulator.dm @@ -132,8 +132,8 @@ ..() if(!user.canUseTopic(src)) return - else - eject_part(user) + eject_part(user) + return TRUE /obj/machinery/aug_manipulator/power_change() ..() diff --git a/code/game/machinery/bloodbankgen.dm b/code/game/machinery/bloodbankgen.dm index c489f6c9c9..c92e55084d 100644 --- a/code/game/machinery/bloodbankgen.dm +++ b/code/game/machinery/bloodbankgen.dm @@ -12,7 +12,6 @@ var/filling = FALSE var/obj/item/reagent_containers/blood/bag = null var/obj/item/reagent_containers/blood/outbag = null - var/bloodstored = 0 var/maxbloodstored = 1000 var/menustat = "menu" var/efficiency = 0 @@ -20,7 +19,7 @@ /obj/machinery/bloodbankgen/Initialize() . = ..() - create_reagents(1000) + create_reagents(maxbloodstored, AMOUNT_VISIBLE) update_icon() /obj/machinery/bloodbankgen/Destroy() @@ -28,12 +27,13 @@ QDEL_NULL(outbag) return ..() -/obj/machinery/bloodbankgen/contents_explosion(severity, target) - ..() +/obj/machinery/bloodbankgen/examine(mob/user) + . = ..() if(bag) - bag.ex_act(severity, target) + . += "It has \a [bag.name] hooked to its input slot. The counter reads: \"Current Capacity: [bag.reagents.total_volume] of [bag.reagents.maximum_volume]\"" if(outbag) - outbag.ex_act(severity, target) + . += "It has \a [bag.name] hooked to its output slot. The counter reads: \"Current Capacity: [outbag.reagents.total_volume] of [outbag.reagents.maximum_volume]\"" + /obj/machinery/bloodbankgen/handle_atom_del(atom/A) ..() @@ -115,80 +115,48 @@ /obj/machinery/bloodbankgen/process() if(!is_operational()) - return PROCESS_KILL - - bloodstored = reagents.total_volume + return var/transfer_amount = 20 if(draining) - if(reagents.total_volume >= reagents.maximum_volume) - draining = FALSE + if(reagents.total_volume >= reagents.maximum_volume || !bag || !bag.reagents.total_volume) + beep_stop_pumping() return - - if(bag) - if(bag.reagents.total_volume) - var/datum/reagent/blood/B = bag.reagents.has_reagent("blood") - if(B) - var/amount = reagents.maximum_volume - reagents.total_volume //monitor the machine's internal storage - amount = min(amount, transfer_amount) - if(!amount) - draining = FALSE - updateUsrDialog() - visible_message("[src] beeps loudly.") - playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) - return - - if(bag.blood_type == "SY") //no infinite loops using synthetics. - reagents.add_reagent("syntheticblood", amount) - else - reagents.add_reagent("syntheticblood", (amount+(5*efficiency))) - - if(bag.reagents.total_volume >= amount) - bag.reagents.remove_reagent("blood", amount) - else - visible_message("[src] beeps loudly.") - playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) - draining = FALSE - - bag.update_icon() - update_icon() - updateUsrDialog() - else - draining = FALSE - updateUsrDialog() + var/blood_amount = bag.reagents.get_reagent_amount("blood") + //monitor the machine and blood bag's reagents storage. + var/amount = min(blood_amount, min(transfer_amount, reagents.maximum_volume - reagents.total_volume)) + if(!amount) + beep_stop_pumping() return + var/bonus = bag.blood_type == "SY" ? 0 : 5 * efficiency //no infinite loops using synthetics. + reagents.add_reagent("syntheticblood", amount + bonus) + bag.reagents.remove_reagent("blood", amount) + update_icon() if(filling) - if(!reagents || !reagents.total_volume) - filling = FALSE //there ain't anything in the machine yo. + if(!reagents.total_volume || !outbag || outbag.reagents.total_volume >= outbag.reagents.maximum_volume) + beep_stop_pumping("[src] pings.", TRUE) return - if(outbag && outbag.reagents.total_volume < outbag.reagents.maximum_volume) - var/amount = outbag.reagents.maximum_volume - outbag.reagents.total_volume //monitor the output bag's internal storage - amount = min(amount, transfer_amount) - if(!amount) - filling = FALSE - visible_message("[src] pings.") - playsound(loc, 'sound/machines/beep.ogg', 50, 1) - updateUsrDialog() - return + //monitor the output bag's reagents storage. + var/amount = min(transfer_amount, outbag.reagents.maximum_volume - outbag.reagents.total_volume) + reagents.trans_to(outbag, amount) + update_icon() - reagents.trans_to(outbag, amount) - outbag.update_icon() - update_icon() - updateUsrDialog() - else - visible_message("[src] pings.") - playsound(loc, 'sound/machines/beep.ogg', 50, 1) - filling = FALSE - updateUsrDialog() - return +/obj/machinery/bloodbankgen/proc/beep_stop_pumping(msg = "[src] beeps loudly.", out_instead_of_in = FALSE) + if(out_instead_of_in) + filling = FALSE + else + draining = FALSE + updateUsrDialog() + audible_message(msg) + playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) /obj/machinery/bloodbankgen/attackby(obj/item/O, mob/user, params) if(user.a_intent == INTENT_HARM) return ..() - if(default_deconstruction_screwdriver(user, "bloodbank-off", "bloodbank-off", O)) + if(default_deconstruction_screwdriver(user, "bloodbank-off", "bloodbank-off", O) || default_unfasten_wrench(user, O, 20) == SUCCESSFUL_UNFASTEN) if(bag) var/obj/item/reagent_containers/blood/B = bag B.forceMove(drop_location()) @@ -204,31 +172,37 @@ return if(istype(O, /obj/item/reagent_containers/blood)) - . = 1 //no afterattack - if(!panel_open) - if(bag && outbag) - to_chat(user, "This machine already has bags attached.") - - if(!bag && !outbag) - var/choice = alert(user, "Choose where to place [O]", "", "Input", "Cancel", "Output") - switch(choice) - if("Cancel") - return FALSE - if("Input") - attachinput(O, user) - if("Output") - attachoutput(O, user) - else if(!bag) - attachinput(O, user) - else if(!outbag) - attachoutput(O, user) - else - to_chat(user, "Close the maintenance panel first.") - return + . = TRUE //no afterattack + var/msg + if(panel_open) + . += "Close the maintenance panel" + if(!anchored) + . += "[msg ? " and a" : "A"]nchor its bolts" + if(length(msg)) + to_chat(user, "[msg] first.") + return + if(bag && outbag) + to_chat(user, "This machine already has bags attached.") + if(!bag && !outbag) + var/choice = alert(user, "Choose where to place [O]", "", "Input", "Cancel", "Output") + switch(choice) + if("Cancel") + return FALSE + if("Input") + attachinput(O, user) + if("Output") + attachoutput(O, user) + else if(!bag) + attachinput(O, user) + else if(!outbag) + attachoutput(O, user) else to_chat(user, "You cannot put this in [src]!") +/obj/machinery/bloodbankgen/is_operational() + return ..() && anchored + /obj/machinery/bloodbankgen/ui_interact(mob/user) . = ..() @@ -268,7 +242,7 @@ if(!bag && !outbag) dat += "
    No containers inside, please insert container.
    " - var/datum/browser/popup = new(user, "bloodbankgen", name, 350, 520) + var/datum/browser/popup = new(user, "bloodbankgen", name, 350, 420) popup.set_content(dat) popup.open() @@ -306,6 +280,7 @@ if(usr && Adjacent(usr) && !issiliconoradminghost(usr)) usr.put_in_hands(bag) bag = null + draining = null update_icon() /obj/machinery/bloodbankgen/proc/detachoutput() @@ -314,6 +289,7 @@ if(usr && Adjacent(usr) && !issiliconoradminghost(usr)) usr.put_in_hands(outbag) outbag = null + filling = null update_icon() /obj/machinery/bloodbankgen/proc/attachinput(obj/item/O, mob/user) @@ -339,23 +315,22 @@ to_chat(user, "There is already something in this slot!") /obj/machinery/bloodbankgen/Topic(href, href_list) - if(..() || panel_open) + . = ..() + if(. | !is_operational()) return usr.set_machine(src) if(href_list["activateinput"]) activateinput() - updateUsrDialog() else if(href_list["detachinput"]) detachinput() - updateUsrDialog() else if(href_list["activateoutput"]) activateoutput() - updateUsrDialog() else if(href_list["detachoutput"]) detachoutput() - updateUsrDialog() + + updateUsrDialog() diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index 1839e44e3b..1c0635fd3d 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -13,7 +13,7 @@ var/chargelevel = -1 var/charge_rate = 500 -/obj/machinery/cell_charger/proc/updateicon() +/obj/machinery/cell_charger/update_icon() cut_overlays() if(charging) add_overlay(image(charging.icon, charging.icon_state)) @@ -53,7 +53,7 @@ charging = W user.visible_message("[user] inserts a cell into [src].", "You insert a cell into [src].") chargelevel = -1 - updateicon() + update_icon() else if(!charging && default_deconstruction_screwdriver(user, icon_state, icon_state, W)) return @@ -76,7 +76,7 @@ charging.update_icon() charging = null chargelevel = -1 - updateicon() + update_icon() /obj/machinery/cell_charger/attack_hand(mob/user) . = ..() @@ -127,4 +127,4 @@ use_power(charge_rate) charging.give(charge_rate) //this is 2558, efficient batteries exist - updateicon() + update_icon() diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 056beb2e96..e8e15ff586 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -133,12 +133,13 @@ ..() /obj/structure/frame/computer/AltClick(mob/user) - ..() + . = ..() if(!isliving(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) return if(anchored) to_chat(usr, "You must unwrench [src] before rotating it!") - return + return TRUE setDir(turn(dir, -90)) + return TRUE diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index e8e8e1cdd6..3bdb635d39 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -170,19 +170,19 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) return TRUE /obj/machinery/computer/card/AltClick(mob/user) - ..() + . = ..() if(!user.canUseTopic(src, !issilicon(user)) || !is_operational()) return if(inserted_modify_id) if(id_eject(user, inserted_modify_id)) inserted_modify_id = null updateUsrDialog() - return + return TRUE if(inserted_scan_id) if(id_eject(user, inserted_scan_id)) inserted_scan_id = null updateUsrDialog() - return + return TRUE /obj/machinery/computer/card/ui_interact(mob/user) . = ..() diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index b5cb066b3a..22a523c58b 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -42,12 +42,6 @@ . = ..() GLOB.shuttle_caller_list += src -/obj/machinery/computer/communications/process() - if(..()) - var/ai_autoupdate = aistate != STATE_STATUSDISPLAY && aistate != STATE_CALLSHUTTLE && aistate != STATE_PURCHASE && aistate != STATE_VIEWMESSAGE - var/machine_user_autoupdate = state != STATE_STATUSDISPLAY && state != STATE_CALLSHUTTLE && state != STATE_PURCHASE && state != STATE_VIEWMESSAGE - updateDialog(machine_user_autoupdate,ai_autoupdate) - /obj/machinery/computer/communications/Topic(href, href_list) if(..()) return @@ -76,7 +70,7 @@ if(check_access(I)) authenticated = 1 auth_id = "[I.registered_name] ([I.assignment])" - if((20 in I.access)) + if((ACCESS_CAPTAIN in I.access)) authenticated = 2 playsound(src, 'sound/machines/terminal_on.ogg', 50, 0) if(obj_flags & EMAGGED) @@ -285,7 +279,7 @@ // OMG CENTCOM LETTERHEAD if("MessageCentCom") - if(authenticated==2) + if(authenticated) if(!checkCCcooldown()) to_chat(usr, "Arrays recycling. Please stand by.") return @@ -586,8 +580,6 @@ popup.set_content(dat) popup.open() - popup.set_content(dat) - popup.open() /obj/machinery/computer/communications/proc/get_javascript_header(form_id) var/dat = {" - \ No newline at end of file + diff --git a/icons/effects/96x96.dmi b/icons/effects/96x96.dmi index a9f20ae8a8..c0b5ef5b40 100644 Binary files a/icons/effects/96x96.dmi and b/icons/effects/96x96.dmi differ diff --git a/icons/misc/language.dmi b/icons/misc/language.dmi index dcd10a51b7..6f6f2546d5 100644 Binary files a/icons/misc/language.dmi and b/icons/misc/language.dmi differ diff --git a/icons/misc/mark_icons.dmi b/icons/misc/mark_icons.dmi new file mode 100644 index 0000000000..1d8472752b Binary files /dev/null and b/icons/misc/mark_icons.dmi differ diff --git a/icons/mob/accessories.dmi b/icons/mob/accessories.dmi index 33964645ee..cda7cca404 100644 Binary files a/icons/mob/accessories.dmi and b/icons/mob/accessories.dmi differ diff --git a/icons/mob/actions/actions_elites.dmi b/icons/mob/actions/actions_elites.dmi new file mode 100644 index 0000000000..335261b0f6 Binary files /dev/null and b/icons/mob/actions/actions_elites.dmi differ diff --git a/icons/mob/actions/actions_silicon.dmi b/icons/mob/actions/actions_silicon.dmi index cd997a25ac..cf3d7a2a95 100644 Binary files a/icons/mob/actions/actions_silicon.dmi and b/icons/mob/actions/actions_silicon.dmi differ diff --git a/icons/mob/actions/actions_spells.dmi b/icons/mob/actions/actions_spells.dmi index 30927d3608..072bfc8fe3 100644 Binary files a/icons/mob/actions/actions_spells.dmi and b/icons/mob/actions/actions_spells.dmi differ diff --git a/icons/mob/actions/bloodsucker.dmi b/icons/mob/actions/bloodsucker.dmi new file mode 100644 index 0000000000..c08509dbbd Binary files /dev/null and b/icons/mob/actions/bloodsucker.dmi differ diff --git a/icons/mob/animals_held.dmi b/icons/mob/animals_held.dmi new file mode 100644 index 0000000000..82a065d93a Binary files /dev/null and b/icons/mob/animals_held.dmi differ diff --git a/icons/mob/animals_held_lh.dmi b/icons/mob/animals_held_lh.dmi new file mode 100644 index 0000000000..6c407c850b Binary files /dev/null and b/icons/mob/animals_held_lh.dmi differ diff --git a/icons/mob/animals_held_rh.dmi b/icons/mob/animals_held_rh.dmi new file mode 100644 index 0000000000..322dad06d2 Binary files /dev/null and b/icons/mob/animals_held_rh.dmi differ diff --git a/icons/mob/custom_w.dmi b/icons/mob/custom_w.dmi index b572338fc6..a73da3aa0c 100644 Binary files a/icons/mob/custom_w.dmi and b/icons/mob/custom_w.dmi differ diff --git a/icons/mob/feet.dmi b/icons/mob/feet.dmi index c57a7cc112..2188952740 100644 Binary files a/icons/mob/feet.dmi and b/icons/mob/feet.dmi differ diff --git a/icons/mob/feet_digi.dmi b/icons/mob/feet_digi.dmi index a8e6c49423..e0a9cd462d 100644 Binary files a/icons/mob/feet_digi.dmi and b/icons/mob/feet_digi.dmi differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 1ae6abed66..365ed5afd9 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 164fabe806..8ea155256c 100644 Binary files a/icons/mob/hud.dmi and b/icons/mob/hud.dmi differ diff --git a/icons/mob/inhands/64x64_lefthand.dmi b/icons/mob/inhands/64x64_lefthand.dmi index 1b450ab3e0..6b47171066 100644 Binary files a/icons/mob/inhands/64x64_lefthand.dmi and b/icons/mob/inhands/64x64_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/idcards_lefthand.dmi b/icons/mob/inhands/equipment/idcards_lefthand.dmi index 53b40584e7..dd7f6fbbe2 100644 Binary files a/icons/mob/inhands/equipment/idcards_lefthand.dmi and b/icons/mob/inhands/equipment/idcards_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/idcards_righthand.dmi b/icons/mob/inhands/equipment/idcards_righthand.dmi index 19a6f77c28..a7483ca2eb 100644 Binary files a/icons/mob/inhands/equipment/idcards_righthand.dmi and b/icons/mob/inhands/equipment/idcards_righthand.dmi differ diff --git a/icons/mob/inhands/weapons/guns_lefthand.dmi b/icons/mob/inhands/weapons/guns_lefthand.dmi index 8978d17237..a166610826 100644 Binary files a/icons/mob/inhands/weapons/guns_lefthand.dmi and b/icons/mob/inhands/weapons/guns_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/guns_righthand.dmi b/icons/mob/inhands/weapons/guns_righthand.dmi index 3f8a876d43..47ed1adfee 100644 Binary files a/icons/mob/inhands/weapons/guns_righthand.dmi and b/icons/mob/inhands/weapons/guns_righthand.dmi differ diff --git a/icons/mob/inhands/weapons/melee_lefthand.dmi b/icons/mob/inhands/weapons/melee_lefthand.dmi index 092881ee01..fc82db43ae 100644 Binary files a/icons/mob/inhands/weapons/melee_lefthand.dmi and b/icons/mob/inhands/weapons/melee_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/melee_righthand.dmi b/icons/mob/inhands/weapons/melee_righthand.dmi index ede430390c..a93a4e38d5 100644 Binary files a/icons/mob/inhands/weapons/melee_righthand.dmi and b/icons/mob/inhands/weapons/melee_righthand.dmi differ diff --git a/icons/mob/lavaland/lavaland_elites.dmi b/icons/mob/lavaland/lavaland_elites.dmi new file mode 100644 index 0000000000..69032735d9 Binary files /dev/null and b/icons/mob/lavaland/lavaland_elites.dmi differ diff --git a/icons/mob/mutant_bodyparts.dmi b/icons/mob/mutant_bodyparts.dmi index f8d1f22860..7886ca39fa 100644 Binary files a/icons/mob/mutant_bodyparts.dmi and b/icons/mob/mutant_bodyparts.dmi differ diff --git a/icons/mob/neck.dmi b/icons/mob/neck.dmi index 5eb270d23f..de59a136d9 100644 Binary files a/icons/mob/neck.dmi and b/icons/mob/neck.dmi differ diff --git a/icons/mob/screen_alert.dmi b/icons/mob/screen_alert.dmi index 30b8eb8f9a..c1912d74cc 100644 Binary files a/icons/mob/screen_alert.dmi and b/icons/mob/screen_alert.dmi differ diff --git a/icons/mob/screen_elite.dmi b/icons/mob/screen_elite.dmi new file mode 100644 index 0000000000..f407fb79e4 Binary files /dev/null and b/icons/mob/screen_elite.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 07467f9770..5b84dad999 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/mob/suit_digi.dmi b/icons/mob/suit_digi.dmi index a5d37ba4a2..58dd2f5700 100644 Binary files a/icons/mob/suit_digi.dmi and b/icons/mob/suit_digi.dmi differ diff --git a/icons/mob/underwear.dmi b/icons/mob/underwear.dmi index 3174397b54..bf0df371eb 100644 Binary files a/icons/mob/underwear.dmi and b/icons/mob/underwear.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index 072511b444..0f962591a5 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/mob/uniform_digi.dmi b/icons/mob/uniform_digi.dmi index 3f1335153e..94d9f07e10 100644 Binary files a/icons/mob/uniform_digi.dmi and b/icons/mob/uniform_digi.dmi differ diff --git a/icons/obj/abductor.dmi b/icons/obj/abductor.dmi index d8968a107b..fd0893b300 100644 Binary files a/icons/obj/abductor.dmi and b/icons/obj/abductor.dmi differ diff --git a/icons/obj/clothing/accessories.dmi b/icons/obj/clothing/accessories.dmi index eb019bc44b..c62a88c829 100644 Binary files a/icons/obj/clothing/accessories.dmi and b/icons/obj/clothing/accessories.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index dbfa71226b..b3cc31fc6d 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi index e3a9f6d84e..728d244b5f 100644 Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 42f85bb69e..5d243f93b8 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index 50f9e0a207..43162f2b7e 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/custom.dmi b/icons/obj/custom.dmi index bbb813d7c9..7f42c7e250 100644 Binary files a/icons/obj/custom.dmi and b/icons/obj/custom.dmi differ diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index ac898c55b2..b03a1cdeae 100644 Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ diff --git a/icons/obj/food/burgerbread.dmi b/icons/obj/food/burgerbread.dmi index cd7fc1742b..b1d78fa078 100644 Binary files a/icons/obj/food/burgerbread.dmi and b/icons/obj/food/burgerbread.dmi differ diff --git a/icons/obj/food/donut.dmi b/icons/obj/food/donut.dmi new file mode 100644 index 0000000000..fb13ab5dfa Binary files /dev/null and b/icons/obj/food/donut.dmi differ diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index 2ea48828d2..6b29d599cc 100644 Binary files a/icons/obj/food/food.dmi and b/icons/obj/food/food.dmi differ diff --git a/icons/obj/food/piecake.dmi b/icons/obj/food/piecake.dmi index a74acb4e29..5638235217 100644 Binary files a/icons/obj/food/piecake.dmi and b/icons/obj/food/piecake.dmi differ diff --git a/icons/obj/food/snowcones.dmi b/icons/obj/food/snowcones.dmi index 8a06cf4e82..8f5b4f8992 100644 Binary files a/icons/obj/food/snowcones.dmi and b/icons/obj/food/snowcones.dmi differ diff --git a/icons/obj/food/soupsalad.dmi b/icons/obj/food/soupsalad.dmi index c6df0a2603..a6e492608f 100644 Binary files a/icons/obj/food/soupsalad.dmi and b/icons/obj/food/soupsalad.dmi differ diff --git a/icons/obj/guns/energy.dmi b/icons/obj/guns/energy.dmi index d23af6c9b4..bba3efc951 100644 Binary files a/icons/obj/guns/energy.dmi and b/icons/obj/guns/energy.dmi differ diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi index 6d5365f7fa..24ec5797d4 100644 Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ diff --git a/icons/obj/hydroponics/equipment.dmi b/icons/obj/hydroponics/equipment.dmi index dd4d1e1f93..37adf54711 100644 Binary files a/icons/obj/hydroponics/equipment.dmi and b/icons/obj/hydroponics/equipment.dmi differ diff --git a/icons/obj/hydroponics/growing.dmi b/icons/obj/hydroponics/growing.dmi index 45e73c9281..469b1e1aff 100644 Binary files a/icons/obj/hydroponics/growing.dmi and b/icons/obj/hydroponics/growing.dmi differ diff --git a/icons/obj/hydroponics/harvest.dmi b/icons/obj/hydroponics/harvest.dmi index 9d4eefc3bb..a57719fb3a 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 7bc9ac1fe3..8695d03b3c 100644 Binary files a/icons/obj/hydroponics/seeds.dmi and b/icons/obj/hydroponics/seeds.dmi differ diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi index e6e0b940a8..e3540a782b 100644 Binary files a/icons/obj/items_and_weapons.dmi and b/icons/obj/items_and_weapons.dmi differ diff --git a/icons/obj/janitor.dmi b/icons/obj/janitor.dmi index 1e1033e38e..4886cb8441 100644 Binary files a/icons/obj/janitor.dmi and b/icons/obj/janitor.dmi differ diff --git a/icons/obj/kitchen.dmi b/icons/obj/kitchen.dmi index 422554715a..cb67f0d6f9 100644 Binary files a/icons/obj/kitchen.dmi and b/icons/obj/kitchen.dmi differ diff --git a/icons/obj/lavaland/artefacts.dmi b/icons/obj/lavaland/artefacts.dmi index 7f11ba29d4..7ae1ed5a0e 100644 Binary files a/icons/obj/lavaland/artefacts.dmi and b/icons/obj/lavaland/artefacts.dmi differ diff --git a/icons/obj/lavaland/elite_trophies.dmi b/icons/obj/lavaland/elite_trophies.dmi new file mode 100644 index 0000000000..d194c93853 Binary files /dev/null and b/icons/obj/lavaland/elite_trophies.dmi differ diff --git a/icons/obj/lavaland/legionnaire_bonfire.dmi b/icons/obj/lavaland/legionnaire_bonfire.dmi new file mode 100644 index 0000000000..aed00ed001 Binary files /dev/null and b/icons/obj/lavaland/legionnaire_bonfire.dmi differ diff --git a/icons/obj/lavaland/tumor.dmi b/icons/obj/lavaland/tumor.dmi new file mode 100644 index 0000000000..a41224c823 Binary files /dev/null and b/icons/obj/lavaland/tumor.dmi differ diff --git a/icons/obj/library.dmi b/icons/obj/library.dmi index 20e0f5f73c..45181b7c8d 100644 Binary files a/icons/obj/library.dmi and b/icons/obj/library.dmi differ diff --git a/icons/obj/module.dmi b/icons/obj/module.dmi index 037525150e..ace24db5ff 100644 Binary files a/icons/obj/module.dmi and b/icons/obj/module.dmi differ diff --git a/icons/obj/monitors.dmi b/icons/obj/monitors.dmi index e38760b84d..93a1908fba 100644 Binary files a/icons/obj/monitors.dmi and b/icons/obj/monitors.dmi differ diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi index ad1d34836d..a434994846 100644 Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ diff --git a/icons/obj/projectiles_impact.dmi b/icons/obj/projectiles_impact.dmi index bac35e68e1..5506f6f866 100644 Binary files a/icons/obj/projectiles_impact.dmi and b/icons/obj/projectiles_impact.dmi differ diff --git a/icons/obj/projectiles_muzzle.dmi b/icons/obj/projectiles_muzzle.dmi index 2f1d6d90c6..884605c373 100644 Binary files a/icons/obj/projectiles_muzzle.dmi and b/icons/obj/projectiles_muzzle.dmi differ diff --git a/icons/obj/projectiles_tracer.dmi b/icons/obj/projectiles_tracer.dmi index 56442452e7..34718d7066 100644 Binary files a/icons/obj/projectiles_tracer.dmi and b/icons/obj/projectiles_tracer.dmi differ diff --git a/icons/obj/stack_objects.dmi b/icons/obj/stack_objects.dmi index 7cb212384a..a80dc92b9a 100644 Binary files a/icons/obj/stack_objects.dmi and b/icons/obj/stack_objects.dmi differ diff --git a/icons/obj/stake.dmi b/icons/obj/stake.dmi new file mode 100644 index 0000000000..dfc1dc08bf Binary files /dev/null and b/icons/obj/stake.dmi differ diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index 3b8b67ea5c..8ede8c66ab 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ diff --git a/icons/obj/tiles.dmi b/icons/obj/tiles.dmi index 90d648d0be..2de24e2499 100644 Binary files a/icons/obj/tiles.dmi and b/icons/obj/tiles.dmi differ diff --git a/icons/obj/vamp_obj.dmi b/icons/obj/vamp_obj.dmi new file mode 100644 index 0000000000..89718773dd Binary files /dev/null and b/icons/obj/vamp_obj.dmi differ diff --git a/icons/obj/vending.dmi b/icons/obj/vending.dmi index 553336115b..143171f414 100644 Binary files a/icons/obj/vending.dmi and b/icons/obj/vending.dmi differ diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index 18ebd6b91e..87d5e88cc9 100644 Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ diff --git a/icons/turf/smoothrocks.dmi b/icons/turf/smoothrocks.dmi index ba2bbce955..20314cff5b 100644 Binary files a/icons/turf/smoothrocks.dmi and b/icons/turf/smoothrocks.dmi differ diff --git a/modular_citadel/code/datums/mood_events/chem_events.dm b/modular_citadel/code/datums/mood_events/chem_events.dm deleted file mode 100644 index 94bfd86b6d..0000000000 --- a/modular_citadel/code/datums/mood_events/chem_events.dm +++ /dev/null @@ -1,59 +0,0 @@ -/datum/mood_event/eigenstate - mood_change = -3 - description = "Where the hell am I? Is this an alternative dimension ?\n" - -/datum/mood_event/enthrall - mood_change = 5 - -/datum/mood_event/enthrall/add_effects(message) - description = "[message]\n" - -/datum/mood_event/enthrallpraise - mood_change = 10 - timeout = 1 MINUTES - -/datum/mood_event/enthrallpraise/add_effects(message) - description = "[message]\n" - -/datum/mood_event/enthrallscold - mood_change = -10 - timeout = 1 MINUTES - -/datum/mood_event/enthrallscold/add_effects(message) - description = "[message]\n"//aaa I'm not kinky enough for this - -/datum/mood_event/enthrallmissing1 - mood_change = -5 - -/datum/mood_event/enthrallmissing1/add_effects(message) - description = "[message]\n" - -/datum/mood_event/enthrallmissing2 - mood_change = -10 - -/datum/mood_event/enthrallmissing2/add_effects(message) - description = "[message]\n" - -/datum/mood_event/enthrallmissing3 - mood_change = -15 - -/datum/mood_event/enthrallmissing3/add_effects(message) - description = "[message]\n" - -/datum/mood_event/enthrallmissing4 - mood_change = -25 - -/datum/mood_event/enthrallmissing4/add_effects(message) - description = "[message]\n" - -/datum/mood_event/InLove - mood_change = 10 - -/datum/mood_event/InLove/add_effects(message) - description = "[message]\n" - -/datum/mood_event/MissingLove - mood_change = -10 - -/datum/mood_event/MissingLove/add_effects(message) - description = "[message]\n" diff --git a/modular_citadel/code/datums/mood_events/generic_negative_events.dm b/modular_citadel/code/datums/mood_events/generic_negative_events.dm deleted file mode 100644 index bb04b0b283..0000000000 --- a/modular_citadel/code/datums/mood_events/generic_negative_events.dm +++ /dev/null @@ -1,21 +0,0 @@ -// Citadel-specific negative moodlets - -/datum/mood_event/plushjack - description = "I have butchered a plush recently.\n" - mood_change = -1 - timeout = 2 MINUTES - -/datum/mood_event/plush_nostuffing - description = "A plush I tried to pet had no stuffing...\n" - mood_change = -1 - timeout = 2 MINUTES - -/datum/mood_event/emptypred - description = "I had to let someone out.\n" - mood_change = -2 - timeout = 1 MINUTES - -/datum/mood_event/emptyprey - description = "It feels quite cold out here.\n" - mood_change = -2 - timeout = 1 MINUTES diff --git a/modular_citadel/code/datums/mood_events/generic_positive_events.dm b/modular_citadel/code/datums/mood_events/generic_positive_events.dm deleted file mode 100644 index ffa661e6e9..0000000000 --- a/modular_citadel/code/datums/mood_events/generic_positive_events.dm +++ /dev/null @@ -1,34 +0,0 @@ -// Citadel-specific positive moodlets - -/datum/mood_event/headpat - description = "Headpats are nice.\n" - mood_change = 2 - timeout = 2 MINUTES - -/datum/mood_event/hugbox - description = "I hugged a box of hugs recently.\n" - mood_change = 1 - timeout = 2 MINUTES - -/datum/mood_event/plushpet - description = "I pet a plush recently.\n" - mood_change = 1 - timeout = 3000 - -/datum/mood_event/plushplay - description = "I've played with plushes recently.\n" - mood_change = 3 - timeout = 3000 - -/datum/mood_event/orgasm - description = "I came!\n" //funny meme haha - mood_change = 3 - timeout = 1000 - -/datum/mood_event/fedpred - description = "I've devoured someone!\n" - mood_change = 3 - -/datum/mood_event/fedprey - description = "It feels quite cozy in here.\n" - mood_change = 3 diff --git a/modular_citadel/code/datums/mood_events/moodular.dm b/modular_citadel/code/datums/mood_events/moodular.dm deleted file mode 100644 index ee502c7b39..0000000000 --- a/modular_citadel/code/datums/mood_events/moodular.dm +++ /dev/null @@ -1,27 +0,0 @@ -// Modular stuff to use with Citadel-specific moods. - -// box of hugs -/obj/item/storage/box/hug/attack_self(mob/user) - . = ..() - SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT,"hugbox", /datum/mood_event/hugbox) - -//Removed headpats here, duplicate code? - -// plush petting -/obj/item/toy/plush/attack_self(mob/user) - . = ..() - if(stuffed || grenade) - SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT,"plushpet", /datum/mood_event/plushpet) - else - SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT,"plush_nostuffing", /datum/mood_event/plush_nostuffing) - -// Jack the Ripper starring plush -/obj/item/toy/plush/attackby(obj/item/I, mob/living/user, params) - . = ..() - if(I.get_sharpness()) - if(!grenade) - SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT,"plushjack", /datum/mood_event/plushjack) - -// plush playing (plush-on-plush action) - if(istype(I, /obj/item/toy/plush)) - SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT,"plushplay", /datum/mood_event/plushplay) diff --git a/modular_citadel/code/datums/mutations/hulk.dm b/modular_citadel/code/datums/mutations/hulk.dm deleted file mode 100644 index 601238707d..0000000000 --- a/modular_citadel/code/datums/mutations/hulk.dm +++ /dev/null @@ -1,2 +0,0 @@ -/datum/mutation/human/hulk - species_allowed = list("fly") \ No newline at end of file diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index 0b48b68e31..5d9010a7bd 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -608,18 +608,18 @@ UnregisterSignal(owner, COMSIG_GLOB_LIVING_SAY_SPECIAL) -/datum/status_effect/chem/enthrall/proc/owner_hear(var/hearer, message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) +/datum/status_effect/chem/enthrall/proc/owner_hear(datum/source, list/hearing_args) if(owner.client?.prefs.lewdchem == FALSE) return if (cTriggered > 0) return var/mob/living/carbon/C = owner - raw_message = lowertext(raw_message) + var/raw_message = lowertext(hearing_args[HEARING_RAW_MESSAGE]) for (var/trigger in customTriggers) var/cached_trigger = lowertext(trigger) if (findtext(raw_message, cached_trigger))//if trigger1 is the message cTriggered = 5 //Stops triggerparties and as a result, stops servercrashes. - log_game("FERMICHEM: MKULTRA: [owner] ckey: [owner.key] has been triggered with [cached_trigger] from [speaker] saying: \"[message]\". (their master being [master] ckey: [enthrallID].)") + log_game("FERMICHEM: MKULTRA: [owner] ckey: [owner.key] has been triggered with [cached_trigger] from [hearing_args[HEARING_SPEAKER]] saying: \"[hearing_args[HEARING_MESSAGE]]\". (their master being [master] ckey: [enthrallID].)") //Speak (Forces player to talk) if (lowertext(customTriggers[trigger][1]) == "speak")//trigger2 @@ -656,7 +656,7 @@ C.adjustArousalLoss(10) to_chat(C, "You feel a surge of arousal!") else - C.throw_at(get_step_towards(speaker,C), 3, 1) //cut this if it's too hard to get working + C.throw_at(get_step_towards(hearing_args[HEARING_SPEAKER],C), 3, 1) //cut this if it's too hard to get working //kneel (knockdown) else if (lowertext(customTriggers[trigger]) == "kneel")//as close to kneeling as you can get, I suppose. diff --git a/modular_citadel/code/game/gamemodes/miniantags/bot_swarm/swarmer_event.dm b/modular_citadel/code/game/gamemodes/miniantags/bot_swarm/swarmer_event.dm deleted file mode 100644 index 5dfe1dfcbd..0000000000 --- a/modular_citadel/code/game/gamemodes/miniantags/bot_swarm/swarmer_event.dm +++ /dev/null @@ -1,3 +0,0 @@ -/datum/round_event_control/spawn_swarmer - weight = 0 - max_occurrences = 0 \ No newline at end of file diff --git a/modular_citadel/code/game/gamemodes/revolution/revolution.dm b/modular_citadel/code/game/gamemodes/revolution/revolution.dm deleted file mode 100644 index b377fc9fbd..0000000000 --- a/modular_citadel/code/game/gamemodes/revolution/revolution.dm +++ /dev/null @@ -1,5 +0,0 @@ -/datum/game_mode/revolution - restricted_jobs = list("Security Officer", "Warden", "Detective", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer", "Quartermaster") - false_report_weight = 10 - required_players = 20 - required_enemies = 1 diff --git a/modular_citadel/code/game/machinery/firealarm.dm b/modular_citadel/code/game/machinery/firealarm.dm deleted file mode 100644 index 7c136f4e4d..0000000000 --- a/modular_citadel/code/game/machinery/firealarm.dm +++ /dev/null @@ -1,10 +0,0 @@ -/obj/machinery/firealarm/alt_attack_hand(mob/user) - if(can_interact(usr)) - var/area/A = get_area(src) - if(istype(A)) - if(A.fire) - reset() - else - alarm() - return TRUE - return FALSE diff --git a/modular_citadel/code/game/machinery/vending.dm b/modular_citadel/code/game/machinery/vending.dm index a71175c345..53fe6a8f56 100755 --- a/modular_citadel/code/game/machinery/vending.dm +++ b/modular_citadel/code/game/machinery/vending.dm @@ -43,6 +43,7 @@ vend_reply = "Have fun, you shameless pervert!" products = list( /obj/item/clothing/under/maid = 5, + /obj/item/clothing/under/janimaid = 5, /obj/item/clothing/neck/petcollar = 5, /obj/item/clothing/neck/petcollar/choker = 5, /obj/item/clothing/neck/petcollar/leather = 5, @@ -51,6 +52,7 @@ /obj/item/clothing/mask/muzzle = 4, /obj/item/clothing/under/stripper_pink = 3, /obj/item/clothing/under/stripper_green = 3, + /obj/item/clothing/under/gear_harness = 10, /obj/item/dildo/custom = 5, /obj/item/electropack/shockcollar = 3, /obj/item/assembly/signaler = 3 @@ -60,6 +62,7 @@ /obj/item/key/collar = 2, /obj/item/clothing/head/kitty = 3, /obj/item/clothing/head/rabbitears = 3, + /obj/item/clothing/under/keyholesweater = 2, /obj/item/clothing/under/mankini = 2, /obj/item/clothing/under/jabroni = 2, /obj/item/dildo/flared/huge = 3, @@ -68,7 +71,6 @@ ) premium = list( /obj/item/clothing/accessory/skullcodpiece/fake = 3, - /obj/item/clothing/under/gear_harness = 10, /obj/item/reagent_containers/glass/bottle/hexacrocin = 10 ) refill_canister = /obj/item/vending_refill/kink diff --git a/modular_citadel/code/game/machinery/wishgranter.dm b/modular_citadel/code/game/machinery/wishgranter.dm index f24062a126..48024a2228 100644 --- a/modular_citadel/code/game/machinery/wishgranter.dm +++ b/modular_citadel/code/game/machinery/wishgranter.dm @@ -63,7 +63,9 @@ to_chat(user, "Your wish is 'granted', but at a terrible cost...") to_chat(user, "The Wish Granter punishes you for your selfishness, claiming your soul and warping your eyes to match the darkness in your heart.") user.dna.add_mutation(BLINDMUT) - user.adjust_eye_damage(100) + var/obj/item/organ/eyes/eyes = user.getorganslot(ORGAN_SLOT_EYES) + if(eyes) + eyes.applyOrganDamage(eyes.maxHealth) var/list/destinations = list() for(var/obj/item/beacon/B in GLOB.teleportbeacons) var/turf/T = get_turf(B) diff --git a/modular_citadel/code/game/objects/effects/temporary_visuals/projectiles/impact.dm b/modular_citadel/code/game/objects/effects/temporary_visuals/projectiles/impact.dm deleted file mode 100644 index 20052c3351..0000000000 --- a/modular_citadel/code/game/objects/effects/temporary_visuals/projectiles/impact.dm +++ /dev/null @@ -1,4 +0,0 @@ -/obj/effect/projectile/impact/laser/wavemotion - name = "particle impact" - icon = 'modular_citadel/icons/obj/projectiles_impact.dmi' - icon_state = "impact_wavemotion" \ No newline at end of file diff --git a/modular_citadel/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm b/modular_citadel/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm deleted file mode 100644 index 5114cb223e..0000000000 --- a/modular_citadel/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm +++ /dev/null @@ -1,4 +0,0 @@ -/obj/effect/projectile/muzzle/laser/wavemotion - name = "particle backblast" - icon = 'modular_citadel/icons/obj/projectiles_muzzle.dmi' - icon_state = "muzzle_wavemotion" \ No newline at end of file diff --git a/modular_citadel/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm b/modular_citadel/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm deleted file mode 100644 index 8110fcabeb..0000000000 --- a/modular_citadel/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm +++ /dev/null @@ -1,4 +0,0 @@ -/obj/effect/projectile/tracer/laser/wavemotion - name = "particle trail" - icon = 'modular_citadel/icons/obj/projectiles_tracer.dmi' - icon_state = "tracer_wavemotion" \ No newline at end of file diff --git a/modular_citadel/code/game/objects/items/storage/firstaid.dm b/modular_citadel/code/game/objects/items/storage/firstaid.dm deleted file mode 100755 index 3845cb6fd7..0000000000 --- a/modular_citadel/code/game/objects/items/storage/firstaid.dm +++ /dev/null @@ -1,175 +0,0 @@ -//help I have no idea what I'm doing - -/obj/item/storage/firstaid - icon = 'modular_citadel/icons/firstaid.dmi' - -/obj/item/storage/firstaid/Initialize(mapload) - . = ..() - icon_state = pick("[initial(icon_state)]","[initial(icon_state)]2","[initial(icon_state)]3","[initial(icon_state)]4") - -/obj/item/storage/firstaid/fire - icon_state = "burn" - -/obj/item/storage/firstaid/fire/Initialize(mapload) - . = ..() - icon_state = pick("[initial(icon_state)]","[initial(icon_state)]2","[initial(icon_state)]3","[initial(icon_state)]4") - -/obj/item/storage/firstaid/toxin - icon_state = "toxin" - -/obj/item/storage/firstaid/toxin/Initialize(mapload) - . = ..() - icon_state = pick("[initial(icon_state)]","[initial(icon_state)]2","[initial(icon_state)]3","[initial(icon_state)]4") - -/obj/item/storage/firstaid/o2 - icon_state = "oxy" - -/obj/item/storage/firstaid/radbgone - icon_state = "rad" - -/obj/item/storage/firstaid/radbgone/Initialize(mapload) - . = ..() - icon_state = pick("[initial(icon_state)]","[initial(icon_state)]2","[initial(icon_state)]3","[initial(icon_state)]4") - -/obj/item/storage/firstaid/tactical - icon_state = "tactical" - -//hijacking the minature first aids for hypospray boxes. <3 -/obj/item/storage/hypospraykit - name = "hypospray kit" - desc = "It's a kit containing a hypospray and specific treatment chemical-filled vials." - icon = 'modular_citadel/icons/firstaid.dmi' - icon_state = "firstaid-mini" - lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' - throw_speed = 3 - throw_range = 7 - var/empty = FALSE - item_state = "firstaid" - -/obj/item/storage/hypospraykit/ComponentInitialize() - . = ..() - var/datum/component/storage/STR = GetComponent(/datum/component/storage) - STR.max_items = 12 - STR.can_hold = typecacheof(list( - /obj/item/hypospray/mkii, - /obj/item/reagent_containers/glass/bottle/vial)) - -/obj/item/storage/hypospraykit/regular - icon_state = "firstaid-mini" - desc = "A hypospray kit with general use vials." - -/obj/item/storage/hypospraykit/regular/PopulateContents() - if(empty) - return - new /obj/item/hypospray/mkii/tricord(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord(src) - -/obj/item/storage/hypospraykit/fire - name = "burn treatment hypospray kit" - desc = "A specialized hypospray kit for burn treatments. Apply with sass." - icon_state = "burn-mini" - item_state = "firstaid-ointment" - -/obj/item/storage/hypospraykit/fire/PopulateContents() - if(empty) - return - new /obj/item/hypospray/mkii/burn(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane(src) - -/obj/item/storage/hypospraykit/toxin - name = "toxin treatment hypospray kit" - icon_state = "toxin-mini" - item_state = "firstaid-toxin" - -/obj/item/storage/hypospraykit/toxin/PopulateContents() - if(empty) - return - new /obj/item/hypospray/mkii/toxin(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin(src) - -/obj/item/storage/hypospraykit/o2 - name = "oxygen deprivation hypospray kit" - icon_state = "oxy-mini" - item_state = "firstaid-o2" - -/obj/item/storage/hypospraykit/o2/PopulateContents() - if(empty) - return - new /obj/item/hypospray/mkii/oxygen(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin(src) - -/obj/item/storage/hypospraykit/enlarge - name = "organomegaly trauma hypospray kit" - icon_state = "enlarge-mini" - item_state = "firstaid-brute" - -/obj/item/storage/hypospraykit/enlarge/PopulateContents() - if(empty) - return - new /obj/item/hypospray/mkii/enlarge(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/breastreduction(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/breastreduction(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/breastreduction(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/penisreduction(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/penisreduction(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/penisreduction(src) - -/obj/item/storage/hypospraykit/brute - name = "brute trauma hypospray kit" - icon_state = "brute-mini" - item_state = "firstaid-brute" - -/obj/item/storage/hypospraykit/brute/PopulateContents() - if(empty) - return - new /obj/item/hypospray/mkii/brute(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine(src) - -/obj/item/storage/hypospraykit/tactical - name = "combat hypospray kit" - desc = "A hypospray kit best suited for combat situations." - icon_state = "tactical-mini" - -/obj/item/storage/hypospraykit/tactical/PopulateContents() - if(empty) - return - new /obj/item/defibrillator/compact/combat/loaded(src) - new /obj/item/hypospray/mkii/CMO/combat(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat(src) - -/obj/item/storage/hypospraykit/cmo - name = "deluxe hypospray kit" - desc = "A kit containing a Deluxe hypospray and Vials." - icon_state = "tactical-mini" - -/obj/item/storage/hypospraykit/cmo/ComponentInitialize() - . = ..() - var/datum/component/storage/STR = GetComponent(/datum/component/storage) - STR.max_items = 6 - STR.can_hold = typecacheof(list( - /obj/item/hypospray/mkii, - /obj/item/reagent_containers/glass/bottle/vial)) - -/obj/item/storage/hypospraykit/cmo/PopulateContents() - if(empty) - return - new /obj/item/hypospray/mkii/CMO(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/tricord(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/charcoal(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/salglu(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/dexalin(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/synthflesh(src) - -/obj/item/storage/box/vials - name = "box of hypovials" - -/obj/item/storage/box/vials/PopulateContents() - for(var/i in 1 to 7) - new /obj/item/reagent_containers/glass/bottle/vial/small( src ) diff --git a/modular_citadel/code/modules/arousal/genitals.dm b/modular_citadel/code/modules/arousal/genitals.dm index 9fa6d66d98..8d70464a2d 100644 --- a/modular_citadel/code/modules/arousal/genitals.dm +++ b/modular_citadel/code/modules/arousal/genitals.dm @@ -132,7 +132,7 @@ amount += 0.1 var/multiplier = fluid_mult if(reagents.total_volume >= 5) - multiplier *= 0.5 + multiplier *= 0.8 if(reagents.total_volume < reagents.maximum_volume) reagents.isolate_reagent(fluid_id)//remove old reagents if it changed and just clean up generally reagents.add_reagent(fluid_id, (amount * multiplier))//generate the cum diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm index a82d02703d..105f5e157d 100644 --- a/modular_citadel/code/modules/arousal/organs/breasts.dm +++ b/modular_citadel/code/modules/arousal/organs/breasts.dm @@ -7,6 +7,7 @@ slot = ORGAN_SLOT_BREASTS size = "c" //refer to the breast_values static list below for the cups associated number values fluid_id = "milk" + fluid_rate = MILK_RATE shape = "pair" genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH|GENITAL_FUID_PRODUCTION masturbation_verb = "massage" @@ -63,7 +64,7 @@ //Allows breasts to grow and change size, with sprite changes too. //maximum wah //Comical sizes slow you down in movement and actions. -//Rediculous sizes makes you more cumbersome. +//Ridiculous sizes makes you more cumbersome. //this is far too lewd wah /obj/item/organ/genital/breasts/modify_size(modifier, min = -INFINITY, max = INFINITY) @@ -119,7 +120,7 @@ shape = D.features["breasts_shape"] fluid_id = D.features["breasts_fluid"] if(!D.features["breasts_producing"]) - DISABLE_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION) + DISABLE_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION|CAN_CLIMAX_WITH|CAN_MASTURBATE_WITH) if(!isnum(size)) cached_size = breast_values[size] else diff --git a/modular_citadel/code/modules/arousal/toys/dildos.dm b/modular_citadel/code/modules/arousal/toys/dildos.dm index 24c8de1b60..964c9964ad 100644 --- a/modular_citadel/code/modules/arousal/toys/dildos.dm +++ b/modular_citadel/code/modules/arousal/toys/dildos.dm @@ -37,15 +37,11 @@ name = "[sizeword][dildo_shape] [can_customize ? "custom " : ""][dildo_type]" /obj/item/dildo/AltClick(mob/living/user) - if(QDELETED(src)) - return - if(!isliving(user)) - return - if(isAI(user)) - return - if(user.stat > 0)//unconscious or dead + . = ..() + if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) return customize(user) + return TRUE /obj/item/dildo/proc/customize(mob/living/user) if(!can_customize) @@ -150,7 +146,8 @@ obj/item/dildo/custom playsound(loc, 'sound/weapons/gagging.ogg', 50, 1, -1) user.Stun(150) user.adjust_blurriness(8) - user.adjust_eye_damage(10) + var/obj/item/organ/eyes/eyes = user.getorganslot(ORGAN_SLOT_EYES) + eyes?.applyOrganDamage(10) return MANUAL_SUICIDE /obj/item/dildo/flared/huge/suicide_act(mob/living/user) @@ -159,6 +156,5 @@ obj/item/dildo/custom playsound(loc, 'sound/weapons/gagging.ogg', 50, 2, -1) user.Stun(300) user.adjust_blurriness(8) - user.adjust_eye_damage(15) return MANUAL_SUICIDE diff --git a/modular_citadel/code/modules/client/loadout/__donator.dm b/modular_citadel/code/modules/client/loadout/__donator.dm index d75ffc2347..cf68666532 100644 --- a/modular_citadel/code/modules/client/loadout/__donator.dm +++ b/modular_citadel/code/modules/client/loadout/__donator.dm @@ -458,3 +458,33 @@ datum/gear/darksabresheath category = SLOT_NECK path = /obj/item/clothing/neck/necklace/onion ckeywhitelist = list("cdrcross") + +/datum/gear/mikubikini + name = "starlight singer bikini" + category = SLOT_W_UNIFORM + path = /obj/item/clothing/under/mikubikini + ckeywhitelist = list("grandvegeta") + +/datum/gear/mikujacket + name = "starlight singer jacket" + category = SLOT_WEAR_SUIT + path = /obj/item/clothing/suit/mikujacket + ckeywhitelist = list("grandvegeta") + +/datum/gear/mikuhair + name = "starlight singer hair" + category = SLOT_W_UNIFORM + path = /obj/item/clothing/head/mikuhair + ckeywhitelist = list("grandvegeta") + +/datum/gear/mikugloves + name = "starlight singer gloves" + category = SLOT_GLOVES + path = /obj/item/clothing/gloves/mikugloves + ckeywhitelist = list("grandvegeta") + +/datum/gear/mikuleggings + name = "starlight singer leggings" + category = SLOT_SHOES + path = /obj/item/clothing/shoes/sneakers/mikuleggings + ckeywhitelist = list("grandvegeta") diff --git a/modular_citadel/code/modules/client/loadout/backpack.dm b/modular_citadel/code/modules/client/loadout/backpack.dm index c2713b49be..82fe89eb6e 100644 --- a/modular_citadel/code/modules/client/loadout/backpack.dm +++ b/modular_citadel/code/modules/client/loadout/backpack.dm @@ -63,16 +63,6 @@ category = SLOT_IN_BACKPACK path = /obj/item/dildo/custom -/datum/gear/paperbin - name = "Paper Bin" - category = SLOT_IN_BACKPACK - path = /obj/item/paper_bin - -/datum/gear/crayons - name = "Box of crayons" - category = SLOT_IN_BACKPACK - path = /obj/item/storage/crayons - /datum/gear/toykatana name = "Toy Katana" category = SLOT_IN_BACKPACK @@ -99,4 +89,30 @@ /datum/gear/tape name = "Spare cassette tape" category = SLOT_IN_BACKPACK - path = /obj/item/tape/random \ No newline at end of file + path = /obj/item/tape/random + +/datum/gear/newspaper + name = "Newspaper" + category = SLOT_IN_BACKPACK + path = /obj/item/newspaper + +/datum/gear/paperbin + name = "Paper Bin" + category = SLOT_IN_BACKPACK + path = /obj/item/paper_bin + +/datum/gear/crayons + name = "Box of crayons" + category = SLOT_IN_BACKPACK + path = /obj/item/storage/crayons + +/datum/gear/multipen + name = "A multicolored pen" + category = SLOT_IN_BACKPACK + path = /obj/item/pen/fourcolor + +/datum/gear/fountainpen + name = "A fancy pen" + category = SLOT_IN_BACKPACK + path = /obj/item/pen/fountain + cost = 2 \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/head.dm b/modular_citadel/code/modules/client/loadout/head.dm index 2d65f093bb..3e7eb39823 100644 --- a/modular_citadel/code/modules/client/loadout/head.dm +++ b/modular_citadel/code/modules/client/loadout/head.dm @@ -91,4 +91,14 @@ category = SLOT_HEAD path = /obj/item/clothing/head/caphat/formal/fedcover/sec restricted_desc = "Engineering, Security, and Cargo" - restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") \ No newline at end of file + restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") + +/datum/gear/santahatr + name = "Red Santa Hat" + category = SLOT_HEAD + path = /obj/item/clothing/head/christmashat + +/datum/gear/santahatg + name = "Green Santa Hat" + category = SLOT_HEAD + path = /obj/item/clothing/head/christmashatg \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/mask.dm b/modular_citadel/code/modules/client/loadout/mask.dm index 036e3d3795..82824814ae 100644 --- a/modular_citadel/code/modules/client/loadout/mask.dm +++ b/modular_citadel/code/modules/client/loadout/mask.dm @@ -7,3 +7,10 @@ name = "Fake moustache" category = SLOT_WEAR_MASK path = /obj/item/clothing/mask/fakemoustache + +/datum/gear/joy + name = "Joy mask" + category = SLOT_WEAR_MASK + path = /obj/item/clothing/mask/joy + cost = 9 + diff --git a/modular_citadel/code/modules/client/loadout/shoes.dm b/modular_citadel/code/modules/client/loadout/shoes.dm index 6688529c73..7b3bee6638 100644 --- a/modular_citadel/code/modules/client/loadout/shoes.dm +++ b/modular_citadel/code/modules/client/loadout/shoes.dm @@ -56,4 +56,19 @@ /datum/gear/bluecuffs name = "Blue leg wraps" category = SLOT_SHOES - path= /obj/item/clothing/shoes/wraps/blue \ No newline at end of file + path= /obj/item/clothing/shoes/wraps/blue + +/datum/gear/christmasbootsr + name = "Red Christmas Boots" + category = SLOT_SHOES + path= /obj/item/clothing/shoes/winterboots/christmasbootsr + +/datum/gear/christmasbootsg + name = "Green Christmas Boots" + category = SLOT_SHOES + path= /obj/item/clothing/shoes/winterboots/christmasbootsg + +/datum/gear/santaboots + name = "Santa Boots" + category = SLOT_SHOES + path= /obj/item/clothing/shoes/winterboots/santaboots \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/suit.dm b/modular_citadel/code/modules/client/loadout/suit.dm index d3a8258fc0..b8f3bd1cc1 100644 --- a/modular_citadel/code/modules/client/loadout/suit.dm +++ b/modular_citadel/code/modules/client/loadout/suit.dm @@ -64,6 +64,11 @@ category = SLOT_WEAR_SUIT path = /obj/item/clothing/suit/hooded/wintercoat +/datum/gear/coat/aformal + name = "Assistant's formal winter coat" + category = SLOT_WEAR_SUIT + path = /obj/item/clothing/suit/hooded/wintercoat/aformal + /* Commented out until it is "balanced" /datum/gear/coat/sec name = "Security winter coat" @@ -77,45 +82,43 @@ category = SLOT_WEAR_SUIT path = /obj/item/clothing/suit/hooded/wintercoat/medical restricted_roles = list("Chief Medical Officer", "Medical Doctor") // Reserve it to Medical Doctors and their boss, the Chief Medical Officer - -/* Commented out until there is a Chemistry Winter Coat -/datum/gear/coat/med/chem - name = "Chemistry winter coat" + +/datum/gear/coat/robotics + name = "Robotics winter coat" category = SLOT_WEAR_SUIT - path = /obj/item/clothing/suit/hooded/wintercoat/medical/chemistry - restricted_roles = list("Chief Medical Officer", "Chemist") // Reserve it to Chemists and their boss, the Chief Medical Officer -*/ + path = /obj/item/clothing/suit/hooded/wintercoat/robotics + restricted_roles = list("Research Director", "Roboticist") /datum/gear/coat/sci name = "Science winter coat" category = SLOT_WEAR_SUIT path = /obj/item/clothing/suit/hooded/wintercoat/science restricted_roles = list("Research Director", "Scientist", "Roboticist") // Reserve it to the Science Departement - + /datum/gear/coat/eng name = "Engineering winter coat" category = SLOT_WEAR_SUIT path = /obj/item/clothing/suit/hooded/wintercoat/engineering restricted_roles = list("Chief Engineer", "Station Engineer") // Reserve it to Station Engineers and their boss, the Chief Engineer - + /datum/gear/coat/eng/atmos name = "Atmospherics winter coat" category = SLOT_WEAR_SUIT path = /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos restricted_roles = list("Chief Engineer", "Atmospheric Technician") // Reserve it to Atmos Techs and their boss, the Chief Engineer - + /datum/gear/coat/hydro name = "Hydroponics winter coat" category = SLOT_WEAR_SUIT path = /obj/item/clothing/suit/hooded/wintercoat/hydro restricted_roles = list("Head of Personnel", "Botanist") // Reserve it to Botanists and their boss, the Head of Personnel - + /datum/gear/coat/cargo name = "Cargo winter coat" category = SLOT_WEAR_SUIT path = /obj/item/clothing/suit/hooded/wintercoat/cargo restricted_roles = list("Quartermaster", "Cargo Technician") // Reserve it to Cargo Techs and their boss, the Quartermaster - + /datum/gear/coat/miner name = "Mining winter coat" category = SLOT_WEAR_SUIT @@ -201,3 +204,18 @@ path = /obj/item/clothing/suit/storage/fluff/modernfedcoat/eng restricted_desc = "Engineering and Cargo" restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Cargo Technician", "Shaft Miner", "Quartermaster") + +/datum/gear/christmascoatr + name = "Red Christmas Coat" + category = SLOT_WEAR_SUIT + path = /obj/item/clothing/suit/hooded/wintercoat/christmascoatr + +/datum/gear/christmascoatg + name = "Green Christmas Coat" + category = SLOT_WEAR_SUIT + path = /obj/item/clothing/suit/hooded/wintercoat/christmascoatg + +/datum/gear/christmascoatrg + name = "Red and Green Christmas Coat" + category = SLOT_WEAR_SUIT + path = /obj/item/clothing/suit/hooded/wintercoat/christmascoatrg \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/uniform.dm b/modular_citadel/code/modules/client/loadout/uniform.dm index abdf8e3a24..72709069eb 100644 --- a/modular_citadel/code/modules/client/loadout/uniform.dm +++ b/modular_citadel/code/modules/client/loadout/uniform.dm @@ -73,6 +73,11 @@ category = SLOT_W_UNIFORM path = /obj/item/clothing/under/skirt/purple +/datum/gear/skirtplaid + name = "Plaid skirt" + category = SLOT_W_UNIFORM + path = /obj/item/clothing/under/plaid_skirt + /datum/gear/schoolgirlblue name = "Blue Schoolgirl Uniform" category = SLOT_W_UNIFORM @@ -108,6 +113,11 @@ category = SLOT_W_UNIFORM path = /obj/item/clothing/under/pants/camo +/datum/gear/athleticshorts + name = "Athletic Shorts" + category = SLOT_W_UNIFORM + path = /obj/item/clothing/under/shorts + /datum/gear/bjeans name = "Black Jeans" category = SLOT_W_UNIFORM @@ -180,6 +190,11 @@ category = SLOT_W_UNIFORM path = /obj/item/clothing/under/bb_sweater/blue +/datum/gear/keyholesweater + name = "Keyhole Sweater" + category = SLOT_W_UNIFORM + path = /obj/item/clothing/under/keyholesweater + /datum/gear/polykilt name = "Polychromic Kilt" category = SLOT_W_UNIFORM @@ -313,4 +328,38 @@ /datum/gear/gear_harnesses name = "Gear Harness" category = SLOT_W_UNIFORM - path = /obj/item/clothing/under/gear_harness \ No newline at end of file + path = /obj/item/clothing/under/gear_harness + +//Christmas +/datum/gear/christmasmaler + name = "Red Masculine Christmas Suit" + category = SLOT_W_UNIFORM + path = /obj/item/clothing/under/christmas/christmasmaler + +/datum/gear/christmasmaleg + name = "Green Masculine Christmas Suit" + category = SLOT_W_UNIFORM + path = /obj/item/clothing/under/christmas/christmasmaleg + +/datum/gear/christmasfemaler + name = "Red Feminine Christmas Suit" + category = SLOT_W_UNIFORM + path = /obj/item/clothing/under/christmas/christmasfemaler + +/datum/gear/christmasfemaleg + name = "Green Feminine Christmas Suit" + category = SLOT_W_UNIFORM + path = /obj/item/clothing/under/christmas/christmasfemaleg + +/datum/gear/pinkstripper + name = "Pink stripper outfit" + category = SLOT_W_UNIFORM + path = /obj/item/clothing/under/stripper_pink + cost = 3 + +/datum/gear/greenstripper + name = "Green stripper outfit" + category = SLOT_W_UNIFORM + path = /obj/item/clothing/under/stripper_green + cost = 3 + diff --git a/modular_citadel/code/modules/clothing/clothing.dm b/modular_citadel/code/modules/clothing/clothing.dm index b23e805f92..843b7a84c9 100644 --- a/modular_citadel/code/modules/clothing/clothing.dm +++ b/modular_citadel/code/modules/clothing/clothing.dm @@ -56,7 +56,7 @@ add_overlay(tertiary_overlay) /obj/item/clothing/AltClick(mob/living/user) - ..() + . = ..() if(hasprimary | hassecondary | hastertiary) var/choice = input(user,"polychromic thread options", "Clothing Recolor") as null|anything in list("[hasprimary ? "Primary Color" : ""]", "[hassecondary ? "Secondary Color" : ""]", "[hastertiary ? "Tertiary Color" : ""]") //generates a list depending on the enabled overlays switch(choice) //Lets the list's options actually lead to something @@ -78,6 +78,7 @@ tertiary_color = sanitize_hexcolor(tertiary_color_input, desired_format=6, include_crunch=1) update_icon() user.regenerate_icons() + return TRUE /obj/item/clothing/examine(mob/user) . = ..() diff --git a/modular_citadel/code/modules/clothing/head/head.dm b/modular_citadel/code/modules/clothing/head/head.dm deleted file mode 100644 index 7656766053..0000000000 --- a/modular_citadel/code/modules/clothing/head/head.dm +++ /dev/null @@ -1,20 +0,0 @@ -/*///////////////////////////////////////////////////////////////////////////////// -/////// /////// -/////// Cit's exclusive hats, helmets, etc. go here /////// -/////// /////// -*////////////////////////////////////////////////////////////////////////////////// - -/obj/item/clothing/head/flakhelm //Actually the M1 Helmet - name = "flak helmet" - icon = 'modular_citadel/icons/obj/clothing/space_nam.dmi' - alternate_worn_icon = 'modular_citadel/icons/mob/clothing/space_nam.dmi' - icon_state = "m1helm" - item_state = "helmet" - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0.1, "bio" = 0, "rad" = 0, "fire" = -10, "acid" = -15) - desc = "A dilapidated helmet used in ancient wars. This one is brittle and essentially useless. An ace of spades is tucked into the band around the outer shell." - pocket_storage_component_path = /datum/component/storage/concrete/pockets/tiny/spacenam //So you can stuff other things in the elastic band instead of it simply being a fluff thing. - -//The "pocket" for the M1 helmet so you can tuck things into the elastic band - -/datum/component/storage/concrete/pockets/tiny/spacenam - attack_hand_interact = TRUE //So you can actually see what you stuff in there \ No newline at end of file diff --git a/modular_citadel/code/modules/clothing/suits/suits.dm b/modular_citadel/code/modules/clothing/suits/suits.dm index 5cce40ad09..c7fd84bd80 100644 --- a/modular_citadel/code/modules/clothing/suits/suits.dm +++ b/modular_citadel/code/modules/clothing/suits/suits.dm @@ -28,16 +28,3 @@ desc = "conceal your face in shame with this nanotrasen brand hood" flags_inv = HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR mutantrace_variation = NO_MUTANTRACE_VARIATION - -/obj/item/clothing/suit/flakjack - name = "flak jacket" - desc = "A dilapidated jacket made of a supposedly bullet-proof material (Hint: It isn't.). Smells faintly of napalm." - icon = 'modular_citadel/icons/obj/clothing/space_nam.dmi' - alternate_worn_icon = 'modular_citadel/icons/mob/clothing/space_nam.dmi' - icon_state = "flakjack" - item_state = "redtag" - blood_overlay_type = "armor" - body_parts_covered = CHEST - resistance_flags = NONE - mutantrace_variation = NO_MUTANTRACE_VARIATION - armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 5, "bio" = 0, "rad" = 0, "fire" = -5, "acid" = -15) //nylon sucks against acid \ No newline at end of file diff --git a/modular_citadel/code/modules/custom_loadout/custom_items.dm b/modular_citadel/code/modules/custom_loadout/custom_items.dm index d32fd78a44..3d88dae26c 100644 --- a/modular_citadel/code/modules/custom_loadout/custom_items.dm +++ b/modular_citadel/code/modules/custom_loadout/custom_items.dm @@ -493,6 +493,7 @@ item_state = "blueberet" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' + dynamic_hair_suffix = "" /obj/item/clothing/head/flight name = "flight goggles" @@ -509,3 +510,49 @@ icon_state = "onion" item_state = "onion" alternate_worn_icon = 'icons/mob/custom_w.dmi' + +/obj/item/clothing/under/mikubikini + name = "starlight singer bikini" + desc = " " + icon_state = "mikubikini" + item_state = "mikubikini" + icon = 'icons/obj/custom.dmi' + alternate_worn_icon = 'icons/mob/custom_w.dmi' + mutantrace_variation = NO_MUTANTRACE_VARIATION + +/obj/item/clothing/suit/mikujacket + name = "starlight singer jacket" + desc = " " + icon_state = "mikujacket" + item_state = "mikujacket" + icon = 'icons/obj/custom.dmi' + alternate_worn_icon = 'icons/mob/custom_w.dmi' + mutantrace_variation = NO_MUTANTRACE_VARIATION + +/obj/item/clothing/head/mikuhair + name = "starlight singer hair" + desc = " " + icon_state = "mikuhair" + item_state = "mikuhair" + icon = 'icons/obj/custom.dmi' + alternate_worn_icon = 'icons/mob/custom_w.dmi' + mutantrace_variation = NO_MUTANTRACE_VARIATION + flags_inv = HIDEHAIR + +/obj/item/clothing/gloves/mikugloves + name = "starlight singer gloves" + desc = " " + icon_state = "mikugloves" + item_state = "mikugloves" + icon = 'icons/obj/custom.dmi' + alternate_worn_icon = 'icons/mob/custom_w.dmi' + mutantrace_variation = NO_MUTANTRACE_VARIATION + +/obj/item/clothing/shoes/sneakers/mikuleggings + name = "starlight singer leggings" + desc = " " + icon_state = "mikuleggings" + item_state = "mikuleggings" + icon = 'icons/obj/custom.dmi' + alternate_worn_icon = 'icons/mob/custom_w.dmi' + mutantrace_variation = NO_MUTANTRACE_VARIATION diff --git a/modular_citadel/code/modules/food_and_drinks/snacks/meat.dm b/modular_citadel/code/modules/food_and_drinks/snacks/meat.dm deleted file mode 100644 index f1b5d622bc..0000000000 --- a/modular_citadel/code/modules/food_and_drinks/snacks/meat.dm +++ /dev/null @@ -1,29 +0,0 @@ -/obj/item/reagent_containers/food/snacks/carpmeat/aquatic - name = "fillet" - desc = "A fillet of one of the local water dwelling species." - -/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/ipc - icon = 'modular_citadel/icons/obj/foods.dmi' - icon_state = "ipcmeat" - desc = "Gross robot meat." - filling_color = "#000000" - tastes = list("metal" = 1) - -/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/insect - desc = "Tastes like chicken, that's... not what it is!" - icon = 'modular_citadel/icons/obj/foods.dmi' - icon_state = "mothmeat" - filling_color = "#BF896B" - tastes = list("insects" = 1) - -/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/avian - desc = "Tastes like chicken, that's because it is!" - icon = 'modular_citadel/icons/obj/foods.dmi' - icon_state = "birdmeat" - filling_color = "#BF896B" - tastes = list("chicken" = 1) - -/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/mammal - desc = "Tastes sweet... reminds you vaguely of chicken." - filling_color = "#6B8E23" - tastes = list("brains" = 1, "meat" = 1) diff --git a/modular_citadel/code/modules/mob/living/carbon/carbon.dm b/modular_citadel/code/modules/mob/living/carbon/carbon.dm index 4cc8edac1b..1c6b957d9f 100644 --- a/modular_citadel/code/modules/mob/living/carbon/carbon.dm +++ b/modular_citadel/code/modules/mob/living/carbon/carbon.dm @@ -18,30 +18,32 @@ return FALSE return . -/mob/living/carbon/proc/toggle_combat_mode(forced) - if(recoveringstam) - return TRUE +/mob/living/carbon/proc/toggle_combat_mode(forced, silent) if(!forced) - for(var/datum/status_effect/S in status_effects) + if(recoveringstam || stat != CONSCIOUS) + return TRUE + for(var/i in status_effects) + var/datum/status_effect/S = i if(S.blocks_combatmode) return TRUE combatmode = !combatmode if(voremode) toggle_vore_mode() - if(combatmode) - playsound_local(src, 'sound/misc/ui_toggle.ogg', 50, FALSE, pressure_affected = FALSE) //Sound from interbay! - else - playsound_local(src, 'sound/misc/ui_toggleoff.ogg', 50, FALSE, pressure_affected = FALSE) //Slightly modified version of the above! + if(!silent) + if(combatmode) + if(world.time >= combatmessagecooldown) + if(a_intent != INTENT_HELP) + visible_message("[src] [resting ? "tenses up" : (prob(95)? "drops into a combative stance" : (prob(95)? "poses aggressively" : "asserts dominance with their pose"))].") + else + visible_message("[src] [pick("looks","seems","goes")] [pick("alert","attentive","vigilant")].") + playsound_local(src, 'sound/misc/ui_toggle.ogg', 50, FALSE, pressure_affected = FALSE) //Sound from interbay! + else + playsound_local(src, 'sound/misc/ui_toggleoff.ogg', 50, FALSE, pressure_affected = FALSE) //Slightly modified version of the above! if(client) client.show_popup_menus = !combatmode // So we can right-click for alternate actions and all that other good shit. Also moves examine to shift+rightclick to make it possible to attack while sprinting if(hud_used && hud_used.static_inventory) for(var/obj/screen/combattoggle/selector in hud_used.static_inventory) selector.rebasetointerbay(src) - if(world.time >= combatmessagecooldown && combatmode) - if(a_intent != INTENT_HELP) - visible_message("[src] [resting ? "tenses up" : (prob(95)? "drops into a combative stance" : (prob(95)? "poses aggressively" : "asserts dominance with their pose"))].") - else - visible_message("[src] [pick("looks","seems","goes")] [pick("alert","attentive","vigilant")].") combatmessagecooldown = 10 SECONDS + world.time //This is set 100% of the time to make sure squeezing regen out of process cycles doesn't result in the combat mode message getting spammed SEND_SIGNAL(src, COMSIG_COMBAT_TOGGLED, src, combatmode) return TRUE diff --git a/modular_citadel/code/modules/mob/living/carbon/damage_procs.dm b/modular_citadel/code/modules/mob/living/carbon/damage_procs.dm index 7264d95bae..eaf5899d82 100644 --- a/modular_citadel/code/modules/mob/living/carbon/damage_procs.dm +++ b/modular_citadel/code/modules/mob/living/carbon/damage_procs.dm @@ -1,4 +1,4 @@ -/mob/living/carbon/adjustStaminaLossBuffered(amount, updating_stamina = 1) +/mob/living/carbon/adjustStaminaLossBuffered(amount, updating_health = 1) if(status_flags & GODMODE) return 0 if(CONFIG_GET(flag/disable_stambuffer)) @@ -8,7 +8,7 @@ adjustStaminaLoss(directstamloss) bufferedstam = CLAMP(bufferedstam + amount, 0, stambuffer) stambufferregentime = world.time + 10 - if(updating_stamina) + if(updating_health) update_health_hud() /mob/living/carbon/adjustStaminaLoss(amount, updating_health = TRUE, forced = FALSE, affected_zone = BODY_ZONE_CHEST) diff --git a/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm b/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm index badda6b239..15e08907d5 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm @@ -5,7 +5,8 @@ var/oldpseudoheight = pseudo_z_axis . = ..() if(. && sprinting && !(movement_type & FLYING) && canmove && !resting && m_intent == MOVE_INTENT_RUN && has_gravity(loc) && !pulledby) - doSprintLossTiles(1) + if(!HAS_TRAIT(src, TRAIT_FREESPRINT)) + doSprintLossTiles(1) if((oldpseudoheight - pseudo_z_axis) >= 8) to_chat(src, "You trip off of the elevated surface!") for(var/obj/item/I in held_items) diff --git a/modular_citadel/code/modules/mob/living/damage_procs.dm b/modular_citadel/code/modules/mob/living/damage_procs.dm index ce81c7aae7..c2ce8fd24c 100644 --- a/modular_citadel/code/modules/mob/living/damage_procs.dm +++ b/modular_citadel/code/modules/mob/living/damage_procs.dm @@ -1,4 +1,4 @@ -/mob/living/proc/adjustStaminaLossBuffered(amount, updating_stamina = TRUE, forced = FALSE) +/mob/living/proc/adjustStaminaLossBuffered(amount, updating_health = TRUE, forced = FALSE) return /mob/living/proc/doSprintLossTiles(amount) diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg archive.dm b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg archive.dm deleted file mode 100644 index 8b5c0b0af0..0000000000 --- a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg archive.dm +++ /dev/null @@ -1,76 +0,0 @@ -/obj/item/robot_module/loader - name = "loader robot module" -/obj/item/robot_module/loader/New() - ..() - emag = new /obj/item/borg/stun(src) - modules += new /obj/item/extinguisher(src) - modules += new /obj/item/weldingtool/largetank/cyborg(src) - modules += new /obj/item/screwdriver(src) - modules += new /obj/item/wrench(src) - modules += new /obj/item/crowbar(src) - modules += new /obj/item/wirecutters(src) - modules += new /obj/item/multitool(src) - modules += new /obj/item/t_scanner(src) - modules += new /obj/item/analyzer(src) - modules += new /obj/item/assembly/signaler - modules += new /obj/item/soap/nanotrasen(src) - - fix_modules() - -/obj/item/robot_module/k9 - name = "Security K-9 Unit module" -/obj/item/robot_module/k9/New() - ..() - modules += new /obj/item/restraints/handcuffs/cable/zipties/cyborg/dog(src) - modules += new /obj/item/dogborg/jaws/big(src) - modules += new /obj/item/dogborg/pounce(src) - modules += new /obj/item/clothing/mask/gas/sechailer/cyborg(src) - modules += new /obj/item/soap/tongue(src) - modules += new /obj/item/analyzer/nose(src) - modules += new /obj/item/storage/bag/borgdelivery(src) - //modules += new /obj/item/assembly/signaler(src) - //modules += new /obj/item/detective_scanner(src) - modules += new /obj/item/gun/energy/disabler/cyborg(src) - emag = new /obj/item/gun/energy/laser/cyborg(src) - fix_modules() - -/obj/item/robot_module/security/respawn_consumable(mob/living/silicon/robot/R, coeff = 1) - ..() - var/obj/item/gun/energy/gun/advtaser/cyborg/T = locate(/obj/item/gun/energy/gun/advtaser/cyborg) in get_usable_modules() - if(T) - if(T.power_supply.charge < T.power_supply.maxcharge) - var/obj/item/ammo_casing/energy/S = T.ammo_type[T.select] - T.power_supply.give(S.e_cost * coeff) - T.update_icon() - else - T.charge_tick = 0 - fix_modules() - -/obj/item/robot_module/borgi - name = "Borgi module" - -/obj/item/robot_module/borgi/New() - ..() - modules += new /obj/item/dogborg/jaws/small(src) - modules += new /obj/item/storage/bag/borgdelivery(src) - modules += new /obj/item/soap/tongue(src) - modules += new /obj/item/healthanalyzer(src) - modules += new /obj/item/analyzer/nose(src) - emag = new /obj/item/dogborg/pounce(src) - fix_modules() - -/obj/item/robot_module/medihound - name = "MediHound module" - -/obj/item/robot_module/medihound/New() - ..() - modules += new /obj/item/dogborg/jaws/small(src) - modules += new /obj/item/storage/bag/borgdelivery(src) - modules += new /obj/item/analyzer/nose(src) - modules += new /obj/item/soap/tongue(src) - modules += new /obj/item/healthanalyzer(src) - modules += new /obj/item/dogborg/sleeper(src) - modules += new /obj/item/twohanded/shockpaddles/hound(src) - modules += new /obj/item/sensor_device(src) - emag = new /obj/item/dogborg/pounce(src) - fix_modules() \ No newline at end of file diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm index d725b86ec6..98de5eed14 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm @@ -162,9 +162,6 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! to_chat(user, "[GLOB.meta_gas_names[id]]: [round(gas_concentration*100, 0.01)] %") to_chat(user, "Temperature: [round(environment.temperature-T0C)] °C") -/obj/item/analyzer/nose/AltClick(mob/user) //Barometer output for measuring when the next storm happens - . = ..() - /obj/item/analyzer/nose/afterattack(atom/target, mob/user, proximity) . = ..() if(!proximity) @@ -356,15 +353,6 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! icon = 'icons/mob/dogborg.dmi' icon_state= "kibble" -//Defibs - -/obj/item/twohanded/shockpaddles/cyborg/hound - name = "Paws of Life" - desc = "MediHound specific shock paws." - icon = 'icons/mob/dogborg.dmi' - icon_state = "defibpaddles0" - item_state = "defibpaddles0" - // Pounce stuff for K-9 /obj/item/dogborg/pounce diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm b/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm index 28327cde0e..59630186d1 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm @@ -14,7 +14,7 @@ . += speed /mob/living/silicon/robot/proc/togglesprint(shutdown = FALSE) //Basically a copypaste of the proc from /mob/living/carbon/human - if(!shutdown && (!cell || cell.charge < 25)) + if(!shutdown && (!cell || cell.charge < 25) || !cansprint) return FALSE sprinting = shutdown ? FALSE : !sprinting if(!resting && canmove) diff --git a/modular_citadel/code/modules/mob/mob.dm b/modular_citadel/code/modules/mob/mob.dm deleted file mode 100644 index aa0e6b5828..0000000000 --- a/modular_citadel/code/modules/mob/mob.dm +++ /dev/null @@ -1,27 +0,0 @@ -/mob/proc/use_that_empty_hand() //currently unused proc so i can implement 2-handing any item a lot easier in the future. - return - -/mob/say_mod(input, message_mode) - var/customsayverb = findtext(input, "*") - if(customsayverb && message_mode != MODE_WHISPER_CRIT) - message_mode = MODE_CUSTOM_SAY - return lowertext(copytext(input, 1, customsayverb)) - else - return ..() - -/atom/movable/proc/attach_spans(input, list/spans) - var/customsayverb = findtext(input, "*") - if(customsayverb) - input = capitalize(copytext(input, customsayverb+1)) - if(input) - return "[message_spans_start(spans)][input]" - else - return - -/mob/living/compose_message(atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode, face_name = FALSE) - . = ..() - if(istype(speaker, /mob/living)) - var/turf/speakturf = get_turf(speaker) - var/turf/sourceturf = get_turf(src) - if(istype(speakturf) && istype(sourceturf) && !(speakturf in get_hear(5, sourceturf))) - . = "[.]" //Don't ask how the fuck this works. It just does. diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm index e40ccfe6ea..024669757a 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm @@ -207,8 +207,10 @@ var/mob/M = loc M.update_inv_hands() /obj/item/gun/ballistic/automatic/AM4B/AltClick(mob/living/user) + . = ..() if(!in_range(src, user)) //Basic checks to prevent abuse return + . = TRUE if(user.incapacitated() || !istype(user)) to_chat(user, "You can't do that right now!") return @@ -217,6 +219,7 @@ if(body_color_input) body_color = sanitize_hexcolor(body_color_input, desired_format=6, include_crunch=1) update_icon() + /obj/item/gun/ballistic/automatic/AM4B/examine(mob/user) . = ..() . += "Alt-click to recolor it." diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/spinfusor.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/spinfusor.dm index d16df6b285..b70858c9af 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/spinfusor.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/spinfusor.dm @@ -5,7 +5,6 @@ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state= "spinner" damage = 30 - dismemberment = 25 /obj/item/projectile/bullet/spinfusor/on_hit(atom/target, blocked = FALSE) //explosion to emulate the spinfusor's AOE ..() @@ -14,22 +13,16 @@ /obj/item/ammo_casing/caseless/spinfusor name = "spinfusor disk" - desc = "A magnetic disk designed specifically for the Stormhammer magnetic cannon. Warning: extremely volatile!" + desc = "A magnetic disk designed specifically for the Stormhammer magnetic cannon. Packs a punch." projectile_type = /obj/item/projectile/bullet/spinfusor caliber = "spinfusor" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "disk" + w_class = WEIGHT_CLASS_SMALL throwforce = 15 //still deadly when thrown + force = 5 throw_speed = 3 -/obj/item/ammo_casing/caseless/spinfusor/throw_impact(atom/target) //disks detonate when thrown - if(!..()) // not caught in mid-air - visible_message("[src] detonates!") - playsound(src.loc, "sparks", 50, 1) - explosion(target, -1, -1, 1, 1, -1) - qdel(src) - return 1 - /obj/item/ammo_box/magazine/internal/spinfusor name = "spinfusor internal magazine" ammo_type = /obj/item/ammo_casing/caseless/spinfusor @@ -71,7 +64,8 @@ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "spinfusorbox" ammo_type = /obj/item/ammo_casing/caseless/spinfusor - max_ammo = 8 + w_class = WEIGHT_CLASS_NORMAL + max_ammo = 4 /datum/supply_pack/security/armory/spinfusor name = "Stormhammer Spinfusor Crate" @@ -84,7 +78,5 @@ name = "Spinfusor Disk Crate" cost = 7000 contains = list(/obj/item/ammo_box/aspinfusor, - /obj/item/ammo_box/aspinfusor, - /obj/item/ammo_box/aspinfusor, /obj/item/ammo_box/aspinfusor) - crate_name = "spinfusor disk crate" \ No newline at end of file + crate_name = "spinfusor disk crate" diff --git a/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm b/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm index 5fc75fa414..89e086687a 100644 --- a/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm +++ b/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm @@ -30,8 +30,10 @@ obj/item/gun/energy/e_gun/cx/update_icon() M.update_inv_hands() obj/item/gun/energy/e_gun/cx/AltClick(mob/living/user) + . = ..() if(!in_range(src, user)) //Basic checks to prevent abuse return + . = TRUE if(user.incapacitated() || !istype(user)) to_chat(user, "You can't do that right now!") return diff --git a/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm b/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm index be070ff7b5..735c0890af 100644 --- a/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm +++ b/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm @@ -83,15 +83,17 @@ return 1 /obj/item/gun/energy/pumpaction/AltClick(mob/living/user) //for changing firing modes since attackself is already used for pumping + . = ..() if(!in_range(src, user)) //Basic checks to prevent abuse return - if(user.incapacitated() || !istype(user)) - to_chat(user, "You can't do that right now!") - return if(ammo_type.len > 1) - select_fire(user) - update_icon() + if(user.incapacitated() || !istype(user)) + to_chat(user, "You can't do that right now!") + else + select_fire(user) + update_icon() + return TRUE /obj/item/gun/energy/pumpaction/examine(mob/user) //so people don't ask HOW TO CHANGE FIRING MODE . = ..() @@ -183,7 +185,6 @@ name = "particle blast" damage = 13 icon_state = "disablerpellet" - icon = 'modular_citadel/icons/obj/projectiles.dmi' /obj/item/projectile/beam/disabler/slug name = "positron blast" @@ -191,12 +192,10 @@ range = 14 speed = 0.6 icon_state = "disablerslug" - icon = 'modular_citadel/icons/obj/projectiles.dmi' /obj/item/projectile/energy/electrode/pump name = "electron blast" icon_state = "stunjectile" - icon = 'modular_citadel/icons/obj/projectiles.dmi' color = null nodamage = 1 knockdown = 100 diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm index ee90f985c6..7d358b4149 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm @@ -56,18 +56,17 @@ var/mob/living/carbon/human/H = M var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS) + //If they have Acute hepatic pharmacokinesis, then route processing though liver. + if(HAS_TRAIT(H, TRAIT_PHARMA) || !H.canbearoused) + var/obj/item/organ/liver/L = H.getorganslot(ORGAN_SLOT_LIVER) + if(L) + L.swelling += 0.05 + else + H.adjustToxLoss(1) + return..() + //otherwise proceed as normal if(!B) //If they don't have breasts, give them breasts. - //If they have Acute hepatic pharmacokinesis, then route processing though liver. - if(HAS_TRAIT(H, TRAIT_PHARMA) || !H.canbearoused) - var/obj/item/organ/liver/L = H.getorganslot(ORGAN_SLOT_LIVER) - if(L) - L.swelling += 0.05 - else - H.adjustToxLoss(1) - return..() - - //otherwise proceed as normal B = new if(H.dna.species.use_skintones && H.dna.features["genitals_use_skintone"]) B.color = skintone2hex(H.skin_tone) @@ -222,18 +221,17 @@ return ..() var/mob/living/carbon/human/H = M var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) + //If they have Acute hepatic pharmacokinesis, then route processing though liver. + if(HAS_TRAIT(H, TRAIT_PHARMA) || !H.canbearoused) + var/obj/item/organ/liver/L = H.getorganslot(ORGAN_SLOT_LIVER) + if(L) + L.swelling += 0.05 + else + H.adjustToxLoss(1) + return ..() + //otherwise proceed as normal if(!P)//They do have a preponderance for escapism, or so I've heard. - //If they have Acute hepatic pharmacokinesis, then route processing though liver. - if(HAS_TRAIT(H, TRAIT_PHARMA) || !H.canbearoused) - var/obj/item/organ/liver/L = H.getorganslot(ORGAN_SLOT_LIVER) - if(L) - L.swelling += 0.05 - else - H.adjustToxLoss(1) - return ..() - - //otherwise proceed as normal P = new P.length = 1 to_chat(H, "Your groin feels warm, as you feel a newly forming bulge down below.
    ") diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm index 0672d1fba6..fa4f48172b 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm @@ -101,20 +101,39 @@ pH = 7.6 metabolization_rate = 0.05 //Give them time to graft data = list("grown_volume" = 0, "injected_vol" = 0) + var/borrowed_health + color = "#FFDADA" /datum/reagent/synthtissue/reaction_mob(mob/living/M, method=TOUCH, reac_volume,show_message = 1) if(iscarbon(M)) - var/target = M.zone_selected - if (M.stat == DEAD) - show_message = 0 + var/mob/living/carbon/C = M + var/healing_factor = (((data["grown_volume"] / 100) + 1)*reac_volume) if(method in list(PATCH, TOUCH)) - M.apply_damage(reac_volume*-1.5, BRUTE, target) - M.apply_damage(reac_volume*-1.5, BURN, target) - if(show_message) - to_chat(M, "You feel your [target] heal! It stings like hell!") + if (M.stat == DEAD) + M.visible_message("The synthetic tissue rapidly grafts into [M]'s wounds, attemping to repair the damage as quickly as possible.") + borrowed_health += healing_factor + M.adjustBruteLoss(-healing_factor*2) + M.adjustFireLoss(-healing_factor*2) + M.adjustToxLoss(-healing_factor) + M.adjustCloneLoss(-healing_factor) + M.updatehealth() + if(data["grown_volume"] > 135 && ((C.health + C.oxyloss)>=80)) + if(M.revive()) + M.emote("gasp") + borrowed_health *= 2 + if(borrowed_health < 100) + borrowed_health = 100 + log_combat(M, M, "revived", src) + else + M.adjustBruteLoss(-healing_factor) + M.adjustFireLoss(-healing_factor) + to_chat(M, "You feel your flesh merge with the synthetic tissue! It stings like hell!") SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine) - if(method==INJECT) - data["injected_vol"] = reac_volume + if(method==INJECT) + data["injected_vol"] = reac_volume + var/obj/item/organ/heart/H = C.getorganslot(ORGAN_SLOT_HEART) + if(data["grown_volume"] > 50 && H.organ_flags & ORGAN_FAILING) + H.applyOrganDamage(-20) ..() /datum/reagent/synthtissue/on_mob_life(mob/living/carbon/C) @@ -128,6 +147,10 @@ to_chat(C, "You feel something reform inside of you!") data["injected_vol"] -= metabolization_rate + if(borrowed_health) + C.adjustToxLoss(1) + C.adjustCloneLoss(1) + borrowed_health -= 1 ..() /datum/reagent/synthtissue/on_merge(passed_data) @@ -138,6 +161,7 @@ if(iscarbon(holder.my_atom)) data["injected_vol"] = data["injected_vol"] + passed_data["injected_vol"] passed_data["injected_vol"] = 0 + update_name() ..() /datum/reagent/synthtissue/on_new(passed_data) @@ -145,6 +169,32 @@ return ..() if(passed_data["grown_volume"] > data["grown_volume"]) data["grown_volume"] = passed_data["grown_volume"] + update_name() ..() +/datum/reagent/synthtissue/proc/update_name() //They are but babes on creation and have to grow unto godhood + switch(data["grown_volume"]) + if(-INFINITY to 50) + name = "Induced Synthtissue Colony" + if(50 to 80) + name = "Oligopotent Synthtissue Colony" + if(80 to 135) + name = "Pluripotent Synthtissue Colony" + if(135 to 175) + name = "SuperSomatic Synthtissue Colony" + if(175 to INFINITY) + name = "Omnipotent Synthtissue Colony" + +/datum/reagent/synthtissue/on_mob_delete(mob/living/M) + if(!iscarbon(M)) + return + var/mob/living/carbon/C = M + C.adjustBruteLoss(borrowed_health*1.25) + C.adjustToxLoss(borrowed_health*1.25) + C.adjustCloneLoss(borrowed_health*1.25) + C.adjustAllOrganLoss(borrowed_health*0.25) + M.updatehealth() + if(borrowed_health && C.health < -20) + M.stat = DEAD + M.visible_message("The synthetic tissue degrades off [M]'s wounds as they collapse to the floor.") //NEEDS ON_MOB_DEAD() diff --git a/modular_citadel/code/modules/reagents/objects/clothes.dm b/modular_citadel/code/modules/reagents/objects/clothes.dm index b601b6a899..4707d5b460 100644 --- a/modular_citadel/code/modules/reagents/objects/clothes.dm +++ b/modular_citadel/code/modules/reagents/objects/clothes.dm @@ -34,7 +34,6 @@ if(src == C.head) C.emote("me",1,"tips their hat.",TRUE) return - ..() /obj/item/clothing/head/hattip/equipped(mob/M, slot) . = ..() diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm index 4dea1ef12f..aa4c65c3bb 100644 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm @@ -14,7 +14,7 @@ /datum/reagent/consumable/semen/reaction_turf(turf/T, reac_volume) if(!istype(T)) return - if(reac_volume < 3) + if(reac_volume < 10) return var/obj/effect/decal/cleanable/semen/S = locate() in T @@ -80,7 +80,7 @@ /datum/reagent/consumable/femcum/reaction_turf(turf/T, reac_volume) if(!istype(T)) return - if(reac_volume < 3) + if(reac_volume < 10) return var/obj/effect/decal/cleanable/femcum/S = locate() in T diff --git a/modular_citadel/icons/firstaid.dmi b/modular_citadel/icons/firstaid.dmi deleted file mode 100644 index d061adf9f2..0000000000 Binary files a/modular_citadel/icons/firstaid.dmi and /dev/null differ diff --git a/modular_citadel/icons/mob/clothing/space_nam.dmi b/modular_citadel/icons/mob/clothing/space_nam.dmi deleted file mode 100644 index 05eb00a346..0000000000 Binary files a/modular_citadel/icons/mob/clothing/space_nam.dmi and /dev/null differ diff --git a/modular_citadel/icons/mob/mam_tails.dmi b/modular_citadel/icons/mob/mam_tails.dmi index e4bd5119b6..d59cf43a68 100644 Binary files a/modular_citadel/icons/mob/mam_tails.dmi and b/modular_citadel/icons/mob/mam_tails.dmi differ diff --git a/modular_citadel/icons/mob/widerobot.dmi b/modular_citadel/icons/mob/widerobot.dmi index e574766d70..7e9da953c9 100644 Binary files a/modular_citadel/icons/mob/widerobot.dmi and b/modular_citadel/icons/mob/widerobot.dmi differ diff --git a/modular_citadel/icons/obj/VGProjectile.dmi b/modular_citadel/icons/obj/VGProjectile.dmi deleted file mode 100644 index 010d2fc739..0000000000 Binary files a/modular_citadel/icons/obj/VGProjectile.dmi and /dev/null differ diff --git a/modular_citadel/icons/obj/clothing/hats.dmi b/modular_citadel/icons/obj/clothing/hats.dmi deleted file mode 100644 index ba9b4b5f8e..0000000000 Binary files a/modular_citadel/icons/obj/clothing/hats.dmi and /dev/null differ diff --git a/modular_citadel/icons/obj/clothing/space_nam.dmi b/modular_citadel/icons/obj/clothing/space_nam.dmi deleted file mode 100644 index 79e1bd6d77..0000000000 Binary files a/modular_citadel/icons/obj/clothing/space_nam.dmi and /dev/null differ diff --git a/modular_citadel/icons/obj/defib_disks.dmi b/modular_citadel/icons/obj/defib_disks.dmi deleted file mode 100644 index 8908b0cf98..0000000000 Binary files a/modular_citadel/icons/obj/defib_disks.dmi and /dev/null differ diff --git a/modular_citadel/icons/obj/foods.dmi b/modular_citadel/icons/obj/foods.dmi deleted file mode 100644 index 3349da8203..0000000000 Binary files a/modular_citadel/icons/obj/foods.dmi and /dev/null differ diff --git a/modular_citadel/icons/obj/projectiles.dmi b/modular_citadel/icons/obj/projectiles.dmi deleted file mode 100644 index f5f6f2f8f3..0000000000 Binary files a/modular_citadel/icons/obj/projectiles.dmi and /dev/null differ diff --git a/modular_citadel/icons/obj/projectiles_impact.dmi b/modular_citadel/icons/obj/projectiles_impact.dmi deleted file mode 100644 index 1d798b5e9e..0000000000 Binary files a/modular_citadel/icons/obj/projectiles_impact.dmi and /dev/null differ diff --git a/modular_citadel/icons/obj/projectiles_muzzle.dmi b/modular_citadel/icons/obj/projectiles_muzzle.dmi deleted file mode 100644 index 2116b0559c..0000000000 Binary files a/modular_citadel/icons/obj/projectiles_muzzle.dmi and /dev/null differ diff --git a/modular_citadel/icons/obj/projectiles_tracer.dmi b/modular_citadel/icons/obj/projectiles_tracer.dmi deleted file mode 100644 index e26e8501f1..0000000000 Binary files a/modular_citadel/icons/obj/projectiles_tracer.dmi and /dev/null differ diff --git a/sound/bloodsucker/BloodsuckerAlert.ogg b/sound/bloodsucker/BloodsuckerAlert.ogg new file mode 100644 index 0000000000..686f15bb71 Binary files /dev/null and b/sound/bloodsucker/BloodsuckerAlert.ogg differ diff --git a/sound/bloodsucker/coffin_close.ogg b/sound/bloodsucker/coffin_close.ogg new file mode 100644 index 0000000000..600809f782 Binary files /dev/null and b/sound/bloodsucker/coffin_close.ogg differ diff --git a/sound/bloodsucker/coffin_open.ogg b/sound/bloodsucker/coffin_open.ogg new file mode 100644 index 0000000000..38ca5c1f87 Binary files /dev/null and b/sound/bloodsucker/coffin_open.ogg differ diff --git a/sound/effects/neovgre_exploding.ogg b/sound/effects/neovgre_exploding.ogg new file mode 100644 index 0000000000..6ca2db05c3 Binary files /dev/null and b/sound/effects/neovgre_exploding.ogg differ diff --git a/sound/items/Nose_boop.ogg b/sound/items/Nose_boop.ogg new file mode 100644 index 0000000000..6a742e95ea Binary files /dev/null and b/sound/items/Nose_boop.ogg differ diff --git a/sound/machines/beeping_alarm.ogg b/sound/machines/beeping_alarm.ogg new file mode 100644 index 0000000000..f031b4e1d8 Binary files /dev/null and b/sound/machines/beeping_alarm.ogg differ diff --git a/sound/magic/curse.ogg b/sound/magic/curse.ogg new file mode 100644 index 0000000000..bda610416d Binary files /dev/null and b/sound/magic/curse.ogg differ diff --git a/sound/misc/deltakalaxon.ogg b/sound/misc/deltakalaxon.ogg index cc489526dd..7a9522c1ff 100644 Binary files a/sound/misc/deltakalaxon.ogg and b/sound/misc/deltakalaxon.ogg differ diff --git a/sound/weapons/mortar_long_whistle.ogg b/sound/weapons/mortar_long_whistle.ogg new file mode 100644 index 0000000000..646d37d8ab Binary files /dev/null and b/sound/weapons/mortar_long_whistle.ogg differ diff --git a/sound/weapons/mortar_whistle.ogg b/sound/weapons/mortar_whistle.ogg new file mode 100644 index 0000000000..2d7e19d85d Binary files /dev/null and b/sound/weapons/mortar_whistle.ogg differ diff --git a/sound/weapons/nuclear_fist.ogg b/sound/weapons/nuclear_fist.ogg new file mode 100644 index 0000000000..2b2682dc33 Binary files /dev/null and b/sound/weapons/nuclear_fist.ogg differ diff --git a/sound/weapons/shrink_hit.ogg b/sound/weapons/shrink_hit.ogg new file mode 100644 index 0000000000..c39c2d5269 Binary files /dev/null and b/sound/weapons/shrink_hit.ogg differ diff --git a/tgstation.dme b/tgstation.dme old mode 100755 new mode 100644 index 532422e792..a9ed956973 --- a/tgstation.dme +++ b/tgstation.dme @@ -201,6 +201,7 @@ #include "code\_onclick\hud\hud.dm" #include "code\_onclick\hud\hud_cit.dm" #include "code\_onclick\hud\human.dm" +#include "code\_onclick\hud\lavaland_elite.dm" #include "code\_onclick\hud\monkey.dm" #include "code\_onclick\hud\movable_screen_objects.dm" #include "code\_onclick\hud\parallax.dm" @@ -354,10 +355,8 @@ #include "code\datums\components\butchering.dm" #include "code\datums\components\caltrop.dm" #include "code\datums\components\chasm.dm" -#include "code\datums\components\cleaning.dm" #include "code\datums\components\construction.dm" #include "code\datums\components\decal.dm" -#include "code\datums\components\earhealing.dm" #include "code\datums\components\earprotection.dm" #include "code\datums\components\edit_complainer.dm" #include "code\datums\components\empprotection.dm" @@ -385,6 +384,8 @@ #include "code\datums\components\riding.dm" #include "code\datums\components\rotation.dm" #include "code\datums\components\shrapnel.dm" +#include "code\datums\components\shrink.dm" +#include "code\datums\components\sizzle.dm" #include "code\datums\components\slippery.dm" #include "code\datums\components\spooky.dm" #include "code\datums\components\squeak.dm" @@ -464,6 +465,9 @@ #include "code\datums\diseases\advance\symptoms\vomit.dm" #include "code\datums\diseases\advance\symptoms\weight.dm" #include "code\datums\diseases\advance\symptoms\youth.dm" +#include "code\datums\elements\_element.dm" +#include "code\datums\elements\cleaning.dm" +#include "code\datums\elements\earhealing.dm" #include "code\datums\helper_datums\events.dm" #include "code\datums\helper_datums\getrev.dm" #include "code\datums\helper_datums\icon_snapshot.dm" @@ -554,6 +558,8 @@ #include "code\game\gamemodes\game_mode.dm" #include "code\game\gamemodes\objective.dm" #include "code\game\gamemodes\objective_items.dm" +#include "code\game\gamemodes\bloodsucker\bloodsucker.dm" +#include "code\game\gamemodes\bloodsucker\hunter.dm" #include "code\game\gamemodes\brother\traitor_bro.dm" #include "code\game\gamemodes\changeling\changeling.dm" #include "code\game\gamemodes\changeling\traitor_chan.dm" @@ -573,6 +579,17 @@ #include "code\game\gamemodes\dynamic\dynamic_rulesets_midround.dm" #include "code\game\gamemodes\dynamic\dynamic_rulesets_roundstart.dm" #include "code\game\gamemodes\extended\extended.dm" +#include "code\game\gamemodes\gangs\dominator.dm" +#include "code\game\gamemodes\gangs\dominator_countdown.dm" +#include "code\game\gamemodes\gangs\gang.dm" +#include "code\game\gamemodes\gangs\gang_datums.dm" +#include "code\game\gamemodes\gangs\gang_decals.dm" +#include "code\game\gamemodes\gangs\gang_hud.dm" +#include "code\game\gamemodes\gangs\gang_items.dm" +#include "code\game\gamemodes\gangs\gang_pen.dm" +#include "code\game\gamemodes\gangs\gangs.dm" +#include "code\game\gamemodes\gangs\gangtool.dm" +#include "code\game\gamemodes\gangs\implant_gang.dm" #include "code\game\gamemodes\meteor\meteor.dm" #include "code\game\gamemodes\meteor\meteors.dm" #include "code\game\gamemodes\monkey\monkey.dm" @@ -1196,6 +1213,21 @@ #include "code\modules\antagonists\abductor\equipment\abduction_outfits.dm" #include "code\modules\antagonists\abductor\equipment\abduction_surgery.dm" #include "code\modules\antagonists\abductor\equipment\gland.dm" +#include "code\modules\antagonists\abductor\equipment\glands\access.dm" +#include "code\modules\antagonists\abductor\equipment\glands\blood.dm" +#include "code\modules\antagonists\abductor\equipment\glands\chem.dm" +#include "code\modules\antagonists\abductor\equipment\glands\egg.dm" +#include "code\modules\antagonists\abductor\equipment\glands\electric.dm" +#include "code\modules\antagonists\abductor\equipment\glands\heal.dm" +#include "code\modules\antagonists\abductor\equipment\glands\mindshock.dm" +#include "code\modules\antagonists\abductor\equipment\glands\plasma.dm" +#include "code\modules\antagonists\abductor\equipment\glands\quantum.dm" +#include "code\modules\antagonists\abductor\equipment\glands\slime.dm" +#include "code\modules\antagonists\abductor\equipment\glands\spider.dm" +#include "code\modules\antagonists\abductor\equipment\glands\transform.dm" +#include "code\modules\antagonists\abductor\equipment\glands\trauma.dm" +#include "code\modules\antagonists\abductor\equipment\glands\ventcrawl.dm" +#include "code\modules\antagonists\abductor\equipment\glands\viral.dm" #include "code\modules\antagonists\abductor\machinery\camera.dm" #include "code\modules\antagonists\abductor\machinery\console.dm" #include "code\modules\antagonists\abductor\machinery\dispenser.dm" @@ -1213,6 +1245,33 @@ #include "code\modules\antagonists\blob\blob\blobs\resource.dm" #include "code\modules\antagonists\blob\blob\blobs\shield.dm" #include "code\modules\antagonists\blood_contract\blood_contract.dm" +#include "code\modules\antagonists\bloodsucker\bloodsucker_flaws.dm" +#include "code\modules\antagonists\bloodsucker\bloodsucker_integration.dm" +#include "code\modules\antagonists\bloodsucker\bloodsucker_life.dm" +#include "code\modules\antagonists\bloodsucker\bloodsucker_objectives.dm" +#include "code\modules\antagonists\bloodsucker\bloodsucker_powers.dm" +#include "code\modules\antagonists\bloodsucker\bloodsucker_sunlight.dm" +#include "code\modules\antagonists\bloodsucker\bloodsucker_ui.dm" +#include "code\modules\antagonists\bloodsucker\datum_bloodsucker.dm" +#include "code\modules\antagonists\bloodsucker\datum_hunter.dm" +#include "code\modules\antagonists\bloodsucker\datum_vassal.dm" +#include "code\modules\antagonists\bloodsucker\items\bloodsucker_organs.dm" +#include "code\modules\antagonists\bloodsucker\items\bloodsucker_stake.dm" +#include "code\modules\antagonists\bloodsucker\objects\bloodsucker_coffin.dm" +#include "code\modules\antagonists\bloodsucker\objects\bloodsucker_crypt.dm" +#include "code\modules\antagonists\bloodsucker\objects\bloodsucker_lair.dm" +#include "code\modules\antagonists\bloodsucker\powers\bs_brawn.dm" +#include "code\modules\antagonists\bloodsucker\powers\bs_cloak.dm" +#include "code\modules\antagonists\bloodsucker\powers\bs_feed.dm" +#include "code\modules\antagonists\bloodsucker\powers\bs_fortitude.dm" +#include "code\modules\antagonists\bloodsucker\powers\bs_gohome.dm" +#include "code\modules\antagonists\bloodsucker\powers\bs_haste.dm" +#include "code\modules\antagonists\bloodsucker\powers\bs_lunge.dm" +#include "code\modules\antagonists\bloodsucker\powers\bs_masquerade.dm" +#include "code\modules\antagonists\bloodsucker\powers\bs_mesmerize.dm" +#include "code\modules\antagonists\bloodsucker\powers\bs_trespass.dm" +#include "code\modules\antagonists\bloodsucker\powers\bs_veil.dm" +#include "code\modules\antagonists\bloodsucker\powers\v_recuperate.dm" #include "code\modules\antagonists\brainwashing\brainwashing.dm" #include "code\modules\antagonists\brother\brother.dm" #include "code\modules\antagonists\changeling\cellular_emporium.dm" @@ -1540,6 +1599,7 @@ #include "code\modules\clothing\glasses\_glasses.dm" #include "code\modules\clothing\glasses\engine_goggles.dm" #include "code\modules\clothing\glasses\hud.dm" +#include "code\modules\clothing\glasses\phantomthief.dm" #include "code\modules\clothing\glasses\vg_glasses.dm" #include "code\modules\clothing\gloves\_gloves.dm" #include "code\modules\clothing\gloves\boxing.dm" @@ -1730,6 +1790,7 @@ #include "code\modules\food_and_drinks\kitchen_machinery\deep_fryer.dm" #include "code\modules\food_and_drinks\kitchen_machinery\food_cart.dm" #include "code\modules\food_and_drinks\kitchen_machinery\gibber.dm" +#include "code\modules\food_and_drinks\kitchen_machinery\grill.dm" #include "code\modules\food_and_drinks\kitchen_machinery\icecream_vat.dm" #include "code\modules\food_and_drinks\kitchen_machinery\microwave.dm" #include "code\modules\food_and_drinks\kitchen_machinery\monkeyrecycler.dm" @@ -1918,6 +1979,7 @@ #include "code\modules\language\ratvarian.dm" #include "code\modules\language\slime.dm" #include "code\modules\language\swarmer.dm" +#include "code\modules\language\vampiric.dm" #include "code\modules\language\xenocommon.dm" #include "code\modules\library\lib_codex_gigas.dm" #include "code\modules\library\lib_items.dm" @@ -2307,6 +2369,11 @@ #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\hivelord.dm" #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\mining_mobs.dm" #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\necropolis_tendril.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\elites\elite.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\elites\goliath_broodmother.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\elites\herald.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\elites\legionnaire.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\elites\pandora.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\bat.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\frog.dm" @@ -2827,6 +2894,7 @@ #include "code\modules\surgery\coronary_bypass.dm" #include "code\modules\surgery\dental_implant.dm" #include "code\modules\surgery\embalming.dm" +#include "code\modules\surgery\emergency_cardioversion_recovery.dm" #include "code\modules\surgery\experimental_dissection.dm" #include "code\modules\surgery\eye_surgery.dm" #include "code\modules\surgery\graft_synthtissue.dm" @@ -2983,29 +3051,10 @@ #include "modular_citadel\code\_onclick\hud\stamina.dm" #include "modular_citadel\code\datums\components\material_container.dm" #include "modular_citadel\code\datums\components\souldeath.dm" -#include "modular_citadel\code\datums\mood_events\chem_events.dm" -#include "modular_citadel\code\datums\mood_events\generic_negative_events.dm" -#include "modular_citadel\code\datums\mood_events\generic_positive_events.dm" -#include "modular_citadel\code\datums\mood_events\moodular.dm" -#include "modular_citadel\code\datums\mutations\hulk.dm" #include "modular_citadel\code\datums\status_effects\chems.dm" #include "modular_citadel\code\datums\status_effects\debuffs.dm" #include "modular_citadel\code\datums\wires\autoylathe.dm" -#include "modular_citadel\code\game\gamemodes\gangs\dominator.dm" -#include "modular_citadel\code\game\gamemodes\gangs\dominator_countdown.dm" -#include "modular_citadel\code\game\gamemodes\gangs\gang.dm" -#include "modular_citadel\code\game\gamemodes\gangs\gang_datums.dm" -#include "modular_citadel\code\game\gamemodes\gangs\gang_decals.dm" -#include "modular_citadel\code\game\gamemodes\gangs\gang_hud.dm" -#include "modular_citadel\code\game\gamemodes\gangs\gang_items.dm" -#include "modular_citadel\code\game\gamemodes\gangs\gang_pen.dm" -#include "modular_citadel\code\game\gamemodes\gangs\gangs.dm" -#include "modular_citadel\code\game\gamemodes\gangs\gangtool.dm" -#include "modular_citadel\code\game\gamemodes\gangs\implant_gang.dm" -#include "modular_citadel\code\game\gamemodes\miniantags\bot_swarm\swarmer_event.dm" -#include "modular_citadel\code\game\gamemodes\revolution\revolution.dm" #include "modular_citadel\code\game\machinery\displaycases.dm" -#include "modular_citadel\code\game\machinery\firealarm.dm" #include "modular_citadel\code\game\machinery\Sleeper.dm" #include "modular_citadel\code\game\machinery\toylathe.dm" #include "modular_citadel\code\game\machinery\vending.dm" @@ -3014,9 +3063,6 @@ #include "modular_citadel\code\game\objects\items.dm" #include "modular_citadel\code\game\objects\effects\spawner\spawners.dm" #include "modular_citadel\code\game\objects\effects\temporary_visuals\souldeath.dm" -#include "modular_citadel\code\game\objects\effects\temporary_visuals\projectiles\impact.dm" -#include "modular_citadel\code\game\objects\effects\temporary_visuals\projectiles\muzzle.dm" -#include "modular_citadel\code\game\objects\effects\temporary_visuals\projectiles\tracer.dm" #include "modular_citadel\code\game\objects\items\balls.dm" #include "modular_citadel\code\game\objects\items\boombox.dm" #include "modular_citadel\code\game\objects\items\stunsword.dm" @@ -3024,7 +3070,6 @@ #include "modular_citadel\code\game\objects\items\devices\radio\encryptionkey.dm" #include "modular_citadel\code\game\objects\items\devices\radio\headset.dm" #include "modular_citadel\code\game\objects\items\devices\radio\shockcollar.dm" -#include "modular_citadel\code\game\objects\items\storage\firstaid.dm" #include "modular_citadel\code\game\objects\structures\tables_racks.dm" #include "modular_citadel\code\game\objects\structures\beds_chairs\chair.dm" #include "modular_citadel\code\modules\admin\admin.dm" @@ -3066,8 +3111,6 @@ #include "modular_citadel\code\modules\client\verbs\who.dm" #include "modular_citadel\code\modules\clothing\clothing.dm" #include "modular_citadel\code\modules\clothing\neck.dm" -#include "modular_citadel\code\modules\clothing\glasses\phantomthief.dm" -#include "modular_citadel\code\modules\clothing\head\head.dm" #include "modular_citadel\code\modules\clothing\spacesuits\flightsuit.dm" #include "modular_citadel\code\modules\clothing\suits\polychromic_cloaks.dm" #include "modular_citadel\code\modules\clothing\suits\suits.dm" @@ -3078,7 +3121,6 @@ #include "modular_citadel\code\modules\custom_loadout\custom_items.dm" #include "modular_citadel\code\modules\custom_loadout\load_to_mob.dm" #include "modular_citadel\code\modules\custom_loadout\read_from_file.dm" -#include "modular_citadel\code\modules\food_and_drinks\snacks\meat.dm" #include "modular_citadel\code\modules\integrated_electronics\subtypes\manipulation.dm" #include "modular_citadel\code\modules\mentor\follow.dm" #include "modular_citadel\code\modules\mentor\mentor.dm" @@ -3088,7 +3130,6 @@ #include "modular_citadel\code\modules\mentor\mentorpm.dm" #include "modular_citadel\code\modules\mentor\mentorsay.dm" #include "modular_citadel\code\modules\mob\cit_emotes.dm" -#include "modular_citadel\code\modules\mob\mob.dm" #include "modular_citadel\code\modules\mob\living\damage_procs.dm" #include "modular_citadel\code\modules\mob\living\living.dm" #include "modular_citadel\code\modules\mob\living\carbon\carbon.dm" diff --git a/tgui/assets/tgui.css b/tgui/assets/tgui.css index 41ef4633fc..896f7d5f2b 100644 --- a/tgui/assets/tgui.css +++ b/tgui/assets/tgui.css @@ -1 +1 @@ -@charset "utf-8";body,html{box-sizing:border-box;height:100%;margin:0}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff;background-color:#2a2a2a;background-image:linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff2a2a2a",endColorstr="#ff202020",GradientType=0)}*,:after,:before{box-sizing:inherit}h1,h2,h3,h4{display:inline-block;margin:0;padding:6px 0}h1{font-size:18px}h2{font-size:16px}h3{font-size:14px}h4{font-size:12px}body.clockwork{background:linear-gradient(180deg,#b18b25 0,#5f380e);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffb18b25",endColorstr="#ff5f380e",GradientType=0)}body.clockwork .normal{color:#b18b25}body.clockwork .good{color:#cfba47}body.clockwork .average{color:#896b19}body.clockwork .bad{color:#5f380e}body.clockwork .highlight{color:#b18b25}body.clockwork main{display:block;margin-top:32px;padding:2px 6px 0}body.clockwork hr{height:2px;background-color:#b18b25;border:none}body.clockwork .hidden{display:none}body.clockwork .bar .barText,body.clockwork span.button{color:#b18b25;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.clockwork .bold{font-weight:700}body.clockwork .italic{font-style:italic}body.clockwork [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.clockwork div[data-tooltip],body.clockwork span[data-tooltip]{position:relative}body.clockwork div[data-tooltip]:after,body.clockwork span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #170800;background-color:#2d1400}body.clockwork div[data-tooltip]:hover:after,body.clockwork span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.clockwork div[data-tooltip].tooltip-top:after,body.clockwork span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.clockwork div[data-tooltip].tooltip-top:hover:after,body.clockwork span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.clockwork div[data-tooltip].tooltip-bottom:after,body.clockwork span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.clockwork div[data-tooltip].tooltip-bottom:hover:after,body.clockwork span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.clockwork div[data-tooltip].tooltip-left:after,body.clockwork span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-left:hover:after,body.clockwork span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-right:after,body.clockwork span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-right:hover:after,body.clockwork span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.clockwork .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #170800;background:#2d1400}body.clockwork .bar .barText{position:absolute;top:0;right:3px}body.clockwork .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#b18b25}body.clockwork .bar .barFill.good{background-color:#cfba47}body.clockwork .bar .barFill.average{background-color:#896b19}body.clockwork .bar .barFill.bad{background-color:#5f380e}body.clockwork span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #170800}body.clockwork span.button .fa{padding-right:2px}body.clockwork span.button.normal{transition:background-color .5s;background-color:#5f380e}body.clockwork span.button.normal.active:focus,body.clockwork span.button.normal.active:hover{transition:background-color .25s;background-color:#704211;outline:0}body.clockwork span.button.disabled{transition:background-color .5s;background-color:#2d1400}body.clockwork span.button.disabled.active:focus,body.clockwork span.button.disabled.active:hover{transition:background-color .25s;background-color:#441e00;outline:0}body.clockwork span.button.selected{transition:background-color .5s;background-color:#cfba47}body.clockwork span.button.selected.active:focus,body.clockwork span.button.selected.active:hover{transition:background-color .25s;background-color:#d1bd50;outline:0}body.clockwork span.button.toggle{transition:background-color .5s;background-color:#cfba47}body.clockwork span.button.toggle.active:focus,body.clockwork span.button.toggle.active:hover{transition:background-color .25s;background-color:#d1bd50;outline:0}body.clockwork span.button.caution{transition:background-color .5s;background-color:#be6209}body.clockwork span.button.caution.active:focus,body.clockwork span.button.caution.active:hover{transition:background-color .25s;background-color:#cd6a0a;outline:0}body.clockwork span.button.danger{transition:background-color .5s;background-color:#9a9d00}body.clockwork span.button.danger.active:focus,body.clockwork span.button.danger.active:hover{transition:background-color .25s;background-color:#abaf00;outline:0}body.clockwork span.button.gridable{width:125px;margin:2px 0}body.clockwork span.button.gridable.center{text-align:center;width:75px}body.clockwork span.button+span:not(.button),body.clockwork span:not(.button)+span.button{margin-left:5px}body.clockwork div.display{width:100%;padding:4px;margin:6px 0;background-color:#2d1400;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#e62d1400,endColorStr=#e62d1400)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#e62d1400,endColorStr=#e62d1400);background-color:rgba(45,20,0,.9);box-shadow:inset 0 0 5px rgba(0,0,0,.3)}body.clockwork div.display.tabular{padding:0;margin:0}body.clockwork div.display header,body.clockwork div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#cfba47;border-bottom:2px solid #b18b25}body.clockwork div.display header .buttonRight,body.clockwork div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.clockwork div.display article,body.clockwork div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.clockwork input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#b18b25;background-color:#cfba47;border:1px solid #272727}body.clockwork input.number{width:35px}body.clockwork input:-ms-input-placeholder{color:#999}body.clockwork input::placeholder{color:#999}body.clockwork input::-ms-clear{display:none}body.clockwork svg.linegraph{overflow:hidden}body.clockwork div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#2d1400;font-weight:700;font-style:italic;background-color:#000;background-image:repeating-linear-gradient(-45deg,#000,#000 10px,#170800 0,#170800 20px)}body.clockwork div.notice .label{color:#2d1400}body.clockwork div.notice .content:only-of-type{padding:0}body.clockwork div.notice hr{background-color:#896b19}body.clockwork div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #5f380e;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.clockwork section .cell,body.clockwork section .compressedcell,body.clockwork section .content,body.clockwork section .label,body.clockwork section .line,body.nanotrasen section .cell,body.nanotrasen section .compressedcell,body.nanotrasen section .content,body.nanotrasen section .label,body.nanotrasen section .line,body.syndicate section .cell,body.syndicate section .compressedcell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.clockwork section{display:table-row;width:100%}body.clockwork section:not(:first-child){padding-top:4px}body.clockwork section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.clockwork section .label{width:1%;padding-right:32px;white-space:nowrap;color:#b18b25}body.clockwork section .content:not(:last-child){padding-right:16px}body.clockwork section .line{width:100%}body.clockwork section .cell:not(:first-child),body.clockwork section .compressedcell:not(:first-child){text-align:center;padding-top:0}body.clockwork section .cell span.button{width:75px}body.clockwork section:not(:last-child){padding-right:4px}body.clockwork div.subdisplay{width:100%;margin:0}body.clockwork header.titlebar .close,body.clockwork header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#cfba47}body.clockwork header.titlebar .close:hover,body.clockwork header.titlebar .minimize:hover{color:#d1bd50}body.clockwork header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#5f380e;border-bottom:1px solid #170800;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.clockwork header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.clockwork header.titlebar .title{position:absolute;top:6px;left:46px;color:#cfba47;font-size:16px;white-space:nowrap}body.clockwork header.titlebar .minimize{position:absolute;top:6px;right:46px}body.clockwork header.titlebar .close{position:absolute;top:4px;right:12px}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgNDI1IDIwMCIgb3BhY2l0eT0iLjMzIj4NCiAgPHBhdGggZD0ibSAxNzguMDAzOTksMC4wMzg2OSAtNzEuMjAzOTMsMCBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTYuNzYxMzQsNi4wMjU1NSBsIDAsMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM0LDYuMDI1NTQgbCA1My4xMDcyLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xMDEuNTQ0MDE4IDcyLjIxNjI4LDEwNC42OTkzOTggYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDUuNzYwMTUsMi44NzAxNiBsIDczLjU1NDg3LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xODcuODcxNDcgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM1LC02LjAyNTU1IGwgLTU0LjcxNjQ0LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTMzLDYuMDI1NTUgbCAwLDEwMi42MTkzNSBMIDE4My43NjQxMywyLjkwODg2IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNS43NjAxNCwtMi44NzAxNyB6IiAvPg0KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPg0KICA8cGF0aCBkPSJtIDQyMC4xNTUzNSwxNzcuODkxMTkgYSAxMy40MTIwMzgsMTIuNTAxODQyIDAgMCAxIC04LjYzMjk1LDIyLjA2OTUxIGwgLTY2LjExODMyLDAgYSA1LjM2NDgxNTIsNS4wMDA3MzcgMCAwIDEgLTUuMzY0ODIsLTUuMDAwNzQgbCAwLC03OS44NzkzMSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff2a2a2a",endColorstr="#ff202020",GradientType=0)}body.nanotrasen .normal{color:#40628a}body.nanotrasen .good{color:#537d29}body.nanotrasen .average{color:#be6209}body.nanotrasen .bad{color:#b00e0e}body.nanotrasen .highlight{color:#8ba5c4}body.nanotrasen main{display:block;margin-top:32px;padding:2px 6px 0}body.nanotrasen hr{height:2px;background-color:#40628a;border:none}body.nanotrasen .hidden{display:none}body.nanotrasen .bar .barText,body.nanotrasen span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.nanotrasen .bold{font-weight:700}body.nanotrasen .italic{font-style:italic}body.nanotrasen [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.nanotrasen div[data-tooltip],body.nanotrasen span[data-tooltip]{position:relative}body.nanotrasen div[data-tooltip]:after,body.nanotrasen span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.nanotrasen div[data-tooltip]:hover:after,body.nanotrasen span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.nanotrasen div[data-tooltip].tooltip-top:after,body.nanotrasen span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-top:hover:after,body.nanotrasen span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:after,body.nanotrasen span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:hover:after,body.nanotrasen span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-left:after,body.nanotrasen span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-left:hover:after,body.nanotrasen span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:after,body.nanotrasen span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:hover:after,body.nanotrasen span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}body.nanotrasen .bar .barText{position:absolute;top:0;right:3px}body.nanotrasen .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}body.nanotrasen .bar .barFill.good{background-color:#537d29}body.nanotrasen .bar .barFill.average{background-color:#be6209}body.nanotrasen .bar .barFill.bad{background-color:#b00e0e}body.nanotrasen span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.nanotrasen span.button .fa{padding-right:2px}body.nanotrasen span.button.normal{transition:background-color .5s;background-color:#40628a}body.nanotrasen span.button.normal.active:focus,body.nanotrasen span.button.normal.active:hover{transition:background-color .25s;background-color:#4f78aa;outline:0}body.nanotrasen span.button.disabled{transition:background-color .5s;background-color:#999}body.nanotrasen span.button.disabled.active:focus,body.nanotrasen span.button.disabled.active:hover{transition:background-color .25s;background-color:#a8a8a8;outline:0}body.nanotrasen span.button.selected{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.selected.active:focus,body.nanotrasen span.button.selected.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.toggle{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.toggle.active:focus,body.nanotrasen span.button.toggle.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.caution{transition:background-color .5s;background-color:#9a9d00}body.nanotrasen span.button.caution.active:focus,body.nanotrasen span.button.caution.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.nanotrasen span.button.danger{transition:background-color .5s;background-color:#9d0808}body.nanotrasen span.button.danger.active:focus,body.nanotrasen span.button.danger.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.nanotrasen span.button.gridable{width:125px;margin:2px 0}body.nanotrasen span.button.gridable.center{text-align:center;width:75px}body.nanotrasen span.button+span:not(.button),body.nanotrasen span:not(.button)+span.button{margin-left:5px}body.nanotrasen div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000);background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5)}body.nanotrasen div.display.tabular{padding:0;margin:0}body.nanotrasen div.display header,body.nanotrasen div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #40628a}body.nanotrasen div.display header .buttonRight,body.nanotrasen div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.nanotrasen div.display article,body.nanotrasen div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.nanotrasen input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#000;background-color:#fff;border:1px solid #272727}body.nanotrasen input.number{width:35px}body.nanotrasen input:-ms-input-placeholder{color:#999}body.nanotrasen input::placeholder{color:#999}body.nanotrasen input::-ms-clear{display:none}body.nanotrasen svg.linegraph{overflow:hidden}body.nanotrasen div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px)}body.nanotrasen div.notice .label{color:#000}body.nanotrasen div.notice .content:only-of-type{padding:0}body.nanotrasen div.notice hr{background-color:#272727}body.nanotrasen div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.nanotrasen section .cell,body.nanotrasen section .compressedcell,body.nanotrasen section .content,body.nanotrasen section .label,body.nanotrasen section .line,body.syndicate section .cell,body.syndicate section .compressedcell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.nanotrasen section{display:table-row;width:100%}body.nanotrasen section:not(:first-child){padding-top:4px}body.nanotrasen section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.nanotrasen section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}body.nanotrasen section .content:not(:last-child){padding-right:16px}body.nanotrasen section .line{width:100%}body.nanotrasen section .cell:not(:first-child),body.nanotrasen section .compressedcell:not(:first-child){text-align:center;padding-top:0}body.nanotrasen section .cell span.button{width:75px}body.nanotrasen section:not(:last-child){padding-right:4px}body.nanotrasen div.subdisplay{width:100%;margin:0}body.nanotrasen header.titlebar .close,body.nanotrasen header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#8ba5c4}body.nanotrasen header.titlebar .close:hover,body.nanotrasen header.titlebar .minimize:hover{color:#9cb2cd}body.nanotrasen header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.nanotrasen header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.nanotrasen header.titlebar .title{position:absolute;top:6px;left:46px;color:#8ba5c4;font-size:16px;white-space:nowrap}body.nanotrasen header.titlebar .minimize{position:absolute;top:6px;right:46px}body.nanotrasen header.titlebar .close{position:absolute;top:4px;right:12px}body.syndicate{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgMjAwIDI4OS43NDIiIG9wYWNpdHk9Ii4zMyI+DQogIDxwYXRoIGQ9Im0gOTMuNTM3Njc3LDAgYyAtMTguMTEzMTI1LDAgLTM0LjIyMDEzMywzLjExMTY0IC00OC4zMjM0ODQsOS4zMzQzNyAtMTMuOTY1MDkyLDYuMjIxNjcgLTI0LjYxMjQ0MiwxNS4wNzExNCAtMzEuOTQwNjUxLDI2LjU0NzEgLTcuMTg5OTM5OCwxMS4zMzc4OSAtMTAuMzAxMjI2NiwyNC43NDkxMSAtMTAuMzAxMjI2Niw0MC4yMzQ3OCAwLDEwLjY0NjYyIDIuNzI1MDAyNiwyMC40NjQ2NSA4LjE3NTExMTYsMjkuNDUyNTggNS42MTUyNzcsOC45ODY4NiAxNC4wMzgyNzcsMTcuMzUyMDQgMjUuMjY4ODIxLDI1LjA5NDM2IDExLjIzMDU0NCw3LjYwNTMxIDI2LjUwNzQyMSwxNS40MTgzNSA0NS44MzA1MTQsMjMuNDM3ODIgMTkuOTgzNzQ4LDguMjk1NTcgMzQuODQ4ODQ4LDE1LjU1NDcxIDQ0LjU5Mjk5OCwyMS43NzYzOCA5Ljc0NDE0LDYuMjIyNzMgMTYuNzYxNywxMi44NTg1IDIxLjA1NTcyLDE5LjkwOTUxIDQuMjk0MDQsNy4wNTIwOCA2LjQ0MTkzLDE1Ljc2NDA4IDYuNDQxOTMsMjYuMTM0NTkgMCwxNi4xNzcwMiAtNS4yMDE5NiwyOC40ODIyMiAtMTUuNjA2NzMsMzYuOTE2ODIgLTEwLjIzOTYsOC40MzQ3IC0yNS4wMjIwMywxMi42NTIzIC00NC4zNDUxNjksMTIuNjUyMyAtMTQuMDM4MTcxLDAgLTI1LjUxNTI0NywtMS42NTk0IC0zNC40MzM2MTgsLTQuOTc3NyAtOC45MTgzNywtMy40NTY2IC0xNi4xODU1NzIsLTguNzExMyAtMjEuODAwODM5LC0xNS43NjMzIC01LjYxNTI3NywtNy4wNTIxIC0xMC4wNzQ3OTUsLTE2LjY2MDg4IC0xMy4zNzc4OTksLTI4LjgyODEyIGwgLTI0Ljc3MzE2MjYyOTM5NDUsMCAwLDU2LjgyNjMyIEMgMzMuODU2NzY5LDI4Ni4wNzYwMSA2My43NDkwNCwyODkuNzQyMDEgODkuNjc4MzgzLDI4OS43NDIwMSBjIDE2LjAyMDAyNywwIDMwLjcxOTc4NywtMS4zODI3IDQ0LjA5NzMzNywtNC4xNDc5IDEzLjU0MjcyLC0yLjkwNDMgMjUuMTA0MSwtNy40Njc2IDM0LjY4MzA5LC0xMy42ODkzIDkuNzQ0MTMsLTYuMzU5NyAxNy4zNDA0MiwtMTQuNTE5NSAyMi43OTA1MiwtMjQuNDc0OCA1LjQ1MDEsLTEwLjA5MzMyIDguMTc1MTEsLTIyLjM5OTU5IDguMTc1MTEsLTM2LjkxNjgyIDAsLTEyLjk5NzY0IC0zLjMwMjEsLTI0LjMzNTM5IC05LjkwODI5LC0zNC4wMTQ2IC02LjQ0MTA1LC05LjgxNzI1IC0xNS41MjU0NSwtMTguNTI3MDcgLTI3LjI1MTQ2LC0yNi4xMzEzMyAtMTEuNTYwODUsLTcuNjA0MjcgLTI3LjkxMDgzLC0xNS44MzE0MiAtNDkuMDUwNjYsLTI0LjY4MDIyIC0xNy41MDY0NCwtNy4xOTAxMiAtMzAuNzE5NjY4LC0xMy42ODk0OCAtMzkuNjM4MDM4LC0xOS40OTcwMSAtOC45MTgzNzEsLTUuODA3NTIgLTE4LjYwNzQ3NCwtMTIuNDM0MDkgLTI0LjA5NjUyNCwtMTguODc0MTcgLTUuNDI2MDQzLC02LjM2NjE2IC05LjY1ODgyNiwtMTUuMDcwMDMgLTkuNjU4ODI2LC0yNC44ODcyOSAwLC05LjI2NDAxIDIuMDc1NDE0LC0xNy4yMTM0NSA2LjIyMzQ1NCwtMjMuODUwMzMgMTEuMDk4Mjk4LC0xNC4zOTc0OCA0MS4yODY2MzgsLTEuNzk1MDcgNDUuMDc1NjA5LDI0LjM0NzYyIDQuODM5MzkyLDYuNzc0OTEgOC44NDkzNSwxNi4yNDcyOSAxMi4wMjk1MTUsMjguNDE1NiBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNC40NzgyNSwtNS45MjQ0OCAtOS45NTQ4OCwtMTAuNjMyMjIgLTE1LjkwODM3LC0xNC4zNzQxMSAxLjY0MDU1LDAuNDc5MDUgMy4xOTAzOSwxLjAyMzc2IDQuNjM4NjUsMS42NDAyNCA2LjQ5ODYxLDIuNjI2MDcgMTIuMTY3OTMsNy4zMjc0NyAxNy4wMDczLDE0LjEwMzQ1IDQuODM5MzksNi43NzQ5MSA4Ljg0OTM1LDE2LjI0NTY3IDEyLjAyOTUyLDI4LjQxMzk3IDAsMCA4LjQ4MTI4LC0wLjEyODk0IDguNDg5NzgsLTAuMDAyIDAuNDE3NzYsNi40MTQ5NCAtMS43NTMzOSw5LjQ1Mjg2IC00LjEyMzQyLDEyLjU2MTA0IC0yLjQxNzQsMy4xNjk3OCAtNS4xNDQ4Niw2Ljc4OTczIC00LjAwMjc4LDEzLjAwMjkgMS41MDc4Niw4LjIwMzE4IDEwLjE4MzU0LDEwLjU5NjQyIDE0LjYyMTk0LDkuMzExNTQgLTMuMzE4NDIsLTAuNDk5MTEgLTUuMzE4NTUsLTEuNzQ5NDggLTUuMzE4NTUsLTEuNzQ5NDggMCwwIDEuODc2NDYsMC45OTg2OCA1LjY1MTE3LC0xLjM1OTgxIC0zLjI3Njk1LDAuOTU1NzEgLTEwLjcwNTI5LC0wLjc5NzM4IC0xMS44MDEyNSwtNi43NjMxMyAtMC45NTc1MiwtNS4yMDg2MSAwLjk0NjU0LC03LjI5NTE0IDMuNDAxMTMsLTEwLjUxNDgyIDIuNDU0NjIsLTMuMjE5NjggNS4yODQyNiwtNi45NTgzMSA0LjY4NDMsLTE0LjQ4ODI0IGwgMC4wMDMsMC4wMDIgOC45MjY3NiwwIDAsLTU1Ljk5OTY3IGMgLTE1LjA3MTI1LC0zLjg3MTY4IC0yNy42NTMxNCwtNi4zNjA0MiAtMzcuNzQ2NzEsLTcuNDY1ODYgLTkuOTU1MzEsLTEuMTA3NTUgLTIwLjE4ODIzLC0xLjY1OTgxIC0zMC42OTY2MTMsLTEuNjU5ODEgeiBtIDcwLjMyMTYwMywxNy4zMDg5MyAwLjIzODA1LDQwLjMwNDkgYyAxLjMxODA4LDEuMjI2NjYgMi40Mzk2NSwyLjI3ODE1IDMuMzQwODEsMy4xMDYwMiA0LjgzOTM5LDYuNzc0OTEgOC44NDkzNCwxNi4yNDU2NiAxMi4wMjk1MSwyOC40MTM5NyBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNi42NzczMSwtNC41OTM4MSAtMTkuODM2NDMsLTEwLjQ3MzA5IC0zNi4xNDA3MSwtMTUuODI1MjIgeiBtIC0yOC4xMjA0OSw1LjYwNTUxIDguNTY0NzksMTcuNzE2NTUgYyAtMTEuOTcwMzcsLTYuNDY2OTcgLTEzLjg0Njc4LC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk3MDUsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IG0gMTUuMjIxOTUsMjQuMDA4NDggOC41NjQ3OSwxNy43MTY1NSBjIC0xMS45NzAzOCwtNi40NjY5NyAtMTMuODQ2NzksLTkuNzE3MjYgLTguNTY0NzksLTE3LjcxNjU1IHogbSAyMi43OTcwNCwwIGMgMi43NzE1LDcuOTk5MjkgMS43ODc0MSwxMS4yNDk1OCAtNC40OTM1NCwxNy43MTY1NSBsIDQuNDkzNTQsLTE3LjcxNjU1IHogbSAtOTkuMTEzODQsMi4yMDc2NCA4LjU2NDc5LDE3LjcxNjU1IGMgLTExLjk3MDM4MiwtNi40NjY5NyAtMTMuODQ2NzgyLC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk1NDIsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#750000 0,#340404);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff750000",endColorstr="#ff340404",GradientType=0)}body.syndicate .normal{color:#40628a}body.syndicate .good{color:#73e573}body.syndicate .average{color:#be6209}body.syndicate .bad{color:#b00e0e}body.syndicate .highlight{color:#000}body.syndicate main{display:block;margin-top:32px;padding:2px 6px 0}body.syndicate hr{height:2px;background-color:#272727;border:none}body.syndicate .hidden{display:none}body.syndicate .bar .barText,body.syndicate span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.syndicate .bold{font-weight:700}body.syndicate .italic{font-style:italic}body.syndicate [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.syndicate div[data-tooltip],body.syndicate span[data-tooltip]{position:relative}body.syndicate div[data-tooltip]:after,body.syndicate span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.syndicate div[data-tooltip]:hover:after,body.syndicate span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.syndicate div[data-tooltip].tooltip-top:after,body.syndicate span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-top:hover:after,body.syndicate span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:after,body.syndicate span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:hover:after,body.syndicate span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-left:after,body.syndicate span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-left:hover:after,body.syndicate span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:after,body.syndicate span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:hover:after,body.syndicate span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #000;background:#272727}body.syndicate .bar .barText{position:absolute;top:0;right:3px}body.syndicate .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#000}body.syndicate .bar .barFill.good{background-color:#73e573}body.syndicate .bar .barFill.average{background-color:#be6209}body.syndicate .bar .barFill.bad{background-color:#b00e0e}body.syndicate span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.syndicate span.button .fa{padding-right:2px}body.syndicate span.button.normal{transition:background-color .5s;background-color:#397439}body.syndicate span.button.normal.active:focus,body.syndicate span.button.normal.active:hover{transition:background-color .25s;background-color:#4a964a;outline:0}body.syndicate span.button.disabled{transition:background-color .5s;background-color:#363636}body.syndicate span.button.disabled.active:focus,body.syndicate span.button.disabled.active:hover{transition:background-color .25s;background-color:#545454;outline:0}body.syndicate span.button.selected{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.selected.active:focus,body.syndicate span.button.selected.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.toggle{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.toggle.active:focus,body.syndicate span.button.toggle.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.caution{transition:background-color .5s;background-color:#be6209}body.syndicate span.button.caution.active:focus,body.syndicate span.button.caution.active:hover{transition:background-color .25s;background-color:#eb790b;outline:0}body.syndicate span.button.danger{transition:background-color .5s;background-color:#9a9d00}body.syndicate span.button.danger.active:focus,body.syndicate span.button.danger.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.syndicate span.button.gridable{width:125px;margin:2px 0}body.syndicate span.button.gridable.center{text-align:center;width:75px}body.syndicate span.button+span:not(.button),body.syndicate span:not(.button)+span.button{margin-left:5px}body.syndicate div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000);background-color:rgba(0,0,0,.5);box-shadow:inset 0 0 5px rgba(0,0,0,.75)}body.syndicate div.display.tabular{padding:0;margin:0}body.syndicate div.display header,body.syndicate div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #272727}body.syndicate div.display header .buttonRight,body.syndicate div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.syndicate div.display article,body.syndicate div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.syndicate input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#fff;background-color:#9d0808;border:1px solid #272727}body.syndicate input.number{width:35px}body.syndicate input:-ms-input-placeholder{color:#999}body.syndicate input::placeholder{color:#999}body.syndicate input::-ms-clear{display:none}body.syndicate svg.linegraph{overflow:hidden}body.syndicate div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#750000;background-image:repeating-linear-gradient(-45deg,#750000,#750000 10px,#910101 0,#910101 20px)}body.syndicate div.notice .label{color:#000}body.syndicate div.notice .content:only-of-type{padding:0}body.syndicate div.notice hr{background-color:#272727}body.syndicate div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.syndicate section .cell,body.syndicate section .compressedcell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.syndicate section{display:table-row;width:100%}body.syndicate section:not(:first-child){padding-top:4px}body.syndicate section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.syndicate section .label{width:1%;padding-right:32px;white-space:nowrap;color:#fff}body.syndicate section .content:not(:last-child){padding-right:16px}body.syndicate section .line{width:100%}body.syndicate section .cell:not(:first-child),body.syndicate section .compressedcell:not(:first-child){text-align:center;padding-top:0}body.syndicate section .cell span.button{width:75px}body.syndicate section:not(:last-child){padding-right:4px}body.syndicate div.subdisplay{width:100%;margin:0}body.syndicate header.titlebar .close,body.syndicate header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#e74242}body.syndicate header.titlebar .close:hover,body.syndicate header.titlebar .minimize:hover{color:#eb5e5e}body.syndicate header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.syndicate header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.syndicate header.titlebar .title{position:absolute;top:6px;left:46px;color:#e74242;font-size:16px;white-space:nowrap}body.syndicate header.titlebar .minimize{position:absolute;top:6px;right:46px}body.syndicate header.titlebar .close{position:absolute;top:4px;right:12px}.no-icons header.titlebar .statusicon{font-size:20px}.no-icons header.titlebar .statusicon:after{content:"O"}.no-icons header.titlebar .minimize{top:-2px;font-size:20px}.no-icons header.titlebar .minimize:after{content:"—"}.no-icons header.titlebar .close{font-size:20px}.no-icons header.titlebar .close:after{content:"X"} \ No newline at end of file +@charset "utf-8";body,html{box-sizing:border-box;height:100%;margin:0}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff;background-color:#2a2a2a;background-image:linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff2a2a2a",endColorstr="#ff202020",GradientType=0)}*,:after,:before{box-sizing:inherit}h1,h2,h3,h4{display:inline-block;margin:0;padding:6px 0}h1{font-size:18px}h2{font-size:16px}h3{font-size:14px}h4{font-size:12px}body.clockwork{background:linear-gradient(180deg,#b18b25 0,#5f380e);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffb18b25",endColorstr="#ff5f380e",GradientType=0)}body.clockwork .normal{color:#b18b25}body.clockwork .good{color:#cfba47}body.clockwork .average{color:#896b19}body.clockwork .bad{color:#5f380e}body.clockwork .highlight{color:#b18b25}body.clockwork main{display:block;margin-top:32px;padding:2px 6px 0}body.clockwork hr{height:2px;background-color:#b18b25;border:none}body.clockwork .hidden{display:none}body.clockwork .bar .barText,body.clockwork span.button{color:#b18b25;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.clockwork .bold{font-weight:700}body.clockwork .italic{font-style:italic}body.clockwork [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.clockwork div[data-tooltip],body.clockwork span[data-tooltip]{position:relative}body.clockwork div[data-tooltip]:after,body.clockwork span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);pointer-events:none;visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #170800;background-color:#2d1400}body.clockwork div[data-tooltip]:hover:after,body.clockwork span[data-tooltip]:hover:after{pointer-events:none;visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.clockwork div[data-tooltip].tooltip-top:after,body.clockwork span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.clockwork div[data-tooltip].tooltip-top:hover:after,body.clockwork span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.clockwork div[data-tooltip].tooltip-bottom:after,body.clockwork span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.clockwork div[data-tooltip].tooltip-bottom:hover:after,body.clockwork span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.clockwork div[data-tooltip].tooltip-left:after,body.clockwork span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-left:hover:after,body.clockwork span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-right:after,body.clockwork span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-right:hover:after,body.clockwork span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.clockwork .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #170800;background:#2d1400}body.clockwork .bar .barText{position:absolute;top:0;right:3px}body.clockwork .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#b18b25}body.clockwork .bar .barFill.good{background-color:#cfba47}body.clockwork .bar .barFill.average{background-color:#896b19}body.clockwork .bar .barFill.bad{background-color:#5f380e}body.clockwork span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #170800}body.clockwork span.button .fa{padding-right:2px}body.clockwork span.button.normal{transition:background-color .5s;background-color:#5f380e}body.clockwork span.button.normal.active:focus,body.clockwork span.button.normal.active:hover{transition:background-color .25s;background-color:#704211;outline:0}body.clockwork span.button.disabled{transition:background-color .5s;background-color:#2d1400}body.clockwork span.button.disabled.active:focus,body.clockwork span.button.disabled.active:hover{transition:background-color .25s;background-color:#441e00;outline:0}body.clockwork span.button.selected{transition:background-color .5s;background-color:#cfba47}body.clockwork span.button.selected.active:focus,body.clockwork span.button.selected.active:hover{transition:background-color .25s;background-color:#d1bd50;outline:0}body.clockwork span.button.toggle{transition:background-color .5s;background-color:#cfba47}body.clockwork span.button.toggle.active:focus,body.clockwork span.button.toggle.active:hover{transition:background-color .25s;background-color:#d1bd50;outline:0}body.clockwork span.button.caution{transition:background-color .5s;background-color:#be6209}body.clockwork span.button.caution.active:focus,body.clockwork span.button.caution.active:hover{transition:background-color .25s;background-color:#cd6a0a;outline:0}body.clockwork span.button.danger{transition:background-color .5s;background-color:#9a9d00}body.clockwork span.button.danger.active:focus,body.clockwork span.button.danger.active:hover{transition:background-color .25s;background-color:#abaf00;outline:0}body.clockwork span.button.gridable{width:125px;margin:2px 0}body.clockwork span.button.gridable.center{text-align:center;width:75px}body.clockwork span.button+span:not(.button),body.clockwork span:not(.button)+span.button{margin-left:5px}body.clockwork div.display{width:100%;padding:4px;margin:6px 0;background-color:#2d1400;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#e62d1400,endColorStr=#e62d1400)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#e62d1400,endColorStr=#e62d1400);background-color:rgba(45,20,0,.9);box-shadow:inset 0 0 5px rgba(0,0,0,.3)}body.clockwork div.display.tabular{padding:0;margin:0}body.clockwork div.display header,body.clockwork div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#cfba47;border-bottom:2px solid #b18b25}body.clockwork div.display header .buttonRight,body.clockwork div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.clockwork div.display article,body.clockwork div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.clockwork input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#b18b25;background-color:#cfba47;border:1px solid #272727}body.clockwork input.number{width:35px}body.clockwork input:-ms-input-placeholder{color:#999}body.clockwork input::placeholder{color:#999}body.clockwork input::-ms-clear{display:none}body.clockwork svg.linegraph{overflow:hidden}body.clockwork div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#2d1400;font-weight:700;font-style:italic;background-color:#000;background-image:repeating-linear-gradient(-45deg,#000,#000 10px,#170800 0,#170800 20px)}body.clockwork div.notice .label{color:#2d1400}body.clockwork div.notice .content:only-of-type{padding:0}body.clockwork div.notice hr{background-color:#896b19}body.clockwork div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #5f380e;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.clockwork section .cell,body.clockwork section .compressedcell,body.clockwork section .content,body.clockwork section .label,body.clockwork section .line,body.nanotrasen section .cell,body.nanotrasen section .compressedcell,body.nanotrasen section .content,body.nanotrasen section .label,body.nanotrasen section .line,body.syndicate section .cell,body.syndicate section .compressedcell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.clockwork section{display:table-row;width:100%}body.clockwork section:not(:first-child){padding-top:4px}body.clockwork section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.clockwork section .label{width:1%;padding-right:32px;white-space:nowrap;color:#b18b25}body.clockwork section .content:not(:last-child){padding-right:16px}body.clockwork section .line{width:100%}body.clockwork section .cell:not(:first-child),body.clockwork section .compressedcell:not(:first-child){text-align:center;padding-top:0}body.clockwork section .cell span.button{width:75px}body.clockwork section:not(:last-child){padding-right:4px}body.clockwork div.subdisplay{width:100%;margin:0}body.clockwork header.titlebar .close,body.clockwork header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#cfba47}body.clockwork header.titlebar .close:hover,body.clockwork header.titlebar .minimize:hover{color:#d1bd50}body.clockwork header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#5f380e;border-bottom:1px solid #170800;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.clockwork header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.clockwork header.titlebar .title{position:absolute;top:6px;left:46px;color:#cfba47;font-size:16px;white-space:nowrap}body.clockwork header.titlebar .minimize{position:absolute;top:6px;right:46px}body.clockwork header.titlebar .close{position:absolute;top:4px;right:12px}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjAiIHZpZXdCb3g9IjAgMCA0MjUgMjAwIiBvcGFjaXR5PSIuMzMiPgogIDxwYXRoIGQ9Im0gMTc4LjAwMzk5LDAuMDM4NjkgLTcxLjIwMzkzLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM0LDYuMDI1NTUgbCAwLDE4Ny44NzE0NyBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgNi43NjEzNCw2LjAyNTU0IGwgNTMuMTA3MiwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTAxLjU0NDAxOCA3Mi4yMTYyOCwxMDQuNjk5Mzk4IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA1Ljc2MDE1LDIuODcwMTYgbCA3My41NTQ4NywwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzNSwtNi4wMjU1NSBsIC01NC43MTY0NCwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzMyw2LjAyNTU1IGwgMCwxMDIuNjE5MzUgTCAxODMuNzY0MTMsMi45MDg4NiBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTUuNzYwMTQsLTIuODcwMTcgeiIgLz4KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPgogIDxwYXRoIGQ9Im0gNDIwLjE1NTM1LDE3Ny44OTExOSBhIDEzLjQxMjAzOCwxMi41MDE4NDIgMCAwIDEgLTguNjMyOTUsMjIuMDY5NTEgbCAtNjYuMTE4MzIsMCBhIDUuMzY0ODE1Miw1LjAwMDczNyAwIDAgMSAtNS4zNjQ4MiwtNS4wMDA3NCBsIDAsLTc5Ljg3OTMxIHoiIC8+Cjwvc3ZnPgo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4KPCEtLSBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS80LjAvIC0tPgo=") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff2a2a2a",endColorstr="#ff202020",GradientType=0)}body.nanotrasen .normal{color:#40628a}body.nanotrasen .good{color:#537d29}body.nanotrasen .average{color:#be6209}body.nanotrasen .bad{color:#b00e0e}body.nanotrasen .highlight{color:#8ba5c4}body.nanotrasen main{display:block;margin-top:32px;padding:2px 6px 0}body.nanotrasen hr{height:2px;background-color:#40628a;border:none}body.nanotrasen .hidden{display:none}body.nanotrasen .bar .barText,body.nanotrasen span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.nanotrasen .bold{font-weight:700}body.nanotrasen .italic{font-style:italic}body.nanotrasen [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.nanotrasen div[data-tooltip],body.nanotrasen span[data-tooltip]{position:relative}body.nanotrasen div[data-tooltip]:after,body.nanotrasen span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);pointer-events:none;visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.nanotrasen div[data-tooltip]:hover:after,body.nanotrasen span[data-tooltip]:hover:after{pointer-events:none;visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.nanotrasen div[data-tooltip].tooltip-top:after,body.nanotrasen span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-top:hover:after,body.nanotrasen span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:after,body.nanotrasen span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:hover:after,body.nanotrasen span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-left:after,body.nanotrasen span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-left:hover:after,body.nanotrasen span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:after,body.nanotrasen span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:hover:after,body.nanotrasen span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}body.nanotrasen .bar .barText{position:absolute;top:0;right:3px}body.nanotrasen .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}body.nanotrasen .bar .barFill.good{background-color:#537d29}body.nanotrasen .bar .barFill.average{background-color:#be6209}body.nanotrasen .bar .barFill.bad{background-color:#b00e0e}body.nanotrasen span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.nanotrasen span.button .fa{padding-right:2px}body.nanotrasen span.button.normal{transition:background-color .5s;background-color:#40628a}body.nanotrasen span.button.normal.active:focus,body.nanotrasen span.button.normal.active:hover{transition:background-color .25s;background-color:#4f78aa;outline:0}body.nanotrasen span.button.disabled{transition:background-color .5s;background-color:#999}body.nanotrasen span.button.disabled.active:focus,body.nanotrasen span.button.disabled.active:hover{transition:background-color .25s;background-color:#a8a8a8;outline:0}body.nanotrasen span.button.selected{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.selected.active:focus,body.nanotrasen span.button.selected.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.toggle{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.toggle.active:focus,body.nanotrasen span.button.toggle.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.caution{transition:background-color .5s;background-color:#9a9d00}body.nanotrasen span.button.caution.active:focus,body.nanotrasen span.button.caution.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.nanotrasen span.button.danger{transition:background-color .5s;background-color:#9d0808}body.nanotrasen span.button.danger.active:focus,body.nanotrasen span.button.danger.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.nanotrasen span.button.gridable{width:125px;margin:2px 0}body.nanotrasen span.button.gridable.center{text-align:center;width:75px}body.nanotrasen span.button+span:not(.button),body.nanotrasen span:not(.button)+span.button{margin-left:5px}body.nanotrasen div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000);background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5)}body.nanotrasen div.display.tabular{padding:0;margin:0}body.nanotrasen div.display header,body.nanotrasen div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #40628a}body.nanotrasen div.display header .buttonRight,body.nanotrasen div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.nanotrasen div.display article,body.nanotrasen div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.nanotrasen input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#000;background-color:#fff;border:1px solid #272727}body.nanotrasen input.number{width:35px}body.nanotrasen input:-ms-input-placeholder{color:#999}body.nanotrasen input::placeholder{color:#999}body.nanotrasen input::-ms-clear{display:none}body.nanotrasen svg.linegraph{overflow:hidden}body.nanotrasen div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px)}body.nanotrasen div.notice .label{color:#000}body.nanotrasen div.notice .content:only-of-type{padding:0}body.nanotrasen div.notice hr{background-color:#272727}body.nanotrasen div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.nanotrasen section .cell,body.nanotrasen section .compressedcell,body.nanotrasen section .content,body.nanotrasen section .label,body.nanotrasen section .line,body.syndicate section .cell,body.syndicate section .compressedcell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.nanotrasen section{display:table-row;width:100%}body.nanotrasen section:not(:first-child){padding-top:4px}body.nanotrasen section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.nanotrasen section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}body.nanotrasen section .content:not(:last-child){padding-right:16px}body.nanotrasen section .line{width:100%}body.nanotrasen section .cell:not(:first-child),body.nanotrasen section .compressedcell:not(:first-child){text-align:center;padding-top:0}body.nanotrasen section .cell span.button{width:75px}body.nanotrasen section:not(:last-child){padding-right:4px}body.nanotrasen div.subdisplay{width:100%;margin:0}body.nanotrasen header.titlebar .close,body.nanotrasen header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#8ba5c4}body.nanotrasen header.titlebar .close:hover,body.nanotrasen header.titlebar .minimize:hover{color:#9cb2cd}body.nanotrasen header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.nanotrasen header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.nanotrasen header.titlebar .title{position:absolute;top:6px;left:46px;color:#8ba5c4;font-size:16px;white-space:nowrap}body.nanotrasen header.titlebar .minimize{position:absolute;top:6px;right:46px}body.nanotrasen header.titlebar .close{position:absolute;top:4px;right:12px}body.syndicate{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjAiIHZpZXdCb3g9IjAgMCAyMDAgMjg5Ljc0MiIgb3BhY2l0eT0iLjMzIj4KICA8cGF0aCBkPSJtIDkzLjUzNzY3NywwIGMgLTE4LjExMzEyNSwwIC0zNC4yMjAxMzMsMy4xMTE2NCAtNDguMzIzNDg0LDkuMzM0MzcgLTEzLjk2NTA5Miw2LjIyMTY3IC0yNC42MTI0NDIsMTUuMDcxMTQgLTMxLjk0MDY1MSwyNi41NDcxIC03LjE4OTkzOTgsMTEuMzM3ODkgLTEwLjMwMTIyNjYsMjQuNzQ5MTEgLTEwLjMwMTIyNjYsNDAuMjM0NzggMCwxMC42NDY2MiAyLjcyNTAwMjYsMjAuNDY0NjUgOC4xNzUxMTE2LDI5LjQ1MjU4IDUuNjE1Mjc3LDguOTg2ODYgMTQuMDM4Mjc3LDE3LjM1MjA0IDI1LjI2ODgyMSwyNS4wOTQzNiAxMS4yMzA1NDQsNy42MDUzMSAyNi41MDc0MjEsMTUuNDE4MzUgNDUuODMwNTE0LDIzLjQzNzgyIDE5Ljk4Mzc0OCw4LjI5NTU3IDM0Ljg0ODg0OCwxNS41NTQ3MSA0NC41OTI5OTgsMjEuNzc2MzggOS43NDQxNCw2LjIyMjczIDE2Ljc2MTcsMTIuODU4NSAyMS4wNTU3MiwxOS45MDk1MSA0LjI5NDA0LDcuMDUyMDggNi40NDE5MywxNS43NjQwOCA2LjQ0MTkzLDI2LjEzNDU5IDAsMTYuMTc3MDIgLTUuMjAxOTYsMjguNDgyMjIgLTE1LjYwNjczLDM2LjkxNjgyIC0xMC4yMzk2LDguNDM0NyAtMjUuMDIyMDMsMTIuNjUyMyAtNDQuMzQ1MTY5LDEyLjY1MjMgLTE0LjAzODE3MSwwIC0yNS41MTUyNDcsLTEuNjU5NCAtMzQuNDMzNjE4LC00Ljk3NzcgLTguOTE4MzcsLTMuNDU2NiAtMTYuMTg1NTcyLC04LjcxMTMgLTIxLjgwMDgzOSwtMTUuNzYzMyAtNS42MTUyNzcsLTcuMDUyMSAtMTAuMDc0Nzk1LC0xNi42NjA4OCAtMTMuMzc3ODk5LC0yOC44MjgxMiBsIC0yNC43NzMxNjI2MjkzOTQ1LDAgMCw1Ni44MjYzMiBDIDMzLjg1Njc2OSwyODYuMDc2MDEgNjMuNzQ5MDQsMjg5Ljc0MjAxIDg5LjY3ODM4MywyODkuNzQyMDEgYyAxNi4wMjAwMjcsMCAzMC43MTk3ODcsLTEuMzgyNyA0NC4wOTczMzcsLTQuMTQ3OSAxMy41NDI3MiwtMi45MDQzIDI1LjEwNDEsLTcuNDY3NiAzNC42ODMwOSwtMTMuNjg5MyA5Ljc0NDEzLC02LjM1OTcgMTcuMzQwNDIsLTE0LjUxOTUgMjIuNzkwNTIsLTI0LjQ3NDggNS40NTAxLC0xMC4wOTMzMiA4LjE3NTExLC0yMi4zOTk1OSA4LjE3NTExLC0zNi45MTY4MiAwLC0xMi45OTc2NCAtMy4zMDIxLC0yNC4zMzUzOSAtOS45MDgyOSwtMzQuMDE0NiAtNi40NDEwNSwtOS44MTcyNSAtMTUuNTI1NDUsLTE4LjUyNzA3IC0yNy4yNTE0NiwtMjYuMTMxMzMgLTExLjU2MDg1LC03LjYwNDI3IC0yNy45MTA4MywtMTUuODMxNDIgLTQ5LjA1MDY2LC0yNC42ODAyMiAtMTcuNTA2NDQsLTcuMTkwMTIgLTMwLjcxOTY2OCwtMTMuNjg5NDggLTM5LjYzODAzOCwtMTkuNDk3MDEgLTguOTE4MzcxLC01LjgwNzUyIC0xOC42MDc0NzQsLTEyLjQzNDA5IC0yNC4wOTY1MjQsLTE4Ljg3NDE3IC01LjQyNjA0MywtNi4zNjYxNiAtOS42NTg4MjYsLTE1LjA3MDAzIC05LjY1ODgyNiwtMjQuODg3MjkgMCwtOS4yNjQwMSAyLjA3NTQxNCwtMTcuMjEzNDUgNi4yMjM0NTQsLTIzLjg1MDMzIDExLjA5ODI5OCwtMTQuMzk3NDggNDEuMjg2NjM4LC0xLjc5NTA3IDQ1LjA3NTYwOSwyNC4zNDc2MiA0LjgzOTM5Miw2Ljc3NDkxIDguODQ5MzUsMTYuMjQ3MjkgMTIuMDI5NTE1LDI4LjQxNTYgbCAyMC41MzIzNCwwIDAsLTU1Ljk5OTY3IGMgLTQuNDc4MjUsLTUuOTI0NDggLTkuOTU0ODgsLTEwLjYzMjIyIC0xNS45MDgzNywtMTQuMzc0MTEgMS42NDA1NSwwLjQ3OTA1IDMuMTkwMzksMS4wMjM3NiA0LjYzODY1LDEuNjQwMjQgNi40OTg2MSwyLjYyNjA3IDEyLjE2NzkzLDcuMzI3NDcgMTcuMDA3MywxNC4xMDM0NSA0LjgzOTM5LDYuNzc0OTEgOC44NDkzNSwxNi4yNDU2NyAxMi4wMjk1MiwyOC40MTM5NyAwLDAgOC40ODEyOCwtMC4xMjg5NCA4LjQ4OTc4LC0wLjAwMiAwLjQxNzc2LDYuNDE0OTQgLTEuNzUzMzksOS40NTI4NiAtNC4xMjM0MiwxMi41NjEwNCAtMi40MTc0LDMuMTY5NzggLTUuMTQ0ODYsNi43ODk3MyAtNC4wMDI3OCwxMy4wMDI5IDEuNTA3ODYsOC4yMDMxOCAxMC4xODM1NCwxMC41OTY0MiAxNC42MjE5NCw5LjMxMTU0IC0zLjMxODQyLC0wLjQ5OTExIC01LjMxODU1LC0xLjc0OTQ4IC01LjMxODU1LC0xLjc0OTQ4IDAsMCAxLjg3NjQ2LDAuOTk4NjggNS42NTExNywtMS4zNTk4MSAtMy4yNzY5NSwwLjk1NTcxIC0xMC43MDUyOSwtMC43OTczOCAtMTEuODAxMjUsLTYuNzYzMTMgLTAuOTU3NTIsLTUuMjA4NjEgMC45NDY1NCwtNy4yOTUxNCAzLjQwMTEzLC0xMC41MTQ4MiAyLjQ1NDYyLC0zLjIxOTY4IDUuMjg0MjYsLTYuOTU4MzEgNC42ODQzLC0xNC40ODgyNCBsIDAuMDAzLDAuMDAyIDguOTI2NzYsMCAwLC01NS45OTk2NyBjIC0xNS4wNzEyNSwtMy44NzE2OCAtMjcuNjUzMTQsLTYuMzYwNDIgLTM3Ljc0NjcxLC03LjQ2NTg2IC05Ljk1NTMxLC0xLjEwNzU1IC0yMC4xODgyMywtMS42NTk4MSAtMzAuNjk2NjEzLC0xLjY1OTgxIHogbSA3MC4zMjE2MDMsMTcuMzA4OTMgMC4yMzgwNSw0MC4zMDQ5IGMgMS4zMTgwOCwxLjIyNjY2IDIuNDM5NjUsMi4yNzgxNSAzLjM0MDgxLDMuMTA2MDIgNC44MzkzOSw2Ljc3NDkxIDguODQ5MzQsMTYuMjQ1NjYgMTIuMDI5NTEsMjguNDEzOTcgbCAyMC41MzIzNCwwIDAsLTU1Ljk5OTY3IGMgLTYuNjc3MzEsLTQuNTkzODEgLTE5LjgzNjQzLC0xMC40NzMwOSAtMzYuMTQwNzEsLTE1LjgyNTIyIHogbSAtMjguMTIwNDksNS42MDU1MSA4LjU2NDc5LDE3LjcxNjU1IGMgLTExLjk3MDM3LC02LjQ2Njk3IC0xMy44NDY3OCwtOS43MTcyNiAtOC41NjQ3OSwtMTcuNzE2NTUgeiBtIDIyLjc5NzA1LDAgYyAyLjc3MTUsNy45OTkyOSAxLjc4NzQxLDExLjI0OTU4IC00LjQ5MzU0LDE3LjcxNjU1IGwgNC40OTM1NCwtMTcuNzE2NTUgeiBtIDE1LjIyMTk1LDI0LjAwODQ4IDguNTY0NzksMTcuNzE2NTUgYyAtMTEuOTcwMzgsLTYuNDY2OTcgLTEzLjg0Njc5LC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk3MDQsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IG0gLTk5LjExMzg0LDIuMjA3NjQgOC41NjQ3OSwxNy43MTY1NSBjIC0xMS45NzAzODIsLTYuNDY2OTcgLTEzLjg0Njc4MiwtOS43MTcyNiAtOC41NjQ3OSwtMTcuNzE2NTUgeiBtIDIyLjc5NTQyLDAgYyAyLjc3MTUsNy45OTkyOSAxLjc4NzQxLDExLjI0OTU4IC00LjQ5MzU0LDE3LjcxNjU1IGwgNC40OTM1NCwtMTcuNzE2NTUgeiIgLz4KPC9zdmc+CjwhLS0gVGhpcyB3b3JrIGlzIGxpY2Vuc2VkIHVuZGVyIGEgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFyZUFsaWtlIDQuMCBJbnRlcm5hdGlvbmFsIExpY2Vuc2UuIC0tPgo8IS0tIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LXNhLzQuMC8gLS0+Cg==") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#750000 0,#340404);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff750000",endColorstr="#ff340404",GradientType=0)}body.syndicate .normal{color:#40628a}body.syndicate .good{color:#73e573}body.syndicate .average{color:#be6209}body.syndicate .bad{color:#b00e0e}body.syndicate .highlight{color:#000}body.syndicate main{display:block;margin-top:32px;padding:2px 6px 0}body.syndicate hr{height:2px;background-color:#272727;border:none}body.syndicate .hidden{display:none}body.syndicate .bar .barText,body.syndicate span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.syndicate .bold{font-weight:700}body.syndicate .italic{font-style:italic}body.syndicate [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.syndicate div[data-tooltip],body.syndicate span[data-tooltip]{position:relative}body.syndicate div[data-tooltip]:after,body.syndicate span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);pointer-events:none;visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.syndicate div[data-tooltip]:hover:after,body.syndicate span[data-tooltip]:hover:after{pointer-events:none;visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.syndicate div[data-tooltip].tooltip-top:after,body.syndicate span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-top:hover:after,body.syndicate span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:after,body.syndicate span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:hover:after,body.syndicate span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-left:after,body.syndicate span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-left:hover:after,body.syndicate span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:after,body.syndicate span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:hover:after,body.syndicate span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #000;background:#272727}body.syndicate .bar .barText{position:absolute;top:0;right:3px}body.syndicate .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#000}body.syndicate .bar .barFill.good{background-color:#73e573}body.syndicate .bar .barFill.average{background-color:#be6209}body.syndicate .bar .barFill.bad{background-color:#b00e0e}body.syndicate span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.syndicate span.button .fa{padding-right:2px}body.syndicate span.button.normal{transition:background-color .5s;background-color:#397439}body.syndicate span.button.normal.active:focus,body.syndicate span.button.normal.active:hover{transition:background-color .25s;background-color:#4a964a;outline:0}body.syndicate span.button.disabled{transition:background-color .5s;background-color:#363636}body.syndicate span.button.disabled.active:focus,body.syndicate span.button.disabled.active:hover{transition:background-color .25s;background-color:#545454;outline:0}body.syndicate span.button.selected{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.selected.active:focus,body.syndicate span.button.selected.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.toggle{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.toggle.active:focus,body.syndicate span.button.toggle.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.caution{transition:background-color .5s;background-color:#be6209}body.syndicate span.button.caution.active:focus,body.syndicate span.button.caution.active:hover{transition:background-color .25s;background-color:#eb790b;outline:0}body.syndicate span.button.danger{transition:background-color .5s;background-color:#9a9d00}body.syndicate span.button.danger.active:focus,body.syndicate span.button.danger.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.syndicate span.button.gridable{width:125px;margin:2px 0}body.syndicate span.button.gridable.center{text-align:center;width:75px}body.syndicate span.button+span:not(.button),body.syndicate span:not(.button)+span.button{margin-left:5px}body.syndicate div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000);background-color:rgba(0,0,0,.5);box-shadow:inset 0 0 5px rgba(0,0,0,.75)}body.syndicate div.display.tabular{padding:0;margin:0}body.syndicate div.display header,body.syndicate div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #272727}body.syndicate div.display header .buttonRight,body.syndicate div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.syndicate div.display article,body.syndicate div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.syndicate input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#fff;background-color:#9d0808;border:1px solid #272727}body.syndicate input.number{width:35px}body.syndicate input:-ms-input-placeholder{color:#999}body.syndicate input::placeholder{color:#999}body.syndicate input::-ms-clear{display:none}body.syndicate svg.linegraph{overflow:hidden}body.syndicate div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#750000;background-image:repeating-linear-gradient(-45deg,#750000,#750000 10px,#910101 0,#910101 20px)}body.syndicate div.notice .label{color:#000}body.syndicate div.notice .content:only-of-type{padding:0}body.syndicate div.notice hr{background-color:#272727}body.syndicate div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.syndicate section .cell,body.syndicate section .compressedcell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.syndicate section{display:table-row;width:100%}body.syndicate section:not(:first-child){padding-top:4px}body.syndicate section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.syndicate section .label{width:1%;padding-right:32px;white-space:nowrap;color:#fff}body.syndicate section .content:not(:last-child){padding-right:16px}body.syndicate section .line{width:100%}body.syndicate section .cell:not(:first-child),body.syndicate section .compressedcell:not(:first-child){text-align:center;padding-top:0}body.syndicate section .cell span.button{width:75px}body.syndicate section:not(:last-child){padding-right:4px}body.syndicate div.subdisplay{width:100%;margin:0}body.syndicate header.titlebar .close,body.syndicate header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#e74242}body.syndicate header.titlebar .close:hover,body.syndicate header.titlebar .minimize:hover{color:#eb5e5e}body.syndicate header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.syndicate header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.syndicate header.titlebar .title{position:absolute;top:6px;left:46px;color:#e74242;font-size:16px;white-space:nowrap}body.syndicate header.titlebar .minimize{position:absolute;top:6px;right:46px}body.syndicate header.titlebar .close{position:absolute;top:4px;right:12px}.no-icons header.titlebar .statusicon{font-size:20px}.no-icons header.titlebar .statusicon:after{content:"O"}.no-icons header.titlebar .minimize{top:-2px;font-size:20px}.no-icons header.titlebar .minimize:after{content:"—"}.no-icons header.titlebar .close{font-size:20px}.no-icons header.titlebar .close:after{content:"X"} \ No newline at end of file diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index 5adb0cfe36..cc0b5d198f 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -1,21 +1,21 @@ require=function(){function t(e,n,a){function r(o,s){if(!n[o]){if(!e[o]){var p="function"==typeof require&&require;if(!s&&p)return p(o,!0);if(i)return i(o,!0);var u=Error("Cannot find module '"+o+"'");throw u.code="MODULE_NOT_FOUND",u}var c=n[o]={exports:{}};e[o][0].call(c.exports,function(t){var n=e[o][1][t];return r(n||t)},c,c.exports,t,e,n,a)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o=0;--a){var r=this.tryEntries[a],i=r.completion;if("root"===r.tryLoc)return e("end");if(r.tryLoc<=this.prev){var o=b.call(r,"catchLoc"),s=b.call(r,"finallyLoc");if(o&&s){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&b.call(a,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),d(n),O}},"catch":function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var a=n.completion;if("throw"===a.type){var r=a.arg;d(n)}return r}}throw Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:h(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=g),O}}}("object"==typeof t?t:"object"==typeof window?window:"object"==typeof self?self:this)}).call(this,void 0!==t?t:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],3:[function(t,e,n){t(129),e.exports=t(24).RegExp.escape},{129:129,24:24}],4:[function(t,e,n){e.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},{}],5:[function(t,e,n){var a=t(19);e.exports=function(t,e){if("number"!=typeof t&&"Number"!=a(t))throw TypeError(e);return+t}},{19:19}],6:[function(t,e,n){var a=t(127)("unscopables"),r=Array.prototype;void 0==r[a]&&t(43)(r,a,{}),e.exports=function(t){r[a][t]=!0}},{127:127,43:43}],7:[function(t,e,n){e.exports=function(t,e,n,a){if(!(t instanceof e)||void 0!==a&&a in t)throw TypeError(n+": incorrect invocation!");return t}},{}],8:[function(t,e,n){var a=t(52);e.exports=function(t){if(!a(t))throw TypeError(t+" is not an object!");return t}},{52:52}],9:[function(t,e,n){"use strict";var a=t(117),r=t(112),i=t(116);e.exports=[].copyWithin||function(t,e){var n=a(this),o=i(n.length),s=r(t,o),p=r(e,o),u=arguments.length>2?arguments[2]:void 0,c=Math.min((void 0===u?o:r(u,o))-p,o-s),l=1;for(s>p&&p+c>s&&(l=-1,p+=c-1,s+=c-1);c-- >0;)p in n?n[s]=n[p]:delete n[s],s+=l,p+=l;return n}},{112:112,116:116,117:117}],10:[function(t,e,n){"use strict";var a=t(117),r=t(112),i=t(116);e.exports=function(t){for(var e=a(this),n=i(e.length),o=arguments.length,s=r(o>1?arguments[1]:void 0,n),p=o>2?arguments[2]:void 0,u=void 0===p?n:r(p,n);u>s;)e[s++]=t;return e}},{112:112,116:116,117:117}],11:[function(t,e,n){var a=t(40);e.exports=function(t,e){var n=[];return a(t,!1,n.push,n,e),n}},{40:40}],12:[function(t,e,n){var a=t(115),r=t(116),i=t(112);e.exports=function(t){return function(e,n,o){var s,p=a(e),u=r(p.length),c=i(o,u);if(t&&n!=n){for(;u>c;)if(s=p[c++],s!=s)return!0}else for(;u>c;c++)if((t||c in p)&&p[c]===n)return t||c||0;return!t&&-1}}},{112:112,115:115,116:116}],13:[function(t,e,n){var a=t(26),r=t(48),i=t(117),o=t(116),s=t(16);e.exports=function(t,e){var n=1==t,p=2==t,u=3==t,c=4==t,l=6==t,d=5==t||l,f=e||s;return function(e,s,h){for(var m,g,v=i(e),b=r(v),y=a(s,h,3),_=o(b.length),x=0,w=n?f(e,_):p?f(e,0):void 0;_>x;x++)if((d||x in b)&&(m=b[x],g=y(m,x,v),t))if(n)w[x]=g;else if(g)switch(t){case 3:return!0;case 5:return m;case 6:return x;case 2:w.push(m)}else if(c)return!1;return l?-1:u||c?c:w}}},{116:116,117:117,16:16,26:26,48:48}],14:[function(t,e,n){var a=t(4),r=t(117),i=t(48),o=t(116);e.exports=function(t,e,n,s,p){a(e);var u=r(t),c=i(u),l=o(u.length),d=p?l-1:0,f=p?-1:1;if(2>n)for(;;){if(d in c){s=c[d],d+=f;break}if(d+=f,p?0>d:d>=l)throw TypeError("Reduce of empty array with no initial value")}for(;p?d>=0:l>d;d+=f)d in c&&(s=e(s,c[d],d,u));return s}},{116:116,117:117,4:4,48:48}],15:[function(t,e,n){var a=t(52),r=t(50),i=t(127)("species");e.exports=function(t){var e;return r(t)&&(e=t.constructor,"function"!=typeof e||e!==Array&&!r(e.prototype)||(e=void 0),a(e)&&(e=e[i],null===e&&(e=void 0))),void 0===e?Array:e}},{127:127,50:50,52:52}],16:[function(t,e,n){var a=t(15);e.exports=function(t,e){return new(a(t))(e)}},{15:15}],17:[function(t,e,n){"use strict";var a=t(4),r=t(52),i=t(47),o=[].slice,s={},p=function(t,e,n){if(!(e in s)){for(var a=[],r=0;e>r;r++)a[r]="a["+r+"]";s[e]=Function("F,a","return new F("+a.join(",")+")")}return s[e](t,n)};e.exports=Function.bind||function(t){var e=a(this),n=o.call(arguments,1),s=function(){var a=n.concat(o.call(arguments));return this instanceof s?p(e,a.length,a):i(e,a,t)};return r(e.prototype)&&(s.prototype=e.prototype),s}},{4:4,47:47,52:52}],18:[function(t,e,n){var a=t(19),r=t(127)("toStringTag"),i="Arguments"==a(function(){return arguments}()),o=function(t,e){try{return t[e]}catch(n){}};e.exports=function(t){var e,n,s;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=o(e=Object(t),r))?n:i?a(e):"Object"==(s=a(e))&&"function"==typeof e.callee?"Arguments":s}},{127:127,19:19}],19:[function(t,e,n){var a={}.toString;e.exports=function(t){return a.call(t).slice(8,-1)}},{}],20:[function(t,e,n){"use strict";var a=t(72).f,r=t(71),i=t(91),o=t(26),s=t(7),p=t(40),u=t(56),c=t(58),l=t(98),d=t(30),f=t(66).fastKey,h=t(124),m=d?"_s":"size",g=function(t,e){var n,a=f(e);if("F"!==a)return t._i[a];for(n=t._f;n;n=n.n)if(n.k==e)return n};e.exports={getConstructor:function(t,e,n,u){var c=t(function(t,a){s(t,c,e,"_i"),t._t=e,t._i=r(null),t._f=void 0,t._l=void 0,t[m]=0,void 0!=a&&p(a,n,t[u],t)});return i(c.prototype,{clear:function(){for(var t=h(this,e),n=t._i,a=t._f;a;a=a.n)a.r=!0,a.p&&(a.p=a.p.n=void 0),delete n[a.i];t._f=t._l=void 0,t[m]=0},"delete":function(t){var n=h(this,e),a=g(n,t);if(a){var r=a.n,i=a.p;delete n._i[a.i],a.r=!0,i&&(i.n=r),r&&(r.p=i),n._f==a&&(n._f=r),n._l==a&&(n._l=i),n[m]--}return!!a},forEach:function(t){h(this,e);for(var n,a=o(t,arguments.length>1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(a(n.v,n.k,this);n&&n.r;)n=n.p},has:function(t){return!!g(h(this,e),t)}}),d&&a(c.prototype,"size",{get:function(){return h(this,e)[m]}}),c},def:function(t,e,n){var a,r,i=g(t,e);return i?i.v=n:(t._l=i={i:r=f(e,!0),k:e,v:n,p:a=t._l,n:void 0,r:!1},t._f||(t._f=i),a&&(a.n=i),t[m]++,"F"!==r&&(t._i[r]=i)),t},getEntry:g,setStrong:function(t,e,n){u(t,e,function(t,n){this._t=h(t,e),this._k=n,this._l=void 0},function(){for(var t=this,e=t._k,n=t._l;n&&n.r;)n=n.p;return t._t&&(t._l=n=n?n.n:t._t._f)?"keys"==e?c(0,n.k):"values"==e?c(0,n.v):c(0,[n.k,n.v]):(t._t=void 0,c(1))},n?"entries":"values",!n,!0),l(e)}}},{124:124,26:26,30:30,40:40,56:56,58:58,66:66,7:7,71:71,72:72,91:91,98:98}],21:[function(t,e,n){var a=t(18),r=t(11);e.exports=function(t){return function(){if(a(this)!=t)throw TypeError(t+"#toJSON isn't generic");return r(this)}}},{11:11,18:18}],22:[function(t,e,n){"use strict";var a=t(91),r=t(66).getWeak,i=t(8),o=t(52),s=t(7),p=t(40),u=t(13),c=t(42),l=t(124),d=u(5),f=u(6),h=0,m=function(t){return t._l||(t._l=new g)},g=function(){this.a=[]},v=function(t,e){return d(t.a,function(t){return t[0]===e})};g.prototype={get:function(t){var e=v(this,t);return e?e[1]:void 0},has:function(t){return!!v(this,t)},set:function(t,e){var n=v(this,t);n?n[1]=e:this.a.push([t,e])},"delete":function(t){var e=f(this.a,function(e){return e[0]===t});return~e&&this.a.splice(e,1),!!~e}},e.exports={getConstructor:function(t,e,n,i){var u=t(function(t,a){s(t,u,e,"_i"),t._t=e,t._i=h++,t._l=void 0,void 0!=a&&p(a,n,t[i],t)});return a(u.prototype,{"delete":function(t){if(!o(t))return!1;var n=r(t);return n===!0?m(l(this,e))["delete"](t):n&&c(n,this._i)&&delete n[this._i]},has:function(t){if(!o(t))return!1;var n=r(t);return n===!0?m(l(this,e)).has(t):n&&c(n,this._i)}}),u},def:function(t,e,n){var a=r(i(e),!0);return a===!0?m(t).set(e,n):a[t._i]=n,t},ufstore:m}},{124:124,13:13,40:40,42:42,52:52,66:66,7:7,8:8,91:91}],23:[function(t,e,n){"use strict";var a=t(41),r=t(34),i=t(92),o=t(91),s=t(66),p=t(40),u=t(7),c=t(52),l=t(36),d=t(57),f=t(99),h=t(46);e.exports=function(t,e,n,m,g,v){var b=a[t],y=b,_=g?"set":"add",x=y&&y.prototype,w={},k=function(t){var e=x[t];i(x,t,"delete"==t?function(t){return v&&!c(t)?!1:e.call(this,0===t?0:t)}:"has"==t?function(t){return v&&!c(t)?!1:e.call(this,0===t?0:t)}:"get"==t?function(t){return v&&!c(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof y&&(v||x.forEach&&!l(function(){(new y).entries().next()}))){var S=new y,E=S[_](v?{}:-0,1)!=S,C=l(function(){S.has(1)}),P=d(function(t){new y(t)}),A=!v&&l(function(){for(var t=new y,e=5;e--;)t[_](e,e);return!t.has(-0)});P||(y=e(function(e,n){u(e,y,t);var a=h(new b,e,y);return void 0!=n&&p(n,g,a[_],a),a}),y.prototype=x,x.constructor=y),(C||A)&&(k("delete"),k("has"),g&&k("get")),(A||E)&&k(_),v&&x.clear&&delete x.clear}else y=m.getConstructor(e,t,g,_),o(y.prototype,n),s.NEED=!0;return f(y,t),w[t]=y,r(r.G+r.W+r.F*(y!=b),w),v||m.setStrong(y,t,g),y}},{34:34,36:36,40:40,41:41,46:46,52:52,57:57,66:66,7:7,91:91,92:92,99:99}],24:[function(t,e,n){var a=e.exports={version:"2.5.6"};"number"==typeof __e&&(__e=a)},{}],25:[function(t,e,n){"use strict";var a=t(72),r=t(90);e.exports=function(t,e,n){e in t?a.f(t,e,r(0,n)):t[e]=n}},{72:72,90:90}],26:[function(t,e,n){var a=t(4);e.exports=function(t,e,n){if(a(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,a){return t.call(e,n,a)};case 3:return function(n,a,r){return t.call(e,n,a,r)}}return function(){return t.apply(e,arguments)}}},{4:4}],27:[function(t,e,n){"use strict";var a=t(36),r=Date.prototype.getTime,i=Date.prototype.toISOString,o=function(t){return t>9?t:"0"+t};e.exports=a(function(){return"0385-07-25T07:06:39.999Z"!=i.call(new Date(-5e13-1))})||!a(function(){i.call(new Date(NaN))})?function(){if(!isFinite(r.call(this)))throw RangeError("Invalid time value");var t=this,e=t.getUTCFullYear(),n=t.getUTCMilliseconds(),a=0>e?"-":e>9999?"+":"";return a+("00000"+Math.abs(e)).slice(a?-6:-4)+"-"+o(t.getUTCMonth()+1)+"-"+o(t.getUTCDate())+"T"+o(t.getUTCHours())+":"+o(t.getUTCMinutes())+":"+o(t.getUTCSeconds())+"."+(n>99?n:"0"+o(n))+"Z"}:i},{36:36}],28:[function(t,e,n){"use strict";var a=t(8),r=t(118),i="number";e.exports=function(t){if("string"!==t&&t!==i&&"default"!==t)throw TypeError("Incorrect hint");return r(a(this),t!=i)}},{118:118,8:8}],29:[function(t,e,n){e.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},{}],30:[function(t,e,n){e.exports=!t(36)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{36:36}],31:[function(t,e,n){var a=t(52),r=t(41).document,i=a(r)&&a(r.createElement);e.exports=function(t){return i?r.createElement(t):{}}},{41:41,52:52}],32:[function(t,e,n){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],33:[function(t,e,n){var a=t(81),r=t(78),i=t(82);e.exports=function(t){var e=a(t),n=r.f;if(n)for(var o,s=n(t),p=i.f,u=0;s.length>u;)p.call(t,o=s[u++])&&e.push(o);return e}},{78:78,81:81,82:82}],34:[function(t,e,n){var a=t(41),r=t(24),i=t(43),o=t(92),s=t(26),p="prototype",u=function(t,e,n){var c,l,d,f,h=t&u.F,m=t&u.G,g=t&u.S,v=t&u.P,b=t&u.B,y=m?a:g?a[e]||(a[e]={}):(a[e]||{})[p],_=m?r:r[e]||(r[e]={}),x=_[p]||(_[p]={});m&&(n=e);for(c in n)l=!h&&y&&void 0!==y[c],d=(l?y:n)[c],f=b&&l?s(d,a):v&&"function"==typeof d?s(Function.call,d):d,y&&o(y,c,d,t&u.U),_[c]!=d&&i(_,c,f),v&&x[c]!=d&&(x[c]=d)};a.core=r,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,e.exports=u},{24:24,26:26,41:41,43:43,92:92}],35:[function(t,e,n){var a=t(127)("match");e.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[a]=!1,!"/./"[t](e)}catch(r){}}return!0}},{127:127}],36:[function(t,e,n){e.exports=function(t){try{return!!t()}catch(e){return!0}}},{}],37:[function(t,e,n){"use strict";var a=t(43),r=t(92),i=t(36),o=t(29),s=t(127);e.exports=function(t,e,n){var p=s(t),u=n(o,p,""[t]),c=u[0],l=u[1];i(function(){var e={};return e[p]=function(){return 7},7!=""[t](e)})&&(r(String.prototype,t,c),a(RegExp.prototype,p,2==e?function(t,e){return l.call(t,this,e)}:function(t){return l.call(t,this)}))}},{127:127,29:29,36:36,43:43,92:92}],38:[function(t,e,n){"use strict";var a=t(8);e.exports=function(){var t=a(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},{8:8}],39:[function(t,e,n){"use strict";function a(t,e,n,u,c,l,d,f){for(var h,m,g=c,v=0,b=d?s(d,f,3):!1;u>v;){if(v in n){if(h=b?b(n[v],v,e):n[v],m=!1,i(h)&&(m=h[p],m=void 0!==m?!!m:r(h)),m&&l>0)g=a(t,e,h,o(h.length),g,l-1)-1;else{if(g>=9007199254740991)throw TypeError();t[g]=h}g++}v++}return g}var r=t(50),i=t(52),o=t(116),s=t(26),p=t(127)("isConcatSpreadable");e.exports=a},{116:116,127:127,26:26,50:50,52:52}],40:[function(t,e,n){var a=t(26),r=t(54),i=t(49),o=t(8),s=t(116),p=t(128),u={},c={},n=e.exports=function(t,e,n,l,d){var f,h,m,g,v=d?function(){return t}:p(t),b=a(n,l,e?2:1),y=0;if("function"!=typeof v)throw TypeError(t+" is not iterable!");if(i(v)){for(f=s(t.length);f>y;y++)if(g=e?b(o(h=t[y])[0],h[1]):b(t[y]),g===u||g===c)return g}else for(m=v.call(t);!(h=m.next()).done;)if(g=r(m,b,h.value,e),g===u||g===c)return g};n.BREAK=u,n.RETURN=c},{116:116,128:128,26:26,49:49,54:54,8:8}],41:[function(t,e,n){var a=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=a)},{}],42:[function(t,e,n){var a={}.hasOwnProperty;e.exports=function(t,e){return a.call(t,e)}},{}],43:[function(t,e,n){var a=t(72),r=t(90);e.exports=t(30)?function(t,e,n){return a.f(t,e,r(1,n))}:function(t,e,n){return t[e]=n,t}},{30:30,72:72,90:90}],44:[function(t,e,n){var a=t(41).document;e.exports=a&&a.documentElement},{41:41}],45:[function(t,e,n){e.exports=!t(30)&&!t(36)(function(){return 7!=Object.defineProperty(t(31)("div"),"a",{get:function(){return 7}}).a})},{30:30,31:31,36:36}],46:[function(t,e,n){var a=t(52),r=t(97).set;e.exports=function(t,e,n){var i,o=e.constructor;return o!==n&&"function"==typeof o&&(i=o.prototype)!==n.prototype&&a(i)&&r&&r(t,i),t}},{52:52,97:97}],47:[function(t,e,n){e.exports=function(t,e,n){var a=void 0===n;switch(e.length){case 0:return a?t():t.call(n);case 1:return a?t(e[0]):t.call(n,e[0]);case 2:return a?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return a?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return a?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},{}],48:[function(t,e,n){var a=t(19);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==a(t)?t.split(""):Object(t)}},{19:19}],49:[function(t,e,n){var a=t(59),r=t(127)("iterator"),i=Array.prototype;e.exports=function(t){return void 0!==t&&(a.Array===t||i[r]===t)}},{127:127,59:59}],50:[function(t,e,n){var a=t(19);e.exports=Array.isArray||function(t){return"Array"==a(t)}},{19:19}],51:[function(t,e,n){var a=t(52),r=Math.floor;e.exports=function(t){return!a(t)&&isFinite(t)&&r(t)===t}},{52:52}],52:[function(t,e,n){e.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},{}],53:[function(t,e,n){var a=t(52),r=t(19),i=t(127)("match");e.exports=function(t){var e;return a(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==r(t))}},{127:127,19:19,52:52}],54:[function(t,e,n){var a=t(8);e.exports=function(t,e,n,r){try{return r?e(a(n)[0],n[1]):e(n)}catch(i){var o=t["return"];throw void 0!==o&&a(o.call(t)),i}}},{8:8}],55:[function(t,e,n){"use strict";var a=t(71),r=t(90),i=t(99),o={};t(43)(o,t(127)("iterator"),function(){return this}),e.exports=function(t,e,n){t.prototype=a(o,{next:r(1,n)}),i(t,e+" Iterator")}},{127:127,43:43,71:71,90:90,99:99}],56:[function(t,e,n){"use strict";var a=t(60),r=t(34),i=t(92),o=t(43),s=t(59),p=t(55),u=t(99),c=t(79),l=t(127)("iterator"),d=!([].keys&&"next"in[].keys()),f="@@iterator",h="keys",m="values",g=function(){return this};e.exports=function(t,e,n,v,b,y,_){p(n,e,v);var x,w,k,S=function(t){if(!d&&t in A)return A[t];switch(t){case h:return function(){return new n(this,t)};case m:return function(){return new n(this,t)}}return function(){return new n(this,t)}},E=e+" Iterator",C=b==m,P=!1,A=t.prototype,O=A[l]||A[f]||b&&A[b],T=O||S(b),R=b?C?S("entries"):T:void 0,M="Array"==e?A.entries||O:O;if(M&&(k=c(M.call(new t)),k!==Object.prototype&&k.next&&(u(k,E,!0),a||"function"==typeof k[l]||o(k,l,g))),C&&O&&O.name!==m&&(P=!0,T=function(){return O.call(this)}),a&&!_||!d&&!P&&A[l]||o(A,l,T),s[e]=T,s[E]=g,b)if(x={values:C?T:S(m),keys:y?T:S(h),entries:R},_)for(w in x)w in A||i(A,w,x[w]);else r(r.P+r.F*(d||P),e,x);return x}},{127:127,34:34,43:43,55:55,59:59,60:60,79:79,92:92,99:99}],57:[function(t,e,n){var a=t(127)("iterator"),r=!1;try{var i=[7][a]();i["return"]=function(){r=!0},Array.from(i,function(){throw 2})}catch(o){}e.exports=function(t,e){if(!e&&!r)return!1;var n=!1;try{var i=[7],o=i[a]();o.next=function(){return{done:n=!0}},i[a]=function(){return o},t(i)}catch(s){}return n}},{127:127}],58:[function(t,e,n){e.exports=function(t,e){return{value:e,done:!!t}}},{}],59:[function(t,e,n){e.exports={}},{}],60:[function(t,e,n){e.exports=!1},{}],61:[function(t,e,n){var a=Math.expm1;e.exports=!a||a(10)>22025.465794806718||a(10)<22025.465794806718||-2e-17!=a(-2e-17)?function(t){return 0==(t=+t)?t:t>-1e-6&&1e-6>t?t+t*t/2:Math.exp(t)-1}:a},{}],62:[function(t,e,n){var a=t(65),r=Math.pow,i=r(2,-52),o=r(2,-23),s=r(2,127)*(2-o),p=r(2,-126),u=function(t){return t+1/i-1/i};e.exports=Math.fround||function(t){var e,n,r=Math.abs(t),c=a(t);return p>r?c*u(r/p/o)*p*o:(e=(1+o/i)*r,n=e-(e-r),n>s||n!=n?c*(1/0):c*n)}},{65:65}],63:[function(t,e,n){e.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&1e-8>t?t-t*t/2:Math.log(1+t)}},{}],64:[function(t,e,n){e.exports=Math.scale||function(t,e,n,a,r){return 0===arguments.length||t!=t||e!=e||n!=n||a!=a||r!=r?NaN:t===1/0||t===-(1/0)?t:(t-e)*(r-a)/(n-e)+a}},{}],65:[function(t,e,n){e.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:0>t?-1:1}},{}],66:[function(t,e,n){var a=t(122)("meta"),r=t(52),i=t(42),o=t(72).f,s=0,p=Object.isExtensible||function(){return!0},u=!t(36)(function(){return p(Object.preventExtensions({}))}),c=function(t){o(t,a,{value:{i:"O"+ ++s,w:{}}})},l=function(t,e){if(!r(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,a)){if(!p(t))return"F";if(!e)return"E";c(t)}return t[a].i},d=function(t,e){if(!i(t,a)){if(!p(t))return!0;if(!e)return!1;c(t)}return t[a].w},f=function(t){return u&&h.NEED&&p(t)&&!i(t,a)&&c(t),t},h=e.exports={KEY:a,NEED:!1,fastKey:l,getWeak:d,onFreeze:f}},{122:122,36:36,42:42,52:52,72:72}],67:[function(t,e,n){var a=t(159),r=t(34),i=t(101)("metadata"),o=i.store||(i.store=new(t(265))),s=function(t,e,n){var r=o.get(t);if(!r){if(!n)return;o.set(t,r=new a)}var i=r.get(e);if(!i){if(!n)return;r.set(e,i=new a)}return i},p=function(t,e,n){var a=s(e,n,!1);return void 0===a?!1:a.has(t)},u=function(t,e,n){var a=s(e,n,!1);return void 0===a?void 0:a.get(t)},c=function(t,e,n,a){s(n,a,!0).set(t,e)},l=function(t,e){var n=s(t,e,!1),a=[];return n&&n.forEach(function(t,e){a.push(e)}),a},d=function(t){return void 0===t||"symbol"==typeof t?t:t+""},f=function(t){r(r.S,"Reflect",t)};e.exports={store:o,map:s,has:p,get:u,set:c,keys:l,key:d,exp:f}},{101:101,159:159,265:265,34:34}],68:[function(t,e,n){var a=t(41),r=t(111).set,i=a.MutationObserver||a.WebKitMutationObserver,o=a.process,s=a.Promise,p="process"==t(19)(o);e.exports=function(){var t,e,n,u=function(){var a,r;for(p&&(a=o.domain)&&a.exit();t;){r=t.fn,t=t.next;try{r()}catch(i){throw t?n():e=void 0,i}}e=void 0,a&&a.enter()};if(p)n=function(){o.nextTick(u)};else if(!i||a.navigator&&a.navigator.standalone)if(s&&s.resolve){var c=s.resolve(void 0);n=function(){c.then(u)}}else n=function(){r.call(a,u)};else{var l=!0,d=document.createTextNode("");new i(u).observe(d,{characterData:!0}),n=function(){d.data=l=!l}}return function(a){var r={fn:a,next:void 0};e&&(e.next=r),t||(t=r,n()),e=r}}},{111:111,19:19,41:41}],69:[function(t,e,n){"use strict";function a(t){var e,n;this.promise=new t(function(t,a){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=a}),this.resolve=r(e),this.reject=r(n)}var r=t(4);e.exports.f=function(t){return new a(t)}},{4:4}],70:[function(t,e,n){"use strict";var a=t(81),r=t(78),i=t(82),o=t(117),s=t(48),p=Object.assign;e.exports=!p||t(36)(function(){var t={},e={},n=Symbol(),a="abcdefghijklmnopqrst";return t[n]=7,a.split("").forEach(function(t){e[t]=t}),7!=p({},t)[n]||Object.keys(p({},e)).join("")!=a})?function(t,e){for(var n=o(t),p=arguments.length,u=1,c=r.f,l=i.f;p>u;)for(var d,f=s(arguments[u++]),h=c?a(f).concat(c(f)):a(f),m=h.length,g=0;m>g;)l.call(f,d=h[g++])&&(n[d]=f[d]);return n}:p},{117:117,36:36,48:48,78:78,81:81,82:82}],71:[function(t,e,n){var a=t(8),r=t(73),i=t(32),o=t(100)("IE_PROTO"),s=function(){},p="prototype",u=function(){var e,n=t(31)("iframe"),a=i.length,r="<",o=">";for(n.style.display="none",t(44).appendChild(n),n.src="javascript:",e=n.contentWindow.document,e.open(),e.write(r+"script"+o+"document.F=Object"+r+"/script"+o),e.close(),u=e.F;a--;)delete u[p][i[a]];return u()};e.exports=Object.create||function(t,e){var n;return null!==t?(s[p]=a(t),n=new s,s[p]=null,n[o]=t):n=u(),void 0===e?n:r(n,e)}},{100:100,31:31,32:32,44:44,73:73,8:8}],72:[function(t,e,n){var a=t(8),r=t(45),i=t(118),o=Object.defineProperty;n.f=t(30)?Object.defineProperty:function(t,e,n){if(a(t),e=i(e,!0),a(n),r)try{return o(t,e,n)}catch(s){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},{118:118,30:30,45:45,8:8}],73:[function(t,e,n){var a=t(72),r=t(8),i=t(81);e.exports=t(30)?Object.defineProperties:function(t,e){r(t);for(var n,o=i(e),s=o.length,p=0;s>p;)a.f(t,n=o[p++],e[n]);return t}},{30:30,72:72,8:8,81:81}],74:[function(t,e,n){"use strict";e.exports=t(60)||!t(36)(function(){var e=Math.random();__defineSetter__.call(null,e,function(){}),delete t(41)[e]})},{36:36,41:41,60:60}],75:[function(t,e,n){var a=t(82),r=t(90),i=t(115),o=t(118),s=t(42),p=t(45),u=Object.getOwnPropertyDescriptor;n.f=t(30)?u:function(t,e){if(t=i(t),e=o(e,!0),p)try{return u(t,e)}catch(n){}return s(t,e)?r(!a.f.call(t,e),t[e]):void 0}},{115:115,118:118,30:30,42:42,45:45,82:82,90:90}],76:[function(t,e,n){var a=t(115),r=t(77).f,i={}.toString,o="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(t){try{return r(t)}catch(e){return o.slice()}};e.exports.f=function(t){return o&&"[object Window]"==i.call(t)?s(t):r(a(t))}},{115:115,77:77}],77:[function(t,e,n){var a=t(80),r=t(32).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(t){return a(t,r)}},{32:32,80:80}],78:[function(t,e,n){n.f=Object.getOwnPropertySymbols},{}],79:[function(t,e,n){var a=t(42),r=t(117),i=t(100)("IE_PROTO"),o=Object.prototype;e.exports=Object.getPrototypeOf||function(t){return t=r(t),a(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?o:null}},{100:100,117:117,42:42}],80:[function(t,e,n){var a=t(42),r=t(115),i=t(12)(!1),o=t(100)("IE_PROTO");e.exports=function(t,e){var n,s=r(t),p=0,u=[];for(n in s)n!=o&&a(s,n)&&u.push(n);for(;e.length>p;)a(s,n=e[p++])&&(~i(u,n)||u.push(n));return u}},{100:100,115:115,12:12,42:42}],81:[function(t,e,n){var a=t(80),r=t(32);e.exports=Object.keys||function(t){return a(t,r)}},{32:32,80:80}],82:[function(t,e,n){n.f={}.propertyIsEnumerable},{}],83:[function(t,e,n){var a=t(34),r=t(24),i=t(36);e.exports=function(t,e){var n=(r.Object||{})[t]||Object[t],o={};o[t]=e(n),a(a.S+a.F*i(function(){n(1)}),"Object",o)}},{24:24,34:34,36:36}],84:[function(t,e,n){var a=t(81),r=t(115),i=t(82).f;e.exports=function(t){return function(e){for(var n,o=r(e),s=a(o),p=s.length,u=0,c=[];p>u;)i.call(o,n=s[u++])&&c.push(t?[n,o[n]]:o[n]);return c}}},{115:115,81:81,82:82}],85:[function(t,e,n){var a=t(77),r=t(78),i=t(8),o=t(41).Reflect;e.exports=o&&o.ownKeys||function(t){var e=a.f(i(t)),n=r.f;return n?e.concat(n(t)):e}},{41:41,77:77,78:78,8:8}],86:[function(t,e,n){var a=t(41).parseFloat,r=t(109).trim;e.exports=1/a(t(110)+"-0")!==-(1/0)?function(t){var e=r(t+"",3),n=a(e);return 0===n&&"-"==e.charAt(0)?-0:n}:a},{109:109,110:110,41:41}],87:[function(t,e,n){var a=t(41).parseInt,r=t(109).trim,i=t(110),o=/^[-+]?0[xX]/;e.exports=8!==a(i+"08")||22!==a(i+"0x16")?function(t,e){var n=r(t+"",3);return a(n,e>>>0||(o.test(n)?16:10))}:a},{109:109,110:110,41:41}],88:[function(t,e,n){e.exports=function(t){try{return{e:!1,v:t()}}catch(e){return{e:!0,v:e}}}},{}],89:[function(t,e,n){var a=t(8),r=t(52),i=t(69);e.exports=function(t,e){if(a(t),r(e)&&e.constructor===t)return e;var n=i.f(t),o=n.resolve;return o(e),n.promise}},{52:52,69:69,8:8}],90:[function(t,e,n){e.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},{}],91:[function(t,e,n){var a=t(92);e.exports=function(t,e,n){for(var r in e)a(t,r,e[r],n);return t}},{92:92}],92:[function(t,e,n){var a=t(41),r=t(43),i=t(42),o=t(122)("src"),s="toString",p=Function[s],u=(""+p).split(s);t(24).inspectSource=function(t){return p.call(t)},(e.exports=function(t,e,n,s){var p="function"==typeof n;p&&(i(n,"name")||r(n,"name",e)),t[e]!==n&&(p&&(i(n,o)||r(n,o,t[e]?""+t[e]:u.join(e+""))),t===a?t[e]=n:s?t[e]?t[e]=n:r(t,e,n):(delete t[e],r(t,e,n)))})(Function.prototype,s,function(){ -return"function"==typeof this&&this[o]||p.call(this)})},{122:122,24:24,41:41,42:42,43:43}],93:[function(t,e,n){e.exports=function(t,e){var n=e===Object(e)?function(t){return e[t]}:e;return function(e){return(e+"").replace(t,n)}}},{}],94:[function(t,e,n){e.exports=Object.is||function(t,e){return t===e?0!==t||1/t===1/e:t!=t&&e!=e}},{}],95:[function(t,e,n){"use strict";var a=t(34),r=t(4),i=t(26),o=t(40);e.exports=function(t){a(a.S,t,{from:function(t){var e,n,a,s,p=arguments[1];return r(this),e=void 0!==p,e&&r(p),void 0==t?new this:(n=[],e?(a=0,s=i(p,arguments[2],2),o(t,!1,function(t){n.push(s(t,a++))})):o(t,!1,n.push,n),new this(n))}})}},{26:26,34:34,4:4,40:40}],96:[function(t,e,n){"use strict";var a=t(34);e.exports=function(t){a(a.S,t,{of:function(){for(var t=arguments.length,e=Array(t);t--;)e[t]=arguments[t];return new this(e)}})}},{34:34}],97:[function(t,e,n){var a=t(52),r=t(8),i=function(t,e){if(r(t),!a(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,n,a){try{a=t(26)(Function.call,t(75).f(Object.prototype,"__proto__").set,2),a(e,[]),n=!(e instanceof Array)}catch(r){n=!0}return function(t,e){return i(t,e),n?t.__proto__=e:a(t,e),t}}({},!1):void 0),check:i}},{26:26,52:52,75:75,8:8}],98:[function(t,e,n){"use strict";var a=t(41),r=t(72),i=t(30),o=t(127)("species");e.exports=function(t){var e=a[t];i&&e&&!e[o]&&r.f(e,o,{configurable:!0,get:function(){return this}})}},{127:127,30:30,41:41,72:72}],99:[function(t,e,n){var a=t(72).f,r=t(42),i=t(127)("toStringTag");e.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,i)&&a(t,i,{configurable:!0,value:e})}},{127:127,42:42,72:72}],100:[function(t,e,n){var a=t(101)("keys"),r=t(122);e.exports=function(t){return a[t]||(a[t]=r(t))}},{101:101,122:122}],101:[function(t,e,n){var a=t(24),r=t(41),i="__core-js_shared__",o=r[i]||(r[i]={});(e.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:a.version,mode:t(60)?"pure":"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})},{24:24,41:41,60:60}],102:[function(t,e,n){var a=t(8),r=t(4),i=t(127)("species");e.exports=function(t,e){var n,o=a(t).constructor;return void 0===o||void 0==(n=a(o)[i])?e:r(n)}},{127:127,4:4,8:8}],103:[function(t,e,n){"use strict";var a=t(36);e.exports=function(t,e){return!!t&&a(function(){e?t.call(null,function(){},1):t.call(null)})}},{36:36}],104:[function(t,e,n){var a=t(114),r=t(29);e.exports=function(t){return function(e,n){var i,o,s=r(e)+"",p=a(n),u=s.length;return 0>p||p>=u?t?"":void 0:(i=s.charCodeAt(p),55296>i||i>56319||p+1===u||(o=s.charCodeAt(p+1))<56320||o>57343?t?s.charAt(p):i:t?s.slice(p,p+2):(i-55296<<10)+(o-56320)+65536)}}},{114:114,29:29}],105:[function(t,e,n){var a=t(53),r=t(29);e.exports=function(t,e,n){if(a(e))throw TypeError("String#"+n+" doesn't accept regex!");return r(t)+""}},{29:29,53:53}],106:[function(t,e,n){var a=t(34),r=t(36),i=t(29),o=/"/g,s=function(t,e,n,a){var r=i(t)+"",s="<"+e;return""!==n&&(s+=" "+n+'="'+(a+"").replace(o,""")+'"'),s+">"+r+""};e.exports=function(t,e){var n={};n[t]=e(s),a(a.P+a.F*r(function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}),"String",n)}},{29:29,34:34,36:36}],107:[function(t,e,n){var a=t(116),r=t(108),i=t(29);e.exports=function(t,e,n,o){var s=i(t)+"",p=s.length,u=void 0===n?" ":n+"",c=a(e);if(p>=c||""==u)return s;var l=c-p,d=r.call(u,Math.ceil(l/u.length));return d.length>l&&(d=d.slice(0,l)),o?d+s:s+d}},{108:108,116:116,29:29}],108:[function(t,e,n){"use strict";var a=t(114),r=t(29);e.exports=function(t){var e=r(this)+"",n="",i=a(t);if(0>i||i==1/0)throw RangeError("Count can't be negative");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n}},{114:114,29:29}],109:[function(t,e,n){var a=t(34),r=t(29),i=t(36),o=t(110),s="["+o+"]",p="​…",u=RegExp("^"+s+s+"*"),c=RegExp(s+s+"*$"),l=function(t,e,n){var r={},s=i(function(){return!!o[t]()||p[t]()!=p}),u=r[t]=s?e(d):o[t];n&&(r[n]=u),a(a.P+a.F*s,"String",r)},d=l.trim=function(t,e){return t=r(t)+"",1&e&&(t=t.replace(u,"")),2&e&&(t=t.replace(c,"")),t};e.exports=l},{110:110,29:29,34:34,36:36}],110:[function(t,e,n){e.exports=" \n\x0B\f\r   ᠎              \u2028\u2029\ufeff"},{}],111:[function(t,e,n){var a,r,i,o=t(26),s=t(47),p=t(44),u=t(31),c=t(41),l=c.process,d=c.setImmediate,f=c.clearImmediate,h=c.MessageChannel,m=c.Dispatch,g=0,v={},b="onreadystatechange",y=function(){var t=+this;if(v.hasOwnProperty(t)){var e=v[t];delete v[t],e()}},_=function(t){y.call(t.data)};d&&f||(d=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return v[++g]=function(){s("function"==typeof t?t:Function(t),e)},a(g),g},f=function(t){delete v[t]},"process"==t(19)(l)?a=function(t){l.nextTick(o(y,t,1))}:m&&m.now?a=function(t){m.now(o(y,t,1))}:h?(r=new h,i=r.port2,r.port1.onmessage=_,a=o(i.postMessage,i,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts?(a=function(t){c.postMessage(t+"","*")},c.addEventListener("message",_,!1)):a=b in u("script")?function(t){p.appendChild(u("script"))[b]=function(){p.removeChild(this),y.call(t)}}:function(t){setTimeout(o(y,t,1),0)}),e.exports={set:d,clear:f}},{19:19,26:26,31:31,41:41,44:44,47:47}],112:[function(t,e,n){var a=t(114),r=Math.max,i=Math.min;e.exports=function(t,e){return t=a(t),0>t?r(t+e,0):i(t,e)}},{114:114}],113:[function(t,e,n){var a=t(114),r=t(116);e.exports=function(t){if(void 0===t)return 0;var e=a(t),n=r(e);if(e!==n)throw RangeError("Wrong length!");return n}},{114:114,116:116}],114:[function(t,e,n){var a=Math.ceil,r=Math.floor;e.exports=function(t){return isNaN(t=+t)?0:(t>0?r:a)(t)}},{}],115:[function(t,e,n){var a=t(48),r=t(29);e.exports=function(t){return a(r(t))}},{29:29,48:48}],116:[function(t,e,n){var a=t(114),r=Math.min;e.exports=function(t){return t>0?r(a(t),9007199254740991):0}},{114:114}],117:[function(t,e,n){var a=t(29);e.exports=function(t){return Object(a(t))}},{29:29}],118:[function(t,e,n){var a=t(52);e.exports=function(t,e){if(!a(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!a(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")}},{52:52}],119:[function(t,e,n){"use strict";if(t(30)){var a=t(60),r=t(41),i=t(36),o=t(34),s=t(121),p=t(120),u=t(26),c=t(7),l=t(90),d=t(43),f=t(91),h=t(114),m=t(116),g=t(113),v=t(112),b=t(118),y=t(42),_=t(18),x=t(52),w=t(117),k=t(49),S=t(71),E=t(79),C=t(77).f,P=t(128),A=t(122),O=t(127),T=t(13),R=t(12),M=t(102),L=t(140),j=t(59),D=t(57),N=t(98),F=t(10),I=t(9),B=t(72),V=t(75),q=B.f,U=V.f,G=r.RangeError,z=r.TypeError,W=r.Uint8Array,H="ArrayBuffer",K="Shared"+H,Q="BYTES_PER_ELEMENT",Y="prototype",$=Array[Y],J=p.ArrayBuffer,X=p.DataView,Z=T(0),tt=T(2),et=T(3),nt=T(4),at=T(5),rt=T(6),it=R(!0),ot=R(!1),st=L.values,pt=L.keys,ut=L.entries,ct=$.lastIndexOf,lt=$.reduce,dt=$.reduceRight,ft=$.join,ht=$.sort,mt=$.slice,gt=$.toString,vt=$.toLocaleString,bt=O("iterator"),yt=O("toStringTag"),_t=A("typed_constructor"),xt=A("def_constructor"),wt=s.CONSTR,kt=s.TYPED,St=s.VIEW,Et="Wrong length!",Ct=T(1,function(t,e){return Rt(M(t,t[xt]),e)}),Pt=i(function(){return 1===new W(new Uint16Array([1]).buffer)[0]}),At=!!W&&!!W[Y].set&&i(function(){new W(1).set({})}),Ot=function(t,e){var n=h(t);if(0>n||n%e)throw G("Wrong offset!");return n},Tt=function(t){if(x(t)&&kt in t)return t;throw z(t+" is not a typed array!")},Rt=function(t,e){if(!(x(t)&&_t in t))throw z("It is not a typed array constructor!");return new t(e)},Mt=function(t,e){return Lt(M(t,t[xt]),e)},Lt=function(t,e){for(var n=0,a=e.length,r=Rt(t,a);a>n;)r[n]=e[n++];return r},jt=function(t,e,n){q(t,e,{get:function(){return this._d[n]}})},Dt=function(t){var e,n,a,r,i,o,s=w(t),p=arguments.length,c=p>1?arguments[1]:void 0,l=void 0!==c,d=P(s);if(void 0!=d&&!k(d)){for(o=d.call(s),a=[],e=0;!(i=o.next()).done;e++)a.push(i.value);s=a}for(l&&p>2&&(c=u(c,arguments[2],2)),e=0,n=m(s.length),r=Rt(this,n);n>e;e++)r[e]=l?c(s[e],e):s[e];return r},Nt=function(){for(var t=0,e=arguments.length,n=Rt(this,e);e>t;)n[t]=arguments[t++];return n},Ft=!!W&&i(function(){vt.call(new W(1))}),It=function(){return vt.apply(Ft?mt.call(Tt(this)):Tt(this),arguments)},Bt={copyWithin:function(t,e){return I.call(Tt(this),t,e,arguments.length>2?arguments[2]:void 0)},every:function(t){return nt(Tt(this),t,arguments.length>1?arguments[1]:void 0)},fill:function(t){return F.apply(Tt(this),arguments)},filter:function(t){return Mt(this,tt(Tt(this),t,arguments.length>1?arguments[1]:void 0))},find:function(t){return at(Tt(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function(t){return rt(Tt(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function(t){Z(Tt(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function(t){return ot(Tt(this),t,arguments.length>1?arguments[1]:void 0)},includes:function(t){return it(Tt(this),t,arguments.length>1?arguments[1]:void 0)},join:function(t){return ft.apply(Tt(this),arguments)},lastIndexOf:function(t){return ct.apply(Tt(this),arguments)},map:function(t){return Ct(Tt(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function(t){return lt.apply(Tt(this),arguments)},reduceRight:function(t){return dt.apply(Tt(this),arguments)},reverse:function(){for(var t,e=this,n=Tt(e).length,a=Math.floor(n/2),r=0;a>r;)t=e[r],e[r++]=e[--n],e[n]=t;return e},some:function(t){return et(Tt(this),t,arguments.length>1?arguments[1]:void 0)},sort:function(t){return ht.call(Tt(this),t)},subarray:function(t,e){var n=Tt(this),a=n.length,r=v(t,a);return new(M(n,n[xt]))(n.buffer,n.byteOffset+r*n.BYTES_PER_ELEMENT,m((void 0===e?a:v(e,a))-r))}},Vt=function(t,e){return Mt(this,mt.call(Tt(this),t,e))},qt=function(t){Tt(this);var e=Ot(arguments[1],1),n=this.length,a=w(t),r=m(a.length),i=0;if(r+e>n)throw G(Et);for(;r>i;)this[e+i]=a[i++]},Ut={entries:function(){return ut.call(Tt(this))},keys:function(){return pt.call(Tt(this))},values:function(){return st.call(Tt(this))}},Gt=function(t,e){return x(t)&&t[kt]&&"symbol"!=typeof e&&e in t&&+e+""==e+""},zt=function(t,e){return Gt(t,e=b(e,!0))?l(2,t[e]):U(t,e)},Wt=function(t,e,n){return!(Gt(t,e=b(e,!0))&&x(n)&&y(n,"value"))||y(n,"get")||y(n,"set")||n.configurable||y(n,"writable")&&!n.writable||y(n,"enumerable")&&!n.enumerable?q(t,e,n):(t[e]=n.value,t)};wt||(V.f=zt,B.f=Wt),o(o.S+o.F*!wt,"Object",{getOwnPropertyDescriptor:zt,defineProperty:Wt}),i(function(){gt.call({})})&&(gt=vt=function(){return ft.call(this)});var Ht=f({},Bt);f(Ht,Ut),d(Ht,bt,Ut.values),f(Ht,{slice:Vt,set:qt,constructor:function(){},toString:gt,toLocaleString:It}),jt(Ht,"buffer","b"),jt(Ht,"byteOffset","o"),jt(Ht,"byteLength","l"),jt(Ht,"length","e"),q(Ht,yt,{get:function(){return this[kt]}}),e.exports=function(t,e,n,p){p=!!p;var u=t+(p?"Clamped":"")+"Array",l="get"+t,f="set"+t,h=r[u],v=h||{},b=h&&E(h),y=!h||!s.ABV,w={},k=h&&h[Y],P=function(t,n){var a=t._d;return a.v[l](n*e+a.o,Pt)},A=function(t,n,a){var r=t._d;p&&(a=(a=Math.round(a))<0?0:a>255?255:255&a),r.v[f](n*e+r.o,a,Pt)},O=function(t,e){q(t,e,{get:function(){return P(this,e)},set:function(t){return A(this,e,t)},enumerable:!0})};y?(h=n(function(t,n,a,r){c(t,h,u,"_d");var i,o,s,p,l=0,f=0;if(x(n)){if(!(n instanceof J||(p=_(n))==H||p==K))return kt in n?Lt(h,n):Dt.call(h,n);i=n,f=Ot(a,e);var v=n.byteLength;if(void 0===r){if(v%e)throw G(Et);if(o=v-f,0>o)throw G(Et)}else if(o=m(r)*e,o+f>v)throw G(Et);s=o/e}else s=g(n),o=s*e,i=new J(o);for(d(t,"_d",{b:i,o:f,l:o,e:s,v:new X(i)});s>l;)O(t,l++)}),k=h[Y]=S(Ht),d(k,"constructor",h)):i(function(){h(1)})&&i(function(){new h(-1)})&&D(function(t){new h,new h(null),new h(1.5),new h(t)},!0)||(h=n(function(t,n,a,r){c(t,h,u);var i;return x(n)?n instanceof J||(i=_(n))==H||i==K?void 0!==r?new v(n,Ot(a,e),r):void 0!==a?new v(n,Ot(a,e)):new v(n):kt in n?Lt(h,n):Dt.call(h,n):new v(g(n))}),Z(b!==Function.prototype?C(v).concat(C(b)):C(v),function(t){t in h||d(h,t,v[t])}),h[Y]=k,a||(k.constructor=h));var T=k[bt],R=!!T&&("values"==T.name||void 0==T.name),M=Ut.values;d(h,_t,!0),d(k,kt,u),d(k,St,!0),d(k,xt,h),(p?new h(1)[yt]==u:yt in k)||q(k,yt,{get:function(){return u}}),w[u]=h,o(o.G+o.W+o.F*(h!=v),w),o(o.S,u,{BYTES_PER_ELEMENT:e}),o(o.S+o.F*i(function(){v.of.call(h,1)}),u,{from:Dt,of:Nt}),Q in k||d(k,Q,e),o(o.P,u,Bt),N(u),o(o.P+o.F*At,u,{set:qt}),o(o.P+o.F*!R,u,Ut),a||k.toString==gt||(k.toString=gt),o(o.P+o.F*i(function(){new h(1).slice()}),u,{slice:Vt}),o(o.P+o.F*(i(function(){return[1,2].toLocaleString()!=new h([1,2]).toLocaleString()})||!i(function(){k.toLocaleString.call([1,2])})),u,{toLocaleString:It}),j[u]=R?T:M,a||R||d(k,bt,M)}}else e.exports=function(){}},{10:10,102:102,112:112,113:113,114:114,116:116,117:117,118:118,12:12,120:120,121:121,122:122,127:127,128:128,13:13,140:140,18:18,26:26,30:30,34:34,36:36,41:41,42:42,43:43,49:49,52:52,57:57,59:59,60:60,7:7,71:71,72:72,75:75,77:77,79:79,9:9,90:90,91:91,98:98}],120:[function(t,e,n){"use strict";function a(t,e,n){var a,r,i,o=Array(n),s=8*n-e-1,p=(1<>1,c=23===e?q(2,-24)-q(2,-77):0,l=0,d=0>t||0===t&&0>1/t?1:0;for(t=V(t),t!=t||t===I?(r=t!=t?1:0,a=p):(a=U(G(t)/z),t*(i=q(2,-a))<1&&(a--,i*=2),t+=a+u>=1?c/i:c*q(2,1-u),t*i>=2&&(a++,i/=2),a+u>=p?(r=0,a=p):a+u>=1?(r=(t*i-1)*q(2,e),a+=u):(r=t*q(2,u-1)*q(2,e),a=0));e>=8;o[l++]=255&r,r/=256,e-=8);for(a=a<0;o[l++]=255&a,a/=256,s-=8);return o[--l]|=128*d,o}function r(t,e,n){var a,r=8*n-e-1,i=(1<>1,s=r-7,p=n-1,u=t[p--],c=127&u;for(u>>=7;s>0;c=256*c+t[p],p--,s-=8);for(a=c&(1<<-s)-1,c>>=-s,s+=e;s>0;a=256*a+t[p],p--,s-=8);if(0===c)c=1-o;else{if(c===i)return a?NaN:u?-I:I;a+=q(2,e),c-=o}return(u?-1:1)*a*q(2,c-e)}function i(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]}function o(t){return[255&t]}function s(t){return[255&t,t>>8&255]}function p(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]}function u(t){return a(t,52,8)}function c(t){return a(t,23,4)}function l(t,e,n){C(t[R],e,{get:function(){return this[n]}})}function d(t,e,n,a){var r=+n,i=S(r);if(i+e>t[Y])throw F(L);var o=t[Q]._b,s=i+t[$],p=o.slice(s,s+e);return a?p:p.reverse()}function f(t,e,n,a,r,i){var o=+n,s=S(o);if(s+e>t[Y])throw F(L);for(var p=t[Q]._b,u=s+t[$],c=a(+r),l=0;e>l;l++)p[u+l]=c[i?l:e-l-1]}var h=t(41),m=t(30),g=t(60),v=t(121),b=t(43),y=t(91),_=t(36),x=t(7),w=t(114),k=t(116),S=t(113),E=t(77).f,C=t(72).f,P=t(10),A=t(99),O="ArrayBuffer",T="DataView",R="prototype",M="Wrong length!",L="Wrong index!",j=h[O],D=h[T],N=h.Math,F=h.RangeError,I=h.Infinity,B=j,V=N.abs,q=N.pow,U=N.floor,G=N.log,z=N.LN2,W="buffer",H="byteLength",K="byteOffset",Q=m?"_b":W,Y=m?"_l":H,$=m?"_o":K;if(v.ABV){if(!_(function(){j(1)})||!_(function(){new j(-1)})||_(function(){return new j,new j(1.5),new j(NaN),j.name!=O})){j=function(t){return x(this,j),new B(S(t))};for(var J,X=j[R]=B[R],Z=E(B),tt=0;Z.length>tt;)(J=Z[tt++])in j||b(j,J,B[J]);g||(X.constructor=j)}var et=new D(new j(2)),nt=D[R].setInt8;et.setInt8(0,2147483648),et.setInt8(1,2147483649),(et.getInt8(0)||!et.getInt8(1))&&y(D[R],{setInt8:function(t,e){nt.call(this,t,e<<24>>24)},setUint8:function(t,e){nt.call(this,t,e<<24>>24)}},!0)}else j=function(t){x(this,j,O);var e=S(t);this._b=P.call(Array(e),0),this[Y]=e},D=function(t,e,n){x(this,D,T),x(t,j,T);var a=t[Y],r=w(e);if(0>r||r>a)throw F("Wrong offset!");if(n=void 0===n?a-r:k(n),r+n>a)throw F(M);this[Q]=t,this[$]=r,this[Y]=n},m&&(l(j,H,"_l"),l(D,W,"_b"),l(D,H,"_l"),l(D,K,"_o")),y(D[R],{getInt8:function(t){return d(this,1,t)[0]<<24>>24},getUint8:function(t){return d(this,1,t)[0]},getInt16:function(t){var e=d(this,2,t,arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=d(this,2,t,arguments[1]);return e[1]<<8|e[0]},getInt32:function(t){return i(d(this,4,t,arguments[1]))},getUint32:function(t){return i(d(this,4,t,arguments[1]))>>>0},getFloat32:function(t){return r(d(this,4,t,arguments[1]),23,4)},getFloat64:function(t){return r(d(this,8,t,arguments[1]),52,8)},setInt8:function(t,e){f(this,1,t,o,e)},setUint8:function(t,e){f(this,1,t,o,e)},setInt16:function(t,e){f(this,2,t,s,e,arguments[2])},setUint16:function(t,e){f(this,2,t,s,e,arguments[2])},setInt32:function(t,e){f(this,4,t,p,e,arguments[2])},setUint32:function(t,e){f(this,4,t,p,e,arguments[2])},setFloat32:function(t,e){f(this,4,t,c,e,arguments[2])},setFloat64:function(t,e){f(this,8,t,u,e,arguments[2])}});A(j,O),A(D,T),b(D[R],v.VIEW,!0),n[O]=j,n[T]=D},{10:10,113:113,114:114,116:116,121:121,30:30,36:36,41:41,43:43,60:60,7:7,72:72,77:77,91:91,99:99}],121:[function(t,e,n){for(var a,r=t(41),i=t(43),o=t(122),s=o("typed_array"),p=o("view"),u=!(!r.ArrayBuffer||!r.DataView),c=u,l=0,d=9,f="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");d>l;)(a=r[f[l++]])?(i(a.prototype,s,!0),i(a.prototype,p,!0)):c=!1;e.exports={ABV:u,CONSTR:c,TYPED:s,VIEW:p}},{122:122,41:41,43:43}],122:[function(t,e,n){var a=0,r=Math.random();e.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++a+r).toString(36))}},{}],123:[function(t,e,n){var a=t(41),r=a.navigator;e.exports=r&&r.userAgent||""},{41:41}],124:[function(t,e,n){var a=t(52);e.exports=function(t,e){if(!a(t)||t._t!==e)throw TypeError("Incompatible receiver, "+e+" required!");return t}},{52:52}],125:[function(t,e,n){var a=t(41),r=t(24),i=t(60),o=t(126),s=t(72).f;e.exports=function(t){var e=r.Symbol||(r.Symbol=i?{}:a.Symbol||{});"_"==t.charAt(0)||t in e||s(e,t,{value:o.f(t)})}},{126:126,24:24,41:41,60:60,72:72}],126:[function(t,e,n){n.f=t(127)},{127:127}],127:[function(t,e,n){var a=t(101)("wks"),r=t(122),i=t(41).Symbol,o="function"==typeof i,s=e.exports=function(t){return a[t]||(a[t]=o&&i[t]||(o?i:r)("Symbol."+t))};s.store=a},{101:101,122:122,41:41}],128:[function(t,e,n){var a=t(18),r=t(127)("iterator"),i=t(59);e.exports=t(24).getIteratorMethod=function(t){return void 0!=t?t[r]||t["@@iterator"]||i[a(t)]:void 0}},{127:127,18:18,24:24,59:59}],129:[function(t,e,n){var a=t(34),r=t(93)(/[\\^$*+?.()|[\]{}]/g,"\\$&");a(a.S,"RegExp",{escape:function(t){return r(t)}})},{34:34,93:93}],130:[function(t,e,n){var a=t(34);a(a.P,"Array",{copyWithin:t(9)}),t(6)("copyWithin")},{34:34,6:6,9:9}],131:[function(t,e,n){"use strict";var a=t(34),r=t(13)(4);a(a.P+a.F*!t(103)([].every,!0),"Array",{every:function(t){return r(this,t,arguments[1])}})},{103:103,13:13,34:34}],132:[function(t,e,n){var a=t(34);a(a.P,"Array",{fill:t(10)}),t(6)("fill")},{10:10,34:34,6:6}],133:[function(t,e,n){"use strict";var a=t(34),r=t(13)(2);a(a.P+a.F*!t(103)([].filter,!0),"Array",{filter:function(t){return r(this,t,arguments[1])}})},{103:103,13:13,34:34}],134:[function(t,e,n){"use strict";var a=t(34),r=t(13)(6),i="findIndex",o=!0;i in[]&&Array(1)[i](function(){o=!1}),a(a.P+a.F*o,"Array",{findIndex:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),t(6)(i)},{13:13,34:34,6:6}],135:[function(t,e,n){"use strict";var a=t(34),r=t(13)(5),i="find",o=!0;i in[]&&Array(1)[i](function(){o=!1}),a(a.P+a.F*o,"Array",{find:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),t(6)(i)},{13:13,34:34,6:6}],136:[function(t,e,n){"use strict";var a=t(34),r=t(13)(0),i=t(103)([].forEach,!0);a(a.P+a.F*!i,"Array",{forEach:function(t){return r(this,t,arguments[1])}})},{103:103,13:13,34:34}],137:[function(t,e,n){"use strict";var a=t(26),r=t(34),i=t(117),o=t(54),s=t(49),p=t(116),u=t(25),c=t(128);r(r.S+r.F*!t(57)(function(t){Array.from(t)}),"Array",{from:function(t){var e,n,r,l,d=i(t),f="function"==typeof this?this:Array,h=arguments.length,m=h>1?arguments[1]:void 0,g=void 0!==m,v=0,b=c(d);if(g&&(m=a(m,h>2?arguments[2]:void 0,2)),void 0==b||f==Array&&s(b))for(e=p(d.length),n=new f(e);e>v;v++)u(n,v,g?m(d[v],v):d[v]);else for(l=b.call(d),n=new f;!(r=l.next()).done;v++)u(n,v,g?o(l,m,[r.value,v],!0):r.value);return n.length=v,n}})},{116:116,117:117,128:128,25:25,26:26,34:34,49:49,54:54,57:57}],138:[function(t,e,n){"use strict";var a=t(34),r=t(12)(!1),i=[].indexOf,o=!!i&&1/[1].indexOf(1,-0)<0;a(a.P+a.F*(o||!t(103)(i)),"Array",{indexOf:function(t){return o?i.apply(this,arguments)||0:r(this,t,arguments[1])}})},{103:103,12:12,34:34}],139:[function(t,e,n){var a=t(34);a(a.S,"Array",{isArray:t(50)})},{34:34,50:50}],140:[function(t,e,n){"use strict";var a=t(6),r=t(58),i=t(59),o=t(115);e.exports=t(56)(Array,"Array",function(t,e){this._t=o(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,r(1)):"keys"==e?r(0,n):"values"==e?r(0,t[n]):r(0,[n,t[n]])},"values"),i.Arguments=i.Array,a("keys"),a("values"),a("entries")},{115:115,56:56,58:58,59:59,6:6}],141:[function(t,e,n){"use strict";var a=t(34),r=t(115),i=[].join;a(a.P+a.F*(t(48)!=Object||!t(103)(i)),"Array",{join:function(t){return i.call(r(this),void 0===t?",":t)}})},{103:103,115:115,34:34,48:48}],142:[function(t,e,n){"use strict";var a=t(34),r=t(115),i=t(114),o=t(116),s=[].lastIndexOf,p=!!s&&1/[1].lastIndexOf(1,-0)<0;a(a.P+a.F*(p||!t(103)(s)),"Array",{lastIndexOf:function(t){if(p)return s.apply(this,arguments)||0;var e=r(this),n=o(e.length),a=n-1;for(arguments.length>1&&(a=Math.min(a,i(arguments[1]))),0>a&&(a=n+a);a>=0;a--)if(a in e&&e[a]===t)return a||0;return-1}})},{103:103,114:114,115:115,116:116,34:34}],143:[function(t,e,n){"use strict";var a=t(34),r=t(13)(1);a(a.P+a.F*!t(103)([].map,!0),"Array",{map:function(t){return r(this,t,arguments[1])}})},{103:103,13:13,34:34}],144:[function(t,e,n){"use strict";var a=t(34),r=t(25);a(a.S+a.F*t(36)(function(){function t(){}return!(Array.of.call(t)instanceof t)}),"Array",{of:function(){for(var t=0,e=arguments.length,n=new("function"==typeof this?this:Array)(e);e>t;)r(n,t,arguments[t++]);return n.length=e,n}})},{25:25,34:34,36:36}],145:[function(t,e,n){"use strict";var a=t(34),r=t(14);a(a.P+a.F*!t(103)([].reduceRight,!0),"Array",{reduceRight:function(t){return r(this,t,arguments.length,arguments[1],!0)}})},{103:103,14:14,34:34}],146:[function(t,e,n){"use strict";var a=t(34),r=t(14);a(a.P+a.F*!t(103)([].reduce,!0),"Array",{reduce:function(t){return r(this,t,arguments.length,arguments[1],!1)}})},{103:103,14:14,34:34}],147:[function(t,e,n){"use strict";var a=t(34),r=t(44),i=t(19),o=t(112),s=t(116),p=[].slice;a(a.P+a.F*t(36)(function(){r&&p.call(r)}),"Array",{slice:function(t,e){var n=s(this.length),a=i(this);if(e=void 0===e?n:e,"Array"==a)return p.call(this,t,e);for(var r=o(t,n),u=o(e,n),c=s(u-r),l=Array(c),d=0;c>d;d++)l[d]="String"==a?this.charAt(r+d):this[r+d];return l}})},{112:112,116:116,19:19,34:34,36:36,44:44}],148:[function(t,e,n){"use strict";var a=t(34),r=t(13)(3);a(a.P+a.F*!t(103)([].some,!0),"Array",{some:function(t){return r(this,t,arguments[1])}})},{103:103,13:13,34:34}],149:[function(t,e,n){"use strict";var a=t(34),r=t(4),i=t(117),o=t(36),s=[].sort,p=[1,2,3];a(a.P+a.F*(o(function(){p.sort(void 0)})||!o(function(){p.sort(null)})||!t(103)(s)),"Array",{sort:function(t){return void 0===t?s.call(i(this)):s.call(i(this),r(t))}})},{103:103,117:117,34:34,36:36,4:4}],150:[function(t,e,n){t(98)("Array")},{98:98}],151:[function(t,e,n){var a=t(34);a(a.S,"Date",{now:function(){return(new Date).getTime()}})},{34:34}],152:[function(t,e,n){var a=t(34),r=t(27);a(a.P+a.F*(Date.prototype.toISOString!==r),"Date",{toISOString:r})},{27:27,34:34}],153:[function(t,e,n){"use strict";var a=t(34),r=t(117),i=t(118);a(a.P+a.F*t(36)(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),"Date",{toJSON:function(t){var e=r(this),n=i(e);return"number"!=typeof n||isFinite(n)?e.toISOString():null}})},{117:117,118:118,34:34,36:36}],154:[function(t,e,n){var a=t(127)("toPrimitive"),r=Date.prototype;a in r||t(43)(r,a,t(28))},{127:127,28:28,43:43}],155:[function(t,e,n){var a=Date.prototype,r="Invalid Date",i="toString",o=a[i],s=a.getTime;new Date(NaN)+""!=r&&t(92)(a,i,function(){var t=s.call(this);return t===t?o.call(this):r})},{92:92}],156:[function(t,e,n){var a=t(34);a(a.P,"Function",{bind:t(17)})},{17:17,34:34}],157:[function(t,e,n){"use strict";var a=t(52),r=t(79),i=t(127)("hasInstance"),o=Function.prototype;i in o||t(72).f(o,i,{value:function(t){if("function"!=typeof this||!a(t))return!1;if(!a(this.prototype))return t instanceof this;for(;t=r(t);)if(this.prototype===t)return!0;return!1}})},{127:127,52:52,72:72,79:79}],158:[function(t,e,n){var a=t(72).f,r=Function.prototype,i=/^\s*function ([^ (]*)/,o="name";o in r||t(30)&&a(r,o,{configurable:!0,get:function(){try{return(""+this).match(i)[1]}catch(t){return""}}})},{30:30,72:72}],159:[function(t,e,n){"use strict";var a=t(20),r=t(124),i="Map";e.exports=t(23)(i,function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){var e=a.getEntry(r(this,i),t);return e&&e.v},set:function(t,e){return a.def(r(this,i),0===t?0:t,e)}},a,!0)},{124:124,20:20,23:23}],160:[function(t,e,n){var a=t(34),r=t(63),i=Math.sqrt,o=Math.acosh;a(a.S+a.F*!(o&&710==Math.floor(o(Number.MAX_VALUE))&&o(1/0)==1/0),"Math",{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:r(t-1+i(t-1)*i(t+1))}})},{34:34,63:63}],161:[function(t,e,n){function a(t){return isFinite(t=+t)&&0!=t?0>t?-a(-t):Math.log(t+Math.sqrt(t*t+1)):t}var r=t(34),i=Math.asinh;r(r.S+r.F*!(i&&1/i(0)>0),"Math",{asinh:a})},{34:34}],162:[function(t,e,n){var a=t(34),r=Math.atanh;a(a.S+a.F*!(r&&1/r(-0)<0),"Math",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},{34:34}],163:[function(t,e,n){var a=t(34),r=t(65);a(a.S,"Math",{cbrt:function(t){return r(t=+t)*Math.pow(Math.abs(t),1/3)}})},{34:34,65:65}],164:[function(t,e,n){var a=t(34);a(a.S,"Math",{clz32:function(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},{34:34}],165:[function(t,e,n){var a=t(34),r=Math.exp;a(a.S,"Math",{cosh:function(t){return(r(t=+t)+r(-t))/2}})},{34:34}],166:[function(t,e,n){var a=t(34),r=t(61);a(a.S+a.F*(r!=Math.expm1),"Math",{expm1:r})},{34:34,61:61}],167:[function(t,e,n){var a=t(34);a(a.S,"Math",{fround:t(62)})},{34:34,62:62}],168:[function(t,e,n){var a=t(34),r=Math.abs;a(a.S,"Math",{hypot:function(t,e){for(var n,a,i=0,o=0,s=arguments.length,p=0;s>o;)n=r(arguments[o++]),n>p?(a=p/n,i=i*a*a+1,p=n):n>0?(a=n/p,i+=a*a):i+=n;return p===1/0?1/0:p*Math.sqrt(i)}})},{34:34}],169:[function(t,e,n){var a=t(34),r=Math.imul;a(a.S+a.F*t(36)(function(){return-5!=r(4294967295,5)||2!=r.length}),"Math",{imul:function(t,e){var n=65535,a=+t,r=+e,i=n&a,o=n&r;return 0|i*o+((n&a>>>16)*o+i*(n&r>>>16)<<16>>>0)}})},{34:34,36:36}],170:[function(t,e,n){var a=t(34);a(a.S,"Math",{log10:function(t){return Math.log(t)*Math.LOG10E}})},{34:34}],171:[function(t,e,n){var a=t(34);a(a.S,"Math",{log1p:t(63)})},{34:34,63:63}],172:[function(t,e,n){var a=t(34);a(a.S,"Math",{log2:function(t){return Math.log(t)/Math.LN2}})},{34:34}],173:[function(t,e,n){var a=t(34);a(a.S,"Math",{sign:t(65)})},{34:34,65:65}],174:[function(t,e,n){var a=t(34),r=t(61),i=Math.exp;a(a.S+a.F*t(36)(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function(t){return Math.abs(t=+t)<1?(r(t)-r(-t))/2:(i(t-1)-i(-t-1))*(Math.E/2)}})},{34:34,36:36,61:61}],175:[function(t,e,n){var a=t(34),r=t(61),i=Math.exp;a(a.S,"Math",{tanh:function(t){var e=r(t=+t),n=r(-t);return e==1/0?1:n==1/0?-1:(e-n)/(i(t)+i(-t))}})},{34:34,61:61}],176:[function(t,e,n){var a=t(34);a(a.S,"Math",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},{34:34}],177:[function(t,e,n){"use strict";var a=t(41),r=t(42),i=t(19),o=t(46),s=t(118),p=t(36),u=t(77).f,c=t(75).f,l=t(72).f,d=t(109).trim,f="Number",h=a[f],m=h,g=h.prototype,v=i(t(71)(g))==f,b="trim"in String.prototype,y=function(t){var e=s(t,!1);if("string"==typeof e&&e.length>2){e=b?e.trim():d(e,3);var n,a,r,i=e.charCodeAt(0);if(43===i||45===i){if(n=e.charCodeAt(2),88===n||120===n)return NaN}else if(48===i){switch(e.charCodeAt(1)){case 66:case 98:a=2,r=49;break;case 79:case 111:a=8,r=55;break;default:return+e}for(var o,p=e.slice(2),u=0,c=p.length;c>u;u++)if(o=p.charCodeAt(u),48>o||o>r)return NaN;return parseInt(p,a)}}return+e};if(!h(" 0o1")||!h("0b1")||h("+0x1")){h=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof h&&(v?p(function(){g.valueOf.call(n)}):i(n)!=f)?o(new m(y(e)),n,h):y(e)};for(var _,x=t(30)?u(m):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),w=0;x.length>w;w++)r(m,_=x[w])&&!r(h,_)&&l(h,_,c(m,_));h.prototype=g,g.constructor=h,t(92)(a,f,h)}},{109:109,118:118,19:19,30:30,36:36,41:41,42:42,46:46,71:71,72:72,75:75,77:77,92:92}],178:[function(t,e,n){var a=t(34);a(a.S,"Number",{EPSILON:Math.pow(2,-52)})},{34:34}],179:[function(t,e,n){var a=t(34),r=t(41).isFinite;a(a.S,"Number",{isFinite:function(t){return"number"==typeof t&&r(t)}})},{34:34,41:41}],180:[function(t,e,n){var a=t(34);a(a.S,"Number",{isInteger:t(51)})},{34:34,51:51}],181:[function(t,e,n){var a=t(34);a(a.S,"Number",{isNaN:function(t){return t!=t}})},{34:34}],182:[function(t,e,n){var a=t(34),r=t(51),i=Math.abs;a(a.S,"Number",{isSafeInteger:function(t){return r(t)&&i(t)<=9007199254740991}})},{34:34,51:51}],183:[function(t,e,n){var a=t(34);a(a.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},{34:34}],184:[function(t,e,n){var a=t(34);a(a.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},{34:34}],185:[function(t,e,n){var a=t(34),r=t(86);a(a.S+a.F*(Number.parseFloat!=r),"Number",{parseFloat:r})},{34:34,86:86}],186:[function(t,e,n){var a=t(34),r=t(87);a(a.S+a.F*(Number.parseInt!=r),"Number",{parseInt:r})},{34:34,87:87}],187:[function(t,e,n){"use strict";var a=t(34),r=t(114),i=t(5),o=t(108),s=1..toFixed,p=Math.floor,u=[0,0,0,0,0,0],c="Number.toFixed: incorrect invocation!",l="0",d=function(t,e){for(var n=-1,a=e;++n<6;)a+=t*u[n],u[n]=a%1e7,a=p(a/1e7)},f=function(t){for(var e=6,n=0;--e>=0;)n+=u[e],u[e]=p(n/t),n=n%t*1e7},h=function(){for(var t=6,e="";--t>=0;)if(""!==e||0===t||0!==u[t]){var n=u[t]+"";e=""===e?n:e+o.call(l,7-n.length)+n}return e},m=function(t,e,n){return 0===e?n:e%2===1?m(t,e-1,n*t):m(t*t,e/2,n)},g=function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e};a(a.P+a.F*(!!s&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==0xde0b6b3a7640080.toFixed(0))||!t(36)(function(){s.call({})})),"Number",{toFixed:function(t){var e,n,a,s,p=i(this,c),u=r(t),v="",b=l;if(0>u||u>20)throw RangeError(c);if(p!=p)return"NaN";if(-1e21>=p||p>=1e21)return p+"";if(0>p&&(v="-",p=-p),p>1e-21)if(e=g(p*m(2,69,1))-69,n=0>e?p*m(2,-e,1):p/m(2,e,1),n*=4503599627370496,e=52-e,e>0){for(d(0,n),a=u;a>=7;)d(1e7,0),a-=7;for(d(m(10,a,1),0),a=e-1;a>=23;)f(1<<23),a-=23;f(1<0?(s=b.length,b=v+(u>=s?"0."+o.call(l,u-s)+b:b.slice(0,s-u)+"."+b.slice(s-u))):b=v+b,b}})},{108:108,114:114,34:34,36:36,5:5}],188:[function(t,e,n){"use strict";var a=t(34),r=t(36),i=t(5),o=1..toPrecision;a(a.P+a.F*(r(function(){return"1"!==o.call(1,void 0)})||!r(function(){o.call({})})),"Number",{toPrecision:function(t){var e=i(this,"Number#toPrecision: incorrect invocation!");return void 0===t?o.call(e):o.call(e,t)}})},{34:34,36:36,5:5}],189:[function(t,e,n){var a=t(34);a(a.S+a.F,"Object",{assign:t(70)})},{34:34,70:70}],190:[function(t,e,n){var a=t(34);a(a.S,"Object",{create:t(71)})},{34:34,71:71}],191:[function(t,e,n){var a=t(34);a(a.S+a.F*!t(30),"Object",{defineProperties:t(73)})},{30:30,34:34,73:73}],192:[function(t,e,n){var a=t(34);a(a.S+a.F*!t(30),"Object",{defineProperty:t(72).f})},{30:30,34:34,72:72}],193:[function(t,e,n){var a=t(52),r=t(66).onFreeze;t(83)("freeze",function(t){return function(e){return t&&a(e)?t(r(e)):e}})},{52:52,66:66,83:83}],194:[function(t,e,n){var a=t(115),r=t(75).f;t(83)("getOwnPropertyDescriptor",function(){return function(t,e){return r(a(t),e)}})},{115:115,75:75,83:83}],195:[function(t,e,n){t(83)("getOwnPropertyNames",function(){return t(76).f})},{76:76,83:83}],196:[function(t,e,n){var a=t(117),r=t(79);t(83)("getPrototypeOf",function(){return function(t){return r(a(t))}})},{117:117,79:79,83:83}],197:[function(t,e,n){var a=t(52);t(83)("isExtensible",function(t){return function(e){return a(e)?t?t(e):!0:!1}}); -},{52:52,83:83}],198:[function(t,e,n){var a=t(52);t(83)("isFrozen",function(t){return function(e){return a(e)?t?t(e):!1:!0}})},{52:52,83:83}],199:[function(t,e,n){var a=t(52);t(83)("isSealed",function(t){return function(e){return a(e)?t?t(e):!1:!0}})},{52:52,83:83}],200:[function(t,e,n){var a=t(34);a(a.S,"Object",{is:t(94)})},{34:34,94:94}],201:[function(t,e,n){var a=t(117),r=t(81);t(83)("keys",function(){return function(t){return r(a(t))}})},{117:117,81:81,83:83}],202:[function(t,e,n){var a=t(52),r=t(66).onFreeze;t(83)("preventExtensions",function(t){return function(e){return t&&a(e)?t(r(e)):e}})},{52:52,66:66,83:83}],203:[function(t,e,n){var a=t(52),r=t(66).onFreeze;t(83)("seal",function(t){return function(e){return t&&a(e)?t(r(e)):e}})},{52:52,66:66,83:83}],204:[function(t,e,n){var a=t(34);a(a.S,"Object",{setPrototypeOf:t(97).set})},{34:34,97:97}],205:[function(t,e,n){"use strict";var a=t(18),r={};r[t(127)("toStringTag")]="z",r+""!="[object z]"&&t(92)(Object.prototype,"toString",function(){return"[object "+a(this)+"]"},!0)},{127:127,18:18,92:92}],206:[function(t,e,n){var a=t(34),r=t(86);a(a.G+a.F*(parseFloat!=r),{parseFloat:r})},{34:34,86:86}],207:[function(t,e,n){var a=t(34),r=t(87);a(a.G+a.F*(parseInt!=r),{parseInt:r})},{34:34,87:87}],208:[function(t,e,n){"use strict";var a,r,i,o,s=t(60),p=t(41),u=t(26),c=t(18),l=t(34),d=t(52),f=t(4),h=t(7),m=t(40),g=t(102),v=t(111).set,b=t(68)(),y=t(69),_=t(88),x=t(123),w=t(89),k="Promise",S=p.TypeError,E=p.process,C=E&&E.versions,P=C&&C.v8||"",A=p[k],O="process"==c(E),T=function(){},R=r=y.f,M=!!function(){try{var e=A.resolve(1),n=(e.constructor={})[t(127)("species")]=function(t){t(T,T)};return(O||"function"==typeof PromiseRejectionEvent)&&e.then(T)instanceof n&&0!==P.indexOf("6.6")&&-1===x.indexOf("Chrome/66")}catch(a){}}(),L=function(t){var e;return d(t)&&"function"==typeof(e=t.then)?e:!1},j=function(t,e){if(!t._n){t._n=!0;var n=t._c;b(function(){for(var a=t._v,r=1==t._s,i=0,o=function(e){var n,i,o,s=r?e.ok:e.fail,p=e.resolve,u=e.reject,c=e.domain;try{s?(r||(2==t._h&&F(t),t._h=1),s===!0?n=a:(c&&c.enter(),n=s(a),c&&(c.exit(),o=!0)),n===e.promise?u(S("Promise-chain cycle")):(i=L(n))?i.call(n,p,u):p(n)):u(a)}catch(l){c&&!o&&c.exit(),u(l)}};n.length>i;)o(n[i++]);t._c=[],t._n=!1,e&&!t._h&&D(t)})}},D=function(t){v.call(p,function(){var e,n,a,r=t._v,i=N(t);if(i&&(e=_(function(){O?E.emit("unhandledRejection",r,t):(n=p.onunhandledrejection)?n({promise:t,reason:r}):(a=p.console)&&a.error&&a.error("Unhandled promise rejection",r)}),t._h=O||N(t)?2:1),t._a=void 0,i&&e.e)throw e.v})},N=function(t){return 1!==t._h&&0===(t._a||t._c).length},F=function(t){v.call(p,function(){var e;O?E.emit("rejectionHandled",t):(e=p.onrejectionhandled)&&e({promise:t,reason:t._v})})},I=function(t){var e=this;e._d||(e._d=!0,e=e._w||e,e._v=t,e._s=2,e._a||(e._a=e._c.slice()),j(e,!0))},B=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw S("Promise can't be resolved itself");(e=L(t))?b(function(){var a={_w:n,_d:!1};try{e.call(t,u(B,a,1),u(I,a,1))}catch(r){I.call(a,r)}}):(n._v=t,n._s=1,j(n,!1))}catch(a){I.call({_w:n,_d:!1},a)}}};M||(A=function(t){h(this,A,k,"_h"),f(t),a.call(this);try{t(u(B,this,1),u(I,this,1))}catch(e){I.call(this,e)}},a=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},a.prototype=t(91)(A.prototype,{then:function(t,e){var n=R(g(this,A));return n.ok="function"==typeof t?t:!0,n.fail="function"==typeof e&&e,n.domain=O?E.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&j(this,!1),n.promise},"catch":function(t){return this.then(void 0,t)}}),i=function(){var t=new a;this.promise=t,this.resolve=u(B,t,1),this.reject=u(I,t,1)},y.f=R=function(t){return t===A||t===o?new i(t):r(t)}),l(l.G+l.W+l.F*!M,{Promise:A}),t(99)(A,k),t(98)(k),o=t(24)[k],l(l.S+l.F*!M,k,{reject:function(t){var e=R(this),n=e.reject;return n(t),e.promise}}),l(l.S+l.F*(s||!M),k,{resolve:function(t){return w(s&&this===o?A:this,t)}}),l(l.S+l.F*!(M&&t(57)(function(t){A.all(t)["catch"](T)})),k,{all:function(t){var e=this,n=R(e),a=n.resolve,r=n.reject,i=_(function(){var n=[],i=0,o=1;m(t,!1,function(t){var s=i++,p=!1;n.push(void 0),o++,e.resolve(t).then(function(t){p||(p=!0,n[s]=t,--o||a(n))},r)}),--o||a(n)});return i.e&&r(i.v),n.promise},race:function(t){var e=this,n=R(e),a=n.reject,r=_(function(){m(t,!1,function(t){e.resolve(t).then(n.resolve,a)})});return r.e&&a(r.v),n.promise}})},{102:102,111:111,123:123,127:127,18:18,24:24,26:26,34:34,4:4,40:40,41:41,52:52,57:57,60:60,68:68,69:69,7:7,88:88,89:89,91:91,98:98,99:99}],209:[function(t,e,n){var a=t(34),r=t(4),i=t(8),o=(t(41).Reflect||{}).apply,s=Function.apply;a(a.S+a.F*!t(36)(function(){o(function(){})}),"Reflect",{apply:function(t,e,n){var a=r(t),p=i(n);return o?o(a,e,p):s.call(a,e,p)}})},{34:34,36:36,4:4,41:41,8:8}],210:[function(t,e,n){var a=t(34),r=t(71),i=t(4),o=t(8),s=t(52),p=t(36),u=t(17),c=(t(41).Reflect||{}).construct,l=p(function(){function t(){}return!(c(function(){},[],t)instanceof t)}),d=!p(function(){c(function(){})});a(a.S+a.F*(l||d),"Reflect",{construct:function(t,e){i(t),o(e);var n=arguments.length<3?t:i(arguments[2]);if(d&&!l)return c(t,e,n);if(t==n){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var a=[null];return a.push.apply(a,e),new(u.apply(t,a))}var p=n.prototype,f=r(s(p)?p:Object.prototype),h=Function.apply.call(t,f,e);return s(h)?h:f}})},{17:17,34:34,36:36,4:4,41:41,52:52,71:71,8:8}],211:[function(t,e,n){var a=t(72),r=t(34),i=t(8),o=t(118);r(r.S+r.F*t(36)(function(){Reflect.defineProperty(a.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function(t,e,n){i(t),e=o(e,!0),i(n);try{return a.f(t,e,n),!0}catch(r){return!1}}})},{118:118,34:34,36:36,72:72,8:8}],212:[function(t,e,n){var a=t(34),r=t(75).f,i=t(8);a(a.S,"Reflect",{deleteProperty:function(t,e){var n=r(i(t),e);return n&&!n.configurable?!1:delete t[e]}})},{34:34,75:75,8:8}],213:[function(t,e,n){"use strict";var a=t(34),r=t(8),i=function(t){this._t=r(t),this._i=0;var e,n=this._k=[];for(e in t)n.push(e)};t(55)(i,"Object",function(){var t,e=this,n=e._k;do if(e._i>=n.length)return{value:void 0,done:!0};while(!((t=n[e._i++])in e._t));return{value:t,done:!1}}),a(a.S,"Reflect",{enumerate:function(t){return new i(t)}})},{34:34,55:55,8:8}],214:[function(t,e,n){var a=t(75),r=t(34),i=t(8);r(r.S,"Reflect",{getOwnPropertyDescriptor:function(t,e){return a.f(i(t),e)}})},{34:34,75:75,8:8}],215:[function(t,e,n){var a=t(34),r=t(79),i=t(8);a(a.S,"Reflect",{getPrototypeOf:function(t){return r(i(t))}})},{34:34,79:79,8:8}],216:[function(t,e,n){function a(t,e){var n,s,c=arguments.length<3?t:arguments[2];return u(t)===c?t[e]:(n=r.f(t,e))?o(n,"value")?n.value:void 0!==n.get?n.get.call(c):void 0:p(s=i(t))?a(s,e,c):void 0}var r=t(75),i=t(79),o=t(42),s=t(34),p=t(52),u=t(8);s(s.S,"Reflect",{get:a})},{34:34,42:42,52:52,75:75,79:79,8:8}],217:[function(t,e,n){var a=t(34);a(a.S,"Reflect",{has:function(t,e){return e in t}})},{34:34}],218:[function(t,e,n){var a=t(34),r=t(8),i=Object.isExtensible;a(a.S,"Reflect",{isExtensible:function(t){return r(t),i?i(t):!0}})},{34:34,8:8}],219:[function(t,e,n){var a=t(34);a(a.S,"Reflect",{ownKeys:t(85)})},{34:34,85:85}],220:[function(t,e,n){var a=t(34),r=t(8),i=Object.preventExtensions;a(a.S,"Reflect",{preventExtensions:function(t){r(t);try{return i&&i(t),!0}catch(e){return!1}}})},{34:34,8:8}],221:[function(t,e,n){var a=t(34),r=t(97);r&&a(a.S,"Reflect",{setPrototypeOf:function(t,e){r.check(t,e);try{return r.set(t,e),!0}catch(n){return!1}}})},{34:34,97:97}],222:[function(t,e,n){function a(t,e,n){var p,d,f=arguments.length<4?t:arguments[3],h=i.f(c(t),e);if(!h){if(l(d=o(t)))return a(d,e,n,f);h=u(0)}if(s(h,"value")){if(h.writable===!1||!l(f))return!1;if(p=i.f(f,e)){if(p.get||p.set||p.writable===!1)return!1;p.value=n,r.f(f,e,p)}else r.f(f,e,u(0,n));return!0}return void 0===h.set?!1:(h.set.call(f,n),!0)}var r=t(72),i=t(75),o=t(79),s=t(42),p=t(34),u=t(90),c=t(8),l=t(52);p(p.S,"Reflect",{set:a})},{34:34,42:42,52:52,72:72,75:75,79:79,8:8,90:90}],223:[function(t,e,n){var a=t(41),r=t(46),i=t(72).f,o=t(77).f,s=t(53),p=t(38),u=a.RegExp,c=u,l=u.prototype,d=/a/g,f=/a/g,h=new u(d)!==d;if(t(30)&&(!h||t(36)(function(){return f[t(127)("match")]=!1,u(d)!=d||u(f)==f||"/a/i"!=u(d,"i")}))){u=function(t,e){var n=this instanceof u,a=s(t),i=void 0===e;return!n&&a&&t.constructor===u&&i?t:r(h?new c(a&&!i?t.source:t,e):c((a=t instanceof u)?t.source:t,a&&i?p.call(t):e),n?this:l,u)};for(var m=(function(t){t in u||i(u,t,{configurable:!0,get:function(){return c[t]},set:function(e){c[t]=e}})}),g=o(c),v=0;g.length>v;)m(g[v++]);l.constructor=u,u.prototype=l,t(92)(a,"RegExp",u)}t(98)("RegExp")},{127:127,30:30,36:36,38:38,41:41,46:46,53:53,72:72,77:77,92:92,98:98}],224:[function(t,e,n){t(30)&&"g"!=/./g.flags&&t(72).f(RegExp.prototype,"flags",{configurable:!0,get:t(38)})},{30:30,38:38,72:72}],225:[function(t,e,n){t(37)("match",1,function(t,e,n){return[function(n){"use strict";var a=t(this),r=void 0==n?void 0:n[e];return void 0!==r?r.call(n,a):RegExp(n)[e](a+"")},n]})},{37:37}],226:[function(t,e,n){t(37)("replace",2,function(t,e,n){return[function(a,r){"use strict";var i=t(this),o=void 0==a?void 0:a[e];return void 0!==o?o.call(a,i,r):n.call(i+"",a,r)},n]})},{37:37}],227:[function(t,e,n){t(37)("search",1,function(t,e,n){return[function(n){"use strict";var a=t(this),r=void 0==n?void 0:n[e];return void 0!==r?r.call(n,a):RegExp(n)[e](a+"")},n]})},{37:37}],228:[function(t,e,n){t(37)("split",2,function(e,n,a){"use strict";var r=t(53),i=a,o=[].push,s="split",p="length",u="lastIndex";if("c"=="abbc"[s](/(b)*/)[1]||4!="test"[s](/(?:)/,-1)[p]||2!="ab"[s](/(?:ab)*/)[p]||4!="."[s](/(.?)(.?)/)[p]||"."[s](/()()/)[p]>1||""[s](/.?/)[p]){var c=void 0===/()??/.exec("")[1];a=function(t,e){var n=this+"";if(void 0===t&&0===e)return[];if(!r(t))return i.call(n,t,e);var a,s,l,d,f,h=[],m=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),g=0,v=void 0===e?4294967295:e>>>0,b=RegExp(t.source,m+"g");for(c||(a=RegExp("^"+b.source+"$(?!\\s)",m));(s=b.exec(n))&&(l=s.index+s[0][p],!(l>g&&(h.push(n.slice(g,s.index)),!c&&s[p]>1&&s[0].replace(a,function(){for(f=1;f1&&s.index=v)));)b[u]===s.index&&b[u]++;return g===n[p]?(d||!b.test(""))&&h.push(""):h.push(n.slice(g)),h[p]>v?h.slice(0,v):h}}else"0"[s](void 0,0)[p]&&(a=function(t,e){return void 0===t&&0===e?[]:i.call(this,t,e)});return[function(t,r){var i=e(this),o=void 0==t?void 0:t[n];return void 0!==o?o.call(t,i,r):a.call(i+"",t,r)},a]})},{37:37,53:53}],229:[function(t,e,n){"use strict";t(224);var a=t(8),r=t(38),i=t(30),o="toString",s=/./[o],p=function(e){t(92)(RegExp.prototype,o,e,!0)};t(36)(function(){return"/a/b"!=s.call({source:"a",flags:"b"})})?p(function(){var t=a(this);return"/".concat(t.source,"/","flags"in t?t.flags:!i&&t instanceof RegExp?r.call(t):void 0)}):s.name!=o&&p(function(){return s.call(this)})},{224:224,30:30,36:36,38:38,8:8,92:92}],230:[function(t,e,n){"use strict";var a=t(20),r=t(124),i="Set";e.exports=t(23)(i,function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return a.def(r(this,i),t=0===t?0:t,t)}},a)},{124:124,20:20,23:23}],231:[function(t,e,n){"use strict";t(106)("anchor",function(t){return function(e){return t(this,"a","name",e)}})},{106:106}],232:[function(t,e,n){"use strict";t(106)("big",function(t){return function(){return t(this,"big","","")}})},{106:106}],233:[function(t,e,n){"use strict";t(106)("blink",function(t){return function(){return t(this,"blink","","")}})},{106:106}],234:[function(t,e,n){"use strict";t(106)("bold",function(t){return function(){return t(this,"b","","")}})},{106:106}],235:[function(t,e,n){"use strict";var a=t(34),r=t(104)(!1);a(a.P,"String",{codePointAt:function(t){return r(this,t)}})},{104:104,34:34}],236:[function(t,e,n){"use strict";var a=t(34),r=t(116),i=t(105),o="endsWith",s=""[o];a(a.P+a.F*t(35)(o),"String",{endsWith:function(t){var e=i(this,t,o),n=arguments.length>1?arguments[1]:void 0,a=r(e.length),p=void 0===n?a:Math.min(r(n),a),u=t+"";return s?s.call(e,u,p):e.slice(p-u.length,p)===u}})},{105:105,116:116,34:34,35:35}],237:[function(t,e,n){"use strict";t(106)("fixed",function(t){return function(){return t(this,"tt","","")}})},{106:106}],238:[function(t,e,n){"use strict";t(106)("fontcolor",function(t){return function(e){return t(this,"font","color",e)}})},{106:106}],239:[function(t,e,n){"use strict";t(106)("fontsize",function(t){return function(e){return t(this,"font","size",e)}})},{106:106}],240:[function(t,e,n){var a=t(34),r=t(112),i=String.fromCharCode,o=String.fromCodePoint;a(a.S+a.F*(!!o&&1!=o.length),"String",{fromCodePoint:function(t){for(var e,n=[],a=arguments.length,o=0;a>o;){if(e=+arguments[o++],r(e,1114111)!==e)throw RangeError(e+" is not a valid code point");n.push(65536>e?i(e):i(((e-=65536)>>10)+55296,e%1024+56320))}return n.join("")}})},{112:112,34:34}],241:[function(t,e,n){"use strict";var a=t(34),r=t(105),i="includes";a(a.P+a.F*t(35)(i),"String",{includes:function(t){return!!~r(this,t,i).indexOf(t,arguments.length>1?arguments[1]:void 0)}})},{105:105,34:34,35:35}],242:[function(t,e,n){"use strict";t(106)("italics",function(t){return function(){return t(this,"i","","")}})},{106:106}],243:[function(t,e,n){"use strict";var a=t(104)(!0);t(56)(String,"String",function(t){this._t=t+"",this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=a(e,n),this._i+=t.length,{value:t,done:!1})})},{104:104,56:56}],244:[function(t,e,n){"use strict";t(106)("link",function(t){return function(e){return t(this,"a","href",e)}})},{106:106}],245:[function(t,e,n){var a=t(34),r=t(115),i=t(116);a(a.S,"String",{raw:function(t){for(var e=r(t.raw),n=i(e.length),a=arguments.length,o=[],s=0;n>s;)o.push(e[s++]+""),a>s&&o.push(arguments[s]+"");return o.join("")}})},{115:115,116:116,34:34}],246:[function(t,e,n){var a=t(34);a(a.P,"String",{repeat:t(108)})},{108:108,34:34}],247:[function(t,e,n){"use strict";t(106)("small",function(t){return function(){return t(this,"small","","")}})},{106:106}],248:[function(t,e,n){"use strict";var a=t(34),r=t(116),i=t(105),o="startsWith",s=""[o];a(a.P+a.F*t(35)(o),"String",{startsWith:function(t){var e=i(this,t,o),n=r(Math.min(arguments.length>1?arguments[1]:void 0,e.length)),a=t+"";return s?s.call(e,a,n):e.slice(n,n+a.length)===a}})},{105:105,116:116,34:34,35:35}],249:[function(t,e,n){"use strict";t(106)("strike",function(t){return function(){return t(this,"strike","","")}})},{106:106}],250:[function(t,e,n){"use strict";t(106)("sub",function(t){return function(){return t(this,"sub","","")}})},{106:106}],251:[function(t,e,n){"use strict";t(106)("sup",function(t){return function(){return t(this,"sup","","")}})},{106:106}],252:[function(t,e,n){"use strict";t(109)("trim",function(t){return function(){return t(this,3)}})},{109:109}],253:[function(t,e,n){"use strict";var a=t(41),r=t(42),i=t(30),o=t(34),s=t(92),p=t(66).KEY,u=t(36),c=t(101),l=t(99),d=t(122),f=t(127),h=t(126),m=t(125),g=t(33),v=t(50),b=t(8),y=t(52),_=t(115),x=t(118),w=t(90),k=t(71),S=t(76),E=t(75),C=t(72),P=t(81),A=E.f,O=C.f,T=S.f,R=a.Symbol,M=a.JSON,L=M&&M.stringify,j="prototype",D=f("_hidden"),N=f("toPrimitive"),F={}.propertyIsEnumerable,I=c("symbol-registry"),B=c("symbols"),V=c("op-symbols"),q=Object[j],U="function"==typeof R,G=a.QObject,z=!G||!G[j]||!G[j].findChild,W=i&&u(function(){return 7!=k(O({},"a",{get:function(){return O(this,"a",{value:7}).a}})).a})?function(t,e,n){var a=A(q,e);a&&delete q[e],O(t,e,n),a&&t!==q&&O(q,e,a)}:O,H=function(t){var e=B[t]=k(R[j]);return e._k=t,e},K=U&&"symbol"==typeof R.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof R},Q=function(t,e,n){return t===q&&Q(V,e,n),b(t),e=x(e,!0),b(n),r(B,e)?(n.enumerable?(r(t,D)&&t[D][e]&&(t[D][e]=!1),n=k(n,{enumerable:w(0,!1)})):(r(t,D)||O(t,D,w(1,{})),t[D][e]=!0),W(t,e,n)):O(t,e,n)},Y=function(t,e){b(t);for(var n,a=g(e=_(e)),r=0,i=a.length;i>r;)Q(t,n=a[r++],e[n]);return t},$=function(t,e){return void 0===e?k(t):Y(k(t),e)},J=function(t){var e=F.call(this,t=x(t,!0));return this===q&&r(B,t)&&!r(V,t)?!1:e||!r(this,t)||!r(B,t)||r(this,D)&&this[D][t]?e:!0},X=function(t,e){if(t=_(t),e=x(e,!0),t!==q||!r(B,e)||r(V,e)){var n=A(t,e);return!n||!r(B,e)||r(t,D)&&t[D][e]||(n.enumerable=!0),n}},Z=function(t){for(var e,n=T(_(t)),a=[],i=0;n.length>i;)r(B,e=n[i++])||e==D||e==p||a.push(e);return a},tt=function(t){for(var e,n=t===q,a=T(n?V:_(t)),i=[],o=0;a.length>o;)r(B,e=a[o++])&&(n?r(q,e):!0)&&i.push(B[e]);return i};U||(R=function(){if(this instanceof R)throw TypeError("Symbol is not a constructor!");var t=d(arguments.length>0?arguments[0]:void 0),e=function(n){this===q&&e.call(V,n),r(this,D)&&r(this[D],t)&&(this[D][t]=!1),W(this,t,w(1,n))};return i&&z&&W(q,t,{configurable:!0,set:e}),H(t)},s(R[j],"toString",function(){return this._k}),E.f=X,C.f=Q,t(77).f=S.f=Z,t(82).f=J,t(78).f=tt,i&&!t(60)&&s(q,"propertyIsEnumerable",J,!0),h.f=function(t){return H(f(t))}),o(o.G+o.W+o.F*!U,{Symbol:R});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),nt=0;et.length>nt;)f(et[nt++]);for(var at=P(f.store),rt=0;at.length>rt;)m(at[rt++]);o(o.S+o.F*!U,"Symbol",{"for":function(t){return r(I,t+="")?I[t]:I[t]=R(t)},keyFor:function(t){if(!K(t))throw TypeError(t+" is not a symbol!");for(var e in I)if(I[e]===t)return e},useSetter:function(){z=!0},useSimple:function(){z=!1}}),o(o.S+o.F*!U,"Object",{create:$,defineProperty:Q,defineProperties:Y,getOwnPropertyDescriptor:X,getOwnPropertyNames:Z,getOwnPropertySymbols:tt}),M&&o(o.S+o.F*(!U||u(function(){var t=R();return"[null]"!=L([t])||"{}"!=L({a:t})||"{}"!=L(Object(t))})),"JSON",{stringify:function(t){for(var e,n,a=[t],r=1;arguments.length>r;)a.push(arguments[r++]);return n=e=a[1],!y(e)&&void 0===t||K(t)?void 0:(v(e)||(e=function(t,e){return"function"==typeof n&&(e=n.call(this,t,e)),K(e)?void 0:e}),a[1]=e,L.apply(M,a))}}),R[j][N]||t(43)(R[j],N,R[j].valueOf),l(R,"Symbol"),l(Math,"Math",!0),l(a.JSON,"JSON",!0)},{101:101,115:115,118:118,122:122,125:125,126:126,127:127,30:30,33:33,34:34,36:36,41:41,42:42,43:43,50:50,52:52,60:60,66:66,71:71,72:72,75:75,76:76,77:77,78:78,8:8,81:81,82:82,90:90,92:92,99:99}],254:[function(t,e,n){"use strict";var a=t(34),r=t(121),i=t(120),o=t(8),s=t(112),p=t(116),u=t(52),c=t(41).ArrayBuffer,l=t(102),d=i.ArrayBuffer,f=i.DataView,h=r.ABV&&c.isView,m=d.prototype.slice,g=r.VIEW,v="ArrayBuffer";a(a.G+a.W+a.F*(c!==d),{ArrayBuffer:d}),a(a.S+a.F*!r.CONSTR,v,{isView:function(t){return h&&h(t)||u(t)&&g in t}}),a(a.P+a.U+a.F*t(36)(function(){return!new d(2).slice(1,void 0).byteLength}),v,{slice:function(t,e){if(void 0!==m&&void 0===e)return m.call(o(this),t);for(var n=o(this).byteLength,a=s(t,n),r=s(void 0===e?n:e,n),i=new(l(this,d))(p(r-a)),u=new f(this),c=new f(i),h=0;r>a;)c.setUint8(h++,u.getUint8(a++));return i}}),t(98)(v)},{102:102,112:112,116:116,120:120,121:121,34:34,36:36,41:41,52:52,8:8,98:98}],255:[function(t,e,n){var a=t(34);a(a.G+a.W+a.F*!t(121).ABV,{DataView:t(120).DataView})},{120:120,121:121,34:34}],256:[function(t,e,n){t(119)("Float32",4,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],257:[function(t,e,n){t(119)("Float64",8,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],258:[function(t,e,n){t(119)("Int16",2,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],259:[function(t,e,n){t(119)("Int32",4,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],260:[function(t,e,n){t(119)("Int8",1,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],261:[function(t,e,n){t(119)("Uint16",2,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],262:[function(t,e,n){t(119)("Uint32",4,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],263:[function(t,e,n){t(119)("Uint8",1,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],264:[function(t,e,n){t(119)("Uint8",1,function(t){return function(e,n,a){return t(this,e,n,a)}},!0)},{119:119}],265:[function(t,e,n){"use strict";var a,r=t(13)(0),i=t(92),o=t(66),s=t(70),p=t(22),u=t(52),c=t(36),l=t(124),d="WeakMap",f=o.getWeak,h=Object.isExtensible,m=p.ufstore,g={},v=function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},b={get:function(t){if(u(t)){var e=f(t);return e===!0?m(l(this,d)).get(t):e?e[this._i]:void 0}},set:function(t,e){return p.def(l(this,d),t,e)}},y=e.exports=t(23)(d,v,b,p,!0,!0);c(function(){return 7!=(new y).set((Object.freeze||Object)(g),7).get(g)})&&(a=p.getConstructor(v,d),s(a.prototype,b),o.NEED=!0,r(["delete","has","get","set"],function(t){var e=y.prototype,n=e[t];i(e,t,function(e,r){if(u(e)&&!h(e)){this._f||(this._f=new a);var i=this._f[t](e,r);return"set"==t?this:i}return n.call(this,e,r)})}))},{124:124,13:13,22:22,23:23,36:36,52:52,66:66,70:70,92:92}],266:[function(t,e,n){"use strict";var a=t(22),r=t(124),i="WeakSet";t(23)(i,function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return a.def(r(this,i),t,!0)}},a,!1,!0)},{124:124,22:22,23:23}],267:[function(t,e,n){"use strict";var a=t(34),r=t(39),i=t(117),o=t(116),s=t(4),p=t(16);a(a.P,"Array",{flatMap:function(t){var e,n,a=i(this);return s(t),e=o(a.length),n=p(a,0),r(n,a,a,e,0,1,t,arguments[1]),n}}),t(6)("flatMap")},{116:116,117:117,16:16,34:34,39:39,4:4,6:6}],268:[function(t,e,n){"use strict";var a=t(34),r=t(39),i=t(117),o=t(116),s=t(114),p=t(16);a(a.P,"Array",{flatten:function(){var t=arguments[0],e=i(this),n=o(e.length),a=p(e,0);return r(a,e,e,n,0,void 0===t?1:s(t)),a}}),t(6)("flatten")},{114:114,116:116,117:117,16:16,34:34,39:39,6:6}],269:[function(t,e,n){"use strict";var a=t(34),r=t(12)(!0);a(a.P,"Array",{includes:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),t(6)("includes")},{12:12,34:34,6:6}],270:[function(t,e,n){var a=t(34),r=t(68)(),i=t(41).process,o="process"==t(19)(i);a(a.G,{asap:function(t){var e=o&&i.domain;r(e?e.bind(t):t)}})},{19:19,34:34,41:41,68:68}],271:[function(t,e,n){var a=t(34),r=t(19);a(a.S,"Error",{isError:function(t){return"Error"===r(t)}})},{19:19,34:34}],272:[function(t,e,n){var a=t(34);a(a.G,{global:t(41)})},{34:34,41:41}],273:[function(t,e,n){t(95)("Map")},{95:95}],274:[function(t,e,n){t(96)("Map")},{96:96}],275:[function(t,e,n){var a=t(34);a(a.P+a.R,"Map",{toJSON:t(21)("Map")})},{21:21,34:34}],276:[function(t,e,n){var a=t(34);a(a.S,"Math",{clamp:function(t,e,n){return Math.min(n,Math.max(e,t))}})},{34:34}],277:[function(t,e,n){var a=t(34);a(a.S,"Math",{DEG_PER_RAD:Math.PI/180})},{34:34}],278:[function(t,e,n){var a=t(34),r=180/Math.PI;a(a.S,"Math",{degrees:function(t){return t*r}})},{34:34}],279:[function(t,e,n){var a=t(34),r=t(64),i=t(62);a(a.S,"Math",{fscale:function(t,e,n,a,o){return i(r(t,e,n,a,o))}})},{34:34,62:62,64:64}],280:[function(t,e,n){var a=t(34);a(a.S,"Math",{iaddh:function(t,e,n,a){var r=t>>>0,i=e>>>0,o=n>>>0;return i+(a>>>0)+((r&o|(r|o)&~(r+o>>>0))>>>31)|0}})},{34:34}],281:[function(t,e,n){var a=t(34);a(a.S,"Math",{imulh:function(t,e){var n=65535,a=+t,r=+e,i=a&n,o=r&n,s=a>>16,p=r>>16,u=(s*o>>>0)+(i*o>>>16);return s*p+(u>>16)+((i*p>>>0)+(u&n)>>16)}})},{34:34}],282:[function(t,e,n){var a=t(34);a(a.S,"Math",{isubh:function(t,e,n,a){var r=t>>>0,i=e>>>0,o=n>>>0;return i-(a>>>0)-((~r&o|~(r^o)&r-o>>>0)>>>31)|0}})},{34:34}],283:[function(t,e,n){var a=t(34);a(a.S,"Math",{RAD_PER_DEG:180/Math.PI})},{34:34}],284:[function(t,e,n){var a=t(34),r=Math.PI/180;a(a.S,"Math",{radians:function(t){return t*r}})},{34:34}],285:[function(t,e,n){var a=t(34);a(a.S,"Math",{scale:t(64)})},{34:34,64:64}],286:[function(t,e,n){var a=t(34);a(a.S,"Math",{signbit:function(t){return(t=+t)!=t?t:0==t?1/t==1/0:t>0}})},{34:34}],287:[function(t,e,n){var a=t(34);a(a.S,"Math",{umulh:function(t,e){var n=65535,a=+t,r=+e,i=a&n,o=r&n,s=a>>>16,p=r>>>16,u=(s*o>>>0)+(i*o>>>16);return s*p+(u>>>16)+((i*p>>>0)+(u&n)>>>16)}})},{34:34}],288:[function(t,e,n){"use strict";var a=t(34),r=t(117),i=t(4),o=t(72);t(30)&&a(a.P+t(74),"Object",{__defineGetter__:function(t,e){o.f(r(this),t,{get:i(e),enumerable:!0,configurable:!0})}})},{117:117,30:30,34:34,4:4,72:72,74:74}],289:[function(t,e,n){"use strict";var a=t(34),r=t(117),i=t(4),o=t(72);t(30)&&a(a.P+t(74),"Object",{__defineSetter__:function(t,e){o.f(r(this),t,{set:i(e),enumerable:!0,configurable:!0})}})},{117:117,30:30,34:34,4:4,72:72,74:74}],290:[function(t,e,n){var a=t(34),r=t(84)(!0);a(a.S,"Object",{entries:function(t){return r(t)}})},{34:34,84:84}],291:[function(t,e,n){var a=t(34),r=t(85),i=t(115),o=t(75),s=t(25);a(a.S,"Object",{getOwnPropertyDescriptors:function(t){for(var e,n,a=i(t),p=o.f,u=r(a),c={},l=0;u.length>l;)n=p(a,e=u[l++]),void 0!==n&&s(c,e,n);return c}})},{115:115,25:25,34:34,75:75,85:85}],292:[function(t,e,n){"use strict";var a=t(34),r=t(117),i=t(118),o=t(79),s=t(75).f;t(30)&&a(a.P+t(74),"Object",{__lookupGetter__:function(t){var e,n=r(this),a=i(t,!0);do if(e=s(n,a))return e.get;while(n=o(n))}})},{117:117,118:118,30:30,34:34,74:74,75:75,79:79}],293:[function(t,e,n){"use strict";var a=t(34),r=t(117),i=t(118),o=t(79),s=t(75).f;t(30)&&a(a.P+t(74),"Object",{__lookupSetter__:function(t){var e,n=r(this),a=i(t,!0);do if(e=s(n,a))return e.set;while(n=o(n))}})},{117:117,118:118,30:30,34:34,74:74,75:75,79:79}],294:[function(t,e,n){var a=t(34),r=t(84)(!1);a(a.S,"Object",{values:function(t){return r(t)}})},{34:34,84:84}],295:[function(t,e,n){"use strict";var a=t(34),r=t(41),i=t(24),o=t(68)(),s=t(127)("observable"),p=t(4),u=t(8),c=t(7),l=t(91),d=t(43),f=t(40),h=f.RETURN,m=function(t){return null==t?void 0:p(t)},g=function(t){var e=t._c;e&&(t._c=void 0,e())},v=function(t){return void 0===t._o},b=function(t){v(t)||(t._o=void 0,g(t))},y=function(t,e){u(t),this._c=void 0,this._o=t,t=new _(this);try{var n=e(t),a=n;null!=n&&("function"==typeof n.unsubscribe?n=function(){a.unsubscribe()}:p(n),this._c=n)}catch(r){return void t.error(r)}v(this)&&g(this)};y.prototype=l({},{unsubscribe:function(){b(this)}});var _=function(t){this._s=t};_.prototype=l({},{next:function(t){var e=this._s;if(!v(e)){var n=e._o;try{var a=m(n.next);if(a)return a.call(n,t)}catch(r){try{b(e)}finally{throw r}}}},error:function(t){var e=this._s;if(v(e))throw t;var n=e._o;e._o=void 0;try{var a=m(n.error);if(!a)throw t;t=a.call(n,t)}catch(r){try{g(e)}finally{throw r}}return g(e),t},complete:function(t){var e=this._s;if(!v(e)){var n=e._o;e._o=void 0;try{var a=m(n.complete);t=a?a.call(n,t):void 0}catch(r){try{g(e)}finally{throw r}}return g(e),t}}});var x=function(t){c(this,x,"Observable","_f")._f=p(t)};l(x.prototype,{subscribe:function(t){return new y(t,this._f)},forEach:function(t){var e=this;return new(i.Promise||r.Promise)(function(n,a){p(t);var r=e.subscribe({next:function(e){try{return t(e)}catch(n){a(n),r.unsubscribe()}},error:a,complete:n})})}}),l(x,{from:function(t){var e="function"==typeof this?this:x,n=m(u(t)[s]);if(n){var a=u(n.call(t));return a.constructor===e?a:new e(function(t){return a.subscribe(t)})}return new e(function(e){var n=!1;return o(function(){if(!n){try{if(f(t,!1,function(t){return e.next(t),n?h:void 0})===h)return}catch(a){if(n)throw a;return void e.error(a)}e.complete()}}),function(){n=!0}})},of:function(){for(var t=0,e=arguments.length,n=Array(e);e>t;)n[t]=arguments[t++];return new("function"==typeof this?this:x)(function(t){var e=!1;return o(function(){if(!e){for(var a=0;a1?arguments[1]:void 0,!1)}})},{107:107,123:123,34:34}],313:[function(t,e,n){"use strict";var a=t(34),r=t(107),i=t(123);a(a.P+a.F*/Version\/10\.\d+(\.\d+)? Safari\//.test(i),"String",{padStart:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},{107:107,123:123,34:34}],314:[function(t,e,n){"use strict";t(109)("trimLeft",function(t){return function(){return t(this,1)}},"trimStart")},{109:109}],315:[function(t,e,n){"use strict";t(109)("trimRight",function(t){return function(){return t(this,2)}},"trimEnd")},{109:109}],316:[function(t,e,n){t(125)("asyncIterator")},{125:125}],317:[function(t,e,n){t(125)("observable")},{125:125}],318:[function(t,e,n){var a=t(34);a(a.S,"System",{global:t(41) -})},{34:34,41:41}],319:[function(t,e,n){t(95)("WeakMap")},{95:95}],320:[function(t,e,n){t(96)("WeakMap")},{96:96}],321:[function(t,e,n){t(95)("WeakSet")},{95:95}],322:[function(t,e,n){t(96)("WeakSet")},{96:96}],323:[function(t,e,n){for(var a=t(140),r=t(81),i=t(92),o=t(41),s=t(43),p=t(59),u=t(127),c=u("iterator"),l=u("toStringTag"),d=p.Array,f={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},h=r(f),m=0;m2,r=a?o.call(arguments,2):!1;return t(a?function(){("function"==typeof e?e:Function(e)).apply(this,r)}:e,n)}};r(r.G+r.B+r.F*s,{setTimeout:p(a.setTimeout),setInterval:p(a.setInterval)})},{123:123,34:34,41:41}],326:[function(t,e,n){t(253),t(190),t(192),t(191),t(194),t(196),t(201),t(195),t(193),t(203),t(202),t(198),t(199),t(197),t(189),t(200),t(204),t(205),t(156),t(158),t(157),t(207),t(206),t(177),t(187),t(188),t(178),t(179),t(180),t(181),t(182),t(183),t(184),t(185),t(186),t(160),t(161),t(162),t(163),t(164),t(165),t(166),t(167),t(168),t(169),t(170),t(171),t(172),t(173),t(174),t(175),t(176),t(240),t(245),t(252),t(243),t(235),t(236),t(241),t(246),t(248),t(231),t(232),t(233),t(234),t(237),t(238),t(239),t(242),t(244),t(247),t(249),t(250),t(251),t(151),t(153),t(152),t(155),t(154),t(139),t(137),t(144),t(141),t(147),t(149),t(136),t(143),t(133),t(148),t(131),t(146),t(145),t(138),t(142),t(130),t(132),t(135),t(134),t(150),t(140),t(223),t(229),t(224),t(225),t(226),t(227),t(228),t(208),t(159),t(230),t(265),t(266),t(254),t(255),t(260),t(263),t(264),t(258),t(261),t(259),t(262),t(256),t(257),t(209),t(210),t(211),t(212),t(213),t(216),t(214),t(215),t(217),t(218),t(219),t(220),t(222),t(221),t(269),t(267),t(268),t(310),t(313),t(312),t(314),t(315),t(311),t(316),t(317),t(291),t(294),t(290),t(288),t(289),t(292),t(293),t(275),t(309),t(274),t(308),t(320),t(322),t(273),t(307),t(319),t(321),t(272),t(318),t(271),t(276),t(277),t(278),t(279),t(280),t(282),t(281),t(283),t(284),t(285),t(287),t(286),t(296),t(297),t(298),t(299),t(301),t(300),t(303),t(302),t(304),t(305),t(306),t(270),t(295),t(325),t(324),t(323),e.exports=t(24)},{130:130,131:131,132:132,133:133,134:134,135:135,136:136,137:137,138:138,139:139,140:140,141:141,142:142,143:143,144:144,145:145,146:146,147:147,148:148,149:149,150:150,151:151,152:152,153:153,154:154,155:155,156:156,157:157,158:158,159:159,160:160,161:161,162:162,163:163,164:164,165:165,166:166,167:167,168:168,169:169,170:170,171:171,172:172,173:173,174:174,175:175,176:176,177:177,178:178,179:179,180:180,181:181,182:182,183:183,184:184,185:185,186:186,187:187,188:188,189:189,190:190,191:191,192:192,193:193,194:194,195:195,196:196,197:197,198:198,199:199,200:200,201:201,202:202,203:203,204:204,205:205,206:206,207:207,208:208,209:209,210:210,211:211,212:212,213:213,214:214,215:215,216:216,217:217,218:218,219:219,220:220,221:221,222:222,223:223,224:224,225:225,226:226,227:227,228:228,229:229,230:230,231:231,232:232,233:233,234:234,235:235,236:236,237:237,238:238,239:239,24:24,240:240,241:241,242:242,243:243,244:244,245:245,246:246,247:247,248:248,249:249,250:250,251:251,252:252,253:253,254:254,255:255,256:256,257:257,258:258,259:259,260:260,261:261,262:262,263:263,264:264,265:265,266:266,267:267,268:268,269:269,270:270,271:271,272:272,273:273,274:274,275:275,276:276,277:277,278:278,279:279,280:280,281:281,282:282,283:283,284:284,285:285,286:286,287:287,288:288,289:289,290:290,291:291,292:292,293:293,294:294,295:295,296:296,297:297,298:298,299:299,300:300,301:301,302:302,303:303,304:304,305:305,306:306,307:307,308:308,309:309,310:310,311:311,312:312,313:313,314:314,315:315,316:316,317:317,318:318,319:319,320:320,321:321,322:322,323:323,324:324,325:325}],327:[function(t,e,n){!function(t){"use strict";function e(){return c.createDocumentFragment()}function n(t){return c.createElement(t)}function a(t){if(1===t.length)return r(t[0]);for(var n=e(),a=B.call(t),i=0;i-1}}([].indexOf||function(t){for(V=this.length;V--&&this[V]!==t;);return V}),item:function(t){return this[t]||null},remove:function(){for(var t,e=0;e=p?e(i):document.fonts.load(u(i,i.family),s).then(function(e){1<=e.length?t(i):setTimeout(d,25)},function(){e(i)})};d()}else n(function(){function n(){var e;(e=-1!=g&&-1!=v||-1!=g&&-1!=b||-1!=v&&-1!=b)&&((e=g!=v&&g!=b&&v!=b)||(null===l&&(e=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent),l=!!e&&(536>parseInt(e[1],10)||536===parseInt(e[1],10)&&11>=parseInt(e[2],10))),e=l&&(g==y&&v==y&&b==y||g==_&&v==_&&b==_||g==x&&v==x&&b==x)),e=!e),e&&(null!==w.parentNode&&w.parentNode.removeChild(w),clearTimeout(k),t(i))}function d(){if((new Date).getTime()-c>=p)null!==w.parentNode&&w.parentNode.removeChild(w),e(i);else{var t=document.hidden;(!0===t||void 0===t)&&(g=f.a.offsetWidth,v=h.a.offsetWidth,b=m.a.offsetWidth,n()),k=setTimeout(d,50)}}var f=new a(s),h=new a(s),m=new a(s),g=-1,v=-1,b=-1,y=-1,_=-1,x=-1,w=document.createElement("div"),k=0;w.dir="ltr",r(f,u(i,"sans-serif")),r(h,u(i,"serif")),r(m,u(i,"monospace")),w.appendChild(f.a),w.appendChild(h.a),w.appendChild(m.a),document.body.appendChild(w),y=f.a.offsetWidth,_=h.a.offsetWidth,x=m.a.offsetWidth,d(),o(f,function(t){g=t,n()}),r(f,u(i,'"'+i.family+'",sans-serif')),o(h,function(t){v=t,n()}),r(h,u(i,'"'+i.family+'",serif')),o(m,function(t){b=t,n()}),r(m,u(i,'"'+i.family+'",monospace'))})})},window.FontFaceObserver=s,window.FontFaceObserver.prototype.check=s.prototype.a,void 0!==e&&(e.exports=window.FontFaceObserver)}()},{}],330:[function(t,e,n){!function(t,n){function a(t,e){var n=t.createElement("p"),a=t.getElementsByTagName("head")[0]||t.documentElement;return n.innerHTML="x",a.insertBefore(n.lastChild,a.firstChild)}function r(){var t=_.elements;return"string"==typeof t?t.split(" "):t}function i(t,e){var n=_.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof t&&(t=t.join(" ")),_.elements=n+" "+t,c(e)}function o(t){var e=y[t[v]];return e||(e={},b++,t[v]=b,y[b]=e),e}function s(t,e,a){if(e||(e=n),d)return e.createElement(t);a||(a=o(e));var r;return r=a.cache[t]?a.cache[t].cloneNode():g.test(t)?(a.cache[t]=a.createElem(t)).cloneNode():a.createElem(t),!r.canHaveChildren||m.test(t)||r.tagUrn?r:a.frag.appendChild(r)}function p(t,e){if(t||(t=n),d)return t.createDocumentFragment();e=e||o(t);for(var a=e.frag.cloneNode(),i=0,s=r(),p=s.length;p>i;i++)a.createElement(s[i]);return a}function u(t,e){e.cache||(e.cache={},e.createElem=t.createElement,e.createFrag=t.createDocumentFragment,e.frag=e.createFrag()),t.createElement=function(n){return _.shivMethods?s(n,t,e):e.createElem(n)},t.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+r().join().replace(/[\w\-:]+/g,function(t){return e.createElem(t),e.frag.createElement(t),'c("'+t+'")'})+");return n}")(_,e.frag)}function c(t){t||(t=n);var e=o(t);return!_.shivCSS||l||e.hasCSS||(e.hasCSS=!!a(t,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),d||u(t,e),t}var l,d,f="3.7.3-pre",h=t.html5||{},m=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,g=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",b=0,y={};!function(){try{var t=n.createElement("a");t.innerHTML="",l="hidden"in t,d=1==t.childNodes.length||function(){n.createElement("a");var t=n.createDocumentFragment();return void 0===t.cloneNode||void 0===t.createDocumentFragment||void 0===t.createElement}()}catch(e){l=!0,d=!0}}();var _={elements:h.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:f,shivCSS:h.shivCSS!==!1,supportsUnknownElements:d,shivMethods:h.shivMethods!==!1,type:"default",shivDocument:c,createElement:s,createDocumentFragment:p,addElements:i};t.html5=_,c(n),"object"==typeof e&&e.exports&&(e.exports=_)}("undefined"!=typeof window?window:this,document)},{}],331:[function(t,e,n){(function(t){(function(t){!function(t){function e(t,e,n,a){for(var i,o,s=n.slice(),p=r(e,t),u=0,c=s.length;c>u&&(i=s[u],"object"==typeof i?"function"==typeof i.handleEvent&&i.handleEvent(p):i.call(t,p),!p.stoppedImmediatePropagation);u++);return o=!p.stoppedPropagation,a&&o&&t.parentNode?t.parentNode.dispatchEvent(p):!p.defaultPrevented}function n(t,e){return{configurable:!0,get:t,set:e}}function a(t,e,a){var r=y(e||t,a);v(t,"textContent",n(function(){return r.get.call(this)},function(t){r.set.call(this,t)}))}function r(t,e){return t.currentTarget=e,t.eventPhase=t.target===t.currentTarget?2:3,t}function i(t,e){for(var n=t.length;n--&&t[n]!==e;);return n}function o(){if("BR"===this.tagName)return"\n";for(var t=this.firstChild,e=[];t;)8!==t.nodeType&&7!==t.nodeType&&e.push(t.textContent),t=t.nextSibling;return e.join("")}function s(t){var e=document.createEvent("Event");e.initEvent("input",!0,!0),(t.srcElement||t.fromElement||document).dispatchEvent(e)}function p(t){!f&&S.test(document.readyState)&&(f=!f,document.detachEvent(h,p),t=document.createEvent("Event"),t.initEvent(m,!0,!0),document.dispatchEvent(t))}function u(t){return function(){return P[t]||document.body&&document.body[t]||0}}function c(t){for(var e;e=this.lastChild;)this.removeChild(e);null!=t&&this.appendChild(document.createTextNode(t))}function l(e,n){return n||(n=t.event),n.target||(n.target=n.srcElement||n.fromElement||document),n.timeStamp||(n.timeStamp=(new Date).getTime()),n}if(!document.createEvent){var d=!0,f=!1,h="onreadystatechange",m="DOMContentLoaded",g="__IE8__"+Math.random(),v=Object.defineProperty||function(t,e,n){t[e]=n.value},b=Object.defineProperties||function(e,n){for(var a in n)if(_.call(n,a))try{v(e,a,n[a])}catch(r){t.console&&console.log(a+" failed on object:",e,r.message)}},y=Object.getOwnPropertyDescriptor,_=Object.prototype.hasOwnProperty,x=t.Element.prototype,w=t.Text.prototype,k=/^[a-z]+$/,S=/loaded|complete/,E={},C=document.createElement("div"),P=document.documentElement,A=P.removeAttribute,O=P.setAttribute,T=function(t){return{enumerable:!0,writable:!0,configurable:!0,value:t}};a(t.HTMLCommentElement.prototype,x,"nodeValue"),a(t.HTMLScriptElement.prototype,null,"text"),a(w,null,"nodeValue"),a(t.HTMLTitleElement.prototype,null,"text"),v(t.HTMLStyleElement.prototype,"textContent",function(t){return n(function(){return t.get.call(this.styleSheet)},function(e){t.set.call(this.styleSheet,e)})}(y(t.CSSStyleSheet.prototype,"cssText")));var R=/\b\s*alpha\s*\(\s*opacity\s*=\s*(\d+)\s*\)/;v(t.CSSStyleDeclaration.prototype,"opacity",{get:function(){var t=this.filter.match(R);return t?""+t[1]/100:""},set:function(t){this.zoom=1;var e=!1;t=1>t?" alpha(opacity="+Math.round(100*t)+")":"",this.filter=this.filter.replace(R,function(){return e=!0,t}),!e&&t&&(this.filter+=t)}}),b(x,{textContent:{get:o,set:c},firstElementChild:{get:function(){for(var t=this.childNodes||[],e=0,n=t.length;n>e;e++)if(1==t[e].nodeType)return t[e]}},lastElementChild:{get:function(){for(var t=this.childNodes||[],e=t.length;e--;)if(1==t[e].nodeType)return t[e]}},oninput:{get:function(){return this._oninput||null},set:function(t){this._oninput&&(this.removeEventListener("input",this._oninput),this._oninput=t,t&&this.addEventListener("input",t))}},previousElementSibling:{get:function(){for(var t=this.previousSibling;t&&1!=t.nodeType;)t=t.previousSibling;return t}},nextElementSibling:{get:function(){for(var t=this.nextSibling;t&&1!=t.nodeType;)t=t.nextSibling;return t}},childElementCount:{get:function(){for(var t=0,e=this.childNodes||[],n=e.length;n--;t+=1==e[n].nodeType);return t}},addEventListener:T(function(t,n,a){if("function"==typeof n||"object"==typeof n){var r,o,p=this,u="on"+t,c=p[g]||v(p,g,{value:{}})[g],d=c[u]||(c[u]={}),f=d.h||(d.h=[]);if(!_.call(d,"w")){if(d.w=function(t){return t[g]||e(p,l(p,t),f,!1)},!_.call(E,u))if(k.test(t)){try{r=document.createEventObject(),r[g]=!0,9!=p.nodeType&&(null==p.parentNode&&C.appendChild(p),(o=p.getAttribute(u))&&A.call(p,u)),p.fireEvent(u,r),E[u]=!0}catch(h){for(E[u]=!1;C.hasChildNodes();)C.removeChild(C.firstChild)}null!=o&&O.call(p,u,o)}else E[u]=!1;(d.n=E[u])&&p.attachEvent(u,d.w)}i(f,n)<0&&f[a?"unshift":"push"](n),"input"===t&&p.attachEvent("onkeyup",s)}}),dispatchEvent:T(function(t){var n,a=this,r="on"+t.type,i=a[g],o=i&&i[r],s=!!o;return t.target||(t.target=a),s?o.n?a.fireEvent(r,t):e(a,t,o.h,!0):(n=a.parentNode)?n.dispatchEvent(t):!0,!t.defaultPrevented}),removeEventListener:T(function(t,e,n){if("function"==typeof e||"object"==typeof e){var a=this,r="on"+t,o=a[g],s=o&&o[r],p=s&&s.h,u=p?i(p,e):-1;u>-1&&p.splice(u,1)}})}),b(w,{addEventListener:T(x.addEventListener),dispatchEvent:T(x.dispatchEvent),removeEventListener:T(x.removeEventListener)}),b(t.XMLHttpRequest.prototype,{addEventListener:T(function(t,e,n){var a=this,r="on"+t,o=a[g]||v(a,g,{value:{}})[g],s=o[r]||(o[r]={}),p=s.h||(s.h=[]);i(p,e)<0&&(a[r]||(a[r]=function(){var e=document.createEvent("Event");e.initEvent(t,!0,!0),a.dispatchEvent(e)}),p[n?"unshift":"push"](e))}),dispatchEvent:T(function(t){var n=this,a="on"+t.type,r=n[g],i=r&&r[a],o=!!i;return o&&(i.n?n.fireEvent(a,t):e(n,t,i.h,!0))}),removeEventListener:T(x.removeEventListener)});var M=y(Event.prototype,"button").get;b(t.Event.prototype,{bubbles:T(!0),cancelable:T(!0),preventDefault:T(function(){this.cancelable&&(this.returnValue=!1)}),stopPropagation:T(function(){this.stoppedPropagation=!0,this.cancelBubble=!0}),stopImmediatePropagation:T(function(){this.stoppedImmediatePropagation=!0,this.stopPropagation()}),initEvent:T(function(t,e,n){this.type=t,this.bubbles=!!e,this.cancelable=!!n,this.bubbles||this.stopPropagation()}),pageX:{get:function(){return this._pageX||(this._pageX=this.clientX+t.scrollX-(P.clientLeft||0))}},pageY:{get:function(){return this._pageY||(this._pageY=this.clientY+t.scrollY-(P.clientTop||0))}},which:{get:function(){return this.keyCode?this.keyCode:isNaN(this.button)?void 0:this.button+1}},charCode:{get:function(){return this.keyCode&&"keypress"==this.type?this.keyCode:0}},buttons:{get:function(){return M.call(this)}},button:{get:function(){var t=this.buttons;return 1&t?0:2&t?2:4&t?1:void 0}},defaultPrevented:{get:function(){var t,e=this.returnValue;return!(e===t||e)}},relatedTarget:{get:function(){var t=this.type;return"mouseover"===t?this.fromElement:"mouseout"===t?this.toElement:null}}}),b(t.HTMLDocument.prototype,{defaultView:{get:function(){return this.parentWindow}},textContent:{get:function(){return 11===this.nodeType?o.call(this):null},set:function(t){11===this.nodeType&&c.call(this,t)}},addEventListener:T(function(e,n,a){var r=this;x.addEventListener.call(r,e,n,a),d&&e===m&&!S.test(r.readyState)&&(d=!1,r.attachEvent(h,p),t==top&&!function i(t){try{r.documentElement.doScroll("left"),p()}catch(e){setTimeout(i,50)}}())}),dispatchEvent:T(x.dispatchEvent),removeEventListener:T(x.removeEventListener),createEvent:T(function(t){var e;if("Event"!==t)throw Error("unsupported "+t);return e=document.createEventObject(),e.timeStamp=(new Date).getTime(),e})}),b(t.Window.prototype,{getComputedStyle:T(function(){function t(t){this._=t}function e(){}var n=/^(?:[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|))(?!px)[a-z%]+$/,a=/^(top|right|bottom|left)$/,r=/\-([a-z])/g,i=function(t,e){return e.toUpperCase()};return t.prototype.getPropertyValue=function(t){var e,o,s,p=this._,u=p.style,c=p.currentStyle,l=p.runtimeStyle;return"opacity"==t?u.opacity||"1":(t=("float"===t?"style-float":t).replace(r,i),e=c?c[t]:u[t],n.test(e)&&!a.test(t)&&(o=u.left,s=l&&l.left,s&&(l.left=c.left),u.left="fontSize"===t?"1em":e,e=u.pixelLeft+"px",u.left=o,s&&(l.left=s)),null==e?e:e+""||"auto")},e.prototype.getPropertyValue=function(){return null},function(n,a){return a?new e(n):new t(n)}}()),addEventListener:T(function(n,a,r){var o,s=t,p="on"+n;s[p]||(s[p]=function(t){return e(s,l(s,t),o,!1)&&void 0}),o=s[p][g]||(s[p][g]=[]),i(o,a)<0&&o[r?"unshift":"push"](a)}),dispatchEvent:T(function(e){var n=t["on"+e.type];return n?n.call(t,e)!==!1&&!e.defaultPrevented:!0}),removeEventListener:T(function(e,n,a){var r="on"+e,o=(t[r]||Object)[g],s=o?i(o,n):-1;s>-1&&o.splice(s,1)}),pageXOffset:{get:u("scrollLeft")},pageYOffset:{get:u("scrollTop")},scrollX:{get:u("scrollLeft")},scrollY:{get:u("scrollTop")},innerWidth:{get:u("clientWidth")},innerHeight:{get:u("clientHeight")}}),t.HTMLElement=t.Element,function(t,e,n){for(n=0;na;a++)e.appendChild(n[a].cloneNode(!0));return e},n.cloneRange=function(){var t=new e;return t._start=this._start,t._end=this._end,t},n.deleteContents=function(){for(var e=this._start.parentNode,n=t(this._start,this._end),a=0,r=n.length;r>a;a++)e.removeChild(n[a])},n.extractContents=function(){for(var e=this._start.ownerDocument.createDocumentFragment(),n=t(this._start,this._end),a=0,r=n.length;r>a;a++)e.appendChild(n[a]);return e},n.setEndAfter=function(t){this._end=t},n.setEndBefore=function(t){this._end=t.previousSibling},n.setStartAfter=function(t){this._start=t.nextSibling},n.setStartBefore=function(t){this._start=t}}}()}}(this.window||t)}).call(this,void 0!==t?t:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],332:[function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{"default":t}}function r(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e=s)return(0,p["default"])({points:n});for(var l=1;s-1>=l;l++)i.push((0,u.times)(a,(0,u.minus)(n[l],n[l-1])));for(var d=[(0,u.plus)(n[0],c(i[0],i[1]))],l=1;s-2>=l;l++)d.push((0,u.minus)(n[l],(0,u.average)([i[l],i[l-1]])));d.push((0,u.minus)(n[s-1],c(i[s-2],i[s-3])));var f=d[0],h=d[1],m=n[0],g=n[1],v=(e=(0,o["default"])()).moveto.apply(e,r(m)).curveto(f[0],f[1],h[0],h[1],g[0],g[1]);return{path:(0,u.range)(2,s).reduce(function(t,e){var a=d[e],r=n[e];return t.smoothcurveto(a[0],a[1],r[0],r[1])},v),centroid:(0,u.average)(n)}},e.exports=n["default"]},{335:335,336:336,337:337}],333:[function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(p){r=!0,i=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),i=t(334),o=a(i),s=t(335),p=1e-5,u=function(t,e){var n=t.map(e),a=n.sort(function(t,e){var n=r(t,2),a=n[0],i=(n[1],r(e,2)),o=i[0];i[1];return a-o}),i=a.length,o=a[0][0],u=a[i-1][0],c=(0,s.minBy)(a,function(t){return t[1]}),l=(0,s.maxBy)(a,function(t){return t[1]});return o==u&&(u+=p),c==l&&(l+=p),{points:a,xmin:o,xmax:u,ymin:c,ymax:l}};n["default"]=function(t){var e=t.data,n=t.xaccessor,a=t.yaccessor,i=t.width,p=t.height,c=t.closed,l=t.min,d=t.max;n||(n=function(t){var e=r(t,2),n=e[0];e[1];return n}),a||(a=function(t){var e=r(t,2),n=(e[0],e[1]);return n});var f=function(t){return[n(t),a(t)]},h=e.map(function(t){return u(t,f)}),m=(0,s.minBy)(h,function(t){return t.xmin}),g=(0,s.maxBy)(h,function(t){return t.xmax}),v=null==l?(0,s.minBy)(h,function(t){return t.ymin}):l,b=null==d?(0,s.maxBy)(h,function(t){return t.ymax}):d;c&&(v=Math.min(v,0),b=Math.max(b,0));var y=c?0:v,_=(0,o["default"])([m,g],[0,i]),x=(0,o["default"])([v,b],[p,0]),w=function(t){var e=r(t,2),n=e[0],a=e[1];return[_(n),x(a)]};return{arranged:h,scale:w,xscale:_,yscale:x,base:y}},e.exports=n["default"]},{334:334,335:335}],334:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(p){r=!0,i=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=function i(t,e){var n=a(t,2),r=n[0],o=n[1],s=a(e,2),p=s[0],u=s[1],c=function(t){return p+(u-p)*(t-r)/(o-r)};return c.inverse=function(){return i([p,u],[r,o])},c};n["default"]=r,e.exports=n["default"]},{}],335:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(p){r=!0,i=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=function(t){return t.reduce(function(t,e){return t+e},0)},i=function(t){return t.reduce(function(t,e){return Math.min(t,e)})},o=function(t){return t.reduce(function(t,e){return Math.max(t,e)})},s=function(t,e){return t.reduce(function(t,n){return t+e(n)},0)},p=function(t,e){return t.reduce(function(t,n){return Math.min(t,e(n))},1/0)},u=function(t,e){return t.reduce(function(t,n){return Math.max(t,e(n))},-(1/0))},c=function(t,e){var n=a(t,2),r=n[0],i=n[1],o=a(e,2),s=o[0],p=o[1];return[r+s,i+p]},l=function(t,e){var n=a(t,2),r=n[0],i=n[1],o=a(e,2),s=o[0],p=o[1];return[r-s,i-p]},d=function(t,e){var n=a(e,2),r=n[0],i=n[1];return[t*r,t*i]},f=function(t){var e=a(t,2),n=e[0],r=e[1];return Math.sqrt(n*n+r*r)},h=function(t){return t.reduce(c,[0,0])},m=function(t){return d(1/t.length,t.reduce(c))},g=function(t,e){return d(t,[Math.sin(e),-Math.cos(e)])},v=function(t,e){var n=t||{};for(var a in n){var r=n[a];e[a]=r(e.index,e.item,e.group)}return e},b=function(t,e,n){for(var a=[],r=t;e>r;r++)a.push(r);return n&&a.push(e),a},y=function(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=Object.keys(t)[Symbol.iterator]();!(a=(o=s.next()).done);a=!0){var p=o.value,u=t[p];n.push(e(p,u))}}catch(c){r=!0,i=c}finally{ -try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n},_=function(t){return y(t,function(t,e){return[t,e]})},x=function(t){return t};n.sum=r,n.min=i,n.max=o,n.sumBy=s,n.minBy=p,n.maxBy=u,n.plus=c,n.minus=l,n.times=d,n.id=x,n.length=f,n.sumVectors=h,n.average=m,n.onCircle=g,n.enhance=v,n.range=b,n.mapObject=y,n.pairs=_,n["default"]={sum:r,min:i,max:o,sumBy:s,minBy:p,maxBy:u,plus:c,minus:l,times:d,id:x,length:f,sumVectors:h,average:m,onCircle:g,enhance:v,range:b,mapObject:y,pairs:_}},{}],336:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(p){r=!0,i=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=function i(t){var e=t||[],n=function(t,e){var n=t.slice(0,t.length);return n.push(e),n},r=function(t,e){var n=a(t,2),r=n[0],i=n[1],o=a(e,2),s=o[0],p=o[1];return r===s&&i===p},o=function(t,e){for(var n=t.length;"0"===t.charAt(n-1);)n-=1;return"."===t.charAt(n-1)&&(n-=1),t.substr(0,n)},s=function(t,e){var n=t.toFixed(e);return o(n)},p=function(t){var e=t.command,n=t.params,a=n.map(function(t){return s(t,6)});return e+" "+a.join(" ")},u=function(t,e){var n=t.command,r=t.params,i=a(e,2),o=i[0],s=i[1];switch(n){case"M":return[r[0],r[1]];case"L":return[r[0],r[1]];case"H":return[r[0],s];case"V":return[o,r[0]];case"Z":return null;case"C":return[r[4],r[5]];case"S":return[r[2],r[3]];case"Q":return[r[2],r[3]];case"T":return[r[0],r[1]];case"A":return[r[5],r[6]]}},c=function(t,e){return function(n){var a="object"==typeof n?t.map(function(t){return n[t]}):arguments;return e.apply(null,a)}},l=function(t){return i(n(e,t))};return{moveto:c(["x","y"],function(t,e){return l({command:"M",params:[t,e]})}),lineto:c(["x","y"],function(t,e){return l({command:"L",params:[t,e]})}),hlineto:c(["x"],function(t){return l({command:"H",params:[t]})}),vlineto:c(["y"],function(t){return l({command:"V",params:[t]})}),closepath:function(){return l({command:"Z",params:[]})},curveto:c(["x1","y1","x2","y2","x","y"],function(t,e,n,a,r,i){return l({command:"C",params:[t,e,n,a,r,i]})}),smoothcurveto:c(["x2","y2","x","y"],function(t,e,n,a){return l({command:"S",params:[t,e,n,a]})}),qcurveto:c(["x1","y1","x","y"],function(t,e,n,a){return l({command:"Q",params:[t,e,n,a]})}),smoothqcurveto:c(["x","y"],function(t,e){return l({command:"T",params:[t,e]})}),arc:c(["rx","ry","xrot","largeArcFlag","sweepFlag","x","y"],function(t,e,n,a,r,i,o){return l({command:"A",params:[t,e,n,a,r,i,o]})}),print:function(){return e.map(p).join(" ")},points:function(){var t=[],n=[0,0],a=!0,r=!1,i=void 0;try{for(var o,s=e[Symbol.iterator]();!(a=(o=s.next()).done);a=!0){var p=o.value,c=u(p,n);n=c,c&&t.push(c)}}catch(l){r=!0,i=l}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return t},instructions:function(){return e.slice(0,e.length)},connect:function(t){var e=this.points(),n=e[e.length-1],a=t.points()[0],o=t.instructions().slice(1);return r(n,a)||o.unshift({command:"L",params:a}),i(this.instructions().concat(o))}}};n["default"]=function(){return r()},e.exports=n["default"]},{}],337:[function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{"default":t}}function r(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];for(var r,i;i=n.shift();)for(r in i)Mo.call(i,r)&&(t[r]=i[r]);return t}function r(t){for(var e=arguments.length,n=Array(e>1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];return n.forEach(function(e){for(var n in e)!e.hasOwnProperty(n)||n in t||(t[n]=e[n])}),t}function i(t){return"[object Array]"===Lo.call(t)}function o(t){return jo.test(Lo.call(t))}function s(t,e){return null===t&&null===e?!0:"object"==typeof t||"object"==typeof e?!1:t===e}function p(t){return!isNaN(parseFloat(t))&&isFinite(t)}function u(t){return t&&"[object Object]"===Lo.call(t)}function c(t,e){return t.replace(/%s/g,function(){return e.shift()})}function l(t){for(var e=arguments.length,n=Array(e>1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];throw t=c(t,n),Error(t)}function d(){Mg.DEBUG&&Oo.apply(null,arguments)}function f(t){for(var e=arguments.length,n=Array(e>1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];t=c(t,n),To(t,n)}function h(t){for(var e=arguments.length,n=Array(e>1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];t=c(t,n),Do[t]||(Do[t]=!0,To(t,n))}function m(){Mg.DEBUG&&f.apply(null,arguments)}function g(){Mg.DEBUG&&h.apply(null,arguments)}function v(t,e,n){var a=b(t,e,n);return a?a[t][n]:null}function b(t,e,n){for(;e;){if(n in e[t])return e;if(e.isolated)return null;e=e.parent}}function y(t){return function(){return t}}function _(t){var e,n,a,r,i,o;for(e=t.split("."),(n=zo[e.length])||(n=x(e.length)),i=[],a=function(t,n){return t?"*":e[n]},r=n.length;r--;)o=n[r].map(a).join("."),i.hasOwnProperty(o)||(i.push(o),i[o]=!0);return i}function x(t){var e,n,a,r,i,o,s,p,u="";if(!zo[t]){for(a=[];u.length=i;i+=1){for(n=i.toString(2);n.lengtho;o++)p.push(r(n[o]));a[i]=p}zo[t]=a}return zo[t]}function w(t,e,n,a){var r=t[e];if(!r||!r.equalsOrStartsWith(a)&&r.equalsOrStartsWith(n))return t[e]=r?r.replace(n,a):a,!0}function k(t){var e=t.slice(2);return"i"===t[1]&&p(e)?+e:e}function S(t){return null==t?t:(Ko.hasOwnProperty(t)||(Ko[t]=new Qo(t)),Ko[t])}function E(t,e){function n(e,n){var a,r,o;return n.isRoot?o=[].concat(Object.keys(t.viewmodel.data),Object.keys(t.viewmodel.mappings),Object.keys(t.viewmodel.computations)):(a=t.viewmodel.wrapped[n.str],r=a?a.get():t.viewmodel.get(n),o=r?Object.keys(r):null),o&&o.forEach(function(t){"_ractive"===t&&i(r)||e.push(n.join(t))}),e}var a,r,o;for(a=e.str.split("."),o=[$o];r=a.shift();)"*"===r?o=o.reduce(n,[]):o[0]===$o?o[0]=S(r):o=o.map(C(r));return o}function C(t){return function(e){return e.join(t)}}function P(t){return t?t.replace(Wo,".$1"):""}function A(t,e,n){if("string"!=typeof e||!p(n))throw Error("Bad arguments");var a=void 0,r=void 0;if(/\*/.test(e))return r={},E(t,S(P(e))).forEach(function(e){var a=t.viewmodel.get(e);if(!p(a))throw Error(Xo);r[e.str]=a+n}),t.set(r);if(a=t.get(e),!p(a))throw Error(Xo);return t.set(e,+a+n)}function O(t,e){return Jo(this,t,void 0===e?1:+e)}function T(t){this.event=t,this.method="on"+t,this.deprecate=as[t]}function R(t,e){var n=t.indexOf(e);-1===n&&t.push(e)}function M(t,e){for(var n=0,a=t.length;a>n;n++)if(t[n]==e)return!0;return!1}function L(t,e){var n;if(!i(t)||!i(e))return!1;if(t.length!==e.length)return!1;for(n=t.length;n--;)if(t[n]!==e[n])return!1;return!0}function j(t){return"string"==typeof t?[t]:void 0===t?[]:t}function D(t){return t[t.length-1]}function N(t,e){var n=t.indexOf(e);-1!==n&&t.splice(n,1)}function F(t){for(var e=[],n=t.length;n--;)e[n]=t[n];return e}function I(t){setTimeout(t,0)}function B(t,e){return function(){for(var n;n=t.shift();)n(e)}}function V(t,e,n,a){var r;if(e===t)throw new TypeError("A promise's fulfillment handler cannot return the same promise");if(e instanceof rs)e.then(n,a);else if(!e||"object"!=typeof e&&"function"!=typeof e)n(e);else{try{r=e.then}catch(i){return void a(i)}if("function"==typeof r){var o,s,p;s=function(e){o||(o=!0,V(t,e,n,a))},p=function(t){o||(o=!0,a(t))};try{r.call(e,s,p)}catch(i){if(!o)return a(i),void(o=!0)}}else n(e)}}function q(t,e,n){var a;return e=P(e),"~/"===e.substr(0,2)?(a=S(e.substring(2)),z(t,a.firstKey,n)):"."===e[0]?(a=U(cs(n),e),a&&z(t,a.firstKey,n)):a=G(t,S(e),n),a}function U(t,e){var n;if(void 0!=t&&"string"!=typeof t&&(t=t.str),"."===e)return S(t);if(n=t?t.split("."):[],"../"===e.substr(0,3)){for(;"../"===e.substr(0,3);){if(!n.length)throw Error('Could not resolve reference - too many "../" prefixes');n.pop(),e=e.substring(3)}return n.push(e),S(n.join("."))}return S(t?t+e.replace(/^\.\//,"."):e.replace(/^\.\/?/,""))}function G(t,e,n,a){var r,i,o,s,p;if(e.isRoot)return e;for(i=e.firstKey;n;)if(r=n.context,n=n.parent,r&&(s=!0,o=t.viewmodel.get(r),o&&("object"==typeof o||"function"==typeof o)&&i in o))return r.join(e.str);return W(t.viewmodel,i)?e:t.parent&&!t.isolated&&(s=!0,n=t.component.parentFragment,i=S(i),p=G(t.parent,i,n,!0))?(t.viewmodel.map(i,{origin:t.parent.viewmodel,keypath:p}),e):a||s?void 0:(t.viewmodel.set(e,void 0),e)}function z(t,e){var n;!t.parent||t.isolated||W(t.viewmodel,e)||(e=S(e),(n=G(t.parent,e,t.component.parentFragment,!0))&&t.viewmodel.map(e,{origin:t.parent.viewmodel,keypath:n}))}function W(t,e){return""===e||e in t.data||e in t.computations||e in t.mappings}function H(t){t.teardown()}function K(t){t.unbind()}function Q(t){t.unrender()}function Y(t){t.cancel()}function $(t){t.detach()}function J(t){t.detachNodes()}function X(t){!t.ready||t.outros.length||t.outroChildren||(t.outrosComplete||(t.parent?t.parent.decrementOutros(t):t.detachNodes(),t.outrosComplete=!0),t.intros.length||t.totalChildren||("function"==typeof t.callback&&t.callback(),t.parent&&t.parent.decrementTotal()))}function Z(){for(var t,e,n;fs.ractives.length;)e=fs.ractives.pop(),n=e.viewmodel.applyChanges(),n&&vs.fire(e,n);for(tt(),t=0;t=0;i--)r=t._subs[e[i]],r&&(s=vt(t,r,n,a)&&s);if(Gs.dequeue(t),t.parent&&s){if(o&&t.component){var p=t.component.name+"."+e[e.length-1];e=S(p).wildcardMatches(),n&&(n.component=t)}gt(t.parent,e,n,a)}}function vt(t,e,n,a){var r=null,i=!1;n&&!n._noArg&&(a=[n].concat(a)),e=e.slice();for(var o=0,s=e.length;s>o;o+=1)e[o].apply(t,a)===!1&&(i=!0);return n&&!n._noArg&&i&&(r=n.original)&&(r.preventDefault&&r.preventDefault(),r.stopPropagation&&r.stopPropagation()),!i}function bt(t){var e={args:Array.prototype.slice.call(arguments,1)};zs(this,t,e)}function yt(t){var e;return t=S(P(t)),e=this.viewmodel.get(t,Ks),void 0===e&&this.parent&&!this.isolated&&ls(this,t.str,this.component.parentFragment)&&(e=this.viewmodel.get(t)),e}function _t(e,n){if(!this.fragment.rendered)throw Error("The API has changed - you must call `ractive.render(target[, anchor])` to render your Ractive instance. Once rendered you can use `ractive.insert()`.");if(e=t(e),n=t(n)||null,!e)throw Error("You must specify a valid target to insert into");e.insertBefore(this.detach(),n),this.el=e,(e.__ractive_instances__||(e.__ractive_instances__=[])).push(this),this.detached=null,xt(this)}function xt(t){Ys.fire(t),t.findAllComponents("*").forEach(function(t){xt(t.instance)})}function wt(t,e,n){var a,r;return t=S(P(t)),a=this.viewmodel.get(t),i(a)&&i(e)?(r=bs.start(this,!0),this.viewmodel.merge(t,a,e,n),bs.end(),r):this.set(t,e,n&&n.complete)}function kt(t,e){var n,a;return n=E(t,e),a={},n.forEach(function(e){a[e.str]=t.get(e.str)}),a}function St(t,e,n,a){var r,i,o;e=S(P(e)),a=a||cp,e.isPattern?(r=new pp(t,e,n,a),t.viewmodel.patternObservers.push(r),i=!0):r=new Zs(t,e,n,a),r.init(a.init),t.viewmodel.register(e,r,i?"patternObservers":"observers"),r.ready=!0;var s={cancel:function(){var n;o||(i?(n=t.viewmodel.patternObservers.indexOf(r),t.viewmodel.patternObservers.splice(n,1),t.viewmodel.unregister(e,r,"patternObservers")):t.viewmodel.unregister(e,r,"observers"),o=!0)}};return t._observers.push(s),s}function Et(t,e,n){var a,r,i,o;if(u(t)){n=e,r=t,a=[];for(t in r)r.hasOwnProperty(t)&&(e=r[t],a.push(this.observe(t,e,n)));return{cancel:function(){for(;a.length;)a.pop().cancel()}}}if("function"==typeof t)return n=e,e=t,t="",up(this,t,e,n);if(i=t.split(" "),1===i.length)return up(this,t,e,n);for(a=[],o=i.length;o--;)t=i[o],t&&a.push(up(this,t,e,n));return{cancel:function(){for(;a.length;)a.pop().cancel()}}}function Ct(t,e,n){var a=this.observe(t,function(){e.apply(this,arguments),a.cancel()},{init:!1,defer:n&&n.defer});return a}function Pt(t,e){var n,a=this;if(t)n=t.split(" ").map(fp).filter(hp),n.forEach(function(t){var n,r;(n=a._subs[t])&&(e?(r=n.indexOf(e),-1!==r&&n.splice(r,1)):a._subs[t]=[])});else for(t in this._subs)delete this._subs[t];return this}function At(t,e){var n,a,r,i=this;if("object"==typeof t){n=[];for(a in t)t.hasOwnProperty(a)&&n.push(this.on(a,t[a]));return{cancel:function(){for(var t;t=n.pop();)t.cancel()}}}return r=t.split(" ").map(fp).filter(hp),r.forEach(function(t){(i._subs[t]||(i._subs[t]=[])).push(e)}),{cancel:function(){return i.off(t,e)}}}function Ot(t,e){var n=this.on(t,function(){e.apply(this,arguments),n.cancel()});return n}function Tt(t,e,n){var a,r,i,o,s,p,u=[];if(a=Rt(t,e,n),!a)return null;for(r=t.length,s=a.length-2-a[1],i=Math.min(r,a[0]),o=i+a[1],p=0;i>p;p+=1)u.push(p);for(;o>p;p+=1)u.push(-1);for(;r>p;p+=1)u.push(p+s);return 0!==s?u.touchedFrom=a[0]:u.touchedFrom=t.length,u}function Rt(t,e,n){switch(e){case"splice":for(void 0!==n[0]&&n[0]<0&&(n[0]=t.length+Math.max(n[0],-t.length));n.length<2;)n.push(0);return n[1]=Math.min(n[1],t.length-n[0]),n;case"sort":case"reverse":return null;case"pop":return t.length?[t.length-1,1]:[0,0];case"push":return[t.length,0].concat(n);case"shift":return[0,t.length?1:0];case"unshift":return[0,0].concat(n)}}function Mt(e,n){var a,r,i,o=this;if(i=this.transitionsEnabled,this.noIntro&&(this.transitionsEnabled=!1),a=bs.start(this,!0),bs.scheduleTask(function(){return Rp.fire(o)},!0),this.fragment.rendered)throw Error("You cannot call ractive.render() on an already rendered instance! Call ractive.unrender() first");if(e=t(e)||this.el,n=t(n)||this.anchor,this.el=e,this.anchor=n,!this.append&&e){var s=e.__ractive_instances__;s&&s.length&&Lt(s),e.innerHTML=""}return this.cssId&&Op.apply(),e&&((r=e.__ractive_instances__)?r.push(this):e.__ractive_instances__=[this],n?e.insertBefore(this.fragment.render(),n):e.appendChild(this.fragment.render())),bs.end(),this.transitionsEnabled=i,a.then(function(){return Mp.fire(o)})}function Lt(t){t.splice(0,t.length).forEach(H)}function jt(t,e){for(var n=t.slice(),a=e.length;a--;)~n.indexOf(e[a])||n.push(e[a]);return n}function Dt(t,e){var n,a,r;return a='[data-ractive-css~="{'+e+'}"]',r=function(t){var e,n,r,i,o,s,p,u=[];for(e=[];n=Ip.exec(t);)e.push({str:n[0],base:n[1],modifiers:n[2]});for(i=e.map(Ft),p=e.length;p--;)s=i.slice(),r=e[p],s[p]=r.base+a+r.modifiers||"",o=i.slice(),o[p]=a+" "+o[p],u.push(s.join(" "),o.join(" "));return u.join(", ")},n=Vp.test(t)?t.replace(Vp,a):t.replace(Fp,"").replace(Np,function(t,e){var n,a;return Bp.test(e)?t:(n=e.split(",").map(Nt),a=n.map(r).join(", ")+" ",t.replace(e,a))})}function Nt(t){return t.trim?t.trim():t.replace(/^\s+/,"").replace(/\s+$/,"")}function Ft(t){return t.str}function It(t){t&&t.constructor!==Object&&("function"==typeof t||("object"!=typeof t?l("data option must be an object or a function, `"+t+"` is not valid"):m("If supplied, options.data should be a plain JavaScript object - using a non-POJO as the root object may work, but is discouraged")))}function Bt(t,e){It(e);var n="function"==typeof t,a="function"==typeof e;return e||n||(e={}),n||a?function(){var r=a?Vt(e,this):e,i=n?Vt(t,this):t;return qt(r,i)}:qt(e,t)}function Vt(t,e){var n=t.call(e);if(n)return"object"!=typeof n&&l("Data function must return an object"),n.constructor!==Object&&g("Data function returned something other than a plain JavaScript object. This might work, but is strongly discouraged"),n}function qt(t,e){if(t&&e){for(var n in e)n in t||(t[n]=e[n]);return t}return t||e}function Ut(t){var e=So(Qp);return e.parse=function(e,n){return Gt(e,n||t)},e}function Gt(t,e){if(!Hp)throw Error("Missing Ractive.parse - cannot parse template. Either preparse or use the version that includes the parser");return Hp(t,e||this.options)}function zt(t,e){var n;if(!Xi){if(e&&e.noThrow)return;throw Error("Cannot retrieve template #"+t+" as Ractive is not running in a browser.")}if(Wt(t)&&(t=t.substring(1)),!(n=document.getElementById(t))){if(e&&e.noThrow)return;throw Error("Could not find template element with id #"+t)}if("SCRIPT"!==n.tagName.toUpperCase()){if(e&&e.noThrow)return;throw Error("Template element with id #"+t+", must be a - - - - {{text.titleCase(data.seclevel)}} - - - - {{data.alarm ? "Reset" : "Activate"}} - - {{#if data.emagged}} - - Safety measures offline. Device may exhibit abnormal behavior. - - {{/if}} - diff --git a/tgui/src/util/tooltip.styl b/tgui/src/util/tooltip.styl index a951b82876..053d9b35c6 100644 --- a/tgui/src/util/tooltip.styl +++ b/tgui/src/util/tooltip.styl @@ -8,6 +8,7 @@ div[data-tooltip], span[data-tooltip] width: 250px padding: 10px transform: translateX(-50%) + pointer-events: none visibility: hidden opacity: 0 @@ -21,6 +22,7 @@ div[data-tooltip], span[data-tooltip] background-color: tooltip-color-background &:hover::after + pointer-events: none visibility: visible opacity: 1 diff --git a/tools/json_verifier.py b/tools/json_verifier.py index 04c8670705..dbba811205 100644 --- a/tools/json_verifier.py +++ b/tools/json_verifier.py @@ -4,16 +4,17 @@ import json if len(sys.argv) <= 1: exit(1) -files = filter(len, sys.argv[1].split('\n')) -msg = [] -for file in files: +status = 0 + +for file in sys.argv[1:]: with open(file, encoding="ISO-8859-1") as f: try: json.load(f) except ValueError as exception: - msg.append("JSON synxtax error on file: {}".format(file)) - msg.append(str(exception)) -if msg: - print("\n".join(msg)) - exit(1) -exit(0) + print("JSON error in {}".format(file)) + print(exception) + status = 1 + else: + print("Valid {}".format(file)) + +exit(status) diff --git a/tools/travis/before_build_tools.sh b/tools/travis/before_build_tools.sh deleted file mode 100755 index 2329de82b2..0000000000 --- a/tools/travis/before_build_tools.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -set -e - -if [ "$BUILD_TOOLS" = true ]; then - cd tgui && source ~/.nvm/nvm.sh && npm install && cd .. -fi; - diff --git a/tools/travis/build_bsql.sh b/tools/travis/build_bsql.sh new file mode 100755 index 0000000000..e2b281efc6 --- /dev/null +++ b/tools/travis/build_bsql.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +set -euo pipefail + +source dependencies.sh + +mkdir -p BSQL +cd BSQL +git init +git remote add origin https://github.com/tgstation/BSQL +git fetch --depth 1 origin $BSQL_VERSION +git checkout FETCH_HEAD + +mkdir -p artifacts +cd artifacts +export CXX=g++-7 +# The -D will be unnecessary past BSQL v1.4.0.0 +cmake .. -DMARIA_LIBRARY=/usr/lib/i386-linux-gnu/libmariadb.so +make + +mkdir -p ~/.byond/bin +ln -s $PWD/src/BSQL/libBSQL.so ../../libBSQL.so diff --git a/tools/travis/build_byond.sh b/tools/travis/build_byond.sh deleted file mode 100755 index 3a7e00df29..0000000000 --- a/tools/travis/build_byond.sh +++ /dev/null @@ -1,80 +0,0 @@ -#!/bin/bash - -#nb: must be bash to support shopt globstar -set -e -shopt -s globstar - -if [ "$BUILD_TOOLS" = false ]; then - if grep -E '^\".+\" = \(.+\)' _maps/**/*.dmm; then - echo "Non-TGM formatted map detected. Please convert it using Map Merger!" - exit 1 - fi; - if grep -P '^\ttag = \"icon' _maps/**/*.dmm; then - echo "tag vars from icon state generation detected in maps, please remove them." - exit 1 - fi; - if grep 'step_[xy]' _maps/**/*.dmm; then - echo "step_x/step_y variables detected in maps, please remove them." - exit 1 - fi; - if grep 'pixel_[xy] = 0' _maps/**/*.dmm; then - echo "pixel_x/pixel_y = 0 variables detected in maps, please review to ensure they are not dirty varedits." - fi; - if grep -P '\td[1-2] =' _maps/**/*.dmm; then - echo "d1/d2 cable variables detected in maps, please remove them." - exit 1 - fi; - if grep '^/area/.+[\{]' _maps/**/*.dmm; then - echo "Vareditted /area path use detected in maps, please replace with proper paths." - exit 1 - fi; - if grep '\W\/turf\s*[,\){]' _maps/**/*.dmm; then - echo "base /turf path use detected in maps, please replace with proper paths." - exit 1 - fi; - if grep '^/*var/' code/**/*.dm; then - echo "Unmanaged global var use detected in code, please use the helpers." - exit 1 - fi; - if grep -i 'centcomm' code/**/*.dm; then - echo "Misspelling(s) of CENTCOM detected in code, please remove the extra M(s)." - exit 1 - fi; - if grep -i 'centcomm' _maps/**/*.dmm; then - echo "Misspelling(s) of CENTCOM detected in maps, please remove the extra M(s)." - exit 1 - fi; - - source $HOME/BYOND/byond/bin/byondsetup - if [ "$BUILD_TESTING" = true ]; then - tools/travis/dm.sh -DTRAVISBUILDING -DTRAVISTESTING -DALL_MAPS tgstation.dme - else - tools/travis/dm.sh -DTRAVISBUILDING tgstation.dme - - tools/deploy.sh travis_test - mkdir travis_test/config - - #test config - cp tools/travis/travis_config.txt travis_test/config/config.txt - - # get libmariadb, cache it so limmex doesn't get angery - if [ -f $HOME/libmariadb ]; then - #travis likes to interpret the cache command as it being a file for some reason - rm $HOME/libmariadb - fi - mkdir -p $HOME/libmariadb - if [ ! -f $HOME/libmariadb/libmariadb.so ]; then - wget http://www.byond.com/download/db/mariadb_client-2.0.0-linux.tgz - tar -xvf mariadb_client-2.0.0-linux.tgz - mv mariadb_client-2.0.0-linux/libmariadb.so $HOME/libmariadb/libmariadb.so - rm -rf mariadb_client-2.0.0-linux.tgz mariadb_client-2.0.0-linux - fi - - cd travis_test - ln -s $HOME/libmariadb/libmariadb.so libmariadb.so - DreamDaemon tgstation.dmb -close -trusted -verbose -params "test-run&log-directory=travis" - cd .. - cat travis_test/data/logs/travis/clean_run.lk - - fi; -fi; diff --git a/tools/travis/build_dependencies.sh b/tools/travis/build_dependencies.sh deleted file mode 100755 index 2c24bdbaaf..0000000000 --- a/tools/travis/build_dependencies.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env bash - -set -e - -source dependencies.sh - -#ensure the Dockerfile version matches the dependencies.sh version -line=$(head -n 1 Dockerfile) -if [[ $line != *"$BYOND_MAJOR.$BYOND_MINOR"* ]]; then - echo "Dockerfile BYOND version in FROM command does not match dependencies.sh (Or it's not on line 1)!" - exit 1 -fi - -if [ $BUILD_TOOLS = false ] && [ $BUILD_TESTING = false ]; then - curl https://sh.rustup.rs -sSf | sh -s -- -y --default-host i686-unknown-linux-gnu - source ~/.profile - - mkdir rust-g - cd rust-g - git init - git remote add origin https://github.com/tgstation/rust-g - git fetch --depth 1 origin $RUST_G_VERSION - git checkout FETCH_HEAD - cargo build --release - cmp target/rust_g.dm ../code/__DEFINES/rust_g.dm - - mkdir -p ~/.byond/bin - ln -s $PWD/target/release/librust_g.so ~/.byond/bin/rust_g - - mkdir -p ../BSQL/artifacts - cd ../BSQL - git init - git remote add origin https://github.com/tgstation/BSQL - git fetch --depth 1 origin $BSQL_VERSION - git checkout FETCH_HEAD - - if [ -f "$HOME/MariaDB/libmariadb.so.2" ] && [ -f "$HOME/MariaDB/libmariadb.so" ] && [ -d "$HOME/MariaDB/include" ]; - then - echo "Using cached MariaDB library." - else - echo "Setting up MariaDB." - rm -rf "$HOME/MariaDB" - mkdir -p "$HOME/MariaDB" - mkdir -p "$HOME/MariaDB/include" - cp /usr/lib/i386-linux-gnu/libmariadb.so.2 $HOME/MariaDB/ - ln -s $HOME/MariaDB/libmariadb.so.2 $HOME/MariaDB/libmariadb.so - cp -r /usr/include/mariadb $HOME/MariaDB/include/ - fi - - cd artifacts - export CXX=g++-7 - cmake .. -DMARIA_INCLUDE_DIR=$HOME/MariaDB/include - make - mv src/BSQL/libBSQL.so ../../ -fi diff --git a/tools/travis/build_tgui.sh b/tools/travis/build_tgui.sh new file mode 100755 index 0000000000..0141f3e117 --- /dev/null +++ b/tools/travis/build_tgui.sh @@ -0,0 +1,7 @@ +#!/bin/bash +set -euo pipefail + +cd tgui +source ~/.nvm/nvm.sh +npm ci +node node_modules/gulp/bin/gulp.js --min diff --git a/tools/travis/build_tools.sh b/tools/travis/build_tools.sh deleted file mode 100755 index eaccd64c8c..0000000000 --- a/tools/travis/build_tools.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -#must also be bash for the md5sum commands -set -e - -if [ "$BUILD_TOOLS" = true ]; -then - md5sum -c - <<< "49bc6b1b9ed56c83cceb6674bd97cb34 *html/changelogs/example.yml"; - (cd tgui && source ~/.nvm/nvm.sh && npm ci && node node_modules/gulp/bin/gulp.js --min) - phpenv global 5.6 - php -l tools/WebhookProcessor/github_webhook_processor.php; - php -l tools/TGUICompiler.php; - echo "Checking for JSON errors"; - find . -name "*.json" -not -path "./tgui/node_modules/*" | xargs -0 python3 ./tools/json_verifier.py; - python3 tools/ss13_genchangelog.py html/changelog.html html/changelogs; -fi; diff --git a/tools/travis/check_changelogs.sh b/tools/travis/check_changelogs.sh new file mode 100755 index 0000000000..e33c0e6df3 --- /dev/null +++ b/tools/travis/check_changelogs.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set -euo pipefail + +md5sum -c - <<< "49bc6b1b9ed56c83cceb6674bd97cb34 *html/changelogs/example.yml" +python3 tools/ss13_genchangelog.py html/changelog.html html/changelogs diff --git a/tools/travis/check_grep.sh b/tools/travis/check_grep.sh new file mode 100755 index 0000000000..2117b570eb --- /dev/null +++ b/tools/travis/check_grep.sh @@ -0,0 +1,49 @@ +#!/bin/bash +set -euo pipefail + +#nb: must be bash to support shopt globstar +shopt -s globstar + +st=0 + +if grep -El '^\".+\" = \(.+\)' _maps/**/*.dmm; then + echo "Non-TGM formatted map detected. Please convert it using Map Merger!" + st=1 +fi; +if grep -P '^\ttag = \"icon' _maps/**/*.dmm; then + echo "tag vars from icon state generation detected in maps, please remove them." + st=1 +fi; +if grep 'step_[xy]' _maps/**/*.dmm; then + echo "step_x/step_y variables detected in maps, please remove them." + st=1 +fi; +if grep 'pixel_[xy] = 0' _maps/**/*.dmm; then + echo "pixel_x/pixel_y = 0 variables detected in maps, please review to ensure they are not dirty varedits." +fi; +if grep -P '\td[1-2] =' _maps/**/*.dmm; then + echo "d1/d2 cable variables detected in maps, please remove them." + st=1 +fi; +if grep '^/area/.+[\{]' _maps/**/*.dmm; then + echo "Vareditted /area path use detected in maps, please replace with proper paths." + st=1 +fi; +if grep '\W\/turf\s*[,\){]' _maps/**/*.dmm; then + echo "base /turf path use detected in maps, please replace with proper paths." + st=1 +fi; +if grep '^/*var/' code/**/*.dm; then + echo "Unmanaged global var use detected in code, please use the helpers." + st=1 +fi; +if grep -i 'centcomm' code/**/*.dm; then + echo "Misspelling(s) of CENTCOM detected in code, please remove the extra M(s)." + st=1 +fi; +if grep -i 'centcomm' _maps/**/*.dmm; then + echo "Misspelling(s) of CENTCOM detected in maps, please remove the extra M(s)." + st=1 +fi; + +exit $st diff --git a/tools/travis/install_build_tools.sh b/tools/travis/install_build_tools.sh index 0ea2a605ab..224687f088 100755 --- a/tools/travis/install_build_tools.sh +++ b/tools/travis/install_build_tools.sh @@ -1,11 +1,12 @@ #!/bin/bash -set -e +set -euo pipefail source dependencies.sh -if [ "$BUILD_TOOLS" = true ]; then - source ~/.nvm/nvm.sh - nvm install $NODE_VERSION - pip3 install --user PyYaml - pip3 install --user beautifulsoup4 -fi; +source ~/.nvm/nvm.sh +nvm install $NODE_VERSION + +pip3 install --user PyYaml +pip3 install --user beautifulsoup4 + +phpenv global $PHP_VERSION diff --git a/tools/travis/before_build_byond.sh b/tools/travis/install_byond.sh similarity index 67% rename from tools/travis/before_build_byond.sh rename to tools/travis/install_byond.sh index 55afb07ffe..4a688755d3 100755 --- a/tools/travis/before_build_byond.sh +++ b/tools/travis/install_byond.sh @@ -1,15 +1,5 @@ #!/bin/bash -set -e - -#If this is the build tools step, we do not bother to install/build byond -if [ "$BUILD_TOOLS" = true ]; then - exit 0 -fi - -echo "Combining maps for building" -if [ $BUILD_TESTING = true ]; then - python tools/travis/template_dm_generator.py -fi +set -euo pipefail source dependencies.sh diff --git a/tools/travis/install_dreamchecker.sh b/tools/travis/install_dreamchecker.sh new file mode 100755 index 0000000000..4423e5aafb --- /dev/null +++ b/tools/travis/install_dreamchecker.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -euo pipefail + +source dependencies.sh + +wget -O ~/dreamchecker "https://github.com/SpaceManiac/SpacemanDMM/releases/download/$SPACEMAN_DMM_VERSION/dreamchecker" +chmod +x ~/dreamchecker +~/dreamchecker --version diff --git a/tools/travis/install_libmariadb.sh b/tools/travis/install_libmariadb.sh new file mode 100755 index 0000000000..d0ce4adc14 --- /dev/null +++ b/tools/travis/install_libmariadb.sh @@ -0,0 +1,15 @@ +#!/bin/bash +set -euo pipefail + +# get libmariadb, cache it so limmex doesn't get angery +if [ -f $HOME/libmariadb ]; then + #travis likes to interpret the cache command as it being a file for some reason + rm $HOME/libmariadb +fi +mkdir -p $HOME/libmariadb +if [ ! -f $HOME/libmariadb/libmariadb.so ]; then + wget http://www.byond.com/download/db/mariadb_client-2.0.0-linux.tgz + tar -xvf mariadb_client-2.0.0-linux.tgz + mv mariadb_client-2.0.0-linux/libmariadb.so $HOME/libmariadb/libmariadb.so + rm -rf mariadb_client-2.0.0-linux.tgz mariadb_client-2.0.0-linux +fi diff --git a/tools/travis/install_rust_g.sh b/tools/travis/install_rust_g.sh new file mode 100755 index 0000000000..227034af66 --- /dev/null +++ b/tools/travis/install_rust_g.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +set -euo pipefail + +source dependencies.sh + +mkdir -p ~/.byond/bin +wget -O ~/.byond/bin/rust_g "https://github.com/tgstation/rust-g/releases/download/$RUST_G_VERSION/librust_g.so" +chmod +x ~/.byond/bin/rust_g diff --git a/tools/travis/run_server.sh b/tools/travis/run_server.sh new file mode 100755 index 0000000000..975e8f6884 --- /dev/null +++ b/tools/travis/run_server.sh @@ -0,0 +1,14 @@ +#!/bin/bash +set -euo pipefail + +tools/deploy.sh travis_test +mkdir travis_test/config + +#test config +cp tools/travis/travis_config.txt travis_test/config/config.txt + +cd travis_test +ln -s $HOME/libmariadb/libmariadb.so libmariadb.so +DreamDaemon tgstation.dmb -close -trusted -verbose -params "test-run&log-directory=travis" +cd .. +cat travis_test/data/logs/travis/clean_run.lk diff --git a/tools/travis/template_dm_generator.py b/tools/travis/template_dm_generator.py index 89e1d2647d..970fba7db4 100755 --- a/tools/travis/template_dm_generator.py +++ b/tools/travis/template_dm_generator.py @@ -1,7 +1,6 @@ #!/usr/bin/env python import os -import os.path import sys folders = ["_maps/RandomRuins", "_maps/RandomZLevels", "_maps/shuttles",